Exemple #1
0
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)
Exemple #2
0
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()
Exemple #3
0
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