def _init_api(self, ip, port, client_lib): try: serverip = socket.gethostbyname(ip) except socket.gaierror: # use localhost in-case we cannot resolve the provided hostname serverip = '127.0.0.1' self.api = cmmanage.CMManage(serverip, port, client_lib, self.verbose_logger)
def take_action(self, parsed_args): try: logger = VerboseLogger(self.log) api = cmmanage.CMManage(parsed_args.cmserverip, parsed_args.cmserverport, parsed_args.clientlib, logger) cm_property = parsed_args.property data = api.get_properties('') d = {} for name, value in data.iteritems(): try: d[name] = json.loads(value) except Exception as ex: d[name] = value cm = ConfigManager(d) cm.mask_sensitive_data() prop = d.get(cm_property) split = None if not prop: split = cm_property.split('.') cm_property = '.'.join(split[:2]) prop = d.get(cm_property) if prop == '' or prop == None: raise Exception('{} not configured'.format(cm_property)) d = d[cm_property] if split: if split[2:]: for field in split[2:]: try: d = d[field] except KeyError as ex: raise Exception('{} not found in {}'.format(field, cm_property)) if isinstance(d, dict): columns = tuple(d.keys()) if isinstance(self.formatter, TableFormatter): data = tuple(map(ShowProperty.dumps, d.values())) else: data = tuple(d.values()) else: columns = (parsed_args.property, ) data = (d, ) return (columns, data) except Exception: raise
def _init_api(self, ip, port, client_lib, verbose): logger = None if verbose: logger = self.verbose_logger try: serverip = socket.gethostbyname(ip) except Exception: # pylint: disable=broad-except # use localhost in-case we cannot resolve the provided hostname serverip = '127.0.0.1' self.api = cmmanage.CMManage(serverip, port, client_lib, logger)
def take_action(self, parsed_args): try: logger = VerboseLogger(self.log) api = cmmanage.CMManage(parsed_args.cmserverip, parsed_args.cmserverport, parsed_args.clientlib, logger) api.delete_property(parsed_args.property) self.app.stdout.write('%s deleted successfully\n' % parsed_args.property) except Exception as exp: self.app.stderr.write('Failed with error %s\n' % str(exp))
def take_action(self, parsed_args): try: logger = VerboseLogger(self.log) api = cmmanage.CMManage(parsed_args.cmserverip, parsed_args.cmserverport, parsed_args.clientlib, logger) prop_filter = parsed_args.filter data = api.get_properties('') header = ('property', 'value') columns = () d = {} for name, value in data.iteritems(): try: d[name] = json.loads(value) except Exception as ex: d[name] = value cm = ConfigManager(d) cm.mask_sensitive_data() pattern = re.compile(prop_filter) for name, value in d.iteritems(): if not pattern.match(name): continue if isinstance(self.formatter, TableFormatter): try: v = json.dumps(value, sort_keys=True, indent=1, separators=(',', ':')) except Exception: pass else: v = value entry = (name, v) columns = (entry,) + columns if not columns: raise Exception('Not found') return (header, columns) except Exception: raise
def take_action(self, parsed_args): try: logger = VerboseLogger(self.log) api = cmmanage.CMManage(parsed_args.cmserverip, parsed_args.cmserverport, parsed_args.clientlib, logger) cm_property = parsed_args.property config = api.get_properties('') if os.path.exists(parsed_args.file): raise Exception('File %s already exists' % parsed_args.file) with open(parsed_args.file, 'w') as f: d = {} if cm_property not in config.keys(): raise Exception('Property not found') for name, value in config.iteritems(): try: d[name] = json.loads(value) except Exception as ex: d[name] = value cm = ConfigManager(d) cm.mask_sensitive_data() d = d.get(cm_property) try: data = json.dumps(d, sort_keys=True, indent=1, separators=(',', ':')) except Exception as exp: data = d if data == 'null' or data == '""': data = '' f.write(data) self.app.stdout.write('Completed successfully\n') except Exception as exp: self.app.stderr.write('Failed with error %s\n' % str(exp))
def take_action(self, parsed_args): try: logger = VerboseLogger(self.log) api = cmmanage.CMManage(parsed_args.cmserverip, parsed_args.cmserverport, parsed_args.clientlib, logger) if parsed_args.value and parsed_args.file: raise Exception('Either --value or --file needs to be specified') if parsed_args.value: api.set_property(parsed_args.property, parsed_args.value) elif parsed_args.file: if not os.path.exists(parsed_args.file): raise Exception('File %s is not valid' % parsed_args.file) with open(parsed_args.file, 'r') as f: data = "" try: data = f.read() d = json.loads(data) data = json.dumps(d) except Exception as exp: pass api.set_property(parsed_args.property, data) else: raise Exception('--value or --file needs to be specified') self.app.stdout.write('%s set successfully\n' % parsed_args.property) except Exception as exp: self.app.stderr.write('Failed with error %s\n' % str(exp))