コード例 #1
0
ファイル: cmd_backup.py プロジェクト: jadunham1/didata_cli
def remove_client(client, serverid, clienttype, serverfilteripv6):
    if not serverid:
        serverid = get_single_server_id_from_filters(client,
                                                     ex_ipv6=serverfilteripv6)
    try:
        details = client.backup.ex_get_backup_details_for_target(serverid)
        if len(details.clients) <= 0:
            click.secho("No clients found for {0}".format(serverid),
                        fg='red',
                        bold=True)
            exit(1)
        else:
            for backup_client in details.clients:
                if backup_client.type.type == clienttype:
                    client.backup.ex_remove_client_from_target(
                        serverid, backup_client)
                    click.secho(
                        "Successfully removed client {0} from {1}".format(
                            clienttype, serverid),
                        fg='green',
                        bold=True)
                    exit(0)
            click.secho("Could not find a client {0} on {1}".format(
                clienttype, serverid),
                        fg='red',
                        bold=True)
    except DimensionDataAPIException as e:
        handle_dd_api_exception(e)
コード例 #2
0
def remove_disk(client, serverid, serverfilteripv6, diskid):
    node = None
    if not serverid:
        serverid = get_single_server_id_from_filters(client,
                                                     ex_ipv6=serverfilteripv6)
    node = client.node.ex_get_node_by_id(serverid)

    # See if we can find the disk to remove
    disk_to_remove = _find_disk_id_from_node(node, diskid)

    try:
        response = client.node.ex_remove_storage_from_node(
            node, disk_to_remove.id)
        if response is True:
            click.secho("Removed disk {0} from {1}".format(
                disk_to_remove.id, serverid),
                        fg='green',
                        bold=True)
        else:
            click.secho(
                "Something went wrong attempting to remove disk {0} from {1}".
                format(disk_to_remove.id, serverid),
                fg='red',
                bold=True)
            exit(1)
    except DimensionDataAPIException as e:
        handle_dd_api_exception(e)
コード例 #3
0
ファイル: cmd_backup.py プロジェクト: jadunham1/didata_cli
def info(client, serverid, serverfilteripv6):
    if not serverid:
        serverid = get_single_server_id_from_filters(client,
                                                     ex_ipv6=serverfilteripv6)
    try:
        details = client.backup.ex_get_backup_details_for_target(serverid)
        click.secho("Backup Details for {0}".format(serverid))
        click.secho("Service Plan: {0}".format(details.service_plan[0]))
        if len(details.clients) > 0:
            click.secho("Clients:")
            for backup_client in details.clients:
                click.secho("")
                click.secho("{0}".format(backup_client.type), bold=True)
                click.secho("Description: {0}".format(
                    backup_client.description))
                click.secho("Schedule: {0}".format(
                    backup_client.schedule_policy))
                click.secho("Retention: {0}".format(
                    backup_client.storage_policy))
                click.secho("DownloadURL: {0}".format(
                    backup_client.download_url))
                if backup_client.running_job is not None:
                    click.secho("Running Job", bold=True)
                    click.secho("ID: {0}".format(backup_client.running_job.id))
                    click.secho("Status: {0}".format(
                        backup_client.running_job.status))
                    click.secho("Percentage Complete: {0}".format(
                        backup_client.running_job.percentage))
    except DimensionDataAPIException as e:
        handle_dd_api_exception(e)
