Skip to content

Commit f75f3df

Browse files
authored
add assignAvailabilitySet to azure cloud (kubermatic#1014)
Signed-off-by: Moath Qasim <[email protected]>
1 parent 6c98ea6 commit f75f3df

File tree

2 files changed

+40
-29
lines changed

2 files changed

+40
-29
lines changed

pkg/cloudprovider/provider/azure/provider.go

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -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
}

pkg/cloudprovider/provider/azure/types/types.go

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,19 +27,20 @@ type RawConfig struct {
2727
ClientID providerconfigtypes.ConfigVarString `json:"clientID,omitempty"`
2828
ClientSecret providerconfigtypes.ConfigVarString `json:"clientSecret,omitempty"`
2929

30-
Location providerconfigtypes.ConfigVarString `json:"location"`
31-
ResourceGroup providerconfigtypes.ConfigVarString `json:"resourceGroup"`
32-
VNetResourceGroup providerconfigtypes.ConfigVarString `json:"vnetResourceGroup"`
33-
VMSize providerconfigtypes.ConfigVarString `json:"vmSize"`
34-
VNetName providerconfigtypes.ConfigVarString `json:"vnetName"`
35-
SubnetName providerconfigtypes.ConfigVarString `json:"subnetName"`
36-
LoadBalancerSku providerconfigtypes.ConfigVarString `json:"loadBalancerSku"`
37-
RouteTableName providerconfigtypes.ConfigVarString `json:"routeTableName"`
38-
AvailabilitySet providerconfigtypes.ConfigVarString `json:"availabilitySet"`
39-
SecurityGroupName providerconfigtypes.ConfigVarString `json:"securityGroupName"`
40-
Zones []string `json:"zones"`
41-
ImagePlan *ImagePlan `json:"imagePlan,omitempty"`
42-
ImageReference *ImageReference `json:"imageReference,omitempty"`
30+
Location providerconfigtypes.ConfigVarString `json:"location"`
31+
ResourceGroup providerconfigtypes.ConfigVarString `json:"resourceGroup"`
32+
VNetResourceGroup providerconfigtypes.ConfigVarString `json:"vnetResourceGroup"`
33+
VMSize providerconfigtypes.ConfigVarString `json:"vmSize"`
34+
VNetName providerconfigtypes.ConfigVarString `json:"vnetName"`
35+
SubnetName providerconfigtypes.ConfigVarString `json:"subnetName"`
36+
LoadBalancerSku providerconfigtypes.ConfigVarString `json:"loadBalancerSku"`
37+
RouteTableName providerconfigtypes.ConfigVarString `json:"routeTableName"`
38+
AvailabilitySet providerconfigtypes.ConfigVarString `json:"availabilitySet"`
39+
AssignAvailabilitySet *bool `json:"assignAvailabilitySet"`
40+
SecurityGroupName providerconfigtypes.ConfigVarString `json:"securityGroupName"`
41+
Zones []string `json:"zones"`
42+
ImagePlan *ImagePlan `json:"imagePlan,omitempty"`
43+
ImageReference *ImageReference `json:"imageReference,omitempty"`
4344

4445
ImageID providerconfigtypes.ConfigVarString `json:"imageID"`
4546
OSDiskSize int32 `json:"osDiskSize"`

0 commit comments

Comments
 (0)