Source code for ibmcloud_python_sdk.power.key

import json
from ibmcloud_python_sdk.config import params
from ibmcloud_python_sdk.utils.common import query_wrapper as qw
from ibmcloud_python_sdk.power import get_power_headers as headers
from ibmcloud_python_sdk.utils.common import resource_deleted
from ibmcloud_python_sdk.utils.common import check_args


[docs]class Key(): def __init__(self): self.cfg = params()
[docs] def get_keys(self, tenant): """Retrieve keys for a specific tenant :param tenant: Tenant ID (Account ID) :type tenant: str :return: List of keys :rtype: list """ try: # Connect to api endpoint for sshkeys path = ("/pcloud/v1/tenants/{}/sshkeys".format(tenant)) # Return data return qw("power", "GET", path, headers())["data"] except Exception as error: print("Error fetching keys for tenant {}. {}".format( tenant, error))
[docs] def get_key(self, tenant, key): """Retrieve specific key for a specific tenant :param tenant: Tenant ID (Account ID) :type tenant: str :param key: Key name :type key: str :return: Key information :rtype: dict """ try: # Connect to api endpoint for sshkeys path = ("/pcloud/v1/tenants/{}/sshkeys/{}".format(tenant, key)) # Return data return qw("power", "GET", path, headers())["data"] except Exception as error: print("Error fetching key {} for tenant {}. {}".format( key, tenant, error))
[docs] def create_key(self, **kwargs): """Create key :param tenant: Tenant ID (Account ID) :type tenant: str :param name: User defined name for the SSH key :type name: str :param public_key: A unique public SSH key to import :type public_key: str :return: Key information :rtype: dict """ args = ["tenant", "name", "public_key"] check_args(args, **kwargs) # Build dict of argument and assign default value when needed args = { 'tenant': kwargs.get('tenant'), 'name': kwargs.get('name'), 'public_key': kwargs.get('public_key'), } # Construct payload payload = {} for key, value in args.items(): if key != "tenant" and value is not None: if key == "public_key": payload["sshKey"] = args['public_key'] else: payload[key] = value try: # Connect to api endpoint for sshkeys path = ("/pcloud/v1/tenants/{}/sshkeys".format(args['tenant'])) # Return data return qw("power", "POST", path, headers(), json.dumps(payload))["data"] except Exception as error: print("Error creating key. {}".format(error))
[docs] def delete_key(self, tenant, key): """Delete key :param tenant: Tenant ID (Account ID) :type tenant: str :param key: Key name :type key: str :return: Deletion status :rtype: dict """ try: # Check if key exists key_info = self.get_key(tenant, key) if "errors" in key_info: return key_info # Connect to api endpoint for sshkeys path = ("/pcloud/v1/tenants/{}/sshkeys/{}".format( tenant, key_info["name"])) data = qw("power", "DELETE", path, headers()) # Return data if data["response"].status != 200: return data["data"] # Return status return resource_deleted() except Exception as error: print("Error deleting key {}. {}".format(key, error))