コード例 #4
0
def modify_disk(client, serverid, serverfilteripv6, diskid, size, speed):
    # Validate parameters, wish click had exculsion
    if size is not None and speed is not None:
        click.secho("Only one modify disk operation can happen at a time.  Please choose either --speed or --size",
                    fg='red', bold=True)
        exit(1)
    elif size is None and speed is None:
        click.secho("Must choose one of --speed or --size to change", fg='red', bold=True)
        exit(1)

    node = None
    if not serverid:
        serverid = get_single_server_id_from_filters(client, ex_ipv6=serverfilteripv6)
    node = client.node.ex_get_node_by_id(serverid)

    # See if we can find the disk to modify
    disk_to_modify = _find_disk_id_from_node(node, diskid)

    try:
        if speed is not None:
            response = client.node.ex_change_storage_speed(node, disk_to_modify.id, speed)
        else:
            response = client.node.ex_change_storage_size(node, disk_to_modify.id, size)
        if response is True:
            click.secho("Successfully modified disk {0} from {1}".format(disk_to_modify.scsi_id, serverid),
                        fg='green', bold=True)
        else:
            click.secho("Something went wrong attempting to modify disk {0} from {1}".format(disk_to_modify.id,
                                                                                             serverid),
                        fg='red', bold=True)
            exit(1)
    except DimensionDataAPIException as e:
        handle_dd_api_exception(e)
コード例 #5
0
ファイル: cmd_backup.py プロジェクト: jadunham1/didata_cli
def enable(client, serverid, serviceplan, serverfilteripv6):
    if not serverid:
        serverid = get_single_server_id_from_filters(client, ex_ipv6=serverfilteripv6)
    try:
        extra = {'service_plan': serviceplan}
        client.backup.create_target(serverid, serverid, extra=extra)
        click.secho("Backups enabled for {0}.  Service plan: {1}".format(serverid, serviceplan), fg='green', bold=True)
    except DimensionDataAPIException as e:
        handle_dd_api_exception(e)
コード例 #6
0
def add_client(client, serverid, clienttype, storagepolicy, schedulepolicy, triggeron, notifyemail, serverfilteripv6):
    if not serverid:
        serverid = get_single_server_id_from_filters(client, ex_ipv6=serverfilteripv6)
    try:
        client.backup.ex_add_client_to_target(serverid, clienttype, storagepolicy,
                                              schedulepolicy, triggeron, notifyemail)
        click.secho("Enabled {0} client on {1}".format(clienttype, serverid), fg='red', bold=True)
    except DimensionDataAPIException as e:
        handle_dd_api_exception(e)
コード例 #7
0
def enable(client, serverid, serviceplan, serverfilteripv6):
    if not serverid:
        serverid = get_single_server_id_from_filters(client, ex_ipv6=serverfilteripv6)
    try:
        extra = {'service_plan': serviceplan}
        client.backup.create_target(serverid, serverid, extra=extra)
        click.secho("Backups enabled for {0}.  Service plan: {1}".format(serverid, serviceplan), fg='green', bold=True)
    except DimensionDataAPIException as e:
        handle_dd_api_exception(e)
コード例 #8
0
ファイル: cmd_backup.py プロジェクト: jadunham1/didata_cli
def add_client(client, serverid, clienttype, storagepolicy, schedulepolicy, triggeron, notifyemail, serverfilteripv6):
    if not serverid:
        serverid = get_single_server_id_from_filters(client, ex_ipv6=serverfilteripv6)
    try:
        client.backup.ex_add_client_to_target(serverid, clienttype, storagepolicy,
                                              schedulepolicy, triggeron, notifyemail)
        click.secho("Enabled {0} client on {1}".format(clienttype, serverid), fg='red', bold=True)
    except DimensionDataAPIException as e:
        handle_dd_api_exception(e)
コード例 #9
0
def update_ram(client, serverid, serverfilteripv6, ramingb):
    node = None
    if not serverid:
        serverid = get_single_server_id_from_filters(client, ex_ipv6=serverfilteripv6)
    node = client.node.ex_get_node_by_id(serverid)
    try:
        client.node.ex_reconfigure_node(node, ramingb, None, None, None)
        click.secho("Server {0} ram is being changed to {1}GB".format(serverid, ramingb), fg='green', bold=True)
    except DimensionDataAPIException as e:
        handle_dd_api_exception(e)
