コード例 #1
0
ファイル: system.py プロジェクト: misa0813/pyvcloud
 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)
コード例 #2
0
ファイル: vcloudsession.py プロジェクト: misa0813/pyvcloud
 def update_session_data(self, token):
     headers = {}
     headers["x-vcloud-authorization"] = token
     headers["Accept"] = "application/*+xml;version=" + self.version
     self.response = Http.get(self.url,
                              headers=headers,
                              verify=self.verify,
                              logger=self.logger)
     if self.response.status_code == requests.codes.ok:
         self.session = sessionType.parseString(
             self.response.content.decode('utf-8'), True)
         self.org_url = [
             link for link in self.session.Link
             if link.type_ == 'application/vnd.vmware.vcloud.org+xml'
         ][0].href
         self.username = self.session.get_user()
         self.user_id = self.session.get_userId().split(':')[-1]
         self.org = self.session.get_org()
         self.org_id = self.org_url.split('/')[-1]
         self.response = Http.get(self.org_url,
                                  headers=headers,
                                  verify=self.verify,
                                  logger=self.logger)
         if self.response.status_code == requests.codes.ok:
             self.token = token
             self.organization = organizationType.parseString(
                 self.response.content.decode('utf-8'), True)
             return True
         else:
             return False
     else:
         return False
コード例 #3
0
ファイル: vcloudair.py プロジェクト: nmishkin/pyvcloud
 def get_instances(self):
     self.response = Http.get(self.host + "/api/sc/instances", headers=self._get_vcloud_headers(), verify=self.verify, logger=self.logger)
     if self.response.history and self.response.history[-1]:
         self.response = Http.get(self.response.history[-1].headers['location'], headers=self._get_vcloud_headers(), verify=self.verify, logger=self.logger)
     if self.response.status_code == requests.codes.ok:
         return json.loads(self.response.content)['instances']
     else:
         return None
コード例 #4
0
ファイル: vcloudair.py プロジェクト: nmishkin/pyvcloud
 def get_plans(self):
     headers = self._get_vcloud_headers()
     headers['Accept'] = "application/json;version=%s;class=com.vmware.vchs.sc.restapi.model.planlisttype" % self.version
     self.response = Http.get(self.host + "/api/sc/plans", headers=headers, verify=self.verify, logger=self.logger)
     if self.response.history and self.response.history[-1]:
         self.response = Http.get(self.response.history[-1].headers['location'], headers=headers, verify=self.verify, logger=self.logger)
     if self.response.status_code == requests.codes.ok:
         return json.loads(self.response.content)['plans']
     else:
         return None
