예제 #1
0
def do_replication_create(cs, args):
    """Create a replication."""
    replication = cs.replications.create(args.master_volume,
                                         args.slave_volume,
                                         name=args.name,
                                         description=args.description)
    utils.print_dict(replication.to_dict())
예제 #2
0
def do_attach(cs, args):
    """Add sg-volume attachment metadata."""
    mode = args.mode
    mode = 'rw' if mode is None else mode
    if mode not in ['rw', 'ro']:
        print("Attach mode must be rw or ro")
        return
    volume = shell_utils.find_volume(cs, args.volume)
    attach = cs.volumes.attach(volume.id, args.instance_uuid, mode)
    utils.print_dict(attach.to_dict())
예제 #3
0
def do_backup_import(cs, args):
    """Import a backup from record"""
    driver_data = _extract_driver_data(args)
    backup_record = {
        'availability_zone': args.availability_zone,
        'backup_type': args.backup_type,
        'backup_size': args.backup_size,
        'driver_data': driver_data
    }
    backup = cs.backups.import_record(backup_record)
    utils.print_dict(backup.to_dict())
예제 #4
0
def do_replication_update(cs, args):
    kwargs = {}
    if args.name is not None:
        kwargs['name'] = args.name
    if args.description is not None:
        kwargs['description'] = args.description

    if not kwargs:
        msg = 'Must supply either name or description.'
        raise exceptions.ClientException(code=1, message=msg)

    replication = shell_utils.find_replication(cs, args.replication)
    replication = cs.replications.update(replication.id, kwargs)
    utils.print_dict(replication.to_dict())
예제 #5
0
def do_create_volume(cs, args):
    """Create a volume from snapshot, or copy snapshot to a volume."""
    if [args.checkpoint_id, args.snapshot_id] == [None, None]:
        print("create volume must specify a checkpoint or snapshot")
        return
    volume = cs.volumes.create(checkpoint_id=args.checkpoint_id,
                               snapshot_id=args.snapshot_id,
                               name=args.name,
                               description=args.description,
                               volume_type=args.volume_type,
                               availability_zone=args.availability_zone,
                               size=args.size,
                               volume_id=args.volume_id)
    utils.print_dict(volume.to_dict())
예제 #6
0
def do_backup_update(cs, args):
    kwargs = {}
    if args.name is not None:
        kwargs['name'] = args.name
    if args.description is not None:
        kwargs['description'] = args.description

    if not kwargs:
        msg = 'Must supply either name or description.'
        raise exceptions.ClientException(code=1, message=msg)

    backup = shell_utils.find_backup(cs, args.backup)
    backup = cs.backups.update(backup.id, kwargs)
    utils.print_dict(backup.to_dict())
예제 #7
0
def do_snapshot_update(cs, args):
    kwargs = {}
    if args.name is not None:
        kwargs['name'] = args.name
    if args.description is not None:
        kwargs['description'] = args.description

    if not kwargs:
        msg = 'Must supply either name or description.'
        raise exceptions.ClientException(code=1, message=msg)

    snapshot = shell_utils.find_snapshot(cs, args.snapshot)
    snapshot = cs.snapshots.update(snapshot.id, kwargs)
    utils.print_dict(snapshot.to_dict())
예제 #8
0
def do_update(cs, args):
    kwargs = {}
    if args.name is not None:
        kwargs['name'] = args.name
    if args.description is not None:
        kwargs['description'] = args.description

    if not kwargs:
        msg = 'Must supply either name or description.'
        raise exceptions.ClientException(code=1, message=msg)

    volume = shell_utils.find_volume(cs, args.volume)
    volume = cs.volumes.update(volume.id, kwargs)
    utils.print_dict(volume.to_dict())
예제 #9
0
def do_backup_create(cs, args):
    """Create backup."""
    type = args.type
    type = 'full' if type is None else type
    if type not in ['full', 'incremental']:
        print("Backup type must be full or incremental")
        return
    destination = args.destination
    destination = 'local' if destination is None else destination
    if destination not in ['local', 'remote']:
        print("Backup destination must be local or remote")
        return
    volume = shell_utils.find_volume(cs, args.volume)
    backup = cs.backups.create(volume_id=volume.id,
                               name=args.name,
                               description=args.description,
                               type=type,
                               destination=destination)
    utils.print_dict(backup.to_dict())
