I was unable to print or add a property to $evm.root['service_template'].service_resources.first.resource
So, I tried the object walker. In my method I simply called $evm.instantiate('/Discovery/ObjectWalker/object_walker')
per your docs. It printed the following in automation.log:
walk_association_whitelist = {
'MiqAeServiceServiceTemplateProvisionTask':['source','destination','miq_request','miq_request_task','miq_request_tasks','service_resource'],
'MiqAeServiceServiceTemplateProvisionRequest':['miq_request','miq_request_tasks','requester','resource','source'],
'MiqAeServiceServiceTemplate':['service_resources'],
'MiqAeServiceServiceResource':['resource','service_template'],
'MiqAeServiceMiqProvisionRequest':['miq_request','miq_request_tasks','miq_provisions','requester','resource','source','vm_template'],
'MiqAeServiceMiqProvisionRequestTemplate':['miq_request','miq_request_tasks'],
'MiqAeServiceManageIQ_Providers_Vmware_InfraManager_Provision':['source','destination','miq_provision_request','miq_request','miq_request_task','vm','vm_template'],
'MiqAeServiceManageIQ_Providers_Redhat_InfraManager_Provision':['ALL'],
'MiqAeServiceManageIQ_Providers_Amazon_CloudManager_Vm':['availability_zone','cloud_network','cloud_subnet','cloud_subnets'],
'MiqAeServiceManageIQ_Providers_Vmware_InfraManager_Vm':['ems_cluster','ems_folder','resource_pool','ext_management_system','storage','service','hardware','operating_system'],
'MiqAeServiceManageIQ_Providers_Redhat_InfraManager_Vm':['ems_cluster','resource_pool','ext_management_system','storage','service','hardware'],
'MiqAeServiceManageIQ_Providers_Azure_CloudManager_Vm':['availability_zone','cloud_networks','cloud_subnets'],
'MiqAeServiceManageIQ_Providers_Google_CloudManager_Vm':['flavor','floating_ip'],
'MiqAeServiceManageIQ_Providers_Openstack_CloudManager_Vm':['miq_provision','network_ports','network_routers','operating_system'],
'MiqAeServiceHardware':['nics','guest_devices','ports','vm'],
'MiqAeServiceUser':['current_group','current_tenant'],
'MiqAeServiceGuestDevice':['hardware','lan','network'],'MiqAeServiceManageIQ_Providers_Redhat_InfraManager_Template':['operating_system'],
'MiqAeServiceManageIQ_Providers_AnsibleTower_ConfigurationManager_ConfigurationScript':['ALL'],
'MiqAeServiceManageIQ_Providers_AnsibleTower_ConfigurationManager_Job':['ALL']
}
Looking here I didn’t see any service_template
key so I tried $evm.root['MiqAeServiceServiceTemplate'].service_resources.first.resource
. Going this route also proved fruitless as I cannot print or add a custom attribute there either. For example:
$evm.log(:info, "about to set value to $evm.root['MiqAeServiceServiceTemplate'].service_resources.first.resource.custom='musclecar': ")
$evm.root['MiqAeServiceServiceTemplate'].service_resources.first.resource['custom']='musclecar'
$evm.log(:info, "log that custom value, did it print musclecar? on next line?")
$evm.log(:info, $evm.root['MiqAeServiceServiceTemplate'].service_resources.first.resource['custom'])
produces the following errors:
[----] E, [2020-08-24T11:09:00.140778 #3209:19ad2c08] ERROR -- : <AEMethod ownerapproval2> The following error occurred during method evaluation:
[----] E, [2020-08-24T11:09:00.141045 #3209:19ad2c08] ERROR -- : <AEMethod ownerapproval2> NoMethodError: undefined method `service_resources' for nil:NilC
lass
[----] E, [2020-08-24T11:09:00.141895 #3209:19ad2c08] ERROR -- : <AEMethod ownerapproval2>
[----] E, [2020-08-24T11:09:00.143489 #3209:19ad2c08] ERROR -- : Method STDERR: /EXP/Dialog/approvals/multiapproval/ownerapproval2:4:in `<main>': undefined m
ethod `service_resources' for nil:NilClass (NoMethodError)