adding capability to set custom configuration value in virtual machines

This commit is contained in:
Chris Love 2015-11-08 18:02:07 -07:00
parent 0f46b3a6c5
commit b47d1cda7c
1 changed files with 19 additions and 16 deletions

View File

@ -269,13 +269,8 @@ func resourceVSphereVirtualMachineCreate(d *schema.ResourceData, meta interface{
} }
if vL, ok := d.GetOk("custom_configuration_parameters"); ok { if vL, ok := d.GetOk("custom_configuration_parameters"); ok {
if custom_configs, ok := vL.(map[string]interface{}); ok { if custom_configs, ok := vL.(map[string]types.AnyType); ok {
custom := make(map[string]types.AnyType) vm.customConfigurations = custom_configs
for k,v := range custom_configs {
custom[k] = v
}
vm.customConfigurations = custom
log.Printf("[DEBUG] custom_configuration_parameters init: %v", vm.customConfigurations)
} }
} }
@ -437,21 +432,14 @@ func resourceVSphereVirtualMachineRead(d *schema.ResourceData, meta interface{})
d.Set("memory", mvm.Summary.Config.MemorySizeMB) d.Set("memory", mvm.Summary.Config.MemorySizeMB)
d.Set("cpu", mvm.Summary.Config.NumCpu) d.Set("cpu", mvm.Summary.Config.NumCpu)
log.Printf("[DEBUG] ===============================") if mvm.Config && len(mvm.Config.ExtraConfig) > 0 {
//log.Printf("[DEBUG] Get extra config ===============================") custom_configs := make(map[string]string)
//log.Printf("[DEBUG] Get extra config %v", mvm.Config)
//log.Printf("[DEBUG] Get extra config %v", mvm.Config.ExtraConfig)
if mvm.Config != nil && mvm.Config.ExtraConfig != nil && len(mvm.Config.ExtraConfig) > 0 {
log.Printf("[DEBUG] reading custom configs")
custom_configs := make(map[string]types.AnyType)
for _, v := range mvm.Config.ExtraConfig { for _, v := range mvm.Config.ExtraConfig {
value := v.GetOptionValue() value := v.GetOptionValue()
custom_configs[value.Key] = value.Value custom_configs[value.Key] = value.Value
log.Printf("[DEBUG] reading custom configs %s,%s",value.Key, value.Value)
} }
d.Set("custom_configuration_parameters", custom_configs) d.Set("custom_configuration_parameters", custom_configs)
} }
log.Printf("[DEBUG] ===============================")
d.Set("datastore", rootDatastore) d.Set("datastore", rootDatastore)
// Initialize the connection info // Initialize the connection info
@ -837,6 +825,21 @@ func (vm *virtualMachine) createVirtualMachine(c *govmomi.Client) error {
log.Printf("[DEBUG] virtual machine config spec: %v", configSpec) log.Printf("[DEBUG] virtual machine config spec: %v", configSpec)
// make ExtraConfig // make ExtraConfig
if len(vm.customConfigurations) > 0 {
var ov []types.BaseOptionValue
for k, v := range vm.customConfigurations {
key := k
value := v
o := types.OptionValue{
Key: key,
Value: &value,
}
ov = append(ov, &o)
}
configSpec.ExtraConfig = ov
log.Printf("[DEBUG] virtual machine Extra Config spec: %v", configSpec.ExtraConfig)
}
log.Printf("[DEBUG] virtual machine Extra Config spec start") log.Printf("[DEBUG] virtual machine Extra Config spec start")
if len(vm.customConfigurations) > 0 { if len(vm.customConfigurations) > 0 {
var ov []types.BaseOptionValue var ov []types.BaseOptionValue