def send_cmd(self, cmd, **kwargs): """Send command to VPSA Controller.""" self.ensure_connection(cmd) (method, url, body) = self._generate_vpsa_cmd(cmd, **kwargs) LOG.debug('Invoking %(cmd)s using %(method)s request.', { 'cmd': cmd, 'method': method }) if self.conf.zadara_vpsa_use_ssl: connection = (http_client.HTTPSConnection( self.conf.zadara_vpsa_host, self.conf.zadara_vpsa_port)) else: connection = http_client.HTTPConnection(self.conf.zadara_vpsa_host, self.conf.zadara_vpsa_port) connection.request(method, url, body) response = connection.getresponse() if response.status != 200: connection.close() raise exception.BadHTTPResponseStatus(status=response.status) data = response.read() connection.close() xml_tree = etree.fromstring(data) status = xml_tree.findtext('status') if status != '0': raise exception.FailedCmdWithDump(status=status, data=data) if method in ['POST', 'DELETE']: LOG.debug('Operation completed with status code %(status)s', {'status': status}) return xml_tree
def send_cmd(self, cmd, **kwargs): """Send command to VPSA Controller.""" self.ensure_connection(cmd) (method, url, body) = self._generate_vpsa_cmd(cmd, **kwargs) LOG.debug('Sending %(method)s to %(url)s. Body "%(body)s"', { 'method': method, 'url': url, 'body': body }) if self.conf.zadara_vpsa_use_ssl: connection = httplib.HTTPSConnection(self.conf.zadara_vpsa_ip, self.conf.zadara_vpsa_port) else: connection = httplib.HTTPConnection(self.conf.zadara_vpsa_ip, self.conf.zadara_vpsa_port) connection.request(method, url, body) response = connection.getresponse() if response.status != 200: connection.close() raise exception.BadHTTPResponseStatus(status=response.status) data = response.read() connection.close() xml_tree = etree.fromstring(data) status = xml_tree.findtext('status') if status != '0': raise exception.FailedCmdWithDump(status=status, data=data) if method in ['POST', 'DELETE']: LOG.debug('Operation completed. %(data)s', {'data': data}) return xml_tree
def send_cmd(self, cmd, **kwargs): """Send command to VPSA Controller.""" self.ensure_connection(cmd) method, url, params, body, headers = self._generate_vpsa_cmd( cmd, **kwargs) LOG.debug('Invoking %(cmd)s using %(method)s request.', { 'cmd': cmd, 'method': method }) host = self.conf.zadara_vpsa_host port = int(self.conf.zadara_vpsa_port) protocol = "https" if self.conf.zadara_vpsa_use_ssl else "http" if protocol == "https": if not self.conf.zadara_ssl_cert_verify: verify = False else: cert = ((self.conf.driver_ssl_cert_path) or None) verify = cert if cert else True else: verify = False if port: api_url = "%s://%s:%d%s" % (protocol, host, port, url) else: api_url = "%s://%s%s" % (protocol, host, url) try: with requests.Session() as session: session.headers.update(headers) response = session.request(method, api_url, params=params, data=body, headers=headers, verify=verify) except requests.exceptions.RequestException as e: message = (_('Exception: %s') % six.text_type(e)) raise exception.VolumeDriverException(message=message) if response.status_code != 200: raise exception.BadHTTPResponseStatus(status=response.status_code) data = response.content xml_tree = lxml.fromstring(data) status = xml_tree.findtext('status') if status == '5': # Invalid Credentials raise ZadaraInvalidAccessKey() if status != '0': raise exception.FailedCmdWithDump(status=status, data=data) if method in ['POST', 'DELETE']: LOG.debug('Operation completed with status code %(status)s', {'status': status}) return xml_tree
def vpsa_send_cmd(self, cmd, **kwargs): try: response = self.vpsa.send_cmd(cmd, **kwargs) except common.exception.UnknownCmd as e: raise cinder_exception.UnknownCmd(cmd=e.cmd) except common.exception.SessionRequestException as e: raise zadara_exception.ZadaraSessionRequestException(msg=e.msg) except common.exception.BadHTTPResponseStatus as e: raise cinder_exception.BadHTTPResponseStatus(status=e.status) except common.exception.FailedCmdWithDump as e: raise cinder_exception.FailedCmdWithDump(status=e.status, data=e.data) except common.exception.ZadaraInvalidAccessKey: raise zadara_exception.ZadaraCinderInvalidAccessKey() return response