Пример #1
0
 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
Пример #2
0
    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)
Пример #3
0
 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)
Пример #6
0
 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
Пример #7
0
 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
Пример #8
0
 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
Пример #9
0
 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
Пример #10
0
    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)
Пример #11
0
 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)
Пример #12
0
 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)