コード例 #5
0
ファイル: vcloudair.py プロジェクト: nmishkin/pyvcloud
    def create_vapp(self, vdc_name, vapp_name, template_name, catalog_name,
                    network_name=None, network_mode='bridged', vm_name=None,
                    vm_cpus=None, vm_memory=None, deploy='false',
                    poweron='false'):
        self.vdc = self.get_vdc(vdc_name)
        if not self.vcloud_session or not self.vcloud_session.organization or not self.vdc:
            #"Select an organization and datacenter first"
            return False
        if '' == vm_name: vm_name = None
        catalogs = filter(lambda link: catalog_name == link.get_name() and link.get_type() == "application/vnd.vmware.vcloud.catalog+xml",
                                 self.vcloud_session.organization.get_Link())
        if len(catalogs) == 1:
            self.response = Http.get(catalogs[0].get_href(), headers=self.vcloud_session.get_vcloud_headers(), verify=self.verify, logger=self.logger)
            if self.response.status_code == requests.codes.ok:
                catalog = catalogType.parseString(self.response.content, True)
                catalog_items = filter(lambda catalogItemRef: catalogItemRef.get_name() == template_name, catalog.get_CatalogItems().get_CatalogItem())
                if len(catalog_items) == 1:
                    self.response = Http.get(catalog_items[0].get_href(), headers=self.vcloud_session.get_vcloud_headers(), verify=self.verify, logger=self.logger)
                    # use ElementTree instead because none of the types inside resources (not even catalogItemType) is able to parse the response correctly
                    catalogItem = ET.fromstring(self.response.content)
                    entity = [child for child in catalogItem if child.get("type") == "application/vnd.vmware.vcloud.vAppTemplate+xml"][0]
                    vm_href = None
                    if vm_name:
                        self.response = Http.get(entity.get('href'), headers=self.vcloud_session.get_vcloud_headers(), verify=self.verify, logger=self.logger)
                        if self.response.status_code == requests.codes.ok:
                            vAppTemplate = ET.fromstring(self.response.content)
                            for vm in vAppTemplate.iter('{http://www.vmware.com/vcloud/v1.5}Vm'):
                                vm_href = vm.get('href')
                    template_params = self._create_instantiateVAppTemplateParams(
                        vapp_name, entity.get("href"), vm_name=vm_name,
                        vm_href=vm_href, vm_cpus=vm_cpus, vm_memory=vm_memory,
                        deploy=deploy, power=poweron)

                    if network_name:
                        pass
                    output = StringIO()
                    template_params.export(output,
                        0,
                        name_ = 'InstantiateVAppTemplateParams',
                        namespacedef_ = '''xmlns="http://www.vmware.com/vcloud/v1.5" xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1"
                                           xmlns:rasd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData"''',
                                           pretty_print = False)
                    body = '<?xml version="1.0" encoding="UTF-8"?>' + \
                            output.getvalue().replace('class:', 'rasd:')\
                                             .replace(' xmlns:vmw="http://www.vmware.com/vcloud/v1.5"', '')\
                                             .replace('vmw:', 'rasd:')\
                                             .replace('Info>', "ovf:Info>")
                    content_type = "application/vnd.vmware.vcloud.instantiateVAppTemplateParams+xml"
                    link = filter(lambda link: link.get_type() == content_type, self.vdc.get_Link())
                    self.response = Http.post(link[0].get_href(), headers=self.vcloud_session.get_vcloud_headers(), verify=self.verify, data=body, logger=self.logger)
                    if self.response.status_code == requests.codes.created:
                        vApp = vAppType.parseString(self.response.content, True)
                        task = vApp.get_Tasks().get_Task()[0]
                        return task
        return False
コード例 #6
0
ファイル: vcloudair.py プロジェクト: nmishkin/pyvcloud
 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 = 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():
                 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)
                     gateways.append(gateway)
     return gateways
コード例 #7
0
ファイル: vcloudair.py プロジェクト: nmishkin/pyvcloud
 def get_media(self, catalog_name, media_name):
     refs = filter(lambda ref: ref.name == catalog_name and ref.type_ == 'application/vnd.vmware.vcloud.catalog+xml', self.vcloud_session.organization.Link)
     if len(refs) == 1:
         self.response = Http.get(refs[0].get_href(), headers=self.vcloud_session.get_vcloud_headers(), verify=self.verify, logger=self.logger)
         if self.response.status_code == requests.codes.ok:
             catalog = catalogType.parseString(self.response.content, True)
             catalog_items = filter(lambda catalogItemRef: catalogItemRef.get_name() == media_name, catalog.get_CatalogItems().get_CatalogItem())
             if len(catalog_items) == 1:
                 self.response = Http.get(catalog_items[0].get_href(), headers=self.vcloud_session.get_vcloud_headers(), verify=self.verify, logger=self.logger)
                 # print self.response.content
                 if self.response.status_code == requests.codes.ok:
                     doc = self.parsexml_(self.response.content)
                     for element in doc._children:
                         if element.tag == '{http://www.vmware.com/vcloud/v1.5}Entity':
                             return element.attrib
