1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00
fog--fog/lib/fog/vsphere/requests/compute/cloudinit_to_customspec.rb
2015-04-09 21:23:20 +12:00

65 lines
4.1 KiB
Ruby

module Fog
module Compute
class Vsphere
class Real
def cloudinit_to_customspec(user_data)
raise ArgumentError, "user_data can't be nil" if user_data.nil?
custom_spec = { 'customization_spec' => Hash.new }
user_data = YAML.load(user_data)
# https://pubs.vmware.com/vsphere-55/index.jsp#com.vmware.wssdk.apiref.doc/vim.vm.customization.Specification.html
# encryptionKey expects an array
# globalIPSettings expects a hash, REQUIRED
# identity expects an hash, REQUIRED
# nicSettingMap expects an array
# options expects an hash
custom_spec['encryptionKey'] = user_data['encryptionKey'] if user_data.key?('encryptionKey')
custom_spec['globalIPSettings'] = user_data['globalIPSettings'] if user_data.key?('globalIPSettings')
custom_spec['identity'] = user_data['identity'] if user_data.key?('identity')
custom_spec['nicSettingMap'] = user_data['nicSettingMap'] if user_data.key?('nicSettingMap')
custom_spec['options'] = user_data['options'] if user_data.key?('options')
# for backwards compatability
# hostname expects a string, REQUIRED
# netmask expects a string
# dns expects an array
# gateway expects an array
# domain expects a string, REQUIRED
# domainsuffixlist expects an array, REQUIRED
# timezone expects a string, for example Europe/Copenhagen, REQUIRED
custom_spec['hostname'] = user_data['hostname'] if user_data.key?('hostname')
custom_spec['ipsettings'] = { 'ip' => user_data['ip'] } if user_data.key?('ip')
custom_spec['ipsettings']['subnetMask'] = user_data['netmask'] if user_data.key?('netmask')
custom_spec['ipsettings']['dnsServerList'] = user_data['dns'] if user_data.key?('dns')
custom_spec['ipsettings']['gateway'] = user_data['gateway'] if user_data.key?('gateway')
custom_spec['domain'] = user_data['domain'] if user_data.key?('domain')
custom_spec['dnsSuffixList'] = user_data['domainsuffixlist'] if user_data.key?('domainsuffixlist')
custom_spec['time_zone'] = user_data['timezone'] if user_data.key?('timezone')
custom_spec
end
end
class Mock
def cloudinit_to_customspec(user_data)
raise ArgumentError, "user_data can't be nil" if user_data.nil?
custom_spec = { 'customization_spec' => Hash.new }
user_data = YAML.load(user_data)
custom_spec['encryptionKey'] = user_data['encryptionKey'] if user_data.key?('encryptionKey')
custom_spec['globalIPSettings'] = user_data['globalIPSettings'] if user_data.key?('globalIPSettings')
custom_spec['identity'] = user_data['identity'] if user_data.key?('identity')
custom_spec['nicSettingMap'] = user_data['nicSettingMap'] if user_data.key?('nicSettingMap')
custom_spec['options'] = user_data['options'] if user_data.key?('options')
custom_spec['hostname'] = user_data['hostname'] if user_data.key?('hostname')
custom_spec['ipsettings'] = { 'ip' => user_data['ip'] } if user_data.key?('ip')
custom_spec['ipsettings']['subnetMask'] = user_data['netmask'] if user_data.key?('netmask')
custom_spec['ipsettings']['dnsServerList'] = user_data['dns'] if user_data.key?('dns')
custom_spec['ipsettings']['gateway'] = user_data['gateway'] if user_data.key?('gateway')
custom_spec['domain'] = user_data['domain'] if user_data.key?('domain')
custom_spec['dnsSuffixList'] = user_data['domainsuffixlist'] if user_data.key?('domainsuffixlist')
custom_spec['time_zone'] = user_data['timezone'] if user_data.key?('timezone')
custom_spec
end
end
end
end
end