Skip to main content
Solved

Add Vm's to category based on VLAN

  • Dec 17, 2023 8:54 PM UTC
  • 1 reply
  • 223 views

Forum|alt.badge.img+1

Hello We want to create an automation that any new VM based on its subnet (Vlan) will be automatically added to category.

(I have tried to use a playbook, but it's not working.)
How can we do that?
Thank you

Best answer by JoseNutanix

Hi nivlev,

You can accomplish this with playbooks. Attaching an example, save the code snippet with .pbk extension and import it into your PC instance. For future inspirations, please don’t hesitate to visit our playbook library.

{
"pcVersion": "2023.3",
"pcUuid": "667976da-ef32-4d13-b213-41ee98566b33",
"hashValue": "z5T8FVrlyRMGp78sfHBFRKRQ+hBdhZdIGoT1gSv4+BM=",
"actionRuleList": [
{
"uuid": "6b03ebe3-4bf4-4b5a-ab61-f3b2cf6e5b94",
"name": "vlan-to-category",
"isEnabled": false,
"validated": false,
"triggerList": [
{
"uuid": "ffb6064c-8a86-4557-8431-2d722c7b05fb",
"triggerType": {
"type": "trigger_type",
"uuid": "",
"name": "event_trigger"
},
"displayName": "Event",
"inputParameterList": [
{
"name": "operation_type",
"value": "1"
},
{
"name": "category_filter_list",
"value": "[]"
},
{
"name": "type",
"value": "VmCreateAudit"
},
{
"name": "source_entity_info_list",
"value": "[]"
}
]
}
],
"actionList": [
{
"uuid": "4b68c997-96e1-43b3-aaea-045e6ea03964",
"actionType": {
"type": "action_type",
"uuid": "",
"name": "wait_for_duration"
},
"displayName": "Wait for Some Time",
"inputParameterList": [
{
"name": "block_resume",
"value": "false"
},
{
"name": "post_check_trigger_validity",
"value": "false"
},
{
"name": "stop_after_time",
"value": "false"
},
{
"name": "wait_duration",
"value": "2"
}
],
"maxRetries": 2,
"postCheckTriggerValidity": false,
"childActionUuids": [
"ead4bbb9-9d9a-413a-8468-3d9d81f36cb4"
]
},
{
"uuid": "ead4bbb9-9d9a-413a-8468-3d9d81f36cb4",
"actionType": {
"type": "action_type",
"uuid": "",
"name": "rest_api_action"
},
"displayName": "REST API",
"inputParameterList": [
{
"name": "auth_type",
"value": "basic_auth"
},
{
"name": "headers",
"value": "Content-Type:application/json"
},
{
"name": "username",
"value": "admin"
},
{
"name": "url",
"value": "https://localhost:9440/api/nutanix/v3/vms/{{trigger[0].source_entity_info.uuid}}"
},
{
"name": "method",
"value": "GET"
}
],
"maxRetries": 2,
"childActionUuids": [
"04d2bfd4-9df7-4578-a719-6bbf1870ab20"
]
},
{
"uuid": "04d2bfd4-9df7-4578-a719-6bbf1870ab20",
"actionType": {
"type": "action_type",
"uuid": "",
"name": "parse_action"
},
"displayName": "String Parser",
"inputParameterList": [
{
"name": "json_path",
"value": "$.status.resources.nic_list[0].subnet_reference.name"
},
{
"name": "string_to_parse",
"value": "{{action[1].response_body}}"
},
{
"name": "format",
"value": "json"
}
],
"maxRetries": 2,
"childActionUuids": [
"c38a0440-61d4-4845-9b24-561ed7cdd654"
]
},
{
"uuid": "c38a0440-61d4-4845-9b24-561ed7cdd654",
"actionType": {
"type": "action_type",
"uuid": "",
"name": "branch_action"
},
"displayName": "Branch",
"inputParameterList": [
{
"name": "values",
"value": "[\"{{action[2].parsed_data}}\",\"SubnetDev\",\"{{action[2].parsed_data}}\",\"SubnetProd\",\"{{action[2].parsed_data}}\",\"SubnetTest\"]"
},
{
"name": "condition",
"value": "[\"if\",\"if\",\"if\"]"
},
{
"name": "branch",
"value": "[\"0ea5173d-839b-4b73-9614-af6b55fe5c32\",\"9de624c6-2493-4059-9cb1-e19eaef2d172\",\"b1000385-c6cc-42cc-86da-349bf7aa033e\"]"
},
{
"name": "conditional_expression",
"value": "[\"{0}=={1}\",\"{2}=={3}\",\"{4}=={5}\"]"
}
],
"maxRetries": 2,
"description": "@|@|",
"childActionUuids": [
"0ea5173d-839b-4b73-9614-af6b55fe5c32",
"9de624c6-2493-4059-9cb1-e19eaef2d172",
"b1000385-c6cc-42cc-86da-349bf7aa033e"
]
},
{
"uuid": "0ea5173d-839b-4b73-9614-af6b55fe5c32",
"actionType": {
"type": "action_type",
"uuid": "",
"name": "add_category_action"
},
"displayName": "Add to Category",
"inputParameterList": [
{
"name": "target_vm",
"value": "{{trigger[0].source_entity_info}}"
},
{
"name": "category_entity_info",
"value": "[]"
},
{
"name": "entity_type",
"value": "vm"
}
],
"maxRetries": 2
},
{
"uuid": "9de624c6-2493-4059-9cb1-e19eaef2d172",
"actionType": {
"type": "action_type",
"uuid": "",
"name": "add_category_action"
},
"displayName": "Add to Category",
"inputParameterList": [
{
"name": "target_vm",
"value": "{{trigger[0].source_entity_info}}"
},
{
"name": "category_entity_info",
"value": "[]"
},
{
"name": "entity_type",
"value": "vm"
}
],
"maxRetries": 2,
"description": "Copy 1"
},
{
"uuid": "b1000385-c6cc-42cc-86da-349bf7aa033e",
"actionType": {
"type": "action_type",
"uuid": "",
"name": "add_category_action"
},
"displayName": "Add to Category",
"inputParameterList": [
{
"name": "target_vm",
"value": "{{trigger[0].source_entity_info}}"
},
{
"name": "category_entity_info",
"value": "[]"
},
{
"name": "entity_type",
"value": "vm"
}
],
"maxRetries": 2,
"description": "Copy 2"
}
],
"validationErrorList": [
{
"componentType": "action",
"componentName": "rest_api_action",
"instanceUuid": "ead4bbb9-9d9a-413a-8468-3d9d81f36cb4",
"parameterErrorList": [
{
"parameterName": "password",
"errorObject": {
"errorMsg": "Required field %s is missing",
"paramList": [
"Password"
]
}
}
]
}
],
"isPrepackaged": false,
"checkTriggerValidity": true,
"triggerFilterableInputParamName": "type",
"triggerFilterableInputParamValue": "VmCreateAudit",
"ruleType": "kXPlay",
"isUserSpecificValidationError": false
}
]
}

 

View original
This topic has been closed for replies.

1 reply

JoseNutanix
Nutanix Employee
Forum|alt.badge.img+5
  • Nutanix Employee
  • Answer
  • Dec 19, 2023 10:50 AM UTC

Hi nivlev,

You can accomplish this with playbooks. Attaching an example, save the code snippet with .pbk extension and import it into your PC instance. For future inspirations, please don’t hesitate to visit our playbook library.

{
"pcVersion": "2023.3",
"pcUuid": "667976da-ef32-4d13-b213-41ee98566b33",
"hashValue": "z5T8FVrlyRMGp78sfHBFRKRQ+hBdhZdIGoT1gSv4+BM=",
"actionRuleList": [
{
"uuid": "6b03ebe3-4bf4-4b5a-ab61-f3b2cf6e5b94",
"name": "vlan-to-category",
"isEnabled": false,
"validated": false,
"triggerList": [
{
"uuid": "ffb6064c-8a86-4557-8431-2d722c7b05fb",
"triggerType": {
"type": "trigger_type",
"uuid": "",
"name": "event_trigger"
},
"displayName": "Event",
"inputParameterList": [
{
"name": "operation_type",
"value": "1"
},
{
"name": "category_filter_list",
"value": "[]"
},
{
"name": "type",
"value": "VmCreateAudit"
},
{
"name": "source_entity_info_list",
"value": "[]"
}
]
}
],
"actionList": [
{
"uuid": "4b68c997-96e1-43b3-aaea-045e6ea03964",
"actionType": {
"type": "action_type",
"uuid": "",
"name": "wait_for_duration"
},
"displayName": "Wait for Some Time",
"inputParameterList": [
{
"name": "block_resume",
"value": "false"
},
{
"name": "post_check_trigger_validity",
"value": "false"
},
{
"name": "stop_after_time",
"value": "false"
},
{
"name": "wait_duration",
"value": "2"
}
],
"maxRetries": 2,
"postCheckTriggerValidity": false,
"childActionUuids": [
"ead4bbb9-9d9a-413a-8468-3d9d81f36cb4"
]
},
{
"uuid": "ead4bbb9-9d9a-413a-8468-3d9d81f36cb4",
"actionType": {
"type": "action_type",
"uuid": "",
"name": "rest_api_action"
},
"displayName": "REST API",
"inputParameterList": [
{
"name": "auth_type",
"value": "basic_auth"
},
{
"name": "headers",
"value": "Content-Type:application/json"
},
{
"name": "username",
"value": "admin"
},
{
"name": "url",
"value": "https://localhost:9440/api/nutanix/v3/vms/{{trigger[0].source_entity_info.uuid}}"
},
{
"name": "method",
"value": "GET"
}
],
"maxRetries": 2,
"childActionUuids": [
"04d2bfd4-9df7-4578-a719-6bbf1870ab20"
]
},
{
"uuid": "04d2bfd4-9df7-4578-a719-6bbf1870ab20",
"actionType": {
"type": "action_type",
"uuid": "",
"name": "parse_action"
},
"displayName": "String Parser",
"inputParameterList": [
{
"name": "json_path",
"value": "$.status.resources.nic_list[0].subnet_reference.name"
},
{
"name": "string_to_parse",
"value": "{{action[1].response_body}}"
},
{
"name": "format",
"value": "json"
}
],
"maxRetries": 2,
"childActionUuids": [
"c38a0440-61d4-4845-9b24-561ed7cdd654"
]
},
{
"uuid": "c38a0440-61d4-4845-9b24-561ed7cdd654",
"actionType": {
"type": "action_type",
"uuid": "",
"name": "branch_action"
},
"displayName": "Branch",
"inputParameterList": [
{
"name": "values",
"value": "[\"{{action[2].parsed_data}}\",\"SubnetDev\",\"{{action[2].parsed_data}}\",\"SubnetProd\",\"{{action[2].parsed_data}}\",\"SubnetTest\"]"
},
{
"name": "condition",
"value": "[\"if\",\"if\",\"if\"]"
},
{
"name": "branch",
"value": "[\"0ea5173d-839b-4b73-9614-af6b55fe5c32\",\"9de624c6-2493-4059-9cb1-e19eaef2d172\",\"b1000385-c6cc-42cc-86da-349bf7aa033e\"]"
},
{
"name": "conditional_expression",
"value": "[\"{0}=={1}\",\"{2}=={3}\",\"{4}=={5}\"]"
}
],
"maxRetries": 2,
"description": "@|@|",
"childActionUuids": [
"0ea5173d-839b-4b73-9614-af6b55fe5c32",
"9de624c6-2493-4059-9cb1-e19eaef2d172",
"b1000385-c6cc-42cc-86da-349bf7aa033e"
]
},
{
"uuid": "0ea5173d-839b-4b73-9614-af6b55fe5c32",
"actionType": {
"type": "action_type",
"uuid": "",
"name": "add_category_action"
},
"displayName": "Add to Category",
"inputParameterList": [
{
"name": "target_vm",
"value": "{{trigger[0].source_entity_info}}"
},
{
"name": "category_entity_info",
"value": "[]"
},
{
"name": "entity_type",
"value": "vm"
}
],
"maxRetries": 2
},
{
"uuid": "9de624c6-2493-4059-9cb1-e19eaef2d172",
"actionType": {
"type": "action_type",
"uuid": "",
"name": "add_category_action"
},
"displayName": "Add to Category",
"inputParameterList": [
{
"name": "target_vm",
"value": "{{trigger[0].source_entity_info}}"
},
{
"name": "category_entity_info",
"value": "[]"
},
{
"name": "entity_type",
"value": "vm"
}
],
"maxRetries": 2,
"description": "Copy 1"
},
{
"uuid": "b1000385-c6cc-42cc-86da-349bf7aa033e",
"actionType": {
"type": "action_type",
"uuid": "",
"name": "add_category_action"
},
"displayName": "Add to Category",
"inputParameterList": [
{
"name": "target_vm",
"value": "{{trigger[0].source_entity_info}}"
},
{
"name": "category_entity_info",
"value": "[]"
},
{
"name": "entity_type",
"value": "vm"
}
],
"maxRetries": 2,
"description": "Copy 2"
}
],
"validationErrorList": [
{
"componentType": "action",
"componentName": "rest_api_action",
"instanceUuid": "ead4bbb9-9d9a-413a-8468-3d9d81f36cb4",
"parameterErrorList": [
{
"parameterName": "password",
"errorObject": {
"errorMsg": "Required field %s is missing",
"paramList": [
"Password"
]
}
}
]
}
],
"isPrepackaged": false,
"checkTriggerValidity": true,
"triggerFilterableInputParamName": "type",
"triggerFilterableInputParamValue": "VmCreateAudit",
"ruleType": "kXPlay",
"isUserSpecificValidationError": false
}
]
}