コード例 #10
0
def update_cpu_count(client, serverid, serverfilteripv6, cpucount):
    node = None
    if not serverid:
        serverid = get_single_server_id_from_filters(client, ex_ipv6=serverfilteripv6)
    node = client.node.ex_get_node_by_id(serverid)
    try:
        client.node.ex_reconfigure_node(node, None, cpucount, None, None)
        click.secho("Server {0} CPU Count changing to {1}".format(serverid, cpucount), fg='green', bold=True)
    except DimensionDataAPIException as e:
        handle_dd_api_exception(e)
コード例 #11
0
ファイル: cmd_backup.py プロジェクト: jadunham1/didata_cli
def disable(client, serverid, serverfilteripv6):
    if not serverid:
        serverid = get_single_server_id_from_filters(client, ex_ipv6=serverfilteripv6)
    try:
        response = client.backup.delete_target(serverid)
        if response is True:
            click.secho("Backups disabled for {0}".format(serverid), fg='green', bold=True)
        else:
            click.secho("Backups not disabled for {0}".format(serverid, fg='red', bold=True))
    except DimensionDataAPIException as e:
        handle_dd_api_exception(e)
コード例 #12
0
ファイル: cmd_backup.py プロジェクト: jadunham1/didata_cli
def download_url(client, serverid, serverfilteripv6):
    if not serverid:
        serverid = get_single_server_id_from_filters(client, ex_ipv6=serverfilteripv6)
    try:
        details = client.backup.ex_get_backup_details_for_target(serverid)
        if len(details.clients) < 1:
            click.secho("No clients configured so there is no backup url", fg='red', bold=True)
            exit(1)
        click.secho("{0}".format(details.clients[0].download_url))
    except DimensionDataAPIException as e:
        handle_dd_api_exception(e)
コード例 #13
0
def disable(client, serverid, serverfilteripv6):
    if not serverid:
        serverid = get_single_server_id_from_filters(client, ex_ipv6=serverfilteripv6)
    try:
        response = client.backup.delete_target(serverid)
        if response is True:
            click.secho("Backups disabled for {0}".format(serverid), fg='green', bold=True)
        else:
            click.secho("Backups not disabled for {0}".format(serverid, fg='red', bold=True))
    except DimensionDataAPIException as e:
        handle_dd_api_exception(e)
コード例 #14
0
def download_url(client, serverid, serverfilteripv6):
    if not serverid:
        serverid = get_single_server_id_from_filters(client, ex_ipv6=serverfilteripv6)
    try:
        details = client.backup.ex_get_backup_details_for_target(serverid)
        if len(details.clients) < 1:
            click.secho("No clients configured so there is no backup url", fg='red', bold=True)
            exit(1)
        click.secho("{0}".format(details.clients[0].download_url))
    except DimensionDataAPIException as e:
        handle_dd_api_exception(e)
コード例 #15
0
def list_available_client_types(client, serverid, serverfilteripv6):
    if not serverid:
        serverid = get_single_server_id_from_filters(client, ex_ipv6=serverfilteripv6)
    try:
        client_types = client.backup.ex_list_available_client_types(serverid)
        if len(client_types) < 1:
            click.secho("No available clients types for {0}".format(serverid), fg='red', bold=True)
            exit(1)
        click.secho("Available Client Types:", bold=True)
        for client_type in client_types:
            click.secho("{0}".format(client_type.type))
    except DimensionDataAPIException as e:
        handle_dd_api_exception(e)
コード例 #16
0
ファイル: cmd_backup.py プロジェクト: jadunham1/didata_cli
def list_available_storage_policies(client, serverid, serverfilteripv6):
    if not serverid:
        serverid = get_single_server_id_from_filters(client, ex_ipv6=serverfilteripv6)
    try:
        storage_policies = client.backup.ex_list_available_storage_policies(serverid)
        if len(storage_policies) < 1:
            click.secho("No available storage_policies for {0}".format(serverid), fg='red', bold=True)
            exit(1)
        click.secho("Available Storage Policies:", bold=True)
        for storage_policy in storage_policies:
            click.secho("{0}".format(storage_policy.name))
    except DimensionDataAPIException as e:
        handle_dd_api_exception(e)
