diff --git a/go.mod b/go.mod index d6ba6c1b..c92b4c2c 100644 --- a/go.mod +++ b/go.mod @@ -42,6 +42,7 @@ replace ( kubevirt.io/client-go => github.com/kubevirt/client-go v0.40.0-rc.2 kubevirt.io/containerized-data-importer => github.com/rancher/kubevirt-containerized-data-importer v1.26.1-0.20210303063201-9e7a78643487 sigs.k8s.io/structured-merge-diff => sigs.k8s.io/structured-merge-diff v0.0.0-20190302045857-e85c7b244fd2 + github.com/harvester/go-harvester => github.com/nicolamarella/go-harvester v0.0.0-20210611103401-4ab3f45066a7 ) require ( diff --git a/go.sum b/go.sum index 51f1113d..74e26104 100644 --- a/go.sum +++ b/go.sum @@ -893,6 +893,8 @@ github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxzi github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/ncw/swift v1.0.47/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM= +github.com/nicolamarella/go-harvester v0.0.0-20210611103401-4ab3f45066a7 h1:/yqmiqCCRDOvpL6zmGSlI4xk/ybz6mewPWoKjn0XkNQ= +github.com/nicolamarella/go-harvester v0.0.0-20210611103401-4ab3f45066a7/go.mod h1:/4BiNqnNK5HGfvlanwKv0RZLXNTIaE8GT3D1w4Vmt+Y= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.5 h1:obHEce3upls1IBn1gTw/o7bCv7OJb6Ib/o7wNO+4eKw= github.com/nxadm/tail v1.4.5/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= diff --git a/harvester/create.go b/harvester/create.go index 5633a1ce..5ace4f87 100644 --- a/harvester/create.go +++ b/harvester/create.go @@ -1,6 +1,7 @@ package harvester import ( + "encoding/json" "fmt" "io/ioutil" "strings" @@ -104,6 +105,17 @@ func (d *Driver) Create() error { ImageID: fmt.Sprintf("%s/%s", d.Namespace, d.ImageName), } + templateAnnotations := make(map[string]string) + j_err := json.Unmarshal([]byte(d.Annotations), &templateAnnotations) + if j_err != nil { + panic(j_err) + } + templateLabels := make(map[string]string) + l_err := json.Unmarshal([]byte(d.Labels), &templateLabels) + if l_err != nil { + panic(l_err) + } + // create vm vmBuilder := builder.NewVMBuilder("docker-machine-driver-harvester"). Namespace(d.Namespace).Name(d.MachineName). @@ -111,6 +123,8 @@ func (d *Driver) Create() error { Image(d.DiskSize, d.DiskBus, dataVolumeOption). EvictionStrategy(true). DefaultPodAntiAffinity(). + SpecTemplateAnnotations(templateAnnotations). + SpecTemplateLabels(templateLabels). CloudInit(userData, networkData) if d.KeyPairName != "" { diff --git a/harvester/flags.go b/harvester/flags.go index 5a943b98..0215d2f3 100644 --- a/harvester/flags.go +++ b/harvester/flags.go @@ -125,6 +125,16 @@ func (d *Driver) GetCreateFlags() []mcnflag.Flag { Name: "harvester-network-name", Usage: "harvester network name", }, + mcnflag.StringFlag{ + EnvVar: "HARVESTER_ANNOTATIONS", + Name: "harvester-annotations", + Usage: "harvester annotations", + }, + mcnflag.StringFlag{ + EnvVar: "HARVESTER_ANNOTATIONS", + Name: "harvester-labels", + Usage: "harvester labels", + }, mcnflag.StringFlag{ EnvVar: "HARVESTER_NETWORK_MODEL", Name: "harvester-network-model", @@ -161,6 +171,9 @@ func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error { d.NetworkName = flags.String("harvester-network-name") d.NetworkModel = flags.String("harvester-network-model") + d.Annotations = flags.String("harvester-annotations") + d.Labels = flags.String("harvester-labels") + d.SetSwarmConfigFromFlags(flags) return d.checkConfig() diff --git a/harvester/harvester.go b/harvester/harvester.go index 3624f813..cc4002c5 100644 --- a/harvester/harvester.go +++ b/harvester/harvester.go @@ -52,6 +52,9 @@ type Driver struct { NetworkName string NetworkModel string + + Annotations string + Labels string } func NewDriver(hostName, storePath string) *Driver {