예제 #10
0
def do_replication_failover(cs, args):
    """Failover a replication."""
    replication = shell_utils.find_replication(cs, args.replication)
    replication = cs.replications.failover(replication.id, args.force)
    utils.print_dict(replication.to_dict())
예제 #11
0
def do_replication_disable(cs, args):
    """Disable a replication."""
    replication = shell_utils.find_replication(cs, args.replication)
    replication = cs.replications.disable(replication.id)
    utils.print_dict(replication.to_dict())
예제 #12
0
def do_replication_show(cs, args):
    """Get a replication."""
    replication = shell_utils.find_replication(cs, args.replication)
    utils.print_dict(replication.to_dict())
예제 #13
0
def do_checkpoint_create(cs, args):
    """Create checkpoint."""
    replication = shell_utils.find_replication(cs, args.replication)
    checkpoint = cs.checkpoints.create(replication.id, args.name,
                                       args.description)
    utils.print_dict(checkpoint.to_dict())
예제 #14
0
def do_show(cs, args):
    """Get a volume."""
    volume = shell_utils.find_volume(cs, args.volume)
    utils.print_dict(volume.to_dict())
예제 #15
0
def do_replication_reverse(cs, args):
    """Reverse a replication."""
    replication = shell_utils.find_replication(cs, args.replication)
    replication = cs.replications.reverse(replication.id)
    utils.print_dict(replication.to_dict())
예제 #16
0
def do_backup_show(cs, args):
    """Get backup."""
    backup = shell_utils.find_backup(cs, args.backup)
    utils.print_dict(backup.to_dict())
예제 #17
0
def do_disable_sg(cs, args):
    """Disable volume's SG."""
    volume = shell_utils.find_volume(cs, args.volume)
    volume = cs.volumes.disable(volume.id)
    utils.print_dict(volume.to_dict())
예제 #18
0
def do_enable_sg(cs, args):
    """Enable volume's SG."""
    metadata = _extract_metadata(args)
    volume = cs.volumes.enable(args.volume_id, args.name, args.description,
                               metadata)
    utils.print_dict(volume.to_dict())
예제 #19
0
def do_backup_restore(cs, args):
    """Restore backup."""
    backup = shell_utils.find_backup(cs, args.backup)
    restore = cs.backups.restore(backup.id, args.volume_id)
    utils.print_dict(restore.to_dict())
예제 #20
0
def do_replicate_force_failover(cs, args):
    """Force failover volume's replicate."""
    volume = shell_utils.find_volume(cs, args.volume)
    volume = cs.replicates.failover(volume.id, force=True)
    utils.print_dict(volume.to_dict())
예제 #21
0
def do_backup_export(cs, args):
    """Export backup record."""
    backup = shell_utils.find_backup(cs, args.backup)
    backup_record = cs.backups.export_record(backup.id)
    utils.print_dict(backup_record.to_dict())
예제 #22
0
def do_snapshot_create(cs, args):
    """Create snapshot."""
    volume = shell_utils.find_volume(cs, args.volume)
    snapshot = cs.snapshots.create(volume.id, args.name, args.description)
    utils.print_dict(snapshot.to_dict())
예제 #23
0
def do_snapshot_show(cs, args):
    """Get snapshot."""
    snapshot = shell_utils.find_snapshot(cs, args.snapshot)
    utils.print_dict(snapshot.to_dict())
예제 #24
0
def do_snapshot_rollback(cs, args):
    """Rollback snapshot."""
    snapshot = shell_utils.find_snapshot(cs, args.snapshot)
    rollback = cs.snapshots.rollback(snapshot.id)
    utils.print_dict(rollback.to_dict())
예제 #25
0
def do_checkpoint_show(cs, args):
    """Get checkpoint."""
    checkpoint = shell_utils.find_checkpoint(cs, args.checkpoint)
    utils.print_dict(checkpoint.to_dict())
예제 #26
0
def do_checkpoint_rollback(cs, args):
    """Rollback checkpoint."""
    checkpoint = shell_utils.find_checkpoint(cs, args.checkpoint)
    rollback = cs.checkpoints.rollback(checkpoint.id)
    utils.print_dict(rollback.to_dict())