def all(cls, cmAccountId, **kwargs): r = Resource(cls.PATH) if 'detail' in kwargs: r.request_details = kwargs['detail'] else: r.request_details = 'basic' if 'keys_only' in kwargs: keys_only = kwargs['keys_only'] else: keys_only = False params = {'cmAccountId': cmAccountId} x = r.get(params=params) if r.last_error is None: if keys_only is True: return [ i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME] ] else: return [ type(cls.__name__, (object, ), i) for i in uncamel_keys(x)[cls.COLLECTION_NAME] ] else: raise EnvironmentException(r.last_error)
def all(cls, **kwargs): """Get a list of all known servers >>> Server.all() [{'server_id':1,...},{'server_id':2,...}] :returns: list -- a list of :class:`Server` :raises: ServerException """ r = Resource(cls.PATH) params = {} if 'detail' in kwargs: r.request_details = kwargs['detail'] else: r.request_details = 'basic' if 'keys_only' in kwargs: keys_only = kwargs['keys_only'] else: keys_only = False if 'region_id' in kwargs: params['regionId'] = kwargs['region_id'] x = r.get(params=params) if r.last_error is None: if keys_only is True: return [i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME]] else: return [type(cls.__name__, (object,), i) for i in uncamel_keys(x)[cls.COLLECTION_NAME]] else: raise ServerException(r.last_error)
def all(cls, keys_only=False, endpoint=None, **kwargs): """Get all visible billing codes .. note:: The keys used to make the original request determine result visibility :param keys_only: Only return :attr:`billing_code_id` instead of :class:`BillingCode` objects :type keys_only: bool. :param detail: The level of detail to return - `basic` or `extended` :type detail: str. :returns: `list` - of :class:`BillingCode` or :attr:`billing_code_id` :raises: :class:`BillingCodeException` """ r = Resource(cls.PATH, endpoint=endpoint) params = {} if 'details' in kwargs: r.request_details = kwargs['details'] else: r.request_details = 'basic' x = r.get() if r.last_error is None: if keys_only is True: return [i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME]] else: return [type(cls.__name__, (object,), i) for i in uncamel_keys(x)[uncamel(cls.COLLECTION_NAME)]] else: raise BillingCodeException(r.last_error)
def all(cls, region_id, engine, **kwargs): """Get a list of all known relational_databases >>> RelationalDatabaseProduct.all(region_id=100, engine='MYSQL51') [{'product_id':1,...},{'product_id':2,...}] :returns: list -- a list of :class:`RelationalDatabaseProduct` :raises: RelationalDatabaseProductException """ r = Resource(cls.PATH) r.request_details = 'basic' params = {'regionId': region_id, 'engine': engine} if 'detail' in kwargs: r.request_details = kwargs['detail'] else: r.request_details = 'basic' if 'keys_only' in kwargs: keys_only = kwargs['keys_only'] else: keys_only = False x = r.get(params=params) if r.last_error is None: if keys_only is True: results = [i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME]] else: results = [type(cls.__name__, (object,), i) for i in uncamel_keys(x)[uncamel(cls.COLLECTION_NAME)]] return results else: raise RelationalDatabaseProductException(r.last_error)
def all(cls, region_id, endpoint=None, **kwargs): """Get a list of all known storage objects. >>> StorageObject.all(region_id=100) [{'storage_object_id':1,...},{'storage_object_id':2,...}] :returns: list -- a list of :class:`StorageObject` :raises: StorageObjectException """ r = Resource(cls.PATH, endpoint=endpoint) params = {'regionId': region_id} if 'detail' in kwargs: r.request_details = kwargs['detail'] else: r.request_details = 'basic' if 'keys_only' in kwargs: keys_only = kwargs['keys_only'] else: keys_only = False x = r.get(params=params) if r.last_error is None: if keys_only is True: results = [i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME]] else: results = [type(cls.__name__, (object,), i) for i in uncamel_keys(x)[uncamel(cls.COLLECTION_NAME)]] return results else: raise StorageObjectException(r.last_error)
def load(self, **kwargs): """(Re)load the current object's attributes from an API call""" from mixcoatl.utils import uncamel_keys reserved_words = ['type'] p = self.PATH + "/" + str(getattr(self, self.__class__.PRIMARY_KEY)) if 'params' in kwargs: params = kwargs['params'] else: params = camel_keys(self.params) s = self.get(p, params=params) if self.last_error is None: scope = uncamel_keys(s[self.__class__.COLLECTION_NAME][0]) for k in scope.keys(): if k in reserved_words: the_key = 'e_' + k else: the_key = k nk = '_%s__%s' % (self.__class__.__name__, the_key) if the_key not in self.__props(): self.add_property(k) if 'DCM_DEBUG' in os.environ: print "Missing key found when loading class %s with primary key %s: %s" % \ ( self.__class__.__name__, str(getattr(self, self.__class__.PRIMARY_KEY)), k) setattr(self, nk, scope[k]) self.loaded = True else: return self.last_error
def all(cls, keys_only=False, **kwargs): """Get all customers""" r = Resource(cls.PATH) params = {} if 'detail' in kwargs: r.request_details = kwargs['detail'] else: r.request_details = 'basic' if 'customer_id' in kwargs: params['customer_id'] = kwargs['customer_id'] x = r.get(params=params) if r.last_error is None: if keys_only is True: return [ i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME] ] else: return [ type(cls.__name__, (object, ), i) for i in uncamel_keys(x)[cls.COLLECTION_NAME] ] else: raise CustomerException(r.last_error)
def all(cls, region_id, endpoint=None, **kwargs): """Return all server products :param region_id: The region id to search in :type region_id: int. :param keys_only: Return :attr:`product_id` or :class:`ServerProduct` :type keys_only: bool. :param detail: Level of detail to return - `basic` or `extended` :type detail: str. :returns: `list` of :attr:`product_id` or :class:`ServerProduct` :raises: :class:`ServerProductException` """ r = Resource(cls.PATH, endpoint=endpoint) r.request_details = 'basic' params = {'regionId': region_id} if 'keys_only' in kwargs: keys_only = kwargs['keys_only'] else: keys_only = False x = r.get(params=params) if r.last_error is None: if keys_only is True: return [ i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME] ] else: return [ type(cls.__name__, (object, ), i) for i in uncamel_keys(x)[uncamel(cls.COLLECTION_NAME)] ] else: raise ServerProductException(r.last_error)
def all(cls, endpoint=None, **kwargs): r = Resource(cls.PATH,endpoint=endpoint) params = {} if 'detail' in kwargs: r.request_details = kwargs['detail'] else: r.request_details = 'basic' if 'keys_only' in kwargs: keys_only = kwargs['keys_only'] else: keys_only = False if 'params' in kwargs: params = kwargs['params'] x = r.get(params=params) if r.last_error is None: if keys_only is True: results = [i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME]] else: results = [type(cls.__name__, (object,), i) for i in uncamel_keys(x)[cls.COLLECTION_NAME]] return results else: raise RelationalDatabaseException(r.last_error)
def all(cls, **kwargs): r = Resource(cls.PATH) if 'details' in kwargs: r.request_details = kwargs['details'] else: r.request_details = 'basic' if 'keys_only' in kwargs: keys_only = kwargs['keys_only'] else: keys_only = False x = r.get() if r.last_error is None: if keys_only is True: return [ i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME] ] else: return [ type(cls.__name__, (object, ), i) for i in uncamel_keys(x)[uncamel(cls.COLLECTION_NAME)] ] else: raise CMException(r.last_error)
def all(cls, keys_only=False, **kwargs): """Return all users .. note:: The keys used to make the request determine results visibility :param keys_only: Return :attr:`user_id` instead of :class:`User` :type keys_only: bool. :param detail: str. The level of detail to return - `basic` or `extended` :type detail: str. :returns: `list` of :class:`User` or :attr:`user_id` :raises: :class:`UserException` """ r = Resource(cls.PATH) if 'detail' in kwargs: r.request_details = kwargs['detail'] else: r.request_details = 'basic' x = r.get() if r.last_error is None: if keys_only is True: return [i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME]] else: return [type(cls.__name__, (object,), i) for i in uncamel_keys(x)[cls.COLLECTION_NAME]] else: raise UserException(r.last_error)
def all(cls, region_id, endpoint=None, **kwargs): """Return all server products :param region_id: The region id to search in :type region_id: int. :param keys_only: Return :attr:`product_id` or :class:`ServerProduct` :type keys_only: bool. :param detail: Level of detail to return - `basic` or `extended` :type detail: str. :returns: `list` of :attr:`product_id` or :class:`ServerProduct` :raises: :class:`ServerProductException` """ r = Resource(cls.PATH, endpoint=endpoint) r.request_details = 'basic' params = {'regionId': region_id} if 'keys_only' in kwargs: keys_only = kwargs['keys_only'] else: keys_only = False x = r.get(params=params) if r.last_error is None: if keys_only is True: return [i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME]] else: return [type(cls.__name__, (object,), i) for i in uncamel_keys(x)[uncamel(cls.COLLECTION_NAME)]] else: raise ServerProductException(r.last_error)
def all(cls, region_id, endpoint=None, **kwargs): """Return all data centers :param region_id: Required. The region to query against :type region_id: int. :param keys_only: Return :attr:`data_center_id` instead of :class:`DataCenter` :type keys_only: bool. :param detail: The level of detail to return - `basic` or `extended` :type detail: str. :returns: `list` of :class:`DataCenter` or :attr:`data_center_id` :raises: :class:`DataCenterException` """ r = Resource(cls.PATH, endpoint=endpoint) if 'detail' in kwargs: r.request_details = kwargs['detail'] else: r.request_details = 'basic' if 'keys_only' in kwargs: keys_only = kwargs['keys_only'] else: keys_only = False params = {'regionId': region_id} x = r.get(params=params) if r.last_error is None: if keys_only is True: return [i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME]] else: return [type(cls.__name__, (object,), i) for i in uncamel_keys(x)[uncamel(cls.COLLECTION_NAME)]] else: raise DataCenterException(r.last_error)
def all(cls, **kwargs): r = Resource(cls.PATH) params = {} if 'detail' in kwargs: r.request_details = kwargs['detail'] else: r.request_details = 'basic' if 'keys_only' in kwargs: keys_only = kwargs['keys_only'] else: keys_only = False if 'params' in kwargs: params = kwargs['params'] x = r.get(params=params) if r.last_error is None: if keys_only is True: results = [ i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME] ] else: results = [ type(cls.__name__, (object, ), i) for i in uncamel_keys(x)[cls.COLLECTION_NAME] ] return results else: raise RelationalDatabaseException(r.last_error)
def load(self, **kwargs): """(Re)load the current object's attributes from an API call""" from mixcoatl.utils import uncamel_keys reserved_words = ['type'] p = self.PATH if 'params' in kwargs: params = kwargs['params'] else: params = camel_keys(self.params) s = self.get(p, params=params) if self.last_error is None: scope = uncamel_keys(s) for k in scope.keys(): if k in reserved_words: the_key = 'e_' + k else: the_key = k nk = '_%s__%s' % (self.__class__.__name__, the_key) # nk = '__%s' % the_key if the_key not in self._Resource__props(): self.add_property(k) setattr(self, nk, scope[k]) self.loaded = True else: return self.last_error
def load(self, **kwargs): """(Re)load the current object's attributes from an API call""" from mixcoatl.utils import uncamel_keys reserved_words = ["type"] p = self.PATH if "params" in kwargs: params = kwargs["params"] else: params = camel_keys(self.params) s = self.get(p, params=params) if self.last_error is None: scope = uncamel_keys(s) for k in scope.keys(): if k in reserved_words: the_key = "e_" + k else: the_key = k nk = "_%s__%s" % (self.__class__.__name__, the_key) # nk = '__%s' % the_key if the_key not in self._Resource__props(): self.add_property(k) setattr(self, nk, scope[k]) self.loaded = True else: return self.last_error
def all(cls, keys_only=False, **kwargs): """Return all users .. note:: The keys used to make the request determine results visibility :param keys_only: Return :attr:`user_id` instead of :class:`User` :type keys_only: bool. :param detail: str. The level of detail to return - `basic` or `extended` :type detail: str. :returns: `list` of :class:`User` or :attr:`user_id` :raises: :class:`UserException` """ r = Resource(cls.PATH) if 'detail' in kwargs: r.request_details = kwargs['detail'] else: r.request_details = 'basic' x = r.get() if r.last_error is None: if keys_only is True: return [ i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME] ] else: return [ type(cls.__name__, (object, ), i) for i in uncamel_keys(x)[cls.COLLECTION_NAME] ] else: raise UserException(r.last_error)
def all(cls, endpoint=None, **kwargs): """List all networks in `region_id` :param region_id: Limit results to `region_id` :type region_id: int. :param data_center_id: Limit results to `data_center_id` :type region_id: int. :param account_id: limit results to `account_id` :type account_id: int. :param detail: Level of detail to return - `basic` or `extended` :type detail: str. :param keys_only: Return only :attr:`network_id` in results :type keys_only: bool. :param active_only: Limits the list of networks to only active networks if true. Default is True. :type keys_only: bool. :returns: `list` of :attr:`network_id` or :class:`Network` :raises: :class:`NetworkException` """ params = {} r = Resource(cls.PATH, endpoint=endpoint) if 'detail' in kwargs: request_details = kwargs['detail'] else: request_details = 'extended' if 'keys_only' in kwargs: keys_only = kwargs['keys_only'] else: keys_only = False if 'region_id' in kwargs: params['regionId'] = kwargs['region_id'] if 'data_center_id' in kwargs: params['dataCenterId'] = kwargs['data_center_id'] if 'account_id' in kwargs: params['accountId'] = kwargs['account_id'] if 'active_only' in kwargs: params['activeOnly'] = kwargs['active_only'] else: params['activeOnly'] = True x = r.get(params=params) if r.last_error is None: if keys_only is True: return [ i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME] ] else: return [ type(cls.__name__, (object, ), i) for i in uncamel_keys(x)[cls.COLLECTION_NAME] ] else: raise NetworkException(r.last_error)
def _load_api_versions(self): from mixcoatl.utils import uncamel_keys headers = {'content-type': 'application/json', 'Accept': 'application/json'} url_parts = self.url.split("/") url = url_parts[0]+"//"+url_parts[2]+"/api/enstratus" result = r.get(url,headers=headers) result.raise_for_status() self.loaded = True self.available_api_versions = uncamel_keys(result.json())
def all(cls, endpoint=None, **kwargs): """Return all machine images :param machine_image_id: The id of the machine image :type machine_image_id: int. :param region_id: The region to search for machine images :type region_id: int. :param keys_only: Return :attr:`machine_image_id` instead of :class:`MachineImage` :type keys_only: bool. :param available: Return only available images. Default is `true` :type available: str. :param registered: Return only images with the DCM agent installed. Default is `false` :type registered: str. :param detail: The level of detail to return - `basic` or `extended` :type detail: str. :returns: `list` of :class:`MachineImage` or :attr:`machine_image_id` :raises: :class:`MachineImageException` """ if 'machine_image_id' in kwargs: r = Resource(cls.PATH + "/" + str(kwargs['machine_image_id']), endpoint=endpoint) else: r = Resource(cls.PATH, endpoint=endpoint) params = {} if 'keys_only' in kwargs: keys_only = kwargs['keys_only'] else: keys_only = False if 'region_id' in kwargs: params['regionId'] = kwargs['region_id'] if 'available' in kwargs: params['active'] = kwargs['available'] if 'registered' in kwargs: params['registered'] = kwargs['registered'] x = r.get(params=params) if r.last_error is None: if keys_only is True: return [ i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME] ] else: return [ type(cls.__name__, (object, ), i) for i in uncamel_keys(x)[cls.COLLECTION_NAME] ] else: raise MachineImageException(r.last_error)
def all(cls, **kwargs): """List all networks in `region_id` :param region_id: Limit results to `region_id` :type region_id: int. :param data_center_id: Limit results to `data_center_id` :type region_id: int. :param account_id: limit results to `account_id` :type account_id: int. :param detail: Level of detail to return - `basic` or `extended` :type detail: str. :param keys_only: Return only :attr:`network_id` in results :type keys_only: bool. :param active_only: Limits the list of networks to only active networks if true. Default is True. :type keys_only: bool. :returns: `list` of :attr:`network_id` or :class:`Network` :raises: :class:`NetworkException` """ params = {} r = Resource(cls.PATH) if 'detail' in kwargs: request_details = kwargs['detail'] else: request_details = 'extended' if 'keys_only' in kwargs: keys_only = kwargs['keys_only'] else: keys_only = False if 'region_id' in kwargs: params['regionId'] = kwargs['region_id'] if 'data_center_id' in kwargs: params['dataCenterId'] = kwargs['data_center_id'] if 'account_id' in kwargs: params['accountId'] = kwargs['account_id'] if 'active_only' in kwargs: params['activeOnly'] = kwargs['active_only'] else: params['activeOnly'] = True x = r.get(params=params) if r.last_error is None: if keys_only is True: return [i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME]] else: return [type(cls.__name__, (object,), i) for i in uncamel_keys(x)[cls.COLLECTION_NAME]] else: raise NetworkException(r.last_error)
def _load_api_versions(self): from mixcoatl.utils import uncamel_keys headers = { 'content-type': 'application/json', 'Accept': 'application/json' } url_parts = self.url.split("/") url = url_parts[0] + "//" + url_parts[2] + "/api/enstratus" result = r.get(url, headers=headers) result.raise_for_status() self.loaded = True self.available_api_versions = uncamel_keys(result.json())
def all(cls, keys_only=False, endpoint=None, **kwargs): """Get all api keys .. note:: The keys used to make the request determine results visibility :param keys_only: Only return `access_key` instead of `ApiKey` objects :type keys_only: bool. :param detail: The level of detail to return - `basic` or `extended` :type detail: str. :param account_id: Display all system keys belonging to `account_id` :type account_id: int. :param user_id: Display all keys belonging to `user_id` :type user_id: int. :returns: `list` - of :class:`ApiKey` or :attr:`access_key` """ if 'access_key' in kwargs: r = Resource(cls.PATH + "/" + kwargs['access_key'], endpoint=endpoint) params = {} else: r = Resource(cls.PATH, endpoint=endpoint) if 'detail' in kwargs: r.request_details = kwargs['detail'] else: r.request_details = 'basic' if 'account_id' in kwargs: params = {'accountId': kwargs['account_id']} elif 'user_id' in kwargs: params = {'userId': kwargs['user_id']} else: params = {} x = r.get(params=params) if r.last_error is None: if keys_only is True: return [ i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME] ] else: return [ type(cls.__name__, (object, ), i) for i in uncamel_keys(x)[uncamel(cls.COLLECTION_NAME)] ] else: raise ApiKeyException(r.last_error)
def all(cls, endpoint=None, **kwargs): """Return a list of snapshots :param account_id: Restrict to snapshots owned by `account_id` :type account_id: int. :param volume_id: Restrict to snapshots based on `volume_id` :type volume_id: int. :param region_id: Restrict to snapshots in `region_id` :type region_id: int. :param keys_only: Return :attr:`snapshot_id` or :class:`Snapshot` :type keys_only: bool. :param detail: Level of detail to return - `basic` or `extended` :type detail: str. :returns: `list` of :attr:`snapshot_id` or :class:`Snapshot` :raises: :class:`SnapshotException` """ r = Resource(cls.PATH, endpoint=endpoint) params = {} if 'detail' in kwargs: r.request_details = kwargs['detail'] else: r.request_details = 'basic' if 'keys_only' in kwargs: keys_only = kwargs['keys_only'] else: keys_only = False if 'region_id' in kwargs: params['regionId'] = kwargs['region_id'] if 'account_id' in kwargs: params['accountId'] = kwargs['account_id'] if 'volume_id' in kwargs: params['volumeId'] = kwargs['volume_id'] x = r.get(params=params) if r.last_error is None: if keys_only is True: return [ i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME] ] else: return [ type(cls.__name__, (object, ), i) for i in uncamel_keys(x)[cls.COLLECTION_NAME] ] else: raise SnapshotException(r.last_error)
def all(cls, endpoint=None, **kwargs): """Return all machine images :param machine_image_id: The id of the machine image :type machine_image_id: int. :param region_id: The region to search for machine images :type region_id: int. :param keys_only: Return :attr:`machine_image_id` instead of :class:`MachineImage` :type keys_only: bool. :param available: Return only available images. Default is `true` :type available: str. :param registered: Return only images with the DCM agent installed. Default is `false` :type registered: str. :param detail: The level of detail to return - `basic` or `extended` :type detail: str. :returns: `list` of :class:`MachineImage` or :attr:`machine_image_id` :raises: :class:`MachineImageException` """ if 'machine_image_id' in kwargs: r = Resource(cls.PATH + "/" + str(kwargs['machine_image_id']), endpoint=endpoint) else: r = Resource(cls.PATH, endpoint=endpoint) params = {} if 'keys_only' in kwargs: keys_only = kwargs['keys_only'] else: keys_only = False if 'region_id' in kwargs: params['regionId'] = kwargs['region_id'] if 'available' in kwargs: params['active'] = kwargs['available'] if 'registered' in kwargs: params['registered'] = kwargs['registered'] x = r.get(params=params) if r.last_error is None: if keys_only is True: return [i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME]] else: return [type(cls.__name__, (object,), i) for i in uncamel_keys(x)[cls.COLLECTION_NAME]] else: raise MachineImageException(r.last_error)
def all(cls, endpoint=None, **kwargs): """Return all regions :param account_id: Limit results to regions with the specified account :type account_id: int. :param jurisdiction: Limit results to the specified jurisdiction :type jurisdiction: str. :param scope: Limit results to `all` (Default - cross-cloud) or `account` (cloud-specific) :type scope: str. :param keys_only: Return :attr:`region_id` instead of :class:`Region` :type keys_only: bool. :param detail: The level of detail to return - `basic` or `extended` :type detail: str. :returns: `list` of :class:`Region` or :attr:`region_id` :raises: :class:`RegionException` """ r = Resource(cls.PATH, endpoint=endpoint) params = {} if 'detail' in kwargs: r.request_details = kwargs['detail'] else: r.request_details = 'basic' if 'keys_only' in kwargs: keys_only = kwargs['keys_only'] else: keys_only = False for x in ['account_id', 'jurisdiction', 'scope']: if x in kwargs: params[camelize(x)] = kwargs[x] x = r.get(params=params) if r.last_error is None: if keys_only is True: return [ i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME] ] else: return [ type(cls.__name__, (object, ), i) for i in uncamel_keys(x)[cls.COLLECTION_NAME] ] else: raise RegionException(r.last_error)
def all(cls, endpoint=None, **kwargs): """List all firewalls in `region_id` :param region_id: Limit results to `region_id` :type region_id: int. :param account_id: limit results to `account_id` :type account_id: int. :param detail: Level of detail to return - `basic` or `extended` :type detail: str. :param keys_only: Return only :attr:`firewall_id` in results :type keys_only: bool. :returns: `list` of :attr:`firewall_id` or :class:`Firewall` :raises: :class:`FirewallException` """ r = Resource(cls.PATH, endpoint=None) params = {} if 'detail' in kwargs: r.request_details = kwargs['detail'] else: r.request_details = 'basic' if 'keys_only' in kwargs: keys_only = kwargs['keys_only'] else: keys_only = False if 'region_id' in kwargs: params['regionId'] = kwargs['region_id'] if 'account_id' in kwargs: params['accountId'] = kwargs['account_id'] x = r.get(params=params) if r.last_error is None: if keys_only is True: return [ i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME] ] else: return [ type(cls.__name__, (object, ), i) for i in uncamel_keys(x)[cls.COLLECTION_NAME] ] else: raise FirewallException(r.last_error)
def all(cls, keys_only=False, endpoint=None, **kwargs): """Get all roles .. note:: The keys used to make the request determine results visibility :param keys_only: Only return :attr:`role_id` instead of :class:`Group` objects :type keys_only: bool. :param detail: The level of detail to return - `basic` or `extended` :type detail: str. :param account_id: List roles with mappings to groups in the specified account :type account_id: int. :param group_id: Provides the role associated with the specified group :type group_id: int. :returns: `list` of :attr:`role_id` or :class:`Role` :raises: :class:`RoleException` """ r = Resource(cls.PATH, endpoint=endpoint) params = {} if 'detail' in kwargs: r.request_details = kwargs['detail'] else: r.request_details = 'basic' if 'account_id' in kwargs: params['account_id'] = kwargs['account_id'] if 'group_id' in kwargs: params['group_id'] = kwargs['group_id'] x = r.get(params=params) if r.last_error is None: if keys_only is True: return [ i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME] ] else: return [ type(cls.__name__, (object, ), i) for i in uncamel_keys(x)[cls.COLLECTION_NAME] ] else: raise RoleException(r.last_error)
def all(cls, keys_only=False, endpoint=None, **kwargs): """Get all api keys .. note:: The keys used to make the request determine results visibility :param keys_only: Only return `access_key` instead of `ApiKey` objects :type keys_only: bool. :param detail: The level of detail to return - `basic` or `extended` :type detail: str. :param account_id: Display all system keys belonging to `account_id` :type account_id: int. :param user_id: Display all keys belonging to `user_id` :type user_id: int. :returns: `list` - of :class:`ApiKey` or :attr:`access_key` """ if 'access_key' in kwargs: r = Resource(cls.PATH + "/" + kwargs['access_key'], endpoint=endpoint) params = {} else: r = Resource(cls.PATH, endpoint=endpoint) if 'detail' in kwargs: r.request_details = kwargs['detail'] else: r.request_details = 'basic' if 'account_id' in kwargs: params = {'accountId': kwargs['account_id']} elif 'user_id' in kwargs: params = {'userId': kwargs['user_id']} else: params = {} x = r.get(params=params) if r.last_error is None: if keys_only is True: return [i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME]] else: return [type(cls.__name__, (object,), i) for i in uncamel_keys(x)[uncamel(cls.COLLECTION_NAME)]] else: raise ApiKeyException(r.last_error)
def all(cls, keys_only=False): """Get all jobs :param keys_only: Only return :attr:`job_id` instead of :class:`Job` :type keys_only: bool. :returns: `list` of :class:`Job` or :attr:`job_id` :raises: :class:`JobException` """ r = Resource(cls.PATH) x = r.get() if r.last_error is None: if keys_only is True: return [i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME]] else: return [type(cls.__name__, (object,), i) for i in uncamel_keys(x)[cls.COLLECTION_NAME]] else: raise JobException(r.last_error)
def all(cls, keys_only=False, endpoint=None): """Get all jobs :param keys_only: Only return :attr:`job_id` instead of :class:`Job` :type keys_only: bool. :returns: `list` of :class:`Job` or :attr:`job_id` :raises: :class:`JobException` """ r = Resource(cls.PATH, endpoint=endpoint) x = r.get() if r.last_error is None: if keys_only is True: return [i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME]] else: return [type(cls.__name__, (object,), i) for i in uncamel_keys(x)[cls.COLLECTION_NAME]] else: raise JobException(r.last_error)
def all(cls, **kwargs): """Return a list of snapshots :param account_id: Restrict to snapshots owned by `account_id` :type account_id: int. :param volume_id: Restrict to snapshots based on `volume_id` :type volume_id: int. :param region_id: Restrict to snapshots in `region_id` :type region_id: int. :param keys_only: Return :attr:`snapshot_id` or :class:`Snapshot` :type keys_only: bool. :param detail: Level of detail to return - `basic` or `extended` :type detail: str. :returns: `list` of :attr:`snapshot_id` or :class:`Snapshot` :raises: :class:`SnapshotException` """ r = Resource(cls.PATH) params = {} if 'detail' in kwargs: r.request_details = kwargs['detail'] else: r.request_details = 'basic' if 'keys_only' in kwargs: keys_only = kwargs['keys_only'] else: keys_only = False if 'region_id' in kwargs: params['regionId'] = kwargs['region_id'] if 'account_id' in kwargs: params['accountId'] = kwargs['account_id'] if 'volume_id' in kwargs: params['volumeId'] = kwargs['volume_id'] x = r.get(params=params) if r.last_error is None: if keys_only is True: return [i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME]] else: return [type(cls.__name__, (object,), i) for i in uncamel_keys(x)[cls.COLLECTION_NAME]] else: raise SnapshotException(r.last_error)
def all(cls, keys_only=False, **kwargs): if 'region_id' in kwargs: r = Resource(cls.PATH + "/" + str(kwargs['region_id'])) else: r = Resource(cls.PATH) if 'details' in kwargs: r.request_details = kwargs['details'] else: r.request_details = 'basic' x = r.get() if r.last_error is None: if keys_only is True: return [i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME]] else: return [type(cls.__name__, (object,), i) for i in uncamel_keys(x)[cls.COLLECTION_NAME]] else: raise SubscriptionException(r.last_error)
def all(cls, keys_only=False, endpoint=None, **kwargs): """Get all accounts >>> Account.all(detail='basic') [{'account_id':12345,....}] >>> Account.all(keys_only=True) [12345] :param keys_only: Only return `account_id` instead of `Account` objects :type keys_only: bool. :param detail: The level of detail to return - `basic` or `extended` :type detail: str. :param cloud_id: Only show accounts tied to the given cloud :type cloud_id: int. :returns: `list` of :class:`Account` or :attr:`account_id` :raises: :class:`AccountException` """ r = Resource(cls.PATH, endpoint=endpoint) params = {} if 'detail' in kwargs: r.request_details = kwargs['detail'] else: r.request_details = 'basic' if 'cloud_id' in kwargs: params = {'cloudId': kwargs['cloud_id']} x = r.get(params=params) if r.last_error is None: if keys_only is True: return [ i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME] ] else: return [ type(cls.__name__, (object, ), i) for i in uncamel_keys(x)[cls.COLLECTION_NAME] ] else: raise AccountException(r.last_error)
def all(cls, endpoint=None, **kwargs): """List all volumes :param account_id: Restrict to volumes owned by `account_id` :type account_id: int. :param datacenter_id: Restrict to volumes based in `datacenter_id` :type datacenter_id: int. :param region_id: Restrict to volumes in `region_id` :type region_id: int. :param keys_only: Return :attr:`snapshot_id` or :class:`Snapshot` :type keys_only: bool. :param detail: Level of detail to return - `basic` or `extended` :type detail: str. :returns: `list` of :attr:`volume_id` or :class:`Volume` :raises: :class:`VolumeException` """ r = Resource(cls.PATH, endpoint=endpoint) params = {} if "detail" in kwargs: r.request_details = kwargs["detail"] else: r.request_details = "basic" if "keys_only" in kwargs: keys_only = kwargs["keys_only"] else: keys_only = False if "datacenter_id" in kwargs: params["dataCenterId"] = kwargs["datacenter_id"] if "region_id" in kwargs: params["regionId"] = kwargs["region_id"] if "account_id" in kwargs: params["accountId"] = kwargs["account_id"] x = r.get(params=params) if r.last_error is None: if keys_only is True: return [i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME]] else: return [type(cls.__name__, (object,), i) for i in uncamel_keys(x)[cls.COLLECTION_NAME]] else: raise VolumeException(r.last_error)
def all(cls, endpoint=None, **kwargs): """Return all regions :param account_id: Limit results to regions with the specified account :type account_id: int. :param jurisdiction: Limit results to the specified jurisdiction :type jurisdiction: str. :param scope: Limit results to `all` (Default - cross-cloud) or `account` (cloud-specific) :type scope: str. :param keys_only: Return :attr:`region_id` instead of :class:`Region` :type keys_only: bool. :param detail: The level of detail to return - `basic` or `extended` :type detail: str. :returns: `list` of :class:`Region` or :attr:`region_id` :raises: :class:`RegionException` """ r = Resource(cls.PATH, endpoint=endpoint) params = {} if 'detail' in kwargs: r.request_details = kwargs['detail'] else: r.request_details = 'basic' if 'keys_only' in kwargs: keys_only = kwargs['keys_only'] else: keys_only = False for x in ['account_id', 'jurisdiction', 'scope']: if x in kwargs: params[camelize(x)] = kwargs[x] x = r.get(params=params) if r.last_error is None: if keys_only is True: return [i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME]] else: return [type(cls.__name__, (object,), i) for i in uncamel_keys(x)[cls.COLLECTION_NAME]] else: raise RegionException(r.last_error)
def all(cls, firewall_id, endpoint=None, **kwargs): """List all rules for `firewall_id` :param firewall_id: The id of the firewall to list rules for :type firewall_id: int. :param detail: Level of detail to return - `basic` or `extended` :type detail: str. :param keys_only: Return only :attr:`firewall_rule_id` in results :type keys_only: bool. :returns: `list` of :attr:`firewall_rule_id` or :class:`FirewallRule` :raises: :class:`FirewallRuleException` """ r = Resource(cls.PATH, endpoint=endpoint) params = {} if 'detail' in kwargs: r.request_details = kwargs['detail'] else: r.request_details = 'basic' if 'keys_only' in kwargs: keys_only = kwargs['keys_only'] else: keys_only = False params['firewallId'] = firewall_id x = r.get(params=params) if r.last_error is None: if keys_only is True: return [ i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME] ] else: return [ type(cls.__name__, (object, ), i) for i in uncamel_keys(x)[cls.COLLECTION_NAME] ] else: raise FirewallRuleException(r.last_error)
def all(cls, endpoint=None, **kwargs): """List all firewalls in `region_id` :param region_id: Limit results to `region_id` :type region_id: int. :param account_id: limit results to `account_id` :type account_id: int. :param detail: Level of detail to return - `basic` or `extended` :type detail: str. :param keys_only: Return only :attr:`firewall_id` in results :type keys_only: bool. :returns: `list` of :attr:`firewall_id` or :class:`Firewall` :raises: :class:`FirewallException` """ r = Resource(cls.PATH, endpoint=None) params = {} if 'detail' in kwargs: r.request_details = kwargs['detail'] else: r.request_details = 'basic' if 'keys_only' in kwargs: keys_only = kwargs['keys_only'] else: keys_only = False if 'region_id' in kwargs: params['regionId'] = kwargs['region_id'] if 'account_id' in kwargs: params['accountId'] = kwargs['account_id'] x = r.get(params=params) if r.last_error is None: if keys_only is True: return [i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME]] else: return [type(cls.__name__, (object,), i) for i in uncamel_keys(x)[cls.COLLECTION_NAME]] else: raise FirewallException(r.last_error)
def all(cls, keys_only=False, endpoint=None, **kwargs): """Return all clouds :param keys_only: Return :attr:`cloud_id` instead of :class:`Cloud` :type keys_only: bool. :param detail: The level of detail to return - `basic` or `extended` :type detail: str. :returns: `list` of :class:`Cloud` or :attr:`cloud_id` """ r = Resource(cls.PATH, endpoint=endpoint) params = {} if 'detail' in kwargs: r.request_details = kwargs['detail'] else: r.request_details = 'basic' if 'public_only' in kwargs: params['publicOnly'] = kwargs['public_only'] if 'status' in kwargs: params['status'] = kwargs['status'] if 'keys_only' in kwargs: keys_only = kwargs['keys_only'] else: keys_only = False x = r.get(params=params) if r.last_error is None: if keys_only is True: return [ i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME] ] else: return [ type(cls.__name__, (object, ), i) for i in uncamel_keys(x)[cls.COLLECTION_NAME] ] else: raise CloudException(r.last_error)
def all(cls, **kwargs): r = Resource(cls.PATH) if 'details' in kwargs: r.request_details = kwargs['details'] else: r.request_details = 'basic' if 'keys_only' in kwargs: keys_only = kwargs['keys_only'] else: keys_only = False x = r.get() if r.last_error is None: if keys_only is True: return [i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME]] else: return [type(cls.__name__, (object,), i) for i in uncamel_keys(x)[uncamel(cls.COLLECTION_NAME)]] else: raise LoadBalancerException(r.last_error)
def all(cls, endpoint=None, **kwargs): r = Resource(cls.PATH, endpoint=endpoint) if 'details' in kwargs: r.request_details = kwargs['details'] else: r.request_details = 'basic' if 'keys_only' in kwargs: keys_only = kwargs['keys_only'] else: keys_only = False x = r.get() if r.last_error is None: if keys_only is True: return [i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME]] else: return [type(cls.__name__, (object,), i) for i in uncamel_keys(x)[uncamel(cls.COLLECTION_NAME)]] else: raise ConfigurationManagementAccountException(r.last_error)
def all(cls, keys_only=False, **kwargs): """Get all groups .. note:: The keys used to make the request determine results visibility :param keys_only: Only return `group_id` instead of `Group` objects :type keys_only: bool. :param detail: The level of detail to return - `basic` or `extended` :type detail: str. :param account_id: Restrict results to `account_id` :type account_id: int. :returns: `list` - List of :class:`Group` or :attr:`group_id` :raises: :class:`GroupException` """ r = Resource(cls.PATH) params = {} if 'detail' in kwargs: r.request_details = kwargs['detail'] else: r.request_details = 'basic' if 'account_id' in kwargs: params = {'accountId': kwargs['account_id']} x = r.get(params=params) if r.last_error is None: if keys_only is True: return [ i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME] ] else: return [ type(cls.__name__, (object, ), i) for i in uncamel_keys(x)[cls.COLLECTION_NAME] ] else: raise GroupException(r.last_error)
def all(cls, keys_only=False, endpoint=None, **kwargs): """Get all customers""" r = Resource(cls.PATH, endpoint=endpoint) params = {} if "detail" in kwargs: r.request_details = kwargs["detail"] else: r.request_details = "basic" if "customer_id" in kwargs: params["customer_id"] = kwargs["customer_id"] x = r.get(params=params) if r.last_error is None: if keys_only is True: return [i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME]] else: return [type(cls.__name__, (object,), i) for i in uncamel_keys(x)[cls.COLLECTION_NAME]] else: raise CustomerException(r.last_error)
def all(cls, keys_only=False, endpoint=None, **kwargs): """Get all roles .. note:: The keys used to make the request determine results visibility :param keys_only: Only return :attr:`role_id` instead of :class:`Group` objects :type keys_only: bool. :param detail: The level of detail to return - `basic` or `extended` :type detail: str. :param account_id: List roles with mappings to groups in the specified account :type account_id: int. :param group_id: Provides the role associated with the specified group :type group_id: int. :returns: `list` of :attr:`role_id` or :class:`Role` :raises: :class:`RoleException` """ r = Resource(cls.PATH, endpoint=endpoint) params = {} if 'detail' in kwargs: r.request_details = kwargs['detail'] else: r.request_details = 'basic' if 'account_id' in kwargs: params['account_id'] = kwargs['account_id'] if 'group_id' in kwargs: params['group_id'] = kwargs['group_id'] x = r.get(params=params) if r.last_error is None: if keys_only is True: return [i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME]] else: return [type(cls.__name__, (object,), i) for i in uncamel_keys(x)[cls.COLLECTION_NAME]] else: raise RoleException(r.last_error)
def all(cls, cmAccountId, **kwargs): r = Resource(cls.PATH) if 'detail' in kwargs: r.request_details = kwargs['detail'] else: r.request_details = 'basic' if 'keys_only' in kwargs: keys_only = kwargs['keys_only'] else: keys_only = False params = {'cmAccountId': cmAccountId} x = r.get(params=params) if r.last_error is None: if keys_only is True: return [i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME]] else: return [type(cls.__name__, (object,), i) for i in uncamel_keys(x)[cls.COLLECTION_NAME]] else: raise PersonalityException(r.last_error)
def all(cls, **kwargs): """Get a list of all known servers >>> Server.all() [{'server_id':1,...},{'server_id':2,...}] :returns: list -- a list of :class:`Server` :raises: ServerException """ r = Resource(cls.PATH) params = {} if 'detail' in kwargs: r.request_details = kwargs['detail'] else: r.request_details = 'basic' if 'keys_only' in kwargs: keys_only = kwargs['keys_only'] else: keys_only = False if 'region_id' in kwargs: params['regionId'] = kwargs['region_id'] x = r.get(params=params) if r.last_error is None: if keys_only is True: return [ i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME] ] else: return [ type(cls.__name__, (object, ), i) for i in uncamel_keys(x)[cls.COLLECTION_NAME] ] else: raise ServerException(r.last_error)
def all(cls, keys_only=False, endpoint=None, **kwargs): """Get all accounts >>> Account.all(detail='basic') [{'account_id':12345,....}] >>> Account.all(keys_only=True) [12345] :param keys_only: Only return `account_id` instead of `Account` objects :type keys_only: bool. :param detail: The level of detail to return - `basic` or `extended` :type detail: str. :param cloud_id: Only show accounts tied to the given cloud :type cloud_id: int. :returns: `list` of :class:`Account` or :attr:`account_id` :raises: :class:`AccountException` """ r = Resource(cls.PATH,endpoint=endpoint) params = {} if 'detail' in kwargs: r.request_details = kwargs['detail'] else: r.request_details = 'basic' if 'cloud_id' in kwargs: params = {'cloudId': kwargs['cloud_id']} x = r.get(params=params) if r.last_error is None: if keys_only is True: return [i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME]] else: return [type(cls.__name__, (object,), i) for i in uncamel_keys(x)[cls.COLLECTION_NAME]] else: raise AccountException(r.last_error)
def all(cls, firewall_id, **kwargs): """List all rules for `firewall_id` :param firewall_id: The id of the firewall to list rules for :type firewall_id: int. :param detail: Level of detail to return - `basic` or `extended` :type detail: str. :param keys_only: Return only :attr:`firewall_rule_id` in results :type keys_only: bool. :returns: `list` of :attr:`firewall_rule_id` or :class:`FirewallRule` :raises: :class:`FirewallRuleException` """ r = Resource(cls.PATH) params = {} if 'detail' in kwargs: r.request_details = kwargs['detail'] else: r.request_details = 'basic' if 'keys_only' in kwargs: keys_only = kwargs['keys_only'] else: keys_only = False params['firewallId'] = firewall_id x = r.get(params=params) if r.last_error is None: if keys_only is True: return [i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME]] else: return [type(cls.__name__, (object,), i) for i in uncamel_keys(x)[cls.COLLECTION_NAME]] else: raise FirewallRuleException(r.last_error)
def load(self): """(Re)load the current object's attributes from an API call""" from mixcoatl.utils import uncamel_keys reserved_words = ['type'] p = self.PATH+"/"+str(getattr(self, self.__class__.PRIMARY_KEY)) #self.request_details = 'extended' s = self.get(p, params=camel_keys(self.params)) if self.last_error is None: scope = uncamel_keys(s[self.__class__.COLLECTION_NAME][0]) for k in scope.keys(): if k in reserved_words: the_key = 'e_'+k else: the_key = k nk = '_%s__%s' % (self.__class__.__name__, the_key) if the_key not in self.__props(): raise AttributeError('Key found without accessor: %s' % k) else: setattr(self, nk, scope[k]) self.loaded = True else: return self.last_error
def all(cls, keys_only=False, endpoint=None, **kwargs): """Get all groups .. note:: The keys used to make the request determine results visibility :param keys_only: Only return `group_id` instead of `Group` objects :type keys_only: bool. :param detail: The level of detail to return - `basic` or `extended` :type detail: str. :param account_id: Restrict results to `account_id` :type account_id: int. :returns: `list` - List of :class:`Group` or :attr:`group_id` :raises: :class:`GroupException` """ r = Resource(cls.PATH, endpoint=endpoint) params = {} if 'detail' in kwargs: r.request_details = kwargs['detail'] else: r.request_details = 'basic' if 'account_id' in kwargs: params = {'accountId': kwargs['account_id']} x = r.get(params=params) if r.last_error is None: if keys_only is True: return [i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME]] else: return [type(cls.__name__, (object,), i) for i in uncamel_keys(x)[cls.COLLECTION_NAME]] else: raise GroupException(r.last_error)
def all(cls, region_id, **kwargs): """Get a list of all known storage objects. >>> StorageObject.all(region_id=100) [{'storage_object_id':1,...},{'storage_object_id':2,...}] :returns: list -- a list of :class:`StorageObject` :raises: StorageObjectException """ r = Resource(cls.PATH) params = {'regionId': region_id} if 'detail' in kwargs: r.request_details = kwargs['detail'] else: r.request_details = 'basic' if 'keys_only' in kwargs: keys_only = kwargs['keys_only'] else: keys_only = False x = r.get(params=params) if r.last_error is None: if keys_only is True: results = [ i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME] ] else: results = [ type(cls.__name__, (object, ), i) for i in uncamel_keys(x)[uncamel(cls.COLLECTION_NAME)] ] return results else: raise StorageObjectException(r.last_error)
def all(cls, keys_only=False, **kwargs): """Return all clouds :param keys_only: Return :attr:`cloud_id` instead of :class:`Cloud` :type keys_only: bool. :param detail: The level of detail to return - `basic` or `extended` :type detail: str. :returns: `list` of :class:`Cloud` or :attr:`cloud_id` """ r = Resource(cls.PATH) params = {} if 'detail' in kwargs: r.request_details = kwargs['detail'] else: r.request_details = 'basic' if 'public_only' in kwargs: params['publicOnly'] = kwargs['public_only'] if 'status' in kwargs: params['status'] = kwargs['status'] if 'keys_only' in kwargs: keys_only = kwargs['keys_only'] else: keys_only = False x = r.get(params=params) if r.last_error is None: if keys_only is True: return [i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME]] else: return [type(cls.__name__, (object,), i) for i in uncamel_keys(x)[cls.COLLECTION_NAME]] else: raise CloudException(r.last_error)
def all(cls, keys_only=False, endpoint=None, **kwargs): """Get all visible billing codes .. note:: The keys used to make the original request determine result visibility :param keys_only: Only return :attr:`billing_code_id` instead of :class:`BillingCode` objects :type keys_only: bool. :param detail: The level of detail to return - `basic` or `extended` :type detail: str. :returns: `list` - of :class:`BillingCode` or :attr:`billing_code_id` :raises: :class:`BillingCodeException` """ r = Resource(cls.PATH, endpoint=endpoint) params = {} if 'details' in kwargs: r.request_details = kwargs['details'] else: r.request_details = 'basic' x = r.get() if r.last_error is None: if keys_only is True: return [ i[camelize(cls.PRIMARY_KEY)] for i in x[cls.COLLECTION_NAME] ] else: return [ type(cls.__name__, (object, ), i) for i in uncamel_keys(x)[uncamel(cls.COLLECTION_NAME)] ] else: raise BillingCodeException(r.last_error)