示例#1
0
 def login_to_instance(self, instance, password, token, org_url):
     instances = filter(lambda i: i['id']==instance, self.instances)
     if len(instances)>0:
         if 'No Attributes' == instances[0]['instanceAttributes']:
             return False
         attributes = json.loads(instances[0]['instanceAttributes'])
         session_uri = attributes['sessionUri']
         org_name = attributes['orgName']
         vcloud_session = VCS(session_uri, self.username, org_name, instance, instances[0]['apiUrl'], org_url, version=self.version, verify=self.verify)
         result = vcloud_session.login(password, token)
         if result:
             self.vcloud_session = vcloud_session
             return True
     return False
示例#2
0
 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 = requests.post(link.get_href(), headers=self._get_vcloud_headers(), verify=self.verify)
         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 = requests.get(vdcLink.href, headers=headers, verify=self.verify)
             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)
                 if vcloud_session.login(password=None, token=vdcLink.authorizationToken):
                     self.vcloud_session = vcloud_session
                     return True
     return False
示例#3
0
    def login(self, password=None, token=None, org=None, org_url=None):
        """
        Request to login to vCloud Air

        :param password: The password.
        :param token: The token from a previous successful login, None if this is a new login request.
        :return: True if the user was successfully logged in, False otherwise.
        """

        if self.service_type == 'subscription':
            if token:
                headers = {}
                headers["x-vchs-authorization"] = token
                headers["Accept"] = "application/xml;version=" + self.version
                self.response = requests.get(self.host + "/api/vchs/services",
                                             headers=headers,
                                             verify=self.verify)
                if self.response.status_code == requests.codes.ok:
                    self.services = serviceType.parseString(
                        self.response.content, True)
                    self.token = token
                    return True
                else:
                    return False
            else:
                url = self.host + "/api/vchs/sessions"
                encode = "Basic " + base64.standard_b64encode(self.username +
                                                              ":" + password)
                headers = {}
                headers["Authorization"] = encode.rstrip()
                headers["Accept"] = "application/xml;version=" + self.version
                self.response = requests.post(url,
                                              headers=headers,
                                              verify=self.verify)
                if self.response.status_code == requests.codes.created:
                    self.token = self.response.headers["x-vchs-authorization"]
                    self.services = self._get_services()
                    return True
                else:
                    return False
        elif self.service_type == 'ondemand':
            if token:
                self.token = token
                self.instances = self.get_instances()
                return self.instances != None
            else:
                url = self.host + "/api/iam/login"
                encode = "Basic " + base64.standard_b64encode(self.username +
                                                              ":" + password)
                headers = {}
                headers["Authorization"] = encode.rstrip()
                headers[
                    "Accept"] = "application/json;version=%s" % self.version
                self.response = requests.post(url,
                                              headers=headers,
                                              verify=self.verify)
                if self.response.status_code == requests.codes.created:
                    self.token = self.response.headers["vchs-authorization"]
                    self.instances = self.get_instances()
                    return True
                else:
                    return False
        elif self.service_type == 'vcd':
            if token:
                url = self.host + '/api/sessions'
                vcloud_session = VCS(url,
                                     self.username,
                                     org,
                                     None,
                                     org_url,
                                     org_url,
                                     version=self.version,
                                     verify=self.verify)
                result = vcloud_session.login(token=token)
                if result:
                    self.org = org
                    self.vcloud_session = vcloud_session
                return result
            else:
                url = self.host + '/api/sessions'
                vcloud_session = VCS(url,
                                     self.username,
                                     org,
                                     None,
                                     org_url,
                                     org_url,
                                     version=self.version,
                                     verify=self.verify)
                result = vcloud_session.login(password=password)
                if result:
                    self.token = vcloud_session.token
                    self.org = org
                    self.vcloud_session = vcloud_session
                return result
        else:
            return False
        return False
示例#4
0
文件: cmd_proc.py 项目: namob/vca-cli
 def load_config(self, profile=None, profile_file='~/.vcarc'):
     self.config.read(os.path.expanduser(profile_file))
     if profile is not None:
         self.profile = profile
     else:
         section = 'Global'
         if self.config.has_option(section, 'profile'):
             self.profile = self.config.get(section, 'profile')
         else:
             self.profile = 'default'
     host = 'vca.vmware.com'
     user = None
     password = None
     token = None
     service_type = None
     version = None
     section = 'Profile-%s' % self.profile
     instance = None
     org = None
     org_url = None
     session_token = None
     session_uri = None
     vdc = None
     gateway = None
     host_score = 'score.vca.io'
     if self.config.has_section(section):
         if self.config.has_option(section, 'host'):
             host = self.config.get(section, 'host')
         if self.config.has_option(section, 'user'):
             user = self.config.get(section, 'user')
         if self.config.has_option(section, 'password'):
             password = self.config.get(section, 'password')
             if len(password) > 0:
                 cipher_suite = Fernet(self.crypto_key)
                 password = cipher_suite.decrypt(password)
         if self.config.has_option(section, 'token'):
             token = self.config.get(section, 'token')
         if self.config.has_option(section, 'service_type'):
             service_type = self.config.get(section, 'service_type')
         if self.config.has_option(section, 'service_version'):
             version = self.config.get(section, 'service_version')
         if self.config.has_option(section, 'instance'):
             instance = self.config.get(section, 'instance')
         if self.config.has_option(section, 'org'):
             org = self.config.get(section, 'org')
         if self.config.has_option(section, 'org_url'):
             org_url = self.config.get(section, 'org_url')
         if self.config.has_option(section, 'session_token'):
             session_token = self.config.get(section, 'session_token')
         if self.config.has_option(section, 'session_uri'):
             session_uri = self.config.get(section, 'session_uri')
         if self.config.has_option(section, 'vdc'):
             vdc = self.config.get(section, 'vdc')
         if self.config.has_option(section, 'gateway'):
             gateway = self.config.get(section, 'gateway')
         if self.config.has_option(section, 'host_score'):
             host_score = self.config.get(section, 'host_score')
     self.host_score = host_score
     self.vca = VCA(host=host,
                    username=user,
                    service_type=service_type,
                    version=version,
                    verify=self.verify,
                    log=self.debug)
     self.password = password
     self.vca.token = token
     self.vca.org = org
     self.instance = instance
     if session_token is not None:
         vcloud_session = VCS(url=session_uri,
                              username=user,
                              org=org,
                              instance=instance,
                              api_url=org_url,
                              org_url=org_url,
                              version=version,
                              verify=self.verify,
                              log=self.debug)
         vcloud_session.token = session_token
         self.vca.vcloud_session = vcloud_session
         self.vdc_name = vdc
         self.gateway = gateway
     Log.debug(self.logger, 'restored vca %s' % self.vca)
     if self.vca.vcloud_session is not None:
         Log.debug(self.logger,
                   'restored vcloud_session %s' % self.vca.vcloud_session)
         Log.debug(self.logger, 'restored org=%s' % self.vca.org)
         if self.vca.vcloud_session.token is not None:
             Log.debug(
                 self.logger, 'restored vcloud_session token %s' %
                 self.vca.vcloud_session.token)