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]
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]