propertyMapping not applying values to VM
#689 aberto em 15 de dez. de 2021
Métricas do repositório
- Stars
- (972 stars)
- Métricas de merge de PR
- (Nenhuma PRs mesclada em 30d)
Description
Hi all,
There are a couple old issues posted on this topic that haven't been answered, so I figured I would just open a new issue.
I have an existing OVA that has some custom properties in the OVF that accept values from the user (snippet):
<Property ovf:key="activation_code" ovf:type="string" ovf:userConfigurable="true">
<Label>Activation Code</Label>
<Description>Activation Code</Description>
</Property>
<Property ovf:key="cli_cmds_init" ovf:type="string" ovf:userConfigurable="true">
<Label>Initial CLI commands</Label>
<Description>Base64 encoded set of CLI commands for initial configuration</Description>
</Property>
<Property ovf:key="cli_cmds_init_url" ovf:type="string" ovf:userConfigurable="true">
<Label>Initial CLI commands URL</Label>
<Description>URL to text file that contains set of CLI commands for initial configuration</Description>
</Property>
<Property ovf:key="reset_admin_password" ovf:password="true" ovf:type="string" ovf:userConfigurable="true">
<Label>Reset admin password</Label>
<Description>Reset admin password to this value</Description>
</Property>
Reflected in script:
property = (vim.vApp.PropertyInfo) [
(vim.vApp.PropertyInfo) {
dynamicType = <unset>,
dynamicProperty = (vmodl.DynamicProperty) [],
key = 0,
classId = '',
instanceId = '',
id = 'activation_code',
label = 'Activation Code',
type = 'string',
typeReference = '',
userConfigurable = true,
defaultValue = '',
value = <unset>,
description = 'Activation Code'
},
(vim.vApp.PropertyInfo) {
dynamicType = <unset>,
dynamicProperty = (vmodl.DynamicProperty) [],
key = 1,
classId = '',
instanceId = '',
id = 'cli_cmds_init',
label = 'Initial CLI commands',
type = 'string',
typeReference = '',
userConfigurable = true,
defaultValue = '',
value = <unset>,
description = 'Base64 encoded set of CLI commands for initial configuration'
},
(vim.vApp.PropertyInfo) {
dynamicType = <unset>,
dynamicProperty = (vmodl.DynamicProperty) [],
key = 2,
classId = '',
instanceId = '',
id = 'cli_cmds_init_url',
label = 'Initial CLI commands URL',
type = 'string',
typeReference = '',
userConfigurable = true,
defaultValue = '',
value = <unset>,
description = 'URL to text file that contains set of CLI commands for initial configuration'
},
(vim.vApp.PropertyInfo) {
dynamicType = <unset>,
dynamicProperty = (vmodl.DynamicProperty) [],
key = 3,
classId = '',
instanceId = '',
id = 'reset_admin_password',
label = 'Reset admin password',
type = 'password',
typeReference = '',
userConfigurable = true,
defaultValue = '',
value = <unset>,
description = 'Reset admin password to this value'
},
I'm using the following code in deploy_ova.py to assign values to the properties:
ovf_handle = OvfHandler(ova_path)
ovf_manager = si.content.ovfManager
properties = [
vim.KeyValue(key='activation_code', value=activation_code),
vim.KeyValue(key='cli_cmds_init', value=cli_cmds),
vim.KeyValue(key='reset_admin_password', value=admin_pwd),
]
cisp = vim.OvfManager.CreateImportSpecParams(entityName=vm_name, propertyMapping=properties)
cisr = ovf_manager.CreateImportSpec(ovf_handle.get_descriptor(), resource_pool, datastore, cisp)
if cisr.error:
print("The following errors will prevent import of this OVA:")
for error in cisr.error:
print("%s" % error)
return 1
ovf_handle.set_spec(cisr)
After printing the result, I can see it (seemingly) setting the appropriate value:
property = (vim.vApp.PropertySpec) [
(vim.vApp.PropertySpec) {
dynamicType = <unset>,
dynamicProperty = (vmodl.DynamicProperty) [],
operation = 'add',
removeKey = <unset>,
info = (vim.vApp.PropertyInfo) {
dynamicType = <unset>,
dynamicProperty = (vmodl.DynamicProperty) [],
key = 0,
classId = '',
instanceId = '',
id = 'activation_code',
label = 'Activation Code',
type = 'string',
typeReference = <unset>,
userConfigurable = true,
defaultValue = '',
value = 'AC2-LCHL-1L65-TF5Y-GC76-570T-B2JR-X1UE-7XRX-FTKC-QU5E-KNMM-FTB9-QX1E-GLYJ-09EG',
description = 'Activation Code'
}
},
(vim.vApp.PropertySpec) {
dynamicType = <unset>,
dynamicProperty = (vmodl.DynamicProperty) [],
operation = 'add',
removeKey = <unset>,
info = (vim.vApp.PropertyInfo) {
dynamicType = <unset>,
dynamicProperty = (vmodl.DynamicProperty) [],
key = 1,
classId = '',
instanceId = '',
id = 'cli_cmds_init',
label = 'Initial CLI commands',
type = 'string',
typeReference = <unset>,
userConfigurable = true,
defaultValue = '',
value = 'ZW5hYmxlCmNvbmZpZ3VyZSB0ZXJtaW5hbAp1c2VybmFtZSBhZG1pbiBhY2Nlc3MgbmV0d29yayBlbmFibGUKaG9zdG5hbWUgMC1mZS1jbQpubyBudHAgc2VydmVyIDAuZmlyZWV5ZS5wb29sLm50cC5vcmcKbm8gbnRwIHNlcnZlciAxLmZpcmVleWUucG9vbC5udHAub3JnCm5vIG50cCBzZXJ2ZXIgMi5maXJlZXllLnBvb2wubnRwLm9yZwpubyBudHAgc2VydmVyIDMuZmlyZWV5ZS5wb29sLm50cC5vcmcKbnRwIHNlcnZlciAxMC42NS4xLjEKbm8gaW50ZXJmYWNlIGV0aGVyMSBkaGNwCm5vIGludGVyZmFjZSBldGhlcjEgemVyb2NvbmYKbm8gaW50ZXJmYWNlIGV0aGVyMSBpcHY2IGVuYWJsZQppbnRlcmZhY2UgZXRoZXIxIGlwIGFkZHJlc3MgMTAuNjUuMS4xIC8yNAppcCBkZWZhdWx0LWdhdGV3YXkgMTAuNjUuMS4xCmlwIG5hbWUtc2VydmVyIDEwLjY1LjEuMQppcCBkb21haW4tbGlzdCBhbmcudGVzdAo=',
description = 'Base64 encoded set of CLI commands for initial configuration'
}
},
(vim.vApp.PropertySpec) {
dynamicType = <unset>,
dynamicProperty = (vmodl.DynamicProperty) [],
operation = 'add',
removeKey = <unset>,
info = (vim.vApp.PropertyInfo) {
dynamicType = <unset>,
dynamicProperty = (vmodl.DynamicProperty) [],
key = 2,
classId = '',
instanceId = '',
id = 'cli_cmds_init_url',
label = 'Initial CLI commands URL',
type = 'string',
typeReference = <unset>,
userConfigurable = true,
defaultValue = '',
value = '',
description = 'URL to text file that contains set of CLI commands for initial configuration'
}
},
(vim.vApp.PropertySpec) {
dynamicType = <unset>,
dynamicProperty = (vmodl.DynamicProperty) [],
operation = 'add',
removeKey = <unset>,
info = (vim.vApp.PropertyInfo) {
dynamicType = <unset>,
dynamicProperty = (vmodl.DynamicProperty) [],
key = 3,
classId = '',
instanceId = '',
id = 'reset_admin_password',
label = 'Reset admin password',
type = 'password',
typeReference = <unset>,
userConfigurable = true,
defaultValue = '',
value = 'xxxxxx',
description = 'Reset admin password to this value'
}
},
However, when the OVA gets deployed, it does not apply the new values to the VM.
Hopefully this provides enough info, but I'm happy to add more context. Any help would be greatly appreciated!