Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 1 addition & 11 deletions empty/cloudbase-init.conf
Original file line number Diff line number Diff line change
Expand Up @@ -136,17 +136,7 @@ metadata_services = cloudbaseinit.metadata.services.base.EmptyMetadataService

# List of enabled plugin classes, to be executed in the provided order (list
# value)
plugins = cloudbaseinit.plugins.common.mtu.MTUPlugin,
cloudbaseinit.plugins.windows.ntpclient.NTPClientPlugin,
cloudbaseinit.plugins.windows.sanpolicy.SANPolicyPlugin,
cloudbaseinit.plugins.windows.displayidletimeout.DisplayIdleTimeoutConfigPlugin,
cloudbaseinit.plugins.windows.bootconfig.BootStatusPolicyPlugin,
cloudbaseinit.plugins.windows.extendvolumes.ExtendVolumesPlugin,
cloudbaseinit.plugins.windows.winrmlistener.ConfigWinRMListenerPlugin,
cloudbaseinit.plugins.common.localscripts.LocalScriptsPlugin,
cloudbaseinit.plugins.common.trim.TrimConfigPlugin,
cloudbaseinit.plugins.windows.bootconfig.BCDConfigPlugin,
cloudbaseinit.plugins.windows.bootconfig.BootStatusPolicyPlugin
plugins = cloudbaseinit.plugins.common.mtu.MTUPlugin,cloudbaseinit.plugins.windows.ntpclient.NTPClientPlugin,cloudbaseinit.plugins.windows.sanpolicy.SANPolicyPlugin,cloudbaseinit.plugins.windows.displayidletimeout.DisplayIdleTimeoutConfigPlugin,cloudbaseinit.plugins.windows.bootconfig.BootStatusPolicyPlugin,cloudbaseinit.plugins.windows.extendvolumes.ExtendVolumesPlugin,cloudbaseinit.plugins.windows.winrmlistener.ConfigWinRMListenerPlugin,cloudbaseinit.plugins.common.localscripts.LocalScriptsPlugin,cloudbaseinit.plugins.common.trim.TrimConfigPlugin,cloudbaseinit.plugins.windows.bootconfig.BCDConfigPlugin,cloudbaseinit.plugins.windows.bootconfig.BootStatusPolicyPlugin

# List of enabled userdata content plugins (list value)
#user_data_plugins = cloudbaseinit.plugins.common.userdataplugins.parthandler.PartHandlerPlugin,cloudbaseinit.plugins.common.userdataplugins.cloudconfig.CloudConfigPlugin,cloudbaseinit.plugins.common.userdataplugins.cloudboothook.CloudBootHookPlugin,cloudbaseinit.plugins.common.userdataplugins.shellscript.ShellScriptPlugin,cloudbaseinit.plugins.common.userdataplugins.multipartmixed.MultipartMixedPlugin,cloudbaseinit.plugins.common.userdataplugins.heat.HeatPlugin
Expand Down
42 changes: 41 additions & 1 deletion functional-tests/CloudbaseInit.Tests.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ function after.cloudbaseinit.plugins.common.mtu.MTUPlugin {
# in the test environment
}


