@@ -72,20 +72,21 @@ type config struct {
7272 ClientID string
7373 ClientSecret string
7474
75- Location string
76- ResourceGroup string
77- VNetResourceGroup string
78- VMSize string
79- VNetName string
80- SubnetName string
81- LoadBalancerSku string
82- RouteTableName string
83- AvailabilitySet string
84- SecurityGroupName string
85- ImageID string
86- Zones []string
87- ImagePlan * compute.Plan
88- ImageReference * compute.ImageReference
75+ Location string
76+ ResourceGroup string
77+ VNetResourceGroup string
78+ VMSize string
79+ VNetName string
80+ SubnetName string
81+ LoadBalancerSku string
82+ RouteTableName string
83+ AvailabilitySet string
84+ AssignAvailabilitySet * bool
85+ SecurityGroupName string
86+ ImageID string
87+ Zones []string
88+ ImagePlan * compute.Plan
89+ ImageReference * compute.ImageReference
8990
9091 OSDiskSize int32
9192 DataDiskSize int32
@@ -278,6 +279,8 @@ func (p *provider) getConfig(s v1alpha1.ProviderSpec) (*config, *providerconfigt
278279 return nil , nil , fmt .Errorf ("failed to get the value of \" assignPublicIP\" field, error = %v" , err )
279280 }
280281
282+ c .AssignAvailabilitySet = rawCfg .AssignAvailabilitySet
283+
281284 c .AvailabilitySet , err = p .configVarResolver .GetConfigVarStringValue (rawCfg .AvailabilitySet )
282285 if err != nil {
283286 return nil , nil , fmt .Errorf ("failed to get the value of \" availabilitySet\" field, error = %v" , err )
@@ -582,7 +585,8 @@ func (p *provider) Create(machine *v1alpha1.Machine, data *cloudprovidertypes.Pr
582585 Zones : & config .Zones ,
583586 }
584587
585- if config .AvailabilitySet != "" {
588+ if config .AssignAvailabilitySet == nil && config .AvailabilitySet != "" ||
589+ config .AssignAvailabilitySet != nil && * config .AssignAvailabilitySet && config .AvailabilitySet != "" {
586590 // Azure expects the full path to the resource
587591 asURI := fmt .Sprintf ("/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Compute/availabilitySets/%s" , config .SubscriptionID , config .ResourceGroup , config .AvailabilitySet )
588592 vmSpec .VirtualMachineProperties .AvailabilitySet = & compute.SubResource {ID : to .StringPtr (asURI )}
@@ -816,6 +820,12 @@ func (p *provider) GetCloudConfig(spec v1alpha1.MachineSpec) (config string, nam
816820 return "" , "" , fmt .Errorf ("failed to parse config: %v" , err )
817821 }
818822
823+ var avSet string
824+ if c .AssignAvailabilitySet == nil && c .AvailabilitySet != "" ||
825+ c .AssignAvailabilitySet != nil && * c .AssignAvailabilitySet && c .AvailabilitySet != "" {
826+ avSet = c .AvailabilitySet
827+ }
828+
819829 cc := & azuretypes.CloudConfig {
820830 Cloud : "AZUREPUBLICCLOUD" ,
821831 TenantID : c .TenantID ,
@@ -829,7 +839,7 @@ func (p *provider) GetCloudConfig(spec v1alpha1.MachineSpec) (config string, nam
829839 SubnetName : c .SubnetName ,
830840 LoadBalancerSku : c .LoadBalancerSku ,
831841 RouteTableName : c .RouteTableName ,
832- PrimaryAvailabilitySetName : c . AvailabilitySet ,
842+ PrimaryAvailabilitySetName : avSet ,
833843 SecurityGroupName : c .SecurityGroupName ,
834844 UseInstanceMetadata : true ,
835845 }
0 commit comments