mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-25 14:20:22 -07:00
Docs updated and review comments addressed (#45133)
This commit is contained in:
parent
d4aa7db323
commit
3beeeffef9
1 changed files with 83 additions and 55 deletions
|
@ -46,7 +46,7 @@ options:
|
||||||
- Attribute Yang type.
|
- Attribute Yang type.
|
||||||
attr_data:
|
attr_data:
|
||||||
description:
|
description:
|
||||||
- Attribute Yang path and thier correspoding data.
|
- Attribute Yang path and their corresponding data.
|
||||||
operation:
|
operation:
|
||||||
description:
|
description:
|
||||||
- Operation to be performed on the object.
|
- Operation to be performed on the object.
|
||||||
|
@ -67,6 +67,10 @@ options:
|
||||||
- Attempts to force the auto-commit event to the specified yang object.
|
- Attempts to force the auto-commit event to the specified yang object.
|
||||||
type: bool
|
type: bool
|
||||||
default: 'no'
|
default: 'no'
|
||||||
|
requirements:
|
||||||
|
- "cps"
|
||||||
|
- "cps_object"
|
||||||
|
- "cps_utils"
|
||||||
"""
|
"""
|
||||||
|
|
||||||
EXAMPLES = """
|
EXAMPLES = """
|
||||||
|
@ -86,23 +90,94 @@ EXAMPLES = """
|
||||||
"if/interfaces/interface/name": "br230",
|
"if/interfaces/interface/name": "br230",
|
||||||
}
|
}
|
||||||
operation: "get"
|
operation: "get"
|
||||||
|
- name: Modify some attributes in VLAN
|
||||||
|
opx_cps:
|
||||||
|
module_name: "dell-base-if-cmn/if/interfaces/interface"
|
||||||
|
attr_data: {
|
||||||
|
"cps/key_data":
|
||||||
|
{ "if/interfaces/interface/name": "br230" },
|
||||||
|
"dell-if/if/interfaces/interface/untagged-ports": ["e101-008-0"],
|
||||||
|
}
|
||||||
|
operation: "set"
|
||||||
|
- name: Delete VLAN
|
||||||
|
opx_cps:
|
||||||
|
module_name: "dell-base-if-cmn/if/interfaces/interface"
|
||||||
|
attr_data: {
|
||||||
|
"if/interfaces/interface/name": "br230",
|
||||||
|
}
|
||||||
|
operation: "delete"
|
||||||
"""
|
"""
|
||||||
|
|
||||||
RETURN = """
|
RETURN = """
|
||||||
response:
|
response:
|
||||||
description: Output from the CPS transaction.
|
description: Output from the CPS transaction.
|
||||||
returned: always
|
returned: when a CPS transaction is successfully performed.
|
||||||
|
type: list
|
||||||
|
sample:
|
||||||
|
[{
|
||||||
|
"data": {
|
||||||
|
"base-if-vlan/if/interfaces/interface/id": 230,
|
||||||
|
"cps/object-group/return-code": 0,
|
||||||
|
"dell-base-if-cmn/if/interfaces/interface/if-index": 46,
|
||||||
|
"if/interfaces/interface/name": "br230",
|
||||||
|
"if/interfaces/interface/type": "ianaift:l2vlan"
|
||||||
|
},
|
||||||
|
"key": "target/dell-base-if-cmn/if/interfaces/interface"
|
||||||
|
}]
|
||||||
|
candidate:
|
||||||
|
description: CPS input attribute data used to compare with
|
||||||
|
running configuration
|
||||||
|
returned: all CPS operations other than "get"
|
||||||
type: dict
|
type: dict
|
||||||
sample: {'...':'...'}
|
sample:
|
||||||
changed:
|
{
|
||||||
description: Returns if the CPS transaction was performed.
|
"base-if-vlan/if/interfaces/interface/id": 230,
|
||||||
returned: when a CPS traction is performed.
|
"if/interfaces/interface/name": "br230",
|
||||||
|
"if/interfaces/interface/type": "ianaift:l2vlan"
|
||||||
|
}
|
||||||
|
config:
|
||||||
|
description: Returns the CPS Get output i.e. the running configuration
|
||||||
|
before performing the CPS transaction
|
||||||
|
returned: when CPS operations set, delete
|
||||||
type: dict
|
type: dict
|
||||||
sample: {'...':'...'}
|
sample:
|
||||||
|
{
|
||||||
|
"base-if-vlan/if/interfaces/interface/id": 230,
|
||||||
|
"dell-base-if-cmn/if/interfaces/interface/if-index": 46,
|
||||||
|
"dell-if/if/interfaces/interface/learning-mode": 1,
|
||||||
|
"dell-if/if/interfaces/interface/mtu": 1532,
|
||||||
|
"dell-if/if/interfaces/interface/phys-address": "",
|
||||||
|
"dell-if/if/interfaces/interface/vlan-type": 1,
|
||||||
|
"if/interfaces/interface/enabled": 0,
|
||||||
|
"if/interfaces/interface/name": "br230",
|
||||||
|
"if/interfaces/interface/type": "ianaift:l2vlan"
|
||||||
|
}
|
||||||
|
diff:
|
||||||
|
description: The actual configuration that will be pushed comparing
|
||||||
|
the running configuration and input attributes
|
||||||
|
returned: all CPS operations other than "get"
|
||||||
|
type: dict
|
||||||
|
sample:
|
||||||
|
{
|
||||||
|
"base-if-vlan/if/interfaces/interface/id": 230,
|
||||||
|
"if/interfaces/interface/name": "br230",
|
||||||
|
"if/interfaces/interface/type": "ianaift:l2vlan"
|
||||||
|
}
|
||||||
|
db:
|
||||||
|
description: Denotes if CPS DB transaction was performed
|
||||||
|
returned: when db is set to True in module options
|
||||||
|
type: bool
|
||||||
|
sample: True
|
||||||
|
commit_event:
|
||||||
|
description: Denotes if auto-commit event is set
|
||||||
|
returned: when commit_event is set to True in module options
|
||||||
|
type: bool
|
||||||
|
sample: True
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from ansible.module_utils.basic import AnsibleModule
|
from ansible.module_utils.basic import AnsibleModule
|
||||||
from ansible.module_utils.six import iteritems
|
from ansible.module_utils.six import iteritems
|
||||||
|
from ansible.module_utils.network.common.utils import dict_diff
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import cps
|
import cps
|
||||||
|
@ -138,53 +213,6 @@ def get_config(module):
|
||||||
return config
|
return config
|
||||||
|
|
||||||
|
|
||||||
def diff_dict(base_data, compare_with_data):
|
|
||||||
"""
|
|
||||||
Wrapper API for gives difference between 2 dicts
|
|
||||||
with base_data as the base reference
|
|
||||||
|
|
||||||
Parameters
|
|
||||||
----------
|
|
||||||
base_data : dict
|
|
||||||
compare_with_data : dict
|
|
||||||
|
|
||||||
Return
|
|
||||||
------
|
|
||||||
returns difference of 2 input
|
|
||||||
|
|
||||||
Raises
|
|
||||||
------
|
|
||||||
"""
|
|
||||||
planned_set = set(base_data.keys())
|
|
||||||
discovered_set = set(compare_with_data.keys())
|
|
||||||
intersect_set = planned_set.intersection(discovered_set)
|
|
||||||
changed_dict = {}
|
|
||||||
added_set = planned_set - intersect_set
|
|
||||||
# Keys part of added are new and put into changed_dict
|
|
||||||
if added_set:
|
|
||||||
for key in added_set:
|
|
||||||
changed_dict[key] = base_data[key]
|
|
||||||
|
|
||||||
for key in intersect_set:
|
|
||||||
value = base_data[key]
|
|
||||||
|
|
||||||
if isinstance(value, list):
|
|
||||||
p_list = base_data[key] if key in base_data else []
|
|
||||||
d_list = compare_with_data[key] if key in compare_with_data else []
|
|
||||||
set_diff = set(p_list) - set(d_list)
|
|
||||||
if set_diff:
|
|
||||||
changed_dict[key] = list(set_diff)
|
|
||||||
elif isinstance(value, dict):
|
|
||||||
dict_diff = diff_dict(base_data[key],
|
|
||||||
compare_with_data[key])
|
|
||||||
if dict_diff:
|
|
||||||
changed_dict[key] = dict_diff
|
|
||||||
else:
|
|
||||||
if compare_with_data[key] != base_data[key]:
|
|
||||||
changed_dict[key] = base_data[key]
|
|
||||||
return changed_dict
|
|
||||||
|
|
||||||
|
|
||||||
def convert_cps_raw_list(raw_list):
|
def convert_cps_raw_list(raw_list):
|
||||||
resp_list = []
|
resp_list = []
|
||||||
if raw_list:
|
if raw_list:
|
||||||
|
@ -335,7 +363,7 @@ def main():
|
||||||
candidate.update(val)
|
candidate.update(val)
|
||||||
else:
|
else:
|
||||||
candidate[key] = val
|
candidate[key] = val
|
||||||
diff = diff_dict(candidate, config)
|
diff = dict_diff(config, candidate)
|
||||||
|
|
||||||
if operation == "delete":
|
if operation == "delete":
|
||||||
if config:
|
if config:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue