def sanitize_resource_metadata(session, clusters, provisioners): from kqueen_ui import cache safe_types = ['text', 'integer', 'select', 'parameters'] token = session.get('user', {}).get('token', None) client = None engines = cache.get('provisioner-engines') deployed_clusters = 0 healthy_clusters = 0 healthy_provisioners = 0 if not engines: error = False if token: client = get_kqueen_client(token=token) else: error = True if client: engines_res = client.provisioner.engines() if engines_res.status > 200: error = True else: engines = engines_res.data cache.set('provisioner-engines', engines, timeout=5 * 60) if error: for cluster in clusters: cluster['metadata'] = {} for provisioner in provisioners: provisioner['parameters'] = {} engines = [] # sort clusters by date if isinstance(clusters, list): clusters.sort(key=lambda k: (k['created_at'], k['name'])) for cluster in clusters: if 'state' in cluster: if config.get('CLUSTER_PROVISIONING_STATE') != cluster['state']: deployed_clusters = deployed_clusters + 1 if cluster['state'] in [ config.get('CLUSTER_UPDATING_STATE'), config.get('CLUSTER_OK_STATE') ]: healthy_clusters = healthy_clusters + 1 if 'created_at' in cluster: cluster['created_at'] = format_datetime(cluster['created_at']) cluster_engine = cluster.get('provisioner', {}).get('engine') _engine_params = [ e['parameters'] for e in engines if e['name'] == cluster_engine ] if not len(_engine_params) == 1: del cluster['metadata'] continue engine_params = _engine_params[0].get('cluster') for param_name, param in engine_params.items(): if param['type'] not in safe_types: try: cluster['metadata'][param_name] = '*****************' except KeyError: pass cluster['metadata'] = OrderedDict( sorted(cluster['metadata'].items(), key=lambda t: t[0])) # sort provisioners by date if isinstance(provisioners, list): provisioners.sort(key=lambda k: (k['created_at'], k['name'])) for provisioner in provisioners: if 'state' in provisioner: if config.get('PROVISIONER_ERROR_STATE') != provisioner['state']: healthy_provisioners = healthy_provisioners + 1 if 'created_at' in provisioner: provisioner['created_at'] = format_datetime( provisioner['created_at']) provisioner_engine = provisioner.get('engine') _engine_params = [ e['parameters'] for e in engines if e['name'] == provisioner_engine ] if not len(_engine_params) == 1: del provisioner['parameters'] continue engine_params = _engine_params[0].get('provisioner') for param_name, param in engine_params.items(): if param['type'] not in safe_types: try: provisioner['parameters'][param_name] = '*****************' except KeyError: pass provisioner['parameters'] = OrderedDict( sorted(provisioner['parameters'].items(), key=lambda t: t[0])) cluster_health = 0 if healthy_clusters and deployed_clusters: cluster_health = int((healthy_clusters / deployed_clusters) * 100) provisioner_health = 0 if healthy_provisioners and provisioners: provisioner_health = int( (healthy_provisioners / len(provisioners)) * 100) overview = { 'cluster_count': len(clusters), 'cluster_max': len(clusters) if len(clusters) else 1, 'cluster_health': cluster_health, 'provisioner_count': len(provisioners), 'provisioner_max': len(provisioners) if len(provisioners) else 1, 'provisioner_health': provisioner_health, } return clusters, provisioners, overview
def metaparser(session, clusters=[], provisioners=[]): token = session.get('user', {}).get('token', None) client = None engines = cache.get('provisioner-engines') if not engines: abort = False if token: client = get_kqueen_client(token=token) else: abort = True if client: engines_res = client.provisioner.engines() if engines_res.status > 200: abort = True else: engines = engines_res.data cache.set('provisioner-engines', engines, timeout=5 * 60) if abort: for cluster in clusters: cluster['metadata'] = {} for provisioner in provisioners: provisioner['parameters'] = {} return clusters, provisioners for cluster in clusters: cluster_engine = cluster.get('provisioner', {}).get('engine') _engine_params = [ e['parameters'] for e in engines if e['name'] == cluster_engine ] if not len(_engine_params) == 1: del cluster['metadata'] continue engine_params = _engine_params[0].get('cluster') for param_name, param in engine_params.items(): if param['type'] not in ['text', 'integer', 'select']: try: cluster['metadata'][param_name] = '*****************' except KeyError: pass cluster['metadata'] = OrderedDict( sorted(cluster['metadata'].items(), key=lambda t: t[0])) for provisioner in provisioners: provisioner_engine = provisioner.get('engine') _engine_params = [ e['parameters'] for e in engines if e['name'] == provisioner_engine ] if not len(_engine_params) == 1: del provisioner['parameters'] continue engine_params = _engine_params[0].get('provisioner') for param_name, param in engine_params.items(): if param['type'] not in ['text', 'integer', 'select']: try: provisioner['parameters'][ param_name] = '*****************' except KeyError: pass provisioner['parameters'] = OrderedDict( sorted(provisioner['parameters'].items(), key=lambda t: t[0])) return clusters, provisioners