image_policy_create.py¶
Description¶
Create or update one or more image policies.
Example configuration file¶
config/config_image_policy_create.yaml
---
config:
- name: KR5M
agnostic: False
description: KR5M
epld_image: n9000-epld.10.2.5.M.img
packages:
install:
- cfg_cmp-0.3.1.0-1.x86_64.rpm
uninstall:
- mtx-grpctunnel-2.1.0.0-10.4.1.lib32_64_n9000
platform: N9K
release: 10.2.5_nxos64-cs_64bit
type: PLATFORM
- name: NR1F
description: NR1F
platform: N9K
epld_image: n9000-epld.10.3.1.F.img
release: 10.3.1_nxos64-cs_64bit
Example Usage¶
The example below uses environment variables for credentials, so requires
only the --config
argument. See Running the Example Scripts
for details around specifying credentials from the command line, from
environment variables, from Ansible Vault, or a combination of these
credentials sources.
export ND_DOMAIN=local
export ND_IP4=10.1.1.1
export ND_PASSWORD=MySecret
export ND_USERNAME=admin
./image_policy_create.py --config config/config_image_policy_create.yaml
# output not shown
Example output¶
Image policies created successfully¶
Image policies create success
(.venv) AROBEL-M-G793% ./image_policy_create.py --config prod/config_image_policy_create.yaml
{
"changed": true,
"diff": [
{
"agnostic": false,
"epldImgName": "n9000-epld.10.2.5.M.img",
"nxosVersion": "10.2.5_nxos64-cs_64bit",
"packageName": "cfg_cmp-0.3.1.0-1.x86_64.rpm",
"platform": "N9K",
"policyDescr": "KR5M",
"policyName": "KR5M",
"policyType": "PLATFORM",
"role": null,
"rpmimages": "mtx-grpctunnel-2.1.0.0-10.4.1.lib32_64_n9000", "sequence_number": 1
"unInstall": false
},
{
"agnostic": false,
"epldImgName": "n9000-epld.10.3.1.F.img",
"nxosVersion": "10.3.1_nxos64-cs_64bit",
"platform": "N9K",
"policyDescr": "NR1F",
"policyName": "NR1F",
"policyType": "PLATFORM",
"sequence_number": 2
}
],
"failed": false,
"metadata": [
{
"action": "create",
"check_mode": false,
"sequence_number": 1,
"state": "merged"
},
{
"action": "create",
"check_mode": false,
"sequence_number": 2,
"state": "merged"
}
],
"response": [
{
"DATA": "Policy created successfully.",
"MESSAGE": "OK",
"METHOD": "POST",
"REQUEST_PATH": "https://10.1.1.1/appcenter/cisco/ndfc/api/v1/imagemanagement/rest/policymgnt/platform-policy",
"RETURN_CODE": 200,
"sequence_number": 1
},
{
"DATA": "Policy created successfully.",
"MESSAGE": "OK",
"METHOD": "POST",
"REQUEST_PATH": "https://10.1.1.1/appcenter/cisco/ndfc/api/v1/imagemanagement/rest/policymgnt/platform-policy",
"RETURN_CODE": 200,
"sequence_number": 2
}
],
"result": [
{
"changed": true,
"sequence_number": 1,
"success": true
},
{
"changed": true,
"sequence_number": 2,
"success": true
}
]
}
(.venv) AROBEL-M-G793%
Policy already exists, but requires a change to align with user's config¶
User config contains a modified description (policyDescr)
(.venv) AROBEL-M-G793% ./image_policy_create.py --config prod/config_image_policy_create.yaml
{
"changed": true,
"diff": [
{
"agnostic": false,
"epldImgName": "n9000-epld.10.2.5.M.img",
"fabricPolicyName": null,
"imagePresent": "Present",
"nxosVersion": "10.2.5_nxos64-cs_64bit",
"packageName": "cfg_cmp-0.3.1.0-1.x86_64.rpm",
"platform": "N9K",
"policyDescr": "KR5M-changed",
"policyName": "KR5M",
"policyType": "PLATFORM",
"role": null,
"rpmimages": "mtx-grpctunnel-2.1.0.0-10.4.1.lib32_64_n9000", "sequence_number": 1,
"unInstall": false
}
],
"failed": false,
"metadata": [
{
"action": "update",
"check_mode": false,
"sequence_number": 1,
"state": "merged"
}
],
"response": [
{
"DATA": "Policy updated successfully.",
"MESSAGE": "OK",
"METHOD": "POST",
"REQUEST_PATH": "https://10.1.1.1/appcenter/cisco/ndfc/api/v1/imagemanagement/rest/policymgnt/edit-policy",
"RETURN_CODE": 200,
"sequence_number": 1
}
],
"result": [
{
"changed": true,
"sequence_number": 1,
"success": true
}
]
}
No changes to image policies are required¶
Image policies do not require changes
(.venv) AROBEL-M-G793% ./image_policy_create.py --config prod/config_image_policy_create.yaml
{
"changed": false,
"diff": [],
"failed": false,
"metadata": [],
"response": [],
"result": []
}
(.venv) AROBEL-M-G793%
packages.install is set to a package name that does not exist on the controller¶
Invalid config
---
config:
- name: KR5M
agnostic: False
description: KR5M
epld_image: n9000-epld.10.2.5.M.img
packages:
install:
- bad_package_name_which_does_not_exist.rpm
uninstall:
- mtx-grpctunnel-2.1.0.0-10.4.1.lib32_64_n9000
platform: N9K
release: 10.2.5_nxos64-cs_64bit
type: PLATFORM
install package does not exist on the controller
(.venv) AROBEL-M-G793% ./image_policy_create.py --config prod/config_image_policy_create.yaml
unable to create/update image policies
{
"changed": false,
"diff": [
{
"sequence_number": 1
}
],
"failed": true,
"metadata": [
{
"action": "update",
"check_mode": false,
"sequence_number": 1,
"state": "merged"
}
],
"response": [
{
"DATA": "Invalid Package name(s).",
"MESSAGE": "Internal Server Error",
"METHOD": "POST",
"REQUEST_PATH": "https://10.1.1.1/appcenter/cisco/ndfc/api/v1/imagemanagement/rest/policymgnt/edit-policy",
"RETURN_CODE": 500,
"sequence_number": 1
}
],
"result": [
{
"changed": false,
"sequence_number": 1,
"success": false
}
]
}
(.venv) AROBEL-M-G793%