コード例 #8
0
ファイル: vcloudair.py プロジェクト: nmishkin/pyvcloud
 def delete_catalog(self, catalog_name):
     admin_url = None
     if not self.vcloud_session or not self.vcloud_session.organization: return False
     if 'ondemand' == self.service_type:
         refs = filter(lambda ref: ref.type_ == 'application/vnd.vmware.admin.organization+xml',
                              self.vcloud_session.organization.Link)
         if len(refs) == 1:
             admin_url = refs[0].href
     else:
         refs = filter(lambda ref: ref.type_ == 'application/vnd.vmware.admin.catalog+xml',
                              self.vcloud_session.organization.Link)
         if len(refs) == 1:
             admin_url = refs[0].href[:refs[0].href.rindex('/')]
     if admin_url:
         self.response = Http.get(admin_url, headers=self.vcloud_session.get_vcloud_headers(), verify=self.verify, logger=self.logger)
         if self.response.status_code == requests.codes.ok:
             adminOrg = vCloudEntities.parseString(self.response.content, True)
             if adminOrg and adminOrg.Catalogs and adminOrg.Catalogs.CatalogReference:
                 catRefs = filter(lambda ref: ref.name == catalog_name and ref.type_ == 'application/vnd.vmware.admin.catalog+xml',
                                         adminOrg.Catalogs.CatalogReference)
                 if len(catRefs) == 1:
                     self.response = Http.delete(catRefs[0].href, headers=self.vcloud_session.get_vcloud_headers(), verify=self.verify, logger=self.logger)
                     if self.response.status_code == requests.codes.no_content:
                         return True
     return False
コード例 #9
0
ファイル: vcloudair.py プロジェクト: nmishkin/pyvcloud
 def block_until_completed(self, task):
     progress = task.get_Progress()
     status = task.get_status()
     rnd = 0
     while status != "success":
         if status == "error":
             error = task.get_Error()
             Log.error(self.logger, "task error, major=%s, minor=%s, message=%s" % (error.get_majorErrorCode(), error.get_minorErrorCode(), error.get_message()))
             return False
         else:
             # some task doesn't not report progress
             if progress:
                 pass
             else:
                 rnd += 1
             time.sleep(1)
             self.response = Http.get(task.get_href(), headers=self.vcloud_session.get_vcloud_headers(), verify=self.verify, logger=self.logger)
             if self.response.status_code == requests.codes.ok:
                 task = taskType.parseString(self.response.content, True)
                 progress = task.get_Progress()
                 status = task.get_status()
             else:
                 Log.error(self.logger, "can't get task")
                 return False
     return True
コード例 #10
0
ファイル: vcloudair.py プロジェクト: nmishkin/pyvcloud
 def get_vdc_references(self, serviceId):
     serviceReferences = filter(lambda serviceReference: serviceReference.get_serviceId() == serviceId, self.services.get_Service())
     if len(serviceReferences) == 0:
         return []
     self.response = Http.get(serviceReferences[0].get_href(), headers=self._get_vcloud_headers(), verify=self.verify, logger=self.logger)
     vdcs = vchsType.parseString(self.response.content, True)
     return vdcs.get_VdcRef()
コード例 #11
0
ファイル: vcloudair.py プロジェクト: nmishkin/pyvcloud
 def _get_services(self):
     headers = {}
     headers["x-vchs-authorization"] = self.token
     headers["Accept"] = "application/xml;version=" + self.version
     response = Http.get(self.host + "/api/vchs/services", headers=headers, verify=self.verify, logger=self.logger)
     if response.status_code == requests.codes.ok:
         return serviceType.parseString(response.content, True)
コード例 #12
0
ファイル: vcloudair.py プロジェクト: nmishkin/pyvcloud
 def get_vapp(self, vdc, vapp_name):
     refs = filter(lambda ref: ref.name == vapp_name and ref.type_ == 'application/vnd.vmware.vcloud.vApp+xml', vdc.ResourceEntities.ResourceEntity)
     if len(refs) == 1:
         self.response = Http.get(refs[0].href, headers=self.vcloud_session.get_vcloud_headers(), verify=self.verify, logger=self.logger)
         if self.response.status_code == requests.codes.ok:
             vapp = VAPP(vAppType.parseString(self.response.content, True), self.vcloud_session.get_vcloud_headers(), self.verify, self.log)
             return vapp
コード例 #13
0
 def ping(self):
     self.response = Http.get(
         self.api_url,
         headers=self.vcloud_session.get_vcloud_headers(),
         verify=self.verify,
         logger=self.logger)
     return self.response.status_code
コード例 #14
0
def delete_network_action(vca=None, network_uuid=None):
    """
    Method leverages vCloud director and query network based on network uuid

    Args:
        vca - is active VCA connection.
        network_uuid - is a network uuid

        Returns:
            The return XML respond
    """

    if vca is None or network_uuid is None:
        return None

    url_list = [vca.host, '/api/admin/network/', network_uuid]
    vm_list_rest_call = ''.join(url_list)

    if not (not vca.vcloud_session or not vca.vcloud_session.organization):
        response = Http.get(url=vm_list_rest_call,
                            headers=vca.vcloud_session.get_vcloud_headers(),
                            verify=vca.verify,
                            logger=vca.logger)
        if response.status_code == requests.codes.ok:
            print response.content
            return response.content

    return None
コード例 #15
0
ファイル: score.py プロジェクト: digideskio/pyvcloud
 def get_status(self):
     self.response = Http.get(self.url + '/status',
                              headers=self.get_headers(),
                              verify=self.verify, logger=self.logger)
     Log.debug(self.logger, self.response.status_code)
     Log.debug(self.logger, self.response.content)
     return self.response.content
コード例 #16
0
ファイル: score.py プロジェクト: lasko/pyvcloud
 def list(self, deployment_id):
     params = {'deployment_id': deployment_id}
     self.score.response = Http.get(self.score.url + '/executions', headers=self.score.get_headers(), params=params,  verify=self.score.verify, logger=self.logger)
     if self.score.response.status_code == requests.codes.ok:
         return json.loads(self.score.response.content)
     else:
         Log.error(self.logger, 'list executions returned %s' % self.score.response.status_code)
コード例 #17
0
ファイル: vcloudair.py プロジェクト: nmishkin/pyvcloud
 def get_disks(self, vdc_name):
     vdc = self.get_vdc(vdc_name)
     links = self.get_diskRefs(vdc)
     disks = []
     for link in links:
         response = Http.get(link.get_href(), headers = self.vcloud_session.get_vcloud_headers(), verify=self.verify, logger=self.logger)
         disk = self._parse_disk(response.content)
         vms = []
         content_type = "application/vnd.vmware.vcloud.vms+xml"
         response = Http.get(link.get_href()+'/attachedVms', headers=self.vcloud_session.get_vcloud_headers(), verify=self.verify, logger=self.logger)
         # print response.content
         listofvms = vmsType.parseString(response.content, True)
         for vmReference in listofvms.get_VmReference():
             vms.append(vmReference)
         disks.append([disk, vms])
     return disks
コード例 #18
0
ファイル: vcloudair.py プロジェクト: nmishkin/pyvcloud
 def get_vdc(self, vdc_name):
     if self.vcloud_session and self.vcloud_session.organization:
         refs = filter(lambda ref: ref.name == vdc_name and ref.type_ == 'application/vnd.vmware.vcloud.vdc+xml', self.vcloud_session.organization.Link)
         if len(refs) == 1:
             self.response = Http.get(refs[0].href, headers=self.vcloud_session.get_vcloud_headers(), verify=self.verify, logger=self.logger)
             if self.response.status_code == requests.codes.ok:
                 # print self.response.content
                 return vdcType.parseString(self.response.content, True)
コード例 #19
0
 def get_status(self):
     self.response = Http.get(self.url + '/status',
                              headers=self.get_headers(),
                              verify=self.verify,
                              logger=self.logger)
     Log.debug(self.logger, self.response.status_code)
     Log.debug(self.logger, self.response.content)
     return self.response.content
コード例 #20
0
 def list(self):
     self.score.response = Http.get(self.score.url + '/blueprints',
                                    headers=self.score.get_headers(),
                                    verify=self.score.verify,
                                    logger=self.logger)
     if self.score.response.status_code != requests.codes.ok:
         raise exceptions.from_response(self.score.response)
     return json.loads(self.score.response.content)
コード例 #21
0
ファイル: vcloud_client.py プロジェクト: lionelz/hybridcloud
 def _get(self, href):
     response = Http.get(
         href,
         headers=self._session.vca.vcloud_session.get_vcloud_headers(),
         verify=CONF.vcloud.verify)
     if response.status_code == requests.codes.ok:
         return response
     return None
