コード例 #1
0
def load_plugin_from_args(args):
    """Load required plugin and populate it with options.

    Try to guess auth system if it is not specified. Systems are tried in
    alphabetical order.

    :type args: argparse.Namespace
    :raises: AuthorizationFailure
    """
    auth_system = args.os_auth_system
    if auth_system:
        plugin = load_plugin(auth_system)
        plugin.parse_opts(args)
        plugin.sufficient_options()
        return plugin

    for plugin_auth_system in sorted(six.iterkeys(_discovered_plugins)):
        plugin_class = _discovered_plugins[plugin_auth_system]
        plugin = plugin_class()
        plugin.parse_opts(args)
        try:
            plugin.sufficient_options()
        except exceptions.AuthPluginOptionsMissing:
            continue
        return plugin
    raise exceptions.AuthPluginOptionsMissing(["auth_system"])
コード例 #2
0
    def sufficient_options(self):
        """Check if all required options are present.

        :raises: AuthPluginOptionsMissing
        """
        has_token = self.opts.get('token')
        has_project_domain_or_tenant = (self.opts.get('project_id') or
                                        (self.opts.get('project_name') and
                                         (self.opts.get('user_domain_name')
                                          or self.opts.get('user_domain_id')))
                                        or (self.opts.get('tenant_id')
                                            or self.opts.get('tenant_name')))
        has_credential = (self.opts.get('username')
                          and has_project_domain_or_tenant
                          and self.opts.get('password')
                          and self.opts.get('auth_url'))
        missing = not (has_token or has_credential)
        if missing:
            missing_opts = []
            opts = [
                'token', 'endpoint', 'username', 'password', 'auth_url',
                'tenant_id', 'tenant_name'
            ]
            for opt in opts:
                if not self.opts.get(opt):
                    missing_opts.append(opt)
            raise exceptions.AuthPluginOptionsMissing(missing_opts)
コード例 #3
0
ファイル: auth.py プロジェクト: wputra/MOS-centos
    def sufficient_options(self):
        """Check if all required options are present.

        :raises: AuthPluginOptionsMissing
        """
        missing = [opt for opt in self.opt_names if not self.opts.get(opt)]
        if missing:
            raise exceptions.AuthPluginOptionsMissing(missing)