コード例 #17
0
ファイル: cmd_backup.py プロジェクト: jadunham1/didata_cli
def list_available_client_types(client, serverid, serverfilteripv6):
    if not serverid:
        serverid = get_single_server_id_from_filters(client, ex_ipv6=serverfilteripv6)
    try:
        client_types = client.backup.ex_list_available_client_types(serverid)
        if len(client_types) < 1:
            click.secho("No available clients types for {0}".format(serverid), fg='red', bold=True)
            exit(1)
        click.secho("Available Client Types:", bold=True)
        for client_type in client_types:
            click.secho("{0}".format(client_type.type))
    except DimensionDataAPIException as e:
        handle_dd_api_exception(e)
コード例 #18
0
def list_available_storage_policies(client, serverid, serverfilteripv6):
    if not serverid:
        serverid = get_single_server_id_from_filters(client, ex_ipv6=serverfilteripv6)
    try:
        storage_policies = client.backup.ex_list_available_storage_policies(serverid)
        if len(storage_policies) < 1:
            click.secho("No available storage_policies for {0}".format(serverid), fg='red', bold=True)
            exit(1)
        click.secho("Available Storage Policies:", bold=True)
        for storage_policy in storage_policies:
            click.secho("{0}".format(storage_policy.name))
    except DimensionDataAPIException as e:
        handle_dd_api_exception(e)
コード例 #19
0
ファイル: cmd_server.py プロジェクト: jadunham1/didata_cli
def reboot(client, serverid, serverfilteripv6):
    node = None
    if not serverid:
        serverid = get_single_server_id_from_filters(client, ex_ipv6=serverfilteripv6)
    node = client.node.ex_get_node_by_id(serverid)
    try:
        response = client.node.reboot_node(node)
        if response is True:
            click.secho("Server {0} is being rebooted".format(serverid), fg='green', bold=True)
        else:
            click.secho("Something went wrong with attempting to reboot {0}".format(serverid))
    except DimensionDataAPIException as e:
        handle_dd_api_exception(e)
コード例 #20
0
ファイル: cmd_server.py プロジェクト: jadunham1/didata_cli
def shutdown_hard(client, serverid, serverfilteripv6):
    node = None
    if not serverid:
        serverid = get_single_server_id_from_filters(client, ex_ipv6=serverfilteripv6)
    node = client.node.ex_get_node_by_id(serverid)
    try:
        response = client.node.ex_power_off(node)
        if response is True:
            click.secho("Server {0} is shutting down hard".format(serverid), fg='green', bold=True)
        else:
            click.secho("Something went wrong when attempting to shut down {0}".format(serverid))
    except DimensionDataAPIException as e:
        handle_dd_api_exception(e)
コード例 #21
0
def add_disk(client, serverid, serverfilteripv6, size, speed):
    node = None
    if not serverid:
        serverid = get_single_server_id_from_filters(client, ex_ipv6=serverfilteripv6)
    node = client.node.ex_get_node_by_id(serverid)
    try:
        response = client.node.ex_add_storage_to_node(node, size, speed)
        if response is True:
            click.secho("Adding disk {0} {1}GB to {2}".format(speed, size, serverid), fg='green', bold=True)
        else:
            click.secho("Something went wrong attempting to add disk to {0}".format(serverid), fg='red', bold=True)
            exit(1)
    except DimensionDataAPIException as e:
        handle_dd_api_exception(e)