コード例 #22
0
ファイル: score.py プロジェクト: digideskio/pyvcloud
 def list(self):
     self.score.response = Http.get(self.score.url + '/blueprints',
                                    headers=self.score.get_headers(),
                                    verify=self.score.verify,
                                    logger=self.logger)
     if self.score.response.status_code != requests.codes.ok:
         raise exceptions.from_response(self.score.response)
     return json.loads(self.score.response.content)
コード例 #23
0
ファイル: vcloudair.py プロジェクト: nmishkin/pyvcloud
 def get_catalogs(self):
     links = filter(lambda link: link.get_type() == "application/vnd.vmware.vcloud.catalog+xml", self.vcloud_session.organization.Link)
     catalogs = []
     for link in links:
         self.response = Http.get(link.get_href(), headers=self.vcloud_session.get_vcloud_headers(), verify=self.verify, logger=self.logger)
         if self.response.status_code == requests.codes.ok:
             catalogs.append(catalogType.parseString(self.response.content, True))
     return catalogs
コード例 #24
0
 def display_progress(self, task, cmd_proc=None, headers=None):
     progress = task.get_Progress()
     status = task.get_status()
     rnd = 0
     response = None
     while status != "success":
         if status == "error":
             error = task.get_Error()
             sys.stdout.write('\r' + ' ' * 120 + '\r')
             sys.stdout.flush()
             self.print_error(CommonUtils.convertPythonObjToStr(
                              error, name="Error"),
                              cmd_proc=cmd_proc)
             return None
         else:
             # some task doesn't not report progress
             if progress:
                 sys.stdout.write("\rprogress : [" + "*" *
                                  int(progress) + " " *
                                  (100 - int(progress - 1)) + "] " +
                                  str(progress) + " %")
             else:
                 sys.stdout.write("\rprogress : ")
                 if rnd % 4 == 0:
                     sys.stdout.write(
                         "[" + "*" * 25 + " " * 75 + "]")
                 elif rnd % 4 == 1:
                     sys.stdout.write(
                         "[" + " " * 25 + "*" * 25 + " " * 50 + "]")
                 elif rnd % 4 == 2:
                     sys.stdout.write(
                         "[" + " " * 50 + "*" * 25 + " " * 25 + "]")
                 elif rnd % 4 == 3:
                     sys.stdout.write(
                         "[" + " " * 75 + "*" * 25 + "]")
                 rnd += 1
             sys.stdout.flush()
             time.sleep(1)
             response = Http.get(task.get_href(), headers=headers,
                                 verify=cmd_proc.verify,
                                 logger=cmd_proc.logger)
             if response.status_code == requests.codes.ok:
                 task = parseString(response.content, True)
                 progress = task.get_Progress()
                 status = task.get_status()
             else:
                 Log.error(cmd_proc.logger, "can't get task")
                 return
     sys.stdout.write("\r" + " " * 120)
     sys.stdout.flush()
     if response is not None:
         if cmd_proc is not None and cmd_proc.json_output:
             sys.stdout.write("\r" +
                              self.task_to_json(response.content) + '\n')
         else:
             sys.stdout.write("\r" +
                              self.task_to_table(response.content) + '\n')
         sys.stdout.flush()
コード例 #25
0
ファイル: gateway.py プロジェクト: h-medjahed/pyvcloud
 def get_syslog_conf(self):
     headers = self.headers
     headers['Accept']='application/*+xml;version=5.11'
     self.response = Http.get(self.me.href, data='', headers=headers, verify=self.verify, logger=self.logger)
     if self.response.status_code == requests.codes.ok:
         doc = ET.fromstring(self.response.content)
         for element in doc.iter('{http://www.vmware.com/vcloud/v1.5}SyslogServerIp'):
             return element.text
     return ''
コード例 #26
0
 def get(self, deployment_id):
     self.score.response = Http.get(self.score.url +
                                    '/deployments/%s' % deployment_id,
                                    headers=self.score.get_headers(),
                                    verify=self.score.verify,
                                    logger=self.logger)
     if self.score.response.status_code != requests.codes.ok:
         raise exceptions.from_response(self.score.response)
     return json.loads(self.score.response.content)
