Package: viperpy
A Python library for interacting with the EMC ViPR APINote:ViPRis an EMC product,
trademarked, copyrighted, etc.If you are using the ECS (Elastic Cloud Storage) product it is recommended that you
useECSMinionto communicate with the
Management APIs.Using this library is pretty straight forward. ViperPy can be installed
fromPyPi:$ pip install viperpyCreating an instance of the ViperPy class requires the following
arguments:NameRequiredDefault ValueDescriptionusernameNoNoneThe username used to fetch the ViPR tokenpasswordNoNoneThe password used to fetch the ViPR tokentokenNoNonePass a token to ViperPy (username/password are ignored then)vipr_endpointYesNoneThe ViPR API endpoint, ex:https://192.168.1.146:4443token_endpointYesNoneThe ViPR API endpoint, ex:https://192.168.1.146:4443/loginverify_sslNoFalseWhether to check a host’s SSL certificatetoken_filenameNoViperPy.tknThe filename of the temporary tokentoken_locationNo/tmpThe location to store the temporary token filerequest_timeoutNo15.0Stop waiting for a response after a given number of seconds, this is a decimal value. Ex: 10.0 is ten secondscache_tokenNoTrueWhether to cache the token, by default this is true you should only switch this to false when you want to directly fetch a token for a userHere is an example that goes through most of the API calls. Please note
that some calls take longer to complete than others. Sometimes you may
need to set yourrequest_timeoutto60.0.from viperpy import Viperpy, ViperpyException
from viperpy.util.common import get_formatted_time_string

try:
    client = Viperpy(username='someone',
                       password='password',
                       token_endpoint='https://192.168.1.146:4443/login',
                       vipr_endpoint='https://192.168.1.146:4443',
                       request_timeout=15.0)

    print(client.user_info.whoami())

    print(client.user_info.get_tenant(username=None))

    audit_time_bucket = get_formatted_time_string(2014, 12, 4, 0, None)
    print(client.audit.get_audit_log(audit_time_bucket))

    print(client.fabric_capacity.get_capacity())

    print(client.disk.get_disks(maximum=-3, index=1))

    single_disk_info = client.disk.get_disk_by_urn(
        urn='urn:fabric:disk:00b0b99b-a395-4179-8838-f121b99061fb')
    print(single_disk_info)

    single_disk_capacity_info = client.disk.get_disk_capacity(
        urn='urn:fabric:disk:00b0b99b-a395-4179-8838-f121b99061fb')
    print(single_disk_capacity_info)

    print(client.health.get_health())

    print(client.node.get_nodes(maximum=-5, index=0))

    print(client.services.get_services())

    print(client.bucket.get_buckets('namespace1'))
    print(client.bucket.get_bucket_retention('bucket1'))

    print(client.object_data_control_capacity.get_capacity())

    print(client.namespace.get_namespaces())
    print(client.namespace.get_namespace_info('namespace1'))

    print(client.user_management.get_objectusers())
    print(client.user_management.get_objectusers('namespace1'))

    print(client.user_management.lock_objectuser('myuser1', is_locked=True, namespace='namespace1'))
    print(client.user_management.get_objectuser_info('myuser1'))
    print(client.user_management.lock_objectuser('myuser1', is_locked=False, namespace='namespace1'))
    print(client.user_management.get_objectuser_info('myuser1'))

    print(client.user_secret_key.get_user_secret_keys(uid='user1@test'))

    print(client.configuration.get_config_properties())

    print(client.health_monitor.get_stats())

    health_info = client.health_monitor.get_health(0)
    print(health_info)

    health_info = client.health_monitor.get_stats(
        node_id=['urn:fabric:node:0fedcf91-5086-11e3-a7f8-001e6769f9a1:',
                 'urn:fabric:node:14115e71-4fbe-11e3-b044-001e6769e808:'])
    print(health_info)

    print(client.health_monitor.get_diagnostics(node_id='nilea01-r05-05'))
    print(client.health_monitor.get_storage_stats())

    print(client.upgrade.get_target_version())
    print(client.upgrade.get_cluster_state(True))
    print(client.upgrade.get_download_progress())

    tenants_list = client.tenants.get_tenants_bulk()

    for tenant_id in tenants_list:
        tenant_info = client.tenants.get_tenant(tenant_id)
        print(tenant_info)
        print(tenant_info['name'])

        try:
            subtenant = client.tenants.get_subtenants(tenant_id)
            if subtenant:
                print(subtenant)
        except:
            pass

    # Beta Billing API:
    print(client.billing.get_bucket_billing_info('namespace1', 'bucket1'))

