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)
Esempio n. 2
0
    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)
Esempio n. 4
0
    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))
Esempio n. 5
0
    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
Esempio n. 6
0
    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))
Esempio n. 7
0
    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))