function before.cloudbaseinit.plugins.windows.ntpclient.NTPClientPlugin {
It "w32time service should exist" {
{ Get-Service "w32time" -ErrorAction Stop } | Should -Not -Throw
Expand Down Expand Up @@ -272,6 +271,35 @@ function prepare.openstack {
popd
}

function before.cloudbaseinit.plugins.windows.bootconfig.BCDConfigPlugin {
# TBD
}
function after.cloudbaseinit.plugins.windows.bootconfig.BCDConfigPlugin {
# TBD
}

function before.cloudbaseinit.plugins.windows.bootconfig.BootStatusPolicyPlugin {
# TBD
}
function after.cloudbaseinit.plugins.windows.bootconfig.BootStatusPolicyPlugin {
# TBD
}

function prepare.nocloud {
pushd "$here/../$($env:CLOUD)"
try {
Dismount-DiskImage -ErrorAction SilentlyContinue (Resolve-Path "../cloudbase-init-config-drive.iso")
Remove-Item -Force -ErrorAction SilentlyContinue "../cloudbase-init-config-drive.iso"
} catch {}
try {
& "$here/../bin/mkisofs.exe" -o "../cloudbase-init-config-drive.iso" -ignore-error -ldots -allow-lowercase -allow-multidot -l -publisher "cbsl" -quiet -J -r -V "cidata" "cloudbase-init-metadata" 2>&1
} catch {}
Mount-DiskImage -ImagePath (Resolve-Path "../cloudbase-init-config-drive.iso") | Out-Null
Get-PsDrive | Out-Null

popd
}

BeforeDiscovery {
$env:CLOUD | Should -Not -Be $null
$metadataServiceConfigFile = Resolve-Path "$here/../$($env:CLOUD)/cloudbase-init.conf"
Expand All @@ -283,6 +311,12 @@ BeforeDiscovery {
}

Describe "TestVerifyBeforeAllPlugins" {
$env:CLOUD | Should -Not -Be $null
$metadataServiceConfigFile = Resolve-Path "$here/../$($env:CLOUD)/cloudbase-init.conf"
$pluginList = Get-IniFileValue -Path $metadataServiceConfigFile -Section "DEFAULT" `
-Key "plugins" `
-Default ""
$pluginList = $pluginList.Split(",")
Context "Verify state before running plugin" -ForEach $pluginList {
$plugin = $_
if (!$plugin) {
Expand All @@ -305,6 +339,12 @@ Describe "TestVerifyBeforeAllPlugins" {
}

Describe "TestVerifyAfterAllPlugins" {
$env:CLOUD | Should -Not -Be $null
$metadataServiceConfigFile = Resolve-Path "$here/../$($env:CLOUD)/cloudbase-init.conf"
$pluginList = Get-IniFileValue -Path $metadataServiceConfigFile -Section "DEFAULT" `
-Key "plugins" `
-Default ""
$pluginList = $pluginList.Split(",")
Context "Verify state after running plugin" -ForEach $pluginList {
$plugin = $_
if (!$plugin) {
Expand Down
2 changes: 1 addition & 1 deletion nocloud/cloudbase-init-metadata/meta-data
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"reservation-id": "r-yze3jupp", "hostname": "v4.novalocal", "security-groups": [], "public-ipv4": "", "ami-manifest-path": "FIXME", "instance-type": "windowsoff", "instance-id": "i-00000039", "local-ipv4": "10.0.0.50", "local-hostname": "v4.novalocal", "placement": {"availability-zone": "nova"}, "ami-launch-index": 0, "public-hostname": "v4.novalocal", "public-keys": {"0": {"openssh-key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDp6TTydco9e6c0a+kqrITGdeMoAJrK3yFknvvp8g4PTPFSCAWhlQ2xQYaLRyHw4ytHdcubvffh2dtt7XlgUpPlrc1SaaB0PbkmZt5r2opMiC1Yx00Wd9YbgOK6aFAHkovFnbTQlyhBomIY0j55EkfuUibALeK5qPMW3bNldqkZTXtX6goBPdIgNoXsvSfeDnmsVYVZzoNAMll74ryeJtiRJQUUEbd2VU5yZiuBW0EWLCImfb8L6FmVfot5lHII1HBhKHfRwJtapucdkIYEpIc1q3w26Jh/TwiCl8474dTOXn50v12OqKeQKCdKwNJnwQlvm772ZZSu0k4WVcsBDDhr root@localhost.localdomain\n", "_name": "0=userkey"}}, "ami-id": "ami-00000008", "instance-action": "none", "block-device-mapping": {"ami": "vda", "root": "/dev/vda"}}
{"reservation-id": "r-yze3jupp", "hostname": "v4.novalocal", "security-groups": [], "public-ipv4": "", "ami-manifest-path": "FIXME", "instance-type": "windowsoff", "instance-id": "b9517879-4e93-4a1a-9073-4ae0ddfac27c", "local-ipv4": "10.0.0.50", "local-hostname": "v4.novalocal", "placement": {"availability-zone": "nova"}, "ami-launch-index": 0, "public-hostname": "v4.novalocal", "public-keys": {"0": {"openssh-key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDp6TTydco9e6c0a+kqrITGdeMoAJrK3yFknvvp8g4PTPFSCAWhlQ2xQYaLRyHw4ytHdcubvffh2dtt7XlgUpPlrc1SaaB0PbkmZt5r2opMiC1Yx00Wd9YbgOK6aFAHkovFnbTQlyhBomIY0j55EkfuUibALeK5qPMW3bNldqkZTXtX6goBPdIgNoXsvSfeDnmsVYVZzoNAMll74ryeJtiRJQUUEbd2VU5yZiuBW0EWLCImfb8L6FmVfot5lHII1HBhKHfRwJtapucdkIYEpIc1q3w26Jh/TwiCl8474dTOXn50v12OqKeQKCdKwNJnwQlvm772ZZSu0k4WVcsBDDhr root@localhost.localdomain\n", "_name": "0=userkey"}}, "ami-id": "ami-00000008", "instance-action": "none", "block-device-mapping": {"ami": "vda", "root": "/dev/vda"}}
41 changes: 38 additions & 3 deletions nocloud/cloudbase-init-metadata/user-data
Original file line number Diff line number Diff line change
@@ -1,5 +1,40 @@
#ps1
#cloud-config
groups:
-
windows:
- Admin
- cloud-users

mkdir C:\helloworld
users:
-
name: cloud-config-user
gecos: 'Created by cloudbase-init'
primary_group: cloud-users
groups: windows

exit 0
write_files:
-
encoding: b64
content: CiMgVGhpcyBmaWxlIGNvbnRyb2xzIHRoZSBzdGF0ZSBvZiBTRUxpbnV4
path: 'C:\test_file'
permissions: '0644'
-
content: "# Example ps1 file\necho 'test'\n"
path: 'C:\test_append.ps1'
permissions: '0644'
-
content: "added to file\n"
path: 'C:\test_append.ps1'
permissions: '0644'
append: true
runcmd:
-
- dir
- 'c:\'
- 'mkdir c:\runcmd'
ntp:
enabled: true
pools:
- 1.pool.ntp.org
servers:
- 0.pool.ntp.org
16 changes: 1 addition & 15 deletions nocloud/cloudbase-init.conf
Original file line number Diff line number Diff line change
Expand Up @@ -136,21 +136,7 @@ metadata_services = cloudbaseinit.metadata.services.nocloudservice.NoCloudConfig

# List of enabled plugin classes, to be executed in the provided order (list
# value)
plugins = cloudbaseinit.plugins.common.mtu.MTUPlugin,
cloudbaseinit.plugins.windows.ntpclient.NTPClientPlugin,
cloudbaseinit.plugins.windows.sanpolicy.SANPolicyPlugin,
cloudbaseinit.plugins.windows.displayidletimeout.DisplayIdleTimeoutConfigPlugin,
cloudbaseinit.plugins.windows.bootconfig.BootStatusPolicyPlugin,
cloudbaseinit.plugins.common.sethostname.SetHostNamePlugin,
cloudbaseinit.plugins.windows.createuser.CreateUserPlugin,
cloudbaseinit.plugins.common.sshpublickeys.SetUserSSHPublicKeysPlugin,
cloudbaseinit.plugins.windows.extendvolumes.ExtendVolumesPlugin,
cloudbaseinit.plugins.common.userdata.UserDataPlugin,
cloudbaseinit.plugins.common.setuserpassword.SetUserPasswordPlugin,
cloudbaseinit.plugins.windows.winrmlistener.ConfigWinRMListenerPlugin,
cloudbaseinit.plugins.windows.winrmcertificateauth.ConfigWinRMCertificateAuthPlugin,
cloudbaseinit.plugins.common.localscripts.LocalScriptsPlugin,
cloudbaseinit.plugins.common.trim.TrimConfigPlugin,
plugins = cloudbaseinit.plugins.common.mtu.MTUPlugin,cloudbaseinit.plugins.windows.ntpclient.NTPClientPlugin,cloudbaseinit.plugins.windows.sanpolicy.SANPolicyPlugin,cloudbaseinit.plugins.windows.displayidletimeout.DisplayIdleTimeoutConfigPlugin,cloudbaseinit.plugins.windows.bootconfig.BootStatusPolicyPlugin,cloudbaseinit.plugins.common.sethostname.SetHostNamePlugin,cloudbaseinit.plugins.windows.createuser.CreateUserPlugin,cloudbaseinit.plugins.common.sshpublickeys.SetUserSSHPublicKeysPlugin,cloudbaseinit.plugins.windows.extendvolumes.ExtendVolumesPlugin,cloudbaseinit.plugins.common.userdata.UserDataPlugin,cloudbaseinit.plugins.common.setuserpassword.SetUserPasswordPlugin,cloudbaseinit.plugins.windows.winrmlistener.ConfigWinRMListenerPlugin,cloudbaseinit.plugins.windows.winrmcertificateauth.ConfigWinRMCertificateAuthPlugin,cloudbaseinit.plugins.common.localscripts.LocalScriptsPlugin,cloudbaseinit.plugins.common.trim.TrimConfigPlugin,

# List of enabled userdata content plugins (list value)
#user_data_plugins = cloudbaseinit.plugins.common.userdataplugins.parthandler.PartHandlerPlugin,cloudbaseinit.plugins.common.userdataplugins.cloudconfig.CloudConfigPlugin,cloudbaseinit.plugins.common.userdataplugins.cloudboothook.CloudBootHookPlugin,cloudbaseinit.plugins.common.userdataplugins.shellscript.ShellScriptPlugin,cloudbaseinit.plugins.common.userdataplugins.multipartmixed.MultipartMixedPlugin,cloudbaseinit.plugins.common.userdataplugins.heat.HeatPlugin
Expand Down