def main(): argument_spec = aci_argument_spec() argument_spec.update( compare_export_policy=dict(type='str'), compare_snapshot=dict(type='str'), description=dict(type='str', aliases=['descr']), export_policy=dict(type='str'), fail_on_decrypt=dict(type='bool'), import_mode=dict(type='str', choices=['atomic', 'best-effort']), import_policy=dict(type='str'), import_type=dict(type='str', choices=['merge', 'replace']), snapshot=dict(type='str', required=True), state=dict(type='str', default='rollback', choices=['preview', 'rollback']), ) module = AnsibleModule( argument_spec=argument_spec, supports_check_mode=False, required_if=[ [ 'state', 'preview', ['compare_export_policy', 'compare_snapshot'] ], ['state', 'rollback', ['import_policy']], ], ) aci = ACIModule(module) description = module.params.get('description') export_policy = module.params.get('export_policy') fail_on_decrypt = aci.boolean(module.params.get('fail_on_decrypt')) import_mode = module.params.get('import_mode') import_policy = module.params.get('import_policy') import_type = module.params.get('import_type') snapshot = module.params.get('snapshot') state = module.params.get('state') if state == 'rollback': if snapshot.startswith('run-'): snapshot = snapshot.replace('run-', '', 1) if not snapshot.endswith('.tar.gz'): snapshot += '.tar.gz' filename = 'ce2_{0}-{1}'.format(export_policy, snapshot) aci.construct_url(root_class=dict( aci_class='configImportP', aci_rn='fabric/configimp-{0}'.format(import_policy), module_object=import_policy, target_filter={'name': import_policy}, ), ) aci.get_existing() aci.payload( aci_class='configImportP', class_config=dict( adminSt='triggered', descr=description, failOnDecryptErrors=fail_on_decrypt, fileName=filename, importMode=import_mode, importType=import_type, name=import_policy, snapshot='yes', ), ) aci.get_diff(aci_class='configImportP') aci.post_config() elif state == 'preview': aci.url = '%(protocol)s://%(host)s/mqapi2/snapshots.diff.xml' % module.params aci.filter_string = ( '?s1dn=uni/backupst/snapshots-[uni/fabric/configexp-%(export_policy)s]/snapshot-%(snapshot)s&' 's2dn=uni/backupst/snapshots-[uni/fabric/configexp-%(compare_export_policy)s]/snapshot-%(compare_snapshot)s' ) % module.params # Generate rollback comparison get_preview(aci) aci.exit_json()
def main(): argument_spec = aci_argument_spec() argument_spec.update(aci_annotation_spec()) argument_spec.update( compare_export_policy=dict(type="str"), compare_snapshot=dict(type="str"), description=dict(type="str", aliases=["descr"]), export_policy=dict(type="str"), fail_on_decrypt=dict(type="bool"), import_mode=dict(type="str", choices=["atomic", "best-effort"]), import_policy=dict(type="str"), import_type=dict(type="str", choices=["merge", "replace"]), snapshot=dict(type="str", required=True), state=dict(type="str", default="rollback", choices=["preview", "rollback"]), ) module = AnsibleModule( argument_spec=argument_spec, supports_check_mode=False, required_if=[ [ "state", "preview", ["compare_export_policy", "compare_snapshot"] ], ["state", "rollback", ["import_policy"]], ], ) aci = ACIModule(module) description = module.params.get("description") export_policy = module.params.get("export_policy") fail_on_decrypt = aci.boolean(module.params.get("fail_on_decrypt")) import_mode = module.params.get("import_mode") import_policy = module.params.get("import_policy") import_type = module.params.get("import_type") snapshot = module.params.get("snapshot") state = module.params.get("state") if state == "rollback": if snapshot.startswith("run-"): snapshot = snapshot.replace("run-", "", 1) if not snapshot.endswith(".tar.gz"): snapshot += ".tar.gz" filename = "ce2_{0}-{1}".format(export_policy, snapshot) aci.construct_url(root_class=dict( aci_class="configImportP", aci_rn="fabric/configimp-{0}".format(import_policy), module_object=import_policy, target_filter={"name": import_policy}, ), ) aci.get_existing() aci.payload( aci_class="configImportP", class_config=dict( adminSt="triggered", descr=description, failOnDecryptErrors=fail_on_decrypt, fileName=filename, importMode=import_mode, importType=import_type, name=import_policy, snapshot="yes", ), ) aci.get_diff(aci_class="configImportP") aci.post_config() elif state == "preview": aci.url = "%(protocol)s://%(host)s/mqapi2/snapshots.diff.xml" % module.params aci.filter_string = ( "?s1dn=uni/backupst/snapshots-[uni/fabric/configexp-%(export_policy)s]/snapshot-%(snapshot)s&" "s2dn=uni/backupst/snapshots-[uni/fabric/configexp-%(compare_export_policy)s]/snapshot-%(compare_snapshot)s" ) % module.params # Generate rollback comparison get_preview(aci) aci.exit_json()