コード例 #27
0
ファイル: score.py プロジェクト: digideskio/pyvcloud
 def get(self, deployment_id):
     self.score.response = Http.get(self.score.url +
                                    '/deployments/%s' % deployment_id,
                                    headers=self.score.get_headers(),
                                    verify=self.score.verify,
                                    logger=self.logger)
     if self.score.response.status_code != requests.codes.ok:
         raise exceptions.from_response(self.score.response)
     return json.loads(self.score.response.content)
コード例 #28
0
 def get_clusters(self):
     headers = self.vcloud_session.get_vcloud_headers()
     self.response = Http.get(self.api_url,
                              headers=headers,
                              verify=self.verify,
                              logger=self.logger)
     if self.response.status_code == requests.codes.ok:
         return json.loads(self.response.content)
     else:
         raise Exception(self.response.status_code)
コード例 #29
0
ファイル: vcloudair.py プロジェクト: nmishkin/pyvcloud
 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 = Http.get(link[0].get_href(), headers=self.vcloud_session.get_vcloud_headers(), verify=self.verify, logger=self.logger)
     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
コード例 #30
0
ファイル: sqlair.py プロジェクト: maikelwever/pyvcloud
 def get_instance(self, instance_id, service_code='mssql'):
     self.response = Http.get(self.host + '/appsrv/%s/v1/instances/%s' %
                              (service_code, instance_id),
                              headers=self.get_headers(),
                              verify=self.verify,
                              logger=self.logger)
     if self.response.status_code == requests.codes.ok:
         return json.loads(self.response.content)
     else:
         raise Exception(self.response.status_code)
コード例 #31
0
 def get_extensions(self):
     content_type = 'application/vnd.vmware.admin.vmwExtension+xml'
     link = filter(lambda link: link.get_type() == content_type, self.vcloud_session.get_Link())
     self.response = Http.get(link[0].get_href() + '/service/query', 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)
         return doc
     else:
         raise Exception(self.response.status_code)
コード例 #32
0
ファイル: vcloudair.py プロジェクト: nmishkin/pyvcloud
 def get_networks(self, vdc_name):
     result = []
     vdc = self.get_vdc(vdc_name)
     if not vdc: return result
     networks = vdc.get_AvailableNetworks().get_Network()
     for n in networks:
         self.response = Http.get(n.get_href(), headers=self.vcloud_session.get_vcloud_headers(), verify=self.verify, logger=self.logger)
         if self.response.status_code == requests.codes.ok:
             network = networkType.parseString(self.response.content, True)
             result.append(network)
     return result
コード例 #33
0
 def list(self, deployment_id):
     params = {'deployment_id': deployment_id}
     self.score.response = Http.get(self.score.url + '/executions',
                                    headers=self.score.get_headers(),
                                    params=params,
                                    verify=self.score.verify,
                                    logger=self.logger)
     if self.score.response.status_code != requests.codes.ok:
         Log.error(
             self.logger, 'list executions returned %s' %
             self.score.response.status_code)
         raise exceptions.from_response(self.score.response)
     return json.loads(self.score.response.content)
コード例 #34
0
 def get_orgs(self):
     content_type = 'application/vnd.vmware.vcloud.orgList+xml'
     link = filter(lambda link: link.get_type() == content_type, self.vcloud_session.get_Link())
     orgs = []
     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:
         organizations = organizationListType.parseString(self.response.content, True)
         for org in organizations.get_Org():
             orgs.append({'name': org.get_name(), 'href': org.get_href()})
         return orgs
     else:
         raise Exception(self.response.status_code)
コード例 #35
0
 def get_task(self, task_id):
     if self.vcloud_session:
         o = urlparse(self.vcloud_session.url)
         link = '%s://%s%s/%s' % (o.scheme, o.netloc, '/api/task', task_id)
         self.response = Http.get(
             link,
             headers=self.vcloud_session.get_vcloud_headers(),
             verify=self.verify,
             logger=self.logger)
         if self.response.status_code == requests.codes.ok:
             return taskType.parseString(self.response.content, True)
         else:
             raise Exception(self.response.status_code)
     return None
