def change_group(self, **raw_args): args = {k: str(v) for k, v in raw_args.iteritems()} server_name = args.pop('server_name') group = args.pop('group') retval = None response = {'result': None, 'cmd': 'chgrp', 'payload': None} try: if self.login == mc.has_server_rights(self.login, server_name, self.base_directory) or \ self.login == 'root': instance = mc(server_name, None, self.base_directory) instance.chgrp(group) else: raise OSError( 'Group assignment to %s failed. Only the owner make change groups.' % group) except (RuntimeError, KeyError, OSError) as ex: response['result'] = 'error' retval = ex.message except CalledProcessError as ex: response['result'] = 'error' retval = ex.output except RuntimeWarning as ex: response['result'] = 'warning' retval = ex.message else: response['result'] = 'success' retval = "Server '%s' group ownership granted to '%s'" % ( server_name, group) response['payload'] = to_jsonable_type(retval) return response
def delete_server(self, **raw_args): args = {k: str(v) for k, v in raw_args.iteritems()} server_name = args.pop('server_name') retval = None response = {'result': None, 'cmd': 'delete_server', 'payload': None} try: if mc.has_server_rights(self.login, server_name, self.base_directory): instance = mc(server_name, None, self.base_directory) instance.delete_server() else: raise OSError( 'Server deletion failed. Only the server owner or root may delete servers.' ) except (RuntimeError, KeyError, OSError) as ex: response['result'] = 'error' retval = ex.message except CalledProcessError as ex: response['result'] = 'error' retval = ex.output except RuntimeWarning as ex: response['result'] = 'warning' retval = ex.message else: response['result'] = 'success' retval = "Server '%s' deleted" % server_name response['payload'] = to_jsonable_type(retval) return response
def delete_server(self, **raw_args): args = {k:str(v) for k,v in raw_args.iteritems()} server_name = args.pop('server_name') retval = None response = { 'result': None, 'cmd': 'delete_server', 'payload': None } try: if mc.has_server_rights(self.login, server_name, self.base_directory): instance = mc(server_name, None, self.base_directory) instance.delete_server() else: raise OSError('Server deletion failed. Only the server owner or root may delete servers.') except (RuntimeError, KeyError, OSError) as ex: response['result'] = 'error' retval = ex.message except CalledProcessError as ex: response['result'] = 'error' retval = ex.output except RuntimeWarning as ex: response['result'] = 'warning' retval = ex.message else: response['result'] = 'success' retval = "Server '%s' deleted" % server_name response['payload'] = to_jsonable_type(retval) return response
def change_group(self, **raw_args): args = {k:str(v) for k,v in raw_args.iteritems()} server_name = args.pop('server_name') group = args.pop('group') retval = None response = { 'result': None, 'cmd': 'chgrp', 'payload': None } try: if self.login == mc.has_server_rights(self.login, server_name, self.base_directory) or \ self.login == 'root': instance = mc(server_name, None, self.base_directory) instance.chgrp(group) else: raise OSError('Group assignment to %s failed. Only the owner make change groups.' % group) except (RuntimeError, KeyError, OSError) as ex: response['result'] = 'error' retval = ex.message except CalledProcessError as ex: response['result'] = 'error' retval = ex.output except RuntimeWarning as ex: response['result'] = 'warning' retval = ex.message else: response['result'] = 'success' retval = "Server '%s' group ownership granted to '%s'" % (server_name, group) response['payload'] = to_jsonable_type(retval) return response
def server(self, **raw_args): args = {k:str(v) for k,v in raw_args.iteritems()} command = args.pop('cmd') server_name = args.pop('server_name') retval = None response = { 'result': None, 'cmd': command, 'payload': None } owner = mc.has_server_rights(self.login, server_name, self.base_directory) try: if server_name is None: raise KeyError('Required value missing: server_name') elif not owner: raise OSError('User %s does not have permissions on %s' % (self.login, server_name)) instance = mc(server_name, owner, self.base_directory) if command in self.METHODS: retval = getattr(instance, command)(**args) elif command in self.PROPERTIES: if args: setattr(instance, command, args.values()[0]) retval = args.values()[0] else: retval = getattr(instance, command) else: instance._command_stuff(command) retval = '"%s" successfully sent to server.' % command except (RuntimeError, KeyError, NotImplementedError) as ex: response['result'] = 'error' retval = ex.message except CalledProcessError as ex: response['result'] = 'error' retval = ex.output except RuntimeWarning as ex: response['result'] = 'warning' retval = ex.message else: response['result'] = 'success' response['payload'] = to_jsonable_type(retval) return response
and not m.startswith('_')) available_properties = list(m for m in dir(mc) if not callable(getattr(mc,m)) \ and not m.startswith('_')) import pprint, types pp = pprint.PrettyPrinter(indent=4) if args.this: args.server_name = os.path.basename(os.getcwd()) args.base_directory = os.path.dirname(os.path.dirname(os.getcwd())) else: args.base_directory = args.base_directory or os.path.expanduser("~") mc._make_skeleton(args.base_directory) if args.server_name: owner = mc.has_server_rights(getuser(), args.server_name, args.base_directory) if not owner and os.path.isdir(os.path.join(args.base_directory, mc.DEFAULT_PATHS['servers'], args.server_name)): raise OSError("User '%s' does not have rights to %s" % (getuser(), os.path.join(args.base_directory, args.server_name))) else: instance = mc(args.server_name, owner, args.base_directory) if args.cmd in ['screen', 'console']: instance._command_direct('screen -r %s' % instance.screen_pid, instance.env['cwd']) elif args.cmd in available_methods: retval = getattr(instance, args.cmd)(*arguments) if retval: if isinstance(retval, types.GeneratorType): pp.pprint(list(retval)) else:
def server_list(self): for i in mc.list_servers(self.base_directory): if mc.has_server_rights(self.login, i, self.base_directory): yield i
if callable(getattr(mc, m)) and not m.startswith('_')) available_properties = list( m for m in dir(mc) if not callable(getattr(mc, m)) and not m.startswith('_')) pp = pprint.PrettyPrinter(indent=4) if args.this: args.server_name = os.path.basename(os.getcwd()) args.base_directory = os.path.dirname(os.path.dirname(os.getcwd())) else: args.base_directory = args.base_directory or os.path.expanduser("~") mc._make_skeleton(args.base_directory) if args.server_name: owner = mc.has_server_rights(getuser(), args.server_name, args.base_directory) if not owner and os.path.isdir( os.path.join(args.base_directory, mc.DEFAULT_PATHS['servers'], args.server_name)): raise OSError( "User '%s' does not have rights to %s" % (getuser(), os.path.join(args.base_directory, args.server_name))) else: instance = mc(args.server_name, owner, args.base_directory) if args.cmd in ['screen', 'console']: instance._command_direct('screen -r %s' % instance.screen_pid, instance.env['cwd']) elif args.cmd in available_methods: retval = getattr(instance, args.cmd)(*arguments)