def _load_profile(self, profile_name):
        if self.environ.get(self.ENV_NAME_FOR_CREDENTIALS_FILE) is not None:
            config_file_name = self.environ.get(
                self.ENV_NAME_FOR_CREDENTIALS_FILE)
            if config_file_name:
                full_path = os.path.expanduser(config_file_name)
                try:
                    config = load_config(full_path)
                except ConfigNotFoundException as e:
                    raise e
                else:
                    if profile_name not in config:
                        raise PartialCredentialsException(
                            provider='profile',
                            cred_var='%s section' % (profile_name))
                    return config[profile_name]
            raise ClientException(msg='Found profile in env, but %s is empty' %
                                  self.ENV_NAME_FOR_CREDENTIALS_FILE)
        # read the default credentials file

        full_path = os.path.expanduser(self.DEFAULT_NAME_FOR_CREDENTIALS_FILE)
        try:
            config = load_config(full_path)
        except ConfigNotFoundException:
            # Move on to the next potential config file name.
            return None
        else:
            if profile_name in config:
                return config[profile_name]
示例#2
0
    def _read_from_file(self):
        profile = {}
        if self.ENV_NAME_FOR_CONFIG_FILE in os.environ:
            config_file_name = os.environ.get(self.ENV_NAME_FOR_CONFIG_FILE)
            if not config_file_name:
                raise ClientException(
                    msg='Found config profile in env, but %s is empty' %
                    self.ENV_NAME_FOR_CONFIG_FILE)
            full_path = os.path.expanduser(config_file_name)
            try:
                config = load_config(full_path)
            except ConfigNotFoundException as e:
                raise e
            else:
                # Alibaba Cloud only support default
                if 'default' not in config:
                    raise PartialCredentialsException(
                        provider='profile', cred_var='default section')
                profile = config['default']
        else:
            full_path = os.path.expanduser(self.DEFAULT_NAME_FOR_CONFIG_FILE)
            try:
                config = load_config(full_path)
            except ConfigNotFoundException:
                pass
            else:
                if 'default' in config:
                    profile = config['default']

        for key in dir(self):
            if profile.get(key) is not None and getattr(self, key) is None:
                setattr(self, key, profile.get(key))
    def __init__(self):
        CachedCredentialsProvider.__init__(self)

        if self.ENV_NAME_FOR_ACCESS_KEY_ID in os.environ:
            access_key_id = os.environ.get(self.ENV_NAME_FOR_ACCESS_KEY_ID)
            if not access_key_id:
                raise PartialCredentialsException(
                    provider='env', cred_var=self.ENV_NAME_FOR_ACCESS_KEY_ID)
            access_key_secret = os.environ.get(
                self.ENV_NAME_FOR_ACCESS_KEY_SECRET)
            if not access_key_secret:
                raise PartialCredentialsException(
                    provider='env',
                    cred_var=self.ENV_NAME_FOR_ACCESS_KEY_SECRET)
            # context.client.logger.info('Found credentials in environment variables.')
            self._cached_credentials = AccessKeyCredentials(
                access_key_id=access_key_id,
                access_key_secret=access_key_secret)
 def _get_value(key):
     if key not in profile:
         raise PartialCredentialsException(provider='profile',
                                           cred_var=key)
     return profile[key]