コード例 #22
0
def update_ram(client, serverid, serverfilteripv6, ramingb):
    node = None
    if not serverid:
        serverid = get_single_server_id_from_filters(client,
                                                     ex_ipv6=serverfilteripv6)
    node = client.node.ex_get_node_by_id(serverid)
    try:
        client.node.ex_reconfigure_node(node, ramingb, None, None, None)
        click.secho("Server {0} ram is being changed to {1}GB".format(
            serverid, ramingb),
                    fg='green',
                    bold=True)
    except DimensionDataAPIException as e:
        handle_dd_api_exception(e)
コード例 #23
0
def update_cpu_count(client, serverid, serverfilteripv6, cpucount):
    node = None
    if not serverid:
        serverid = get_single_server_id_from_filters(client,
                                                     ex_ipv6=serverfilteripv6)
    node = client.node.ex_get_node_by_id(serverid)
    try:
        client.node.ex_reconfigure_node(node, None, cpucount, None, None)
        click.secho("Server {0} CPU Count changing to {1}".format(
            serverid, cpucount),
                    fg='green',
                    bold=True)
    except DimensionDataAPIException as e:
        handle_dd_api_exception(e)
コード例 #24
0
ファイル: cmd_backup.py プロジェクト: jadunham1/didata_cli
def remove_client(client, serverid, clienttype, serverfilteripv6):
    if not serverid:
        serverid = get_single_server_id_from_filters(client, ex_ipv6=serverfilteripv6)
    try:
        details = client.backup.ex_get_backup_details_for_target(serverid)
        if len(details.clients) <= 0:
            click.secho("No clients found for {0}".format(serverid), fg='red', bold=True)
            exit(1)
        else:
            for backup_client in details.clients:
                if backup_client.type.type == clienttype:
                    client.backup.ex_remove_client_from_target(serverid, backup_client)
                    click.secho("Successfully removed client {0} from {1}".format(clienttype, serverid),
                                fg='green', bold=True)
                    exit(0)
            click.secho("Could not find a client {0} on {1}".format(clienttype, serverid), fg='red', bold=True)
    except DimensionDataAPIException as e:
        handle_dd_api_exception(e)
コード例 #25
0
ファイル: cmd_server.py プロジェクト: jadunham1/didata_cli
def shutdown_hard(client, serverid, serverfilteripv6):
    node = None
    if not serverid:
        serverid = get_single_server_id_from_filters(client,
                                                     ex_ipv6=serverfilteripv6)
    node = client.node.ex_get_node_by_id(serverid)
    try:
        response = client.node.ex_power_off(node)
        if response is True:
            click.secho("Server {0} is shutting down hard".format(serverid),
                        fg='green',
                        bold=True)
        else:
            click.secho(
                "Something went wrong when attempting to shut down {0}".format(
                    serverid))
    except DimensionDataAPIException as e:
        handle_dd_api_exception(e)
コード例 #26
0
ファイル: cmd_server.py プロジェクト: jadunham1/didata_cli
def reboot_hard(client, serverid, serverfilteripv6):
    node = None
    if not serverid:
        serverid = get_single_server_id_from_filters(client,
                                                     ex_ipv6=serverfilteripv6)
    node = client.node.ex_get_node_by_id(serverid)
    try:
        response = client.node.ex_reset(node)
        if response is True:
            click.secho("Server {0} is being rebooted".format(serverid),
                        fg='green',
                        bold=True)
        else:
            click.secho(
                "Something went wrong with attempting to reboot {0}".format(
                    serverid))
    except DimensionDataAPIException as e:
        handle_dd_api_exception(e)
