def api_version(self, cached=True): """Get PowerFlex API version. :param cached: get version from cache or send API response :type cached: bool :rtype: str """ url = '/version' if not self.__api_version or not cached: r, response = self.send_get_request(url) if r.status_code != requests.codes.ok: exc = exceptions.PowerFlexFailQuerying('API version') LOG.error(exc.message) raise exc pattern = re.compile(r'^\d+(\.\d+)*$') if not pattern.match(response): msg = ( 'Failed to query PowerFlex API version. Invalid version ' 'format: {response}.'.format(response=r.text)) LOG.error(msg) raise exceptions.PowerFlexClientException(msg) self.__api_version = response return self.__api_version
def _login(self): request_url = self.base_url + '/login' r = requests.get(request_url, auth=(self.configuration.username, self.configuration.password), verify=self.verify_certificate, timeout=self.configuration.timeout) if r.status_code != requests.codes.ok: exc = exceptions.PowerFlexFailQuerying('token') LOG.error(exc.message) raise exc token = r.json() self.token.set(token)
def _logout(self): token = self.token.get() if token: request_url = self.base_url + '/logout' r = requests.get(request_url, auth=(self.configuration.username, token), verify=self.verify_certificate, timeout=self.configuration.timeout) if r.status_code != requests.codes.ok: exc = exceptions.PowerFlexFailQuerying('token') LOG.error(exc.message) raise exc self.token.set("")
def get(self, entity_id=None, filter_fields=None, fields=None): url = self.base_entity_list_or_create_url url_params = dict(entity=self.entity) if entity_id: url = self.base_entity_url url_params['entity_id'] = entity_id if filter_fields: msg = 'Can not apply filtering while querying entity by id.' raise exceptions.InvalidInput(msg) r, response = self.send_get_request(url, **url_params) if r.status_code != requests.codes.ok: exc = exceptions.PowerFlexFailQuerying(self.entity, entity_id) LOG.error(exc.message) raise exc if filter_fields: response = utils.filter_response(response, filter_fields) if fields: response = utils.query_response_fields(response, fields) return response