def get_server_params(instance_name, instance_params, cluster_instances, allow_missed_instances): if instance_name not in cluster_instances: if instance_params.get('expelled') is True: return None, None msg = "Instance %s isn't found in cluster" % instance_name if allow_missed_instances: helpers.warn(msg) return None, None else: return None, msg cluster_instance = cluster_instances[instance_name] if not cluster_instance.get('uuid'): # uuid is '' for unjoined instances return None, None server_params = { 'uuid': cluster_instance.get('uuid'), } if instance_params.get('expelled') is True: server_params['expelled'] = True else: for param_name in ['zone', 'uri']: add_server_param_if_required(server_params, instance_params, cluster_instance, param_name) if len(server_params) == 1: # there are only `uuid`, all instance parameters are the same as configured return None, None return server_params, None
def check_filtered_instances(instances, filtered_instances, fmt, allow_missed_instances): if len(instances) == len(filtered_instances): return None missed_instances = ', '.join( sorted(set(instances).difference(filtered_instances))) msg = fmt % missed_instances if allow_missed_instances: helpers.warn(msg) return None return msg
def check_cluster_issues(params): allow_warnings = params['allow_warnings'] show_issues = params['show_issues'] console_sock = params['console_sock'] control_console = helpers.get_control_console(console_sock) issues, err = control_console.eval_res_err(''' return require('cartridge.issues').list_on_cluster() ''') if err is not None: msg = "Received error on getting list of cluster issues: %s" % err if issues is None: return helpers.ModuleRes(failed=True, msg=msg) helpers.warn(msg) issues_by_level = {} for issue in issues: level = issue['level'] if level not in issues_by_level: issues_by_level[level] = [] issues_by_level[level].append(issue) if show_issues: messages = get_messages(issues_by_level) helpers.warn(*messages) if issues: if allow_warnings: critical_issues_num = len(issues) - len(issues_by_level.get('warning', [])) if critical_issues_num > 0: return helpers.ModuleRes(failed=True, msg="Cluster has %s critical issues" % critical_issues_num) else: return helpers.ModuleRes(failed=True, msg="Cluster has %s issues" % len(issues)) return helpers.ModuleRes(changed=False)