except ViperpyException as viperpy_ex:
    print('Message: {0}'.format(viperpy_ex.message))
    print('Status Code Returned: {0}\n'.format(viperpy_ex.http_status_code))
    print('ViPR API Message: {0}'.format(viperpy_ex.vipr_message))
except Exception as ex:
    print(ex.message)Example: Use a valid token instead of supplying a username and passwordYou pass an authentication token directly to ViperPy which means you
don’t need to supply a username/password. Here is an example (the token
has been shortened):client = Viperpy(token='DLAcbGZtbjh6eVB3eUF1TzFEZWNmc0M2VVl2QjBVPQM',
                   token_endpoint='https://192.168.1.146:4443/login',
                   vipr_endpoint='https://192.168.1.146:4443',
                   request_timeout=15.0)Example: Create, list, and remove object usersfrom viperpy import Viperpy, ViperpyException


if __name__ == "__main__":
    try:
        client = Viperpy(username='someone',
                           password='password',
                           token=None,
                           token_endpoint='https://192.168.1.146:4443/login',
                           vipr_endpoint='https://192.168.1.146:4443',
                           request_timeout=15.0)

        print(client.user_management.add_objectuser(user='mytest1', namespace='namespace1'))
        print(client.user_management.get_objectusers())

        # This next line won't print anything useful as the body is empty
        # If an HTTP 200 is not returned an error with raise, otherwise you can
        # assume that the call was successful
        client.user_management.deactivate_objectuser(user='mytest1')
        print(client.user_management.get_objectusers())

    except ViperpyException as viperpy_ex:
        print('Message: {0}'.format(viperpy_ex.message))
        print('Status Code Returned: {0}\n'.format(viperpy_ex.http_status_code))
        print('ViPR API Message: {0}'.format(viperpy_ex.vipr_message))
    except Exception as ex:
        print(ex.message)Example: Fetching tokensFetching a token for a user can be done as follows by setting thecache_tokenparameter to false and then callingget_token:from viperpy import Viperpy, ViperpyException


if __name__ == "__main__":
    try:
        client = Viperpy(username='someone',
                           password='password',
                           token=None,
                           token_endpoint='https://192.168.1.146:4443/login',
                           vipr_endpoint='https://192.168.1.146:4443',
                           request_timeout=15.0,
                           cache_token=False)

        print(client.get_token())

    except ViperpyException as viperpy_ex:
        print('Message: {0}'.format(viperpy_ex.message))
        print('Status Code Returned: {0}\n'.format(viperpy_ex.http_status_code))
        print('ViPR API Message: {0}'.format(viperpy_ex.vipr_message))
    except Exception as ex:
        print(ex.message)Example: Removing a cached tokenfrom viperpy import Viperpy, ViperpyException


if __name__ == "__main__":
    try:
        client = Viperpy(username='someone',
                           password='password',
                           token=None,
                           token_endpoint='https://192.168.1.146:4443/login',
                           vipr_endpoint='https://192.168.1.146:4443',
                           request_timeout=15.0,
                           cache_token=False)

        print(client.remove_cached_token())

    except ViperpyException as viperpy_ex:
        print('Message: {0}'.format(viperpy_ex.message))
        print('Status Code Returned: {0}\n'.format(viperpy_ex.http_status_code))
        print('ViPR API Message: {0}'.format(viperpy_ex.vipr_message))
    except Exception as ex:
        print(ex.message)ViPR Beta APIsSupport has been added for the ViPR 2.1.1 (beta) release of the new
Billing and Soft Quota APIs.Running PEP8There are some example JSON comments in the source code that are over
the allowed PEP8 length. You can ignore those by running:$ pep8 --ignore=E501 .LicenseThis software library is released to you under the EMC Freeware Software
License Agreement. SeeLICENSEfor more information.