コード例 #36
0
    def download(self, blueprint_id, output_file=None):
        self.score.response = Http.get(self.score.url +
                                       '/blueprints/%s/archive' % blueprint_id,
                                       headers=self.score.get_headers(),
                                       verify=self.score.verify,
                                       logger=self.logger)

        if self.score.response.status_code != requests.codes.ok:
            raise exceptions.from_response(self.score.response)

        with contextlib.closing(self.score.response) as streamed_response:
            output_file = self._write_response_stream_to_file(
                streamed_response, output_file)
            return output_file
コード例 #37
0
ファイル: gateway.py プロジェクト: maikelwever/pyvcloud
 def get_syslog_conf(self):
     headers = self.headers
     headers['Accept'] = 'application/*+xml;version=5.11'
     self.response = Http.get(self.me.href,
                              data='',
                              headers=headers,
                              verify=self.verify,
                              logger=self.logger)
     if self.response.status_code == requests.codes.ok:
         doc = ET.fromstring(self.response.content)
         for element in doc.iter(
                 '{http://www.vmware.com/vcloud/v1.5}SyslogServerIp'):
             return element.text
     return ''
コード例 #38
0
ファイル: score.py プロジェクト: xcompass/pyvcloud
    def download(self, blueprint_id, output_file=None):
        self.score.response = Http.get(
            self.score.url +
            '/blueprints/%s/archive' % blueprint_id,
            headers=self.score.get_headers(),
            verify=self.score.verify,
            logger=self.logger)

        if self.score.response.status_code != requests.codes.ok:
            raise exceptions.from_response(self.score.response)

        with contextlib.closing(self.score.response) as streamed_response:
            output_file = self._write_response_stream_to_file(
                streamed_response, output_file)
            return output_file
コード例 #39
0
ファイル: score.py プロジェクト: digideskio/pyvcloud
 def get(self, execution_id, from_event=0, batch_size=100,
         include_logs=False):
     data = {
         "execution_id": execution_id,
         "from": from_event,
         "size": batch_size,
         "include_logs": include_logs
     }
     headers = self.score.get_headers()
     headers['Content-type'] = 'application/json'
     self.score.response = Http.get(self.score.url + '/events',
                                    headers=headers, data=json.dumps(data),
                                    verify=self.score.verify,
                                    logger=self.logger)
     if self.score.response.status_code != requests.codes.ok:
         raise exceptions.from_response(self.score.response)
     return json.loads(self.score.response.content)
コード例 #40
0
 def get_tasks(self, status=statuses[0]):
     if self.vcloud_session and self.vcloud_session.organization:
         refs = filter(
             lambda ref: ref.type_ ==
             'application/vnd.vmware.vcloud.tasksList+xml',
             self.vcloud_session.organization.Link)
         if len(refs) == 1:
             self.response = Http.get(
                 refs[0].href,
                 headers=self.vcloud_session.get_vcloud_headers(),
                 verify=self.verify,
                 logger=self.logger)
             if self.response.status_code == requests.codes.ok:
                 return tasksListType.parseString(self.response.content,
                                                  True)
             else:
                 raise Exception(self.response.status_code)
     return None
コード例 #41
0
ファイル: score.py プロジェクト: nmishkin/pyvcloud
 def get(self, execution_id, from_event=0, batch_size=100, include_logs=False):
     assert execution_id
     data = {
         "from": from_event,
         "size": batch_size,
         "sort": [{"@timestamp": {"order": "asc"}}],
         "query": self._create_events_query(execution_id, include_logs)
     }
     headers = self.score.get_headers()
     headers['Content-type'] = 'application/json'
     self.score.response = Http.get(self.score.url + '/events', 
                                    headers=headers, data=data,  verify=self.score.verify, logger=self.logger)
     if self.score.response.status_code == requests.codes.ok:
         # print self.score.response.content
         json_events = json.loads(self.score.response.content)
         return json_events
     else:
         return []
コード例 #42
0
 def get(self,
         execution_id,
         from_event=0,
         batch_size=100,
         include_logs=False):
     data = {
         "execution_id": execution_id,
         "from": from_event,
         "size": batch_size,
         "include_logs": include_logs
     }
     headers = self.score.get_headers()
     headers['Content-type'] = 'application/json'
     self.score.response = Http.get(self.score.url + '/events',
                                    headers=headers,
                                    data=json.dumps(data),
                                    verify=self.score.verify,
                                    logger=self.logger)
     if self.score.response.status_code != requests.codes.ok:
         raise exceptions.from_response(self.score.response)
     return json.loads(self.score.response.content)
