Skip to content

Commit

Permalink
feat: add Darwin supporting back (#106)
Browse files Browse the repository at this point in the history
Signed-off-by: Jack Yu <jack.yu@suse.com>
Yu-Jack authored Oct 22, 2024
1 parent 0e169a9 commit e9d53b0
Showing 7 changed files with 155 additions and 130 deletions.
1 change: 1 addition & 0 deletions .goreleaser.yml
Original file line number Diff line number Diff line change
@@ -18,6 +18,7 @@ builds:
- '-s -w -X main.version={{.Version}} -X main.commit={{.Commit}}'
goos:
- linux
- darwin
goarch:
- amd64
- arm64
95 changes: 50 additions & 45 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
module github.com/harvester/terraform-provider-harvester

go 1.22
go 1.22.5

replace (
// From this commiet, it starts to support Darwin.
github.com/longhorn/go-common-libs => github.com/longhorn/go-common-libs v0.0.0-20240926084818-3a320d860af4

github.com/openshift/api => github.com/openshift/api v0.0.0-20191219222812-2987a591a72c
github.com/openshift/client-go => github.com/openshift/client-go v0.0.0-20200521150516-05eb9880269c
github.com/rancher/rancher/pkg/apis => github.com/rancher/rancher/pkg/apis v0.0.0-20221013203903-14a66edd1e20
@@ -26,26 +29,25 @@ replace (
)

require (
github.com/harvester/harvester v1.3.0
github.com/harvester/harvester v1.3.1
github.com/harvester/harvester-network-controller v0.3.5
github.com/hashicorp/terraform-plugin-docs v0.4.0
github.com/hashicorp/terraform-plugin-sdk/v2 v2.6.1
github.com/k8snetworkplumbingwg/network-attachment-definition-client v1.3.0
github.com/longhorn/longhorn-manager v1.6.0
github.com/longhorn/longhorn-manager v1.6.2
github.com/mitchellh/go-homedir v1.1.0
github.com/rancher/wrangler v1.1.1
github.com/rancher/wrangler v1.1.2
gopkg.in/yaml.v2 v2.4.0
k8s.io/api v0.28.5
k8s.io/apimachinery v0.28.5
k8s.io/api v0.31.1
k8s.io/apimachinery v0.31.1
k8s.io/client-go v12.0.0+incompatible
k8s.io/utils v0.0.0-20230505201702-9f6742963106
kubevirt.io/api v1.1.0
k8s.io/utils v0.0.0-20240711033017-18e509b52bc8
kubevirt.io/api v1.1.1
)

require (
cloud.google.com/go v0.112.0 // indirect
cloud.google.com/go/compute v1.24.0 // indirect
cloud.google.com/go/compute/metadata v0.2.3 // indirect
cloud.google.com/go/compute/metadata v0.5.0 // indirect
cloud.google.com/go/iam v1.1.6 // indirect
cloud.google.com/go/storage v1.37.0 // indirect
emperror.dev/errors v0.8.1 // indirect
@@ -66,13 +68,14 @@ require (
github.com/blang/semver/v4 v4.0.0 // indirect
github.com/c9s/goprocinfo v0.0.0-20210130143923-c95fcf8c64a8 // indirect
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
github.com/cespare/xxhash/v2 v2.2.0 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/cisco-open/operator-tools v0.29.0 // indirect
github.com/containernetworking/cni v1.1.2 // indirect
github.com/coreos/go-systemd/v22 v22.5.0 // indirect
github.com/coreos/prometheus-operator v0.38.3 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/deckarep/golang-set/v2 v2.1.0 // indirect
github.com/emicklei/go-restful/v3 v3.9.0 // indirect
github.com/emicklei/go-restful/v3 v3.11.3 // indirect
github.com/evanphx/json-patch v5.6.0+incompatible // indirect
github.com/evanphx/json-patch/v5 v5.6.0 // indirect
github.com/fatih/color v1.15.0 // indirect
@@ -81,29 +84,32 @@ require (
github.com/ghodss/yaml v1.0.0 // indirect
github.com/go-kit/kit v0.10.0 // indirect
github.com/go-logfmt/logfmt v0.5.1 // indirect
github.com/go-logr/logr v1.4.1 // indirect
github.com/go-logr/logr v1.4.2 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-ole/go-ole v1.2.6 // indirect
github.com/go-openapi/jsonpointer v0.19.6 // indirect
github.com/go-openapi/jsonreference v0.20.2 // indirect
github.com/go-openapi/swag v0.22.3 // indirect
github.com/go-openapi/jsonpointer v0.20.3 // indirect
github.com/go-openapi/jsonreference v0.20.5 // indirect
github.com/go-openapi/swag v0.22.10 // indirect
github.com/gobuffalo/flect v1.0.2 // indirect
github.com/godbus/dbus/v5 v5.1.0 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/glog v1.2.0 // indirect
github.com/golang/glog v1.2.2 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/mock v1.6.0 // indirect
github.com/golang/protobuf v1.5.4 // indirect
github.com/google/gnostic v0.6.9 // indirect
github.com/google/gnostic v0.7.0 // indirect
github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49 // indirect
github.com/google/go-cmp v0.6.0 // indirect
github.com/google/gofuzz v1.2.0 // indirect
github.com/google/s2a-go v0.1.7 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
github.com/googleapis/gax-go/v2 v2.12.0 // indirect
github.com/gorilla/handlers v1.5.1 // indirect
github.com/gorilla/mux v1.8.0 // indirect
github.com/gorilla/websocket v1.5.0 // indirect
github.com/gorilla/handlers v1.5.2 // indirect
github.com/gorilla/mux v1.8.1 // indirect
github.com/gorilla/websocket v1.5.1 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 // indirect
github.com/harvester/go-common v0.0.0-20240521103542-378ddb186c5b // indirect
github.com/harvester/node-manager v0.1.5-0.20230614075852-de2da3ef3aca // indirect
github.com/hashicorp/errwrap v1.1.0 // indirect
github.com/hashicorp/go-checkpoint v0.5.0 // indirect
@@ -134,7 +140,7 @@ require (
github.com/kube-logging/logging-operator/pkg/sdk v0.9.1 // indirect
github.com/kubernetes-csi/external-snapshotter/client/v4 v4.2.0 // indirect
github.com/kubernetes/dashboard v1.10.1 // indirect
github.com/longhorn/go-common-libs v0.0.0-20240109042507-23627e6416b7 // indirect
github.com/longhorn/go-common-libs v0.0.0-20240514074907-351459694cbf // indirect
github.com/mailru/easyjson v0.7.7 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.19 // indirect
@@ -171,24 +177,24 @@ require (
github.com/rancher/fleet/pkg/apis v0.0.0-20230123175930-d296259590be // indirect
github.com/rancher/gke-operator v1.1.4 // indirect
github.com/rancher/kubernetes-provider-detector v0.1.5 // indirect
github.com/rancher/lasso v0.0.0-20230830164424-d684fdeb6f29 // indirect
github.com/rancher/lasso v0.0.0-20240123150939-7055397d6dfa // indirect
github.com/rancher/norman v0.0.0-20221205184727-32ef2e185b99 // indirect
github.com/rancher/rancher v0.0.0-20230124173128-2207cfed1803 // indirect
github.com/rancher/rancher/pkg/apis v0.0.0 // indirect
github.com/rancher/remotedialer v0.2.6-0.20220624190122-ea57207bf2b8 // indirect
github.com/rancher/rke v1.3.18 // indirect
github.com/rancher/steve v0.0.0-20221209194631-acf9d31ce0dd // indirect
github.com/rancher/system-upgrade-controller/pkg/apis v0.0.0-20210727200656-10b094e30007 // indirect
github.com/rancher/system-upgrade-controller/pkg/apis v0.0.0-20230803010539-04a0b9ef5858 // indirect
github.com/robfig/cron v1.2.0 // indirect
github.com/russross/blackfriday v1.6.0 // indirect
github.com/shirou/gopsutil/v3 v3.23.7 // indirect
github.com/shirou/gopsutil/v3 v3.24.5 // indirect
github.com/shopspring/decimal v1.3.1 // indirect
github.com/sirupsen/logrus v1.9.3 // indirect
github.com/spf13/cast v1.5.1 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/ulikunitz/xz v0.5.10 // indirect
github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect
github.com/yusufpapurcu/wmi v1.2.3 // indirect
github.com/yusufpapurcu/wmi v1.2.4 // indirect
github.com/zclconf/go-cty v1.8.2 // indirect
go.opencensus.io v0.24.0 // indirect
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 // indirect
@@ -201,41 +207,40 @@ require (
go.opentelemetry.io/otel/trace v1.25.0 // indirect
go.opentelemetry.io/proto/otlp v1.1.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
golang.org/x/crypto v0.21.0 // indirect
golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect
golang.org/x/net v0.23.0 // indirect
golang.org/x/oauth2 v0.17.0 // indirect
golang.org/x/sync v0.6.0 // indirect
golang.org/x/sys v0.18.0 // indirect
golang.org/x/term v0.18.0 // indirect
golang.org/x/text v0.14.0 // indirect
golang.org/x/crypto v0.26.0 // indirect
golang.org/x/net v0.28.0 // indirect
golang.org/x/oauth2 v0.22.0 // indirect
golang.org/x/sync v0.8.0 // indirect
golang.org/x/sys v0.25.0 // indirect
golang.org/x/term v0.23.0 // indirect
golang.org/x/text v0.17.0 // indirect
golang.org/x/time v0.5.0 // indirect
gomodules.xyz/jsonpatch/v2 v2.2.0 // indirect
google.golang.org/api v0.162.0 // indirect
google.golang.org/appengine v1.6.8 // indirect
google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda // indirect
google.golang.org/grpc v1.63.0 // indirect
google.golang.org/protobuf v1.33.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 // indirect
google.golang.org/grpc v1.67.0 // indirect
google.golang.org/protobuf v1.34.2 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
k8s.io/apiextensions-apiserver v0.26.10 // indirect
k8s.io/apiserver v0.28.5 // indirect
k8s.io/component-base v0.28.5 // indirect
k8s.io/gengo v0.0.0-20220902162205-c0856e24416d // indirect
k8s.io/klog/v2 v2.100.1 // indirect
k8s.io/gengo v0.0.0-20240228010128-51d4e06bde70 // indirect
k8s.io/klog/v2 v2.130.1 // indirect
k8s.io/kube-aggregator v0.26.4 // indirect
k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 // indirect
kubevirt.io/client-go v1.1.0 // indirect
k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect
kubevirt.io/client-go v1.1.1 // indirect
kubevirt.io/containerized-data-importer-api v1.57.0-alpha1 // indirect
kubevirt.io/controller-lifecycle-operator-sdk/api v0.0.0-20220329064328-f3cc58c6ed90 // indirect
kubevirt.io/kubevirt v1.1.0 // indirect
kubevirt.io/kubevirt v1.1.1 // indirect
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.2 // indirect
sigs.k8s.io/cli-utils v0.27.0 // indirect
sigs.k8s.io/cluster-api v1.4.8 // indirect
sigs.k8s.io/controller-runtime v0.14.7 // indirect
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect
sigs.k8s.io/yaml v1.3.0 // indirect
sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
sigs.k8s.io/yaml v1.4.0 // indirect
)
165 changes: 92 additions & 73 deletions go.sum

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion internal/provider/image/resource_image_constructor.go
Original file line number Diff line number Diff line change
@@ -21,7 +21,7 @@ type Constructor struct {
func (c *Constructor) Setup() util.Processors {
processors := util.NewProcessors().Tags(&c.Image.Labels).Description(&c.Image.Annotations).
String(constants.FieldImageDisplayName, &c.Image.Spec.DisplayName, true).
String(constants.FieldImageSourceType, &c.Image.Spec.SourceType, true)
String(constants.FieldImageSourceType, (*string)(&c.Image.Spec.SourceType), true)
customProcessors := []util.Processor{
{
Field: constants.FieldImageURL,
6 changes: 3 additions & 3 deletions internal/provider/image/schema_image.go
Original file line number Diff line number Diff line change
@@ -40,9 +40,9 @@ func Schema() map[string]*schema.Schema {
Type: schema.TypeString,
Required: true,
ValidateFunc: validation.StringInSlice([]string{
harvsterv1.VirtualMachineImageSourceTypeDownload,
harvsterv1.VirtualMachineImageSourceTypeUpload,
harvsterv1.VirtualMachineImageSourceTypeExportVolume,
string(harvsterv1.VirtualMachineImageSourceTypeDownload),
string(harvsterv1.VirtualMachineImageSourceTypeUpload),
string(harvsterv1.VirtualMachineImageSourceTypeExportVolume),
}, false),
},
constants.FieldImageProgress: {
Original file line number Diff line number Diff line change
@@ -9,7 +9,7 @@ import (
harvesterutil "github.com/harvester/harvester/pkg/util"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/utils/pointer"
"k8s.io/utils/ptr"
kubevirtv1 "kubevirt.io/api/core/v1"

"github.com/harvester/terraform-provider-harvester/internal/util"
@@ -62,7 +62,7 @@ func (c *Constructor) Setup() util.Processors {
firmware = &kubevirtv1.Firmware{
Bootloader: &kubevirtv1.Bootloader{
EFI: &kubevirtv1.EFI{
SecureBoot: pointer.Bool(false),
SecureBoot: ptr.To(false),
},
},
}
@@ -79,15 +79,15 @@ func (c *Constructor) Setup() util.Processors {
if firmware == nil || firmware.Bootloader == nil || firmware.Bootloader.EFI == nil {
return errors.New("EFI must be enabled to use Secure Boot. ")
}
firmware.Bootloader.EFI.SecureBoot = pointer.Bool(true)
firmware.Bootloader.EFI.SecureBoot = ptr.To(true)
vmBuilder.VirtualMachine.Spec.Template.Spec.Domain.Firmware = firmware

features := vmBuilder.VirtualMachine.Spec.Template.Spec.Domain.Features
if features == nil {
features = &kubevirtv1.Features{}
}
features.SMM = &kubevirtv1.FeatureState{
Enabled: pointer.Bool(true),
Enabled: ptr.To(true),
}
vmBuilder.VirtualMachine.Spec.Template.Spec.Domain.Features = features
return nil
@@ -243,7 +243,7 @@ func (c *Constructor) Setup() util.Processors {
}
}
}
pvcOption.StorageClassName = pointer.String(storageClassName)
pvcOption.StorageClassName = ptr.To(storageClassName)

if volumeMode := r[constants.FieldVolumeMode].(string); volumeMode != "" {
pvcOption.VolumeMode = corev1.PersistentVolumeMode(volumeMode)
6 changes: 3 additions & 3 deletions internal/provider/volume/resource_volume_constructor.go
Original file line number Diff line number Diff line change
@@ -6,7 +6,7 @@ import (
"github.com/harvester/harvester/pkg/builder"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
"k8s.io/utils/pointer"
"k8s.io/utils/ptr"

"github.com/harvester/terraform-provider-harvester/internal/util"
"github.com/harvester/terraform-provider-harvester/pkg/constants"
@@ -70,7 +70,7 @@ func (c *Constructor) Setup() util.Processors {
}
c.Volume.Annotations[builder.AnnotationKeyImageID] = helper.BuildNamespacedName(imageNamespace, imageName)
storageClassName := builder.BuildImageStorageClassName("", imageName)
c.Volume.Spec.StorageClassName = pointer.String(storageClassName)
c.Volume.Spec.StorageClassName = ptr.To(storageClassName)
return nil
},
},
@@ -81,7 +81,7 @@ func (c *Constructor) Setup() util.Processors {
if c.Volume.Annotations[builder.AnnotationKeyImageID] != "" && c.Volume.Spec.StorageClassName != nil && storageClassName != *c.Volume.Spec.StorageClassName {
return fmt.Errorf("the %s of an image can only be defined during image creation", constants.FieldVolumeStorageClassName)
} else {
c.Volume.Spec.StorageClassName = pointer.String(storageClassName)
c.Volume.Spec.StorageClassName = ptr.To(storageClassName)
}
return nil
},

0 comments on commit e9d53b0

Please sign in to comment.