Commit 7c3bc740 authored by Antoine Millet's avatar Antoine Millet
Browse files

Added rights checking on the cli handler methods.

parent 4a453d67
Loading
Loading
Loading
Loading
+28 −8
Original line number Diff line number Diff line
@@ -130,6 +130,7 @@ class CliHandler(OnlineCCHandler):
        List all objects registered on this instance.
        '''

        self._check(conn, 'list', query)
        logging.debug('Executed list function with query %s' % query)
        return self._server.list(query)

@@ -148,22 +149,27 @@ class CliHandler(OnlineCCHandler):

    @listed
    def start(self, conn, query):
        self._check(conn, 'start', query)
        self._vm_action(query, 'vm_start')

    @listed
    def stop(self, conn, query, force=False):
        self._check(conn, 'stop', query)
        self._vm_action(query, 'vm_stop', force)

    @listed
    def destroy(self, conn, query):
        self._check(conn, 'destroy', query)
        self.stop(query, force=True)

    @listed
    def pause(self, conn, query):
        self._check(conn, 'pause', query)
        self._vm_action(query, 'vm_suspend')

    @listed
    def resume(self, conn, query):
        self._check(conn, 'resume', query)
        self._vm_action(query, 'vm_resume')

    @listed
@@ -172,6 +178,7 @@ class CliHandler(OnlineCCHandler):
        Define a new password for specified user.
        '''

        self._check(conn, 'passwd', query)
        objects = self._server.list(query, show=set(('a',)))
        errs = Reporter()
        with self._server.conf:
@@ -197,6 +204,8 @@ class CliHandler(OnlineCCHandler):
        Add a tag to the account which match the specified query.
        '''

        self._check(conn, 'addtag', query)

        if tag_name in self._server.RESERVED_TAGS:
            raise ReservedTagError('Tag %r is read-only' % tag_name)

@@ -223,6 +232,8 @@ class CliHandler(OnlineCCHandler):
        Remove a tag of the account with specified login.
        '''

        self._check(conn, 'deltag', query)

        if tag_name in self._server.RESERVED_TAGS:
            raise ReservedTagError('Tag %r is read-only' % tag_name)

@@ -247,6 +258,8 @@ class CliHandler(OnlineCCHandler):
        '''
        Return all static tags attached to the specified login.
        '''

        self._check(conn, 'tags', query)
        objects = self._server.list(query, show=set(('a',)))
        for obj in objects:
            if 'a' not in obj:
@@ -264,6 +277,7 @@ class CliHandler(OnlineCCHandler):
        Delete the account with specified login.
        '''

        self._check(conn, 'delaccount', query)
        objects = self._server.list(query, show=set(('a',)))
        errs = Reporter()
        with self._server.conf:
@@ -286,6 +300,7 @@ class CliHandler(OnlineCCHandler):
        Close an account without deleting it.
        '''

        self._check(conn, 'close', query)
        objects = self._server.list(query, show=set(('a',)))
        errs = Reporter()
        with self._server.conf:
@@ -308,6 +323,7 @@ class CliHandler(OnlineCCHandler):
        Re-open an closed account.
        '''

        self._check(conn, 'declose', query)
        objects = self._server.list(query, show=set(('a',)))
        errs = Reporter()
        with self._server.conf:
@@ -330,6 +346,7 @@ class CliHandler(OnlineCCHandler):
        Disconnect all connected accounts selected by query.
        '''

        self._check(conn, 'kill', query)
        objects = self._server.list(query, show=set(('a',)))
        errs = Reporter()
        with self._server.conf:
@@ -353,6 +370,7 @@ class CliHandler(OnlineCCHandler):
        Get the rights of an object set.
        '''

        self._check(conn, 'rights', query)
        objects = self._server.list(query, show=set(('a',)))
        rules = {}
        for obj in objects:
@@ -369,6 +387,7 @@ class CliHandler(OnlineCCHandler):
        Add a right rule to the selected objects.
        '''

        self._check(conn, 'addright', query)
        objects = self._server.list(query, show=set(('a',)))
        errs = Reporter()
        with self._server.conf:
@@ -392,6 +411,7 @@ class CliHandler(OnlineCCHandler):
        Remove a right rule from the selected objects.
        '''

        self._check(conn, 'delright', query)
        objects = self._server.list(query, show=set(('a',)))
        errs = Reporter()
        with self._server.conf: