Skip to main content
Solved

Add Vm's to category based on VLAN

  • December 17, 2023
  • 1 reply
  • 151 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
}
]
}

 

This topic has been closed for replies.

1 reply

JoseNutanix
Nutanix Employee
Forum|alt.badge.img+5
  • Nutanix Employee
  • Answer
  • December 19, 2023

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
}
]
}