def del_snap_pol(apic, cookies, snapshot_name): status = 'deleted' snapshot = 'true' snapshot_args = {} snapshot_args['name'] = snapshot_name snapshot_args['snapshot'] = snapshot snapshot_args['status'] = status cfgmgmt = acipdt.FabCfgMgmt(apic, cookies) status = cfgmgmt.backup(**snapshot_args)
def take_snapshot(apic, cookies, snapshot_name): query = acipdt.Query(apic, cookies) query_string = 'configSnapshot' query_payload = query.query_class(query_string) payload_len = len(query_payload[1]['imdata']) snap_count = 0 for x in range(0, payload_len): try: if (query_payload[1]['imdata'][x]['configSnapshot']['attributes'] ['fileName'])[4:17] == snapshot_name: snap_count += 1 except Exception as e: e = e print("It seems the APIC does not support snapshots, moving on.") return (None) if snap_count > 0: print("A snapshot including 'acipdt_backup' already exists. Would you " "like to delete this snapshot or exit?") user_input = input("Delete 'd' or Exit 'q' [q]: ") selection = user_input or 'q' if selection.lower() == 'd': del_snap_pol(apic, cookies, snapshot_name) elif selection.lower() == 'q': sys.exit() snapshot = 'true' status = 'created,modified' snapshot_args = {} snapshot_args['name'] = snapshot_name snapshot_args['snapshot'] = snapshot snapshot_args['status'] = status cfgmgmt = acipdt.FabCfgMgmt(apic, cookies) status = cfgmgmt.backup(**snapshot_args) if status == 200: print("Snapshot taken successfully, continuing.") time.sleep(1) snap = True return (snap) else: print("Snapshot failed for some reason, do you want to continue?") while True: user_input = input("Continue 'y' or 'n' [n]: ") selection = user_input or 'n' if selection.lower() == 'y': snap = None return (snap) elif selection.lower() == 'n': del_snap_pol(apic, cookies, snapshot_name) sys.exit()
def revert_snapshot(apic, cookies, snapshot_name): print('Deployment completed, please verify status in workbook.') while True: user_input = input("Rollback to previous snapshot 'y' or 'n' [n]: ") selection = user_input or 'n' if selection.lower() == 'n': return elif selection.lower() == 'y': query = acipdt.Query(apic, cookies) query_string = 'configSnapshot' query_payload = query.query_class(query_string) payload_len = len(query_payload[1]['imdata']) for x in range(0, payload_len): if (query_payload[1]['imdata'][x]['configSnapshot'] ['attributes']['fileName'])[4:17] == snapshot_name: snapshot_name = ( query_payload[1]['imdata'][x]['configSnapshot'] ['attributes']['fileName']) break cfgmgmt = acipdt.FabCfgMgmt(apic, cookies) snapshot_args = {} snapshot_args['name'] = snapshot_name cfgmgmt.snapback(**snapshot_args) return