def get_gateway(self, vdc_name, gateway_name): gateway = None vdc = self.get_vdc(vdc_name) if not vdc: return gateway link = filter(lambda link: link.get_rel() == "edgeGateways", vdc.get_Link()) self.response = requests.get( link[0].get_href(), headers=self.vcloud_session.get_vcloud_headers(), verify=self.verify) if self.response.status_code == requests.codes.ok: queryResultRecords = queryRecordViewType.parseString( self.response.content, True) if queryResultRecords.get_Record(): for edgeGatewayRecord in queryResultRecords.get_Record(): if edgeGatewayRecord.get_name() == gateway_name: self.response = requests.get( edgeGatewayRecord.get_href(), headers=self.vcloud_session.get_vcloud_headers(), verify=self.verify) if self.response.status_code == requests.codes.ok: gateway = Gateway(networkType.parseString( self.response.content, True), headers=self.vcloud_session. get_vcloud_headers(), verify=self.verify) break return gateway
def get_isolated_network_href(self, vdc_name, network_name): vdc = self.get_vdc(vdc_name) if vdc is None: LOG.error("Get_isolated_network_href error, cannot get vdc:" "%s info", vdc_name) excep_msg = "Get_isolated_network_href error, cannot find the "\ "vdc:%s" % (vdc_name) raise exceptions.VCloudDriverException(excep_msg) link = filter(lambda link: link.get_rel() == "orgVdcNetworks", vdc.get_Link()) vcloud_headers = self.vcloud_session.get_vcloud_headers() response = self._invoke_api(requests, 'get', link[0].get_href(), headers=vcloud_headers, verify=self.verify) queryResultRecords = queryRecordViewType.parseString(response.content, True) if response.status_code == requests.codes.forbidden: excep_msg = "Get_isolated_network_href error, network_name:%s"\ % (network_name) raise exceptions.ForbiddenException(excep_msg) if response.status_code == requests.codes.ok: for record in queryResultRecords.get_Record(): if record.name == network_name: return record.href elif response.status_code == requests.codes.forbidden: excep_msg = "Get_isolated_network_href forbidden, network_name:%s"\ % (network_name) raise exceptions.ForbiddenException(excep_msg) else: excep_msg = "Get_isolated_network_href failed response:%s"\ % (response) raise exceptions.VCloudDriverException(excep_msg)
def get_extension(self, name): content_type = 'application/vnd.vmware.admin.vmwExtension+xml' link = [ link for link in self.vcloud_session.get_Link() if link.get_type() == content_type ] self.response = Http.get( link[0].get_href() + '/service/query?pageSize=' + '1024', headers=self.vcloud_session.get_vcloud_headers(), verify=self.verify, logger=self.logger) if self.response.status_code == requests.codes.ok: result = queryRecordViewType.parseString( self.response.content.decode('utf-8'), True) for t in result.get_Record(): if name == t.get_name(): # return {'name': t.get_name(), 'href': t.get_href()} self.response = Http.get( t.get_href(), headers=self.vcloud_session.get_vcloud_headers(), verify=self.verify, logger=self.logger) if self.response.status_code == requests.codes.ok: doc = ET.fromstring( self.response.content.decode('utf-8')) return doc # print(self.response.content.decode('utf-8')) # return {'name': t.get_name(), 'href': t.get_href()} return None else: raise Exception(self.response.status_code)
def get_isolated_network_href(self, vdc_name, network_name): vdc = self.get_vdc(vdc_name) if vdc is None: LOG.error("Get_isolated_network_href error, cannot get vdc:" "%s info", vdc_name) excep_msg = "Get_isolated_network_href error, cannot find the "\ "vdc:%s" % (vdc_name) raise exceptions.VCloudDriverException(excep_msg) link = filter(lambda link: link.get_rel() == "orgVdcNetworks", vdc.get_Link()) vcloud_headers = self.vcloud_session.get_vcloud_headers() response = self._invoke_api(requests, 'get', link[0].get_href(), headers=vcloud_headers, verify=self.verify) queryResultRecords = queryRecordViewType.parseString(response.content, True) if response.status_code == requests.codes.forbidden: excep_msg = "Get_isolated_network_href error, network_name:%s"\ % (network_name) raise exceptions.ForbiddenException(excep_msg) if response.status_code == requests.codes.ok: for record in queryResultRecords.get_Record(): if record.name == network_name: return record.href elif response.status_code == requests.codes.forbidden: excep_msg = "Get_isolated_network_href forbidden, network_name:%s"\ % (network_name) raise exceptions.ForbiddenException(excep_msg) else: excep_msg = "Get_isolated_network_href failed response:%s"\ % (response) raise exceptions.VCloudDriverException(excep_msg)
def _synchronize_status_step_by_step(self, url, headers, verify): this_page = {} response = rest_execute(method="get", url=url, headers=headers, verify=verify) if not response or response.status_code != requests.codes.ok: logger.error("synchronize status step by step failed, response = %s" % response) if not self._login(): logger.error("synchronize status step by step failed.") return this_page response = rest_execute(method="get", url=url, headers=headers, verify=verify) if not response or response.status_code != requests.codes.ok: logger.error("synchronize status step by step failed, response = %s" % response) return this_page else: content = queryRecordViewType.parseString(response.content, True) for vapp in content.get_Record(): this_page[vapp.get_name()] = unify_power_state(vapp.get_status()) next_page_link = filter(lambda link: link.rel == 'nextPage', content.Link) if not next_page_link: return this_page next_page_url = next_page_link[0].href next_page = self._synchronize_status_step_by_step(url=next_page_url, headers=headers, verify=verify) return dict(this_page, **next_page)
def get_admin_network_href(self, vdc_name, network_name): vdc = self.get_vdc(vdc_name) link = filter(lambda link: link.get_rel() == "orgVdcNetworks", vdc.get_Link()) self.response = requests.get(link[0].get_href(), headers=self.vcloud_session.get_vcloud_headers(), verify=self.verify) queryResultRecords = queryRecordViewType.parseString(self.response.content, True) if self.response.status_code == requests.codes.ok: for record in queryResultRecords.get_Record(): if record.name == network_name: return record.href
def get_admin_network_href(self, vdc_name, network_name): vdc = self.get_vdc(vdc_name) link = filter(lambda link: link.get_rel() == "orgVdcNetworks", vdc.get_Link()) self.response = requests.get(link[0].get_href(), headers=self.vcloud_session.get_vcloud_headers(), verify=self.verify) queryResultRecords = queryRecordViewType.parseString(self.response.content, True) if self.response.status_code == requests.codes.ok: for record in queryResultRecords.get_Record(): if record.name == network_name: return record.href
def get_gateways(self, vdc_name): gateways = [] vdc = self.get_vdc(vdc_name) if not vdc: return gateways link = filter(lambda link: link.get_rel() == "edgeGateways", vdc.get_Link()) self.response = requests.get(link[0].get_href(), headers=self.vcloud_session.get_vcloud_headers(), verify=self.verify) if self.response.status_code == requests.codes.ok: queryResultRecords = queryRecordViewType.parseString(self.response.content, True) if queryResultRecords.get_Record(): for edgeGatewayRecord in queryResultRecords.get_Record(): self.response = requests.get(edgeGatewayRecord.get_href(), headers=self.vcloud_session.get_vcloud_headers(), verify=self.verify) if self.response.status_code == requests.codes.ok: gateway = Gateway(networkType.parseString(self.response.content, True), headers=self.vcloud_session.get_vcloud_headers(), verify=self.verify) gateways.append(gateway) return gateways
def get_gateway(self, vdc_name, gateway_name): gateway = None vdc = self.get_vdc(vdc_name) if not vdc: return gateway link = filter(lambda link: link.get_rel() == "edgeGateways", vdc.get_Link()) self.response = Http.get(link[0].get_href(), headers=self.vcloud_session.get_vcloud_headers(), verify=self.verify, logger=self.logger) if self.response.status_code == requests.codes.ok: queryResultRecords = queryRecordViewType.parseString(self.response.content, True) if queryResultRecords.get_Record(): for edgeGatewayRecord in queryResultRecords.get_Record(): if edgeGatewayRecord.get_name() == gateway_name: self.response = Http.get(edgeGatewayRecord.get_href(), headers=self.vcloud_session.get_vcloud_headers(), verify=self.verify, logger=self.logger) if self.response.status_code == requests.codes.ok: gateway = Gateway(networkType.parseString(self.response.content, True), headers=self.vcloud_session.get_vcloud_headers(), verify=self.verify, log=self.log) break return gateway
def _synchronize_status_step_by_step(self, url, headers, verify): this_page = {} response = rest_execute(method="get", url=url, headers=headers, verify=verify) if not response or response.status_code != requests.codes.ok: logger.error( "synchronize status step by step failed, response = %s" % response) if not self._login(): logger.error("synchronize status step by step failed.") return this_page response = rest_execute(method="get", url=url, headers=headers, verify=verify) if not response or response.status_code != requests.codes.ok: logger.error( "synchronize status step by step failed, response = %s" % response) return this_page else: content = queryRecordViewType.parseString(response.content, True) for vapp in content.get_Record(): this_page[vapp.get_name()] = unify_power_state( vapp.get_status()) next_page_link = filter(lambda link: link.rel == 'nextPage', content.Link) if not next_page_link: return this_page next_page_url = next_page_link[0].href next_page = self._synchronize_status_step_by_step( url=next_page_url, headers=headers, verify=verify) return dict(this_page, **next_page)
def get_isolated_network_href(self, vdc_name, network_name): vdc = self.get_vdc(vdc_name) link = filter(lambda link: link.get_rel() == "orgVdcNetworks", vdc.get_Link()) response = requests.get( link[0].get_href(), headers=self.vcloud_session.get_vcloud_headers(), verify=self.verify) queryResultRecords = queryRecordViewType.parseString(response.content, True) if response.status_code == requests.codes.forbidden: raise exception.Forbidden("Get_isolated_network_href error, " + "network_name:" + network_name) if response.status_code == requests.codes.ok: for record in queryResultRecords.get_Record(): if record.name == network_name: return record.href elif response.status_code == requests.codes.forbidden: raise exception.Forbidden("Get_isolated_network_href forbidden, " + "network_name:" + network_name) else: raise exception.NovaException("Get_isolated_network_href error, " + " response:" + response)
def get_isolated_network_href(self, vdc_name, network_name): vdc = self.get_vdc(vdc_name) link = filter(lambda link: link.get_rel() == "orgVdcNetworks", vdc.get_Link()) response = requests.get( link[0].get_href(), headers=self.vcloud_session.get_vcloud_headers(), verify=self.verify) queryResultRecords = queryRecordViewType.parseString( response.content, True) if response.status_code == requests.codes.forbidden: raise exception.Forbidden("Get_isolated_network_href error, " + "network_name:" + network_name) if response.status_code == requests.codes.ok: for record in queryResultRecords.get_Record(): if record.name == network_name: return record.href elif response.status_code == requests.codes.forbidden: raise exception.Forbidden("Get_isolated_network_href forbidden, " + "network_name:" + network_name) else: raise exception.NovaException("Get_isolated_network_href error, " + " response:" + response)