Loading cloudcontrol/server/clients/cli.py +32 −0 Original line number Diff line number Diff line Loading @@ -702,6 +702,38 @@ class CliHandler(RegisteredCCHandler): self.client.check('rights') self.server.rights.load(ruleset) # # Riskgroups management: # @listed def getriskgroups(self): """ Get existing groups. """ self.client.check('riskgroups') return self.server.riskgroups.groups @listed def getriskgroup(self, name): """ Get specified group. """ self.client.check('riskgroups') return self.server.riskgroups.get(name) @listed def setriskgroup(self, name, properties): """ Set a new or an existing group. """ self.client.check('riskgroups') return self.server.riskgroups.set(name, properties) @listed def delriskgroup(self, name): """ Delete an existing group. """ self.client.check('riskgroups') return self.server.riskgroups.delete(name) # # Nodes actions: # Loading cloudcontrol/server/riskgroups.py 0 → 100644 +75 −0 Original line number Diff line number Diff line # This file is part of CloudControl. # # CloudControl is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # CloudControl is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with CloudControl. If not, see <http://www.gnu.org/licenses/>. """ Riskgroup manager. """ import json class RiskgroupsManager(object): """ Handle persistent storage of riskgroups. """ def __init__(self, logger, riskgroup_filename): self.logger = logger self._riskgroup_filename = riskgroup_filename self._groups = {} self.load() def load(self): """ Load groups. """ try: with open(self._riskgroup_filename) as fgroups: self._groups = json.load(fgroups) except IOError as err: if err.errno == 2: # No such file, loading empty group self._groups = {} else: raise # Reraise any other error self.logger.info('Loaded %d riskgroups', len(self._groups)) def save(self): """ Save the current riskgroups to disk. """ with open(self._riskgroup_filename, 'w') as fgroups: json.dump(self._groups, fgroups) @property def groups(self): return self._groups def get(self, name, default=None): """ Get the specified group or default. """ return self._groups.get(name, default) def set(self, name, properties): """ Set a new or already existing group. """ self._groups[name] = properties self.save() def delete(self, name): """ Delete the specified group. """ del self._groups[name] self.save() cloudcontrol/server/server.py +6 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ from cloudcontrol.server.exceptions import (AlreadyRegistered, #from cloudcontrol.server.jobs import JobsManager from cloudcontrol.server.clients import Client from cloudcontrol.server.rights import RightManager from cloudcontrol.server.riskgroups import RiskgroupsManager from cloudcontrol.server.jobs import KillOldCliJob from cloudcontrol.server.repository import Repository Loading Loading @@ -117,6 +118,11 @@ class CCServer(object): # The rights manager: self.rights = RightManager(self.logger.getChild('rights'), os.path.join(conf_dir, 'ruleset')) # The riskgroup manager: self.riskgroups = RiskgroupsManager(self.logger.getChild('riskgroups'), os.path.join(conf_dir, 'riskgroups')) self.logger.info('Server started to running') # Script repository: Loading Loading
cloudcontrol/server/clients/cli.py +32 −0 Original line number Diff line number Diff line Loading @@ -702,6 +702,38 @@ class CliHandler(RegisteredCCHandler): self.client.check('rights') self.server.rights.load(ruleset) # # Riskgroups management: # @listed def getriskgroups(self): """ Get existing groups. """ self.client.check('riskgroups') return self.server.riskgroups.groups @listed def getriskgroup(self, name): """ Get specified group. """ self.client.check('riskgroups') return self.server.riskgroups.get(name) @listed def setriskgroup(self, name, properties): """ Set a new or an existing group. """ self.client.check('riskgroups') return self.server.riskgroups.set(name, properties) @listed def delriskgroup(self, name): """ Delete an existing group. """ self.client.check('riskgroups') return self.server.riskgroups.delete(name) # # Nodes actions: # Loading
cloudcontrol/server/riskgroups.py 0 → 100644 +75 −0 Original line number Diff line number Diff line # This file is part of CloudControl. # # CloudControl is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # CloudControl is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with CloudControl. If not, see <http://www.gnu.org/licenses/>. """ Riskgroup manager. """ import json class RiskgroupsManager(object): """ Handle persistent storage of riskgroups. """ def __init__(self, logger, riskgroup_filename): self.logger = logger self._riskgroup_filename = riskgroup_filename self._groups = {} self.load() def load(self): """ Load groups. """ try: with open(self._riskgroup_filename) as fgroups: self._groups = json.load(fgroups) except IOError as err: if err.errno == 2: # No such file, loading empty group self._groups = {} else: raise # Reraise any other error self.logger.info('Loaded %d riskgroups', len(self._groups)) def save(self): """ Save the current riskgroups to disk. """ with open(self._riskgroup_filename, 'w') as fgroups: json.dump(self._groups, fgroups) @property def groups(self): return self._groups def get(self, name, default=None): """ Get the specified group or default. """ return self._groups.get(name, default) def set(self, name, properties): """ Set a new or already existing group. """ self._groups[name] = properties self.save() def delete(self, name): """ Delete the specified group. """ del self._groups[name] self.save()
cloudcontrol/server/server.py +6 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ from cloudcontrol.server.exceptions import (AlreadyRegistered, #from cloudcontrol.server.jobs import JobsManager from cloudcontrol.server.clients import Client from cloudcontrol.server.rights import RightManager from cloudcontrol.server.riskgroups import RiskgroupsManager from cloudcontrol.server.jobs import KillOldCliJob from cloudcontrol.server.repository import Repository Loading Loading @@ -117,6 +118,11 @@ class CCServer(object): # The rights manager: self.rights = RightManager(self.logger.getChild('rights'), os.path.join(conf_dir, 'ruleset')) # The riskgroup manager: self.riskgroups = RiskgroupsManager(self.logger.getChild('riskgroups'), os.path.join(conf_dir, 'riskgroups')) self.logger.info('Server started to running') # Script repository: Loading