Skip to content

Commit 68f0b75

Browse files
authored
Merge pull request #2631 from willie-yao/custom-vm-extensions
Add support for custom vm extensions
2 parents 071dd13 + 2634777 commit 68f0b75

File tree

44 files changed

+1004
-12
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+1004
-12
lines changed

api/v1alpha3/azuremachine_conversion.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,10 @@ func (src *AzureMachine) ConvertTo(dstRaw conversion.Hub) error {
6262
dst.Spec.DNSServers = restored.Spec.DNSServers
6363
}
6464

65+
if len(restored.Spec.VMExtensions) > 0 {
66+
dst.Spec.VMExtensions = restored.Spec.VMExtensions
67+
}
68+
6569
dst.Spec.SubnetName = restored.Spec.SubnetName
6670

6771
dst.Status.LongRunningOperationStates = restored.Status.LongRunningOperationStates

api/v1alpha3/azuremachinetemplate_conversion.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,10 @@ func (src *AzureMachineTemplate) ConvertTo(dstRaw conversion.Hub) error {
6565
dst.Spec.Template.Spec.DNSServers = restored.Spec.Template.Spec.DNSServers
6666
}
6767

68+
if len(restored.Spec.Template.Spec.VMExtensions) > 0 {
69+
dst.Spec.Template.Spec.VMExtensions = restored.Spec.Template.Spec.VMExtensions
70+
}
71+
6872
return nil
6973
}
7074

api/v1alpha3/zz_generated.conversion.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/v1alpha4/azuremachine_conversion.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ func (src *AzureMachine) ConvertTo(dstRaw conversion.Hub) error {
4848
dst.Spec.DNSServers = restored.Spec.DNSServers
4949
}
5050

51+
if len(restored.Spec.VMExtensions) > 0 {
52+
dst.Spec.VMExtensions = restored.Spec.VMExtensions
53+
}
54+
5155
return nil
5256
}
5357

api/v1alpha4/azuremachinetemplate_conversion.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@ func (src *AzureMachineTemplate) ConvertTo(dstRaw conversion.Hub) error {
5050
dst.Spec.Template.Spec.DNSServers = restored.Spec.Template.Spec.DNSServers
5151
}
5252

53+
if len(restored.Spec.Template.Spec.VMExtensions) > 0 {
54+
dst.Spec.Template.Spec.VMExtensions = restored.Spec.Template.Spec.VMExtensions
55+
}
56+
5357
return nil
5458
}
5559

api/v1alpha4/zz_generated.conversion.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/v1beta1/azuremachine_types.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,10 @@ type AzureMachineSpec struct {
122122
// DNSServers adds a list of DNS Server IP addresses to the VM NICs.
123123
// +optional
124124
DNSServers []string `json:"dnsServers,omitempty"`
125+
126+
// VMExtensions specifies a list of extensions to be added to the virtual machine.
127+
// +optional
128+
VMExtensions []VMExtension `json:"vmExtensions,omitempty"`
125129
}
126130

127131
// SpotVMOptions defines the options relevant to running the Machine on Spot VMs.

api/v1beta1/types.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -530,6 +530,22 @@ type DataDisk struct {
530530
CachingType string `json:"cachingType,omitempty"`
531531
}
532532

533+
// VMExtension specifies the parameters for a custom VM extension.
534+
type VMExtension struct {
535+
// Name is the name of the extension.
536+
Name string `json:"name"`
537+
// Publisher is the name of the extension handler publisher.
538+
Publisher string `json:"publisher"`
539+
// Version specifies the version of the script handler.
540+
Version string `json:"version"`
541+
// Settings is a JSON formatted public settings for the extension.
542+
// +optional
543+
Settings Tags `json:"settings,omitempty"`
544+
// ProtectedSettings is a JSON formatted protected settings for the extension.
545+
// +optional
546+
ProtectedSettings Tags `json:"protectedSettings,omitempty"`
547+
}
548+
533549
// ManagedDiskParameters defines the parameters of a managed disk.
534550
type ManagedDiskParameters struct {
535551
// +optional

api/v1beta1/zz_generated.deepcopy.go

Lines changed: 36 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

azure/scope/machine.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,21 @@ func (m *MachineScope) HasSystemAssignedIdentity() bool {
333333
// VMExtensionSpecs returns the VM extension specs.
334334
func (m *MachineScope) VMExtensionSpecs() []azure.ResourceSpecGetter {
335335
var extensionSpecs = []azure.ResourceSpecGetter{}
336+
for _, extension := range m.AzureMachine.Spec.VMExtensions {
337+
extensionSpecs = append(extensionSpecs, &vmextensions.VMExtensionSpec{
338+
ExtensionSpec: azure.ExtensionSpec{
339+
Name: extension.Name,
340+
VMName: m.Name(),
341+
Publisher: extension.Publisher,
342+
Version: extension.Version,
343+
Settings: extension.Settings,
344+
ProtectedSettings: extension.ProtectedSettings,
345+
},
346+
ResourceGroup: m.ResourceGroup(),
347+
Location: m.Location(),
348+
})
349+
}
350+
336351
bootstrapExtensionSpec := azure.GetBootstrappingVMExtension(m.AzureMachine.Spec.OSDisk.OSType, m.CloudEnvironment(), m.Name())
337352

338353
if bootstrapExtensionSpec != nil {

0 commit comments

Comments
 (0)