コード例 #1
0
ファイル: users.py プロジェクト: Tvaske/sponge
def add(request):
    if request.method == 'POST':
        form = UserForm(request.POST)
        if form.is_valid():
            data = form.cleaned_data
            userapi = UserAPI()
            roleapi = RoleAPI()
            try:
                userapi.create(data['login'],
                               password=data['password'],
                               name=data['name'])
                messages.success(request,
                                 "Created user %s (%s)" %
                                 (data['name'], data['login']))
            except ServerRequestError, err:
                messages.error(request,
                               "Failed to create user %s (%s): %s" %
                               (data['name'], data['login'], err[1]))
                return dict(form=form)

            for role in data['roles']:
                try:
                    roleapi.add_user(role, data['login'])
                    messages.success(request,
                                     "Added role %s to user %s" %
                                     (role, data['name']))
                except ServerRequestError, err:
                    messages.error(request,
                                   "Failed to add role %s to user %s: %s" %
                                   (role, data['name'], err[1]))
            
            return HttpResponseRedirect(reverse('sponge.views.users.list'))
コード例 #2
0
ファイル: backend.py プロジェクト: Tvaske/sponge
class PulpAuthentication():
    """ Authenticates against the Pulp server in the Pulp client
    config (/etc/pulp/client.conf) """
    supports_object_permissions = False
    supports_anonymous_user = False
    supports_inactive_user = False
    
    def __init__(self):
        self.server = get_pulp_server()
        self.userapi = UserAPI()
    
    def authenticate(self, username, password=None):
        """ authenticate a user """
        try:
            self.server.set_basic_auth_credentials(username, password)
            logging.info("Successfully logged in with password")
            cert = self.userapi.admin_certificate()
            bundle = SpongeBundle(username)
            bundle.write(cert)
            self.server = get_pulp_server(new=True)
            self.server.set_ssl_credentials(bundle.crtpath())
            udata = self.userapi.user(username)
            logger.info("%s logged in successfully" % username)
        except server.ServerRequestError, err:
            logger.warning("Login failure for %s: %s" % (username, err[1]))
            return None
        except Exception, err:
            logger.warning(traceback.format_exc())
            return None
コード例 #3
0
ファイル: users.py プロジェクト: Tvaske/sponge
def view(request, login=None):
    userapi = UserAPI()
    user = user_utils.get_user(login)
    if request.method == 'POST':
        form = UserForm(request.POST, user=user)
        if form.is_valid():
            success = True
            delta = dict(name=form.cleaned_data['name'])
            if form.cleaned_data['password']:
                delta['password'] = form.cleaned_data['password']
            try:
                userapi.update(login, delta)
                messages.success(request,
                                 "Updated user information for %s" %
                                  user['name'])
            except ServerRequestError, err:
                success = False
                messages.error(request,
                               "Failed to update user information for %s: %s" %
                               (user['name'], err[1]))
            
            roleapi = RoleAPI()
            orig = [r
                    for r in form.cleaned_data['orig_roles'].splitlines()
                    if r]
            new = [r for r in form.cleaned_data['roles'] if r]
            to_remove = [r for r in orig if r not in new]
            for role in to_remove:
                try:
                    roleapi.remove_user(role, login)
                    messages.success(request,
                                     "Removed role %s from user %s" %
                                     (role, user['name']))
                except ServerRequestError, err:
                    success = False
                    messages.error(request,
                                   "Failed to remove role %s from user %s: %s"
                                   % (role, user['name'], err[1]))
            to_add = [r for r in new if r not in orig]
            for role in to_add:
                try:
                    roleapi.add_user(role, login)
                    messages.success(request,
                                     "Added role %s to user %s" %
                                     (role, user['name']))
                except ServerRequestError, err:
                    success = False
                    messages.error(request,
                                   "Failed to add role %s to user %s: %s" %
                                   (role, user['name'], err[1]))
コード例 #4
0
ファイル: users.py プロジェクト: Tvaske/sponge
def delete(request, login=None):
    userapi = UserAPI()
    user = userapi.user(login)
    if request.method == 'POST':
        form = DeleteOkayForm(request.POST)
        if form.is_valid():
            try:
                userapi.delete(login=login)
                messages.success(request,
                                 "Deleted user %s (%s)" %
                                 (user['name'], user['login']))
                return \
                    HttpResponseRedirect(reverse('sponge.views.users.list'))
            except ServerRequestError, err:
                messages.error(request,
                               "Failed to delete user %s (%s): %s"
                               (user['name'], user['login'], err[1]))
コード例 #5
0
ファイル: rebalanceschedule.py プロジェクト: Tvaske/sponge
    def setup_pulp(self):
        """ instantiate pulp server object and log in """
        config = ConsumerConfig()
        userapi = UserAPI()
        serveropts = config.server
        pulpserver = server.PulpServer(serveropts['host'],
                                       int(serveropts['port']),
                                       serveropts['scheme'],
                                       serveropts['path'])
        server.set_active_server(pulpserver)

        bundle = SpongeBundle(SpongeConfig.get("scheduler_username"))
        try:
            server.active_server.set_basic_auth_credentials(SpongeConfig.get("scheduler_username"),
                                                            SpongeConfig.get("scheduler_password"))
            crt = userapi.admin_certificate()
            bundle.write(crt)
        except server.ServerRequestError, err:
            self.stderr.write("Could not authenticate to Pulp: %s\n" % err[1])
            self.stderr.write("Ensure that the scheduler username and password are set properly in Sponge\n")
            raise SystemExit(1)
コード例 #6
0
ファイル: user.py プロジェクト: Tvaske/sponge
def list_users():
    users = getattr(threading.local(), "users", None)
    if users is None:
        users = dict()
        userapi = UserAPI()
        consumerapi = ConsumerAPI()
        for user in userapi.users():
            if user['roles'] == ['consumer-users']:
                # this might be a consumer, but the only way to know
                # for sure is to try to load it as a consumer
                try:
                    consumerapi.consumer(user['login'])
                    # yes, this is a consumer.  ignore it.
                    continue
                except ServerRequestError:
                    pass

            if 'name' not in user or not user['name']:
                user['name'] = user['login']
            elif 'name' in user and isinstance(user['name'], list):
                user['name'] = user['name'][0]
            users[user['login']] = user
        setattr(threading.local(), "users", users)
    return users
コード例 #7
0
ファイル: __init__.py プロジェクト: Tvaske/sponge
def get_pulp_server(user=None, new=False):
    """ set up a pulp client server instance """
    if new or not isinstance(server.active_server, server.Server):
        config = ConsumerConfig()
        pulpserver = server.PulpServer(config.server['host'],
                                       int(config.server['port']),
                                       config.server['scheme'],
                                       config.server['path'])
        server.set_active_server(pulpserver)

    if user:
        bundle = SpongeBundle(user)
        if os.path.exists(bundle.crtpath()):
            server.active_server.set_ssl_credentials(bundle.crtpath())
        else:
            raise IOError("No Pulp certificate found for %s at %s" %
                          (user, bundle.crtpath()))

        # make a quick and easy API call to verify that the session is
        # still active
        userapi = UserAPI()
        userapi.user(user)

    return server.active_server
コード例 #8
0
ファイル: backend.py プロジェクト: Tvaske/sponge
 def __init__(self):
     self.server = get_pulp_server()
     self.userapi = UserAPI()