コード例 #43
0
ファイル: vcloudair.py プロジェクト: nmishkin/pyvcloud
 def login_to_org(self, service, org_name):
     vdcReference = self.get_vdc_reference(service, org_name)
     if vdcReference:
         link = filter(lambda link: link.get_type() == "application/xml;class=vnd.vmware.vchs.vcloudsession", vdcReference.get_Link())[0]
         self.response = Http.post(link.get_href(), headers=self._get_vcloud_headers(), verify=self.verify, logger=self.logger)
         if self.response.status_code == requests.codes.created:
             vchs = vchsType.parseString(self.response.content, True)
             vdcLink = vchs.get_VdcLink()
             headers = {}
             headers[vdcLink.authorizationHeader] = vdcLink.authorizationToken
             headers["Accept"] = "application/*+xml;version=" + self.version
             self.response = Http.get(vdcLink.href, headers=headers, verify=self.verify, logger=self.logger)
             if self.response.status_code == requests.codes.ok:
                 self.vdc = vdcType.parseString(self.response.content, True)
                 self.org = self.vdc.name
                 org_url = filter(lambda link: link.get_type() == "application/vnd.vmware.vcloud.org+xml", self.vdc.get_Link())[0].href
                 vcloud_session = VCS(org_url, self.username, self.org, None, org_url, org_url, version=self.version, verify=self.verify, log=self.log)
                 if vcloud_session.login(password=None, token=vdcLink.authorizationToken):
                     self.vcloud_session = vcloud_session
                     return True
     return False
コード例 #44
0
ファイル: vcloudsession.py プロジェクト: maikelwever/pyvcloud
 def login(self, password=None, token=None):
     if token:
         headers = {}
         headers["x-vcloud-authorization"] = token
         headers["Accept"] = "application/*+xml;version=" + self.version
         self.response = Http.get(self.org_url, headers=headers, verify=self.verify, logger=self.logger)
         if self.response.status_code == requests.codes.ok:
             self.token = token
             self.organization = organizationType.parseString(self.response.content, True)
             return True
         else:
             return False
     else:
         headers = {}
         headers["Accept"] = "application/*+xml;version=" + self.version
         self.response = Http.post(self.url, headers=headers, auth=(self.username + "@" + self.org, password), verify=self.verify, logger=self.logger)
         if self.response.status_code == requests.codes.ok:
             self.token = self.response.headers["x-vcloud-authorization"]
             self.session = sessionType.parseString(self.response.content, True)
             self.org_url = filter(lambda link: link.type_ == 'application/vnd.vmware.vcloud.org+xml', self.session.Link)[0].href
             return True
         else:
             return False
コード例 #45
0
ファイル: score.py プロジェクト: nmishkin/pyvcloud
 def get(self, blueprint_id):
     self.score.response = Http.get(self.score.url + '/blueprints/{0}'.format(blueprint_id), headers=self.score.get_headers(), verify=self.score.verify, logger=self.logger)
     if self.score.response.status_code == requests.codes.ok:
         return json.loads(self.score.response.content)
コード例 #46
0
ファイル: sqlair.py プロジェクト: maikelwever/pyvcloud
 def ping(self):
     self.response = Http.get(self.host + '/appsrv/api/v1/services/mssql/',
                              headers=self.get_headers(),
                              verify=self.verify,
                              logger=self.logger)
     return self.response.status_code
コード例 #47
0
ファイル: score.py プロジェクト: nmishkin/pyvcloud
 def ping(self):
     self.response = Http.get(self.url + '/blueprints', headers=self.get_headers(), verify=self.verify, logger=self.logger)
     return self.response.status_code
コード例 #48
0
ファイル: score.py プロジェクト: nmishkin/pyvcloud
 def list(self):
     self.score.response = Http.get(self.score.url + '/deployments', headers=self.score.get_headers(), verify=self.score.verify, logger=self.logger)
     if self.score.response.status_code == requests.codes.ok:
         return json.loads(self.score.response.content)