コード例 #27
0
def modify_disk(client, serverid, serverfilteripv6, diskid, size, speed):
    # Validate parameters, wish click had exculsion
    if size is not None and speed is not None:
        click.secho(
            "Only one modify disk operation can happen at a time.  Please choose either --speed or --size",
            fg='red',
            bold=True)
        exit(1)
    elif size is None and speed is None:
        click.secho("Must choose one of --speed or --size to change",
                    fg='red',
                    bold=True)
        exit(1)

    node = None
    if not serverid:
        serverid = get_single_server_id_from_filters(client,
                                                     ex_ipv6=serverfilteripv6)
    node = client.node.ex_get_node_by_id(serverid)

    # See if we can find the disk to modify
    disk_to_modify = _find_disk_id_from_node(node, diskid)

    try:
        if speed is not None:
            response = client.node.ex_change_storage_speed(
                node, disk_to_modify.id, speed)
        else:
            response = client.node.ex_change_storage_size(
                node, disk_to_modify.id, size)
        if response is True:
            click.secho("Successfully modified disk {0} from {1}".format(
                disk_to_modify.scsi_id, serverid),
                        fg='green',
                        bold=True)
        else:
            click.secho(
                "Something went wrong attempting to modify disk {0} from {1}".
                format(disk_to_modify.id, serverid),
                fg='red',
                bold=True)
            exit(1)
    except DimensionDataAPIException as e:
        handle_dd_api_exception(e)
コード例 #28
0
def remove_disk(client, serverid, serverfilteripv6, diskid):
    node = None
    if not serverid:
        serverid = get_single_server_id_from_filters(client, ex_ipv6=serverfilteripv6)
    node = client.node.ex_get_node_by_id(serverid)

    # See if we can find the disk to remove
    disk_to_remove = _find_disk_id_from_node(node, diskid)

    try:
        response = client.node.ex_remove_storage_from_node(node, disk_to_remove.id)
        if response is True:
            click.secho("Removed disk {0} from {1}".format(disk_to_remove.id, serverid), fg='green', bold=True)
        else:
            click.secho("Something went wrong attempting to remove disk {0} from {1}".format(disk_to_remove.id,
                                                                                             serverid),
                        fg='red', bold=True)
            exit(1)
    except DimensionDataAPIException as e:
        handle_dd_api_exception(e)
コード例 #29
0
def add_disk(client, serverid, serverfilteripv6, size, speed):
    node = None
    if not serverid:
        serverid = get_single_server_id_from_filters(client,
                                                     ex_ipv6=serverfilteripv6)
    node = client.node.ex_get_node_by_id(serverid)
    try:
        response = client.node.ex_add_storage_to_node(node, size, speed)
        if response is True:
            click.secho("Adding disk {0} {1}GB to {2}".format(
                speed, size, serverid),
                        fg='green',
                        bold=True)
        else:
            click.secho(
                "Something went wrong attempting to add disk to {0}".format(
                    serverid),
                fg='red',
                bold=True)
            exit(1)
    except DimensionDataAPIException as e:
        handle_dd_api_exception(e)
コード例 #30
0
ファイル: cmd_backup.py プロジェクト: jadunham1/didata_cli
def info(client, serverid, serverfilteripv6):
    if not serverid:
        serverid = get_single_server_id_from_filters(client, ex_ipv6=serverfilteripv6)
    try:
        details = client.backup.ex_get_backup_details_for_target(serverid)
        click.secho("Backup Details for {0}".format(serverid))
        click.secho("Service Plan: {0}".format(details.service_plan[0]))
        if len(details.clients) > 0:
            click.secho("Clients:")
            for backup_client in details.clients:
                click.secho("")
                click.secho("{0}".format(backup_client.type), bold=True)
                click.secho("Description: {0}".format(backup_client.description))
                click.secho("Schedule: {0}".format(backup_client.schedule_policy))
                click.secho("Retention: {0}".format(backup_client.storage_policy))
                click.secho("DownloadURL: {0}".format(backup_client.download_url))
                if backup_client.running_job is not None:
                    click.secho("Running Job", bold=True)
                    click.secho("ID: {0}".format(backup_client.running_job.id))
                    click.secho("Status: {0}".format(backup_client.running_job.status))
                    click.secho("Percentage Complete: {0}".format(backup_client.running_job.percentage))
    except DimensionDataAPIException as e:
        handle_dd_api_exception(e)