def validate_install(version):
    log.info("-" * 100)
    for node in install_utils.NodeHelpers:
        node.install_success = False
        if node.rest:
            try:
                node_status = node.rest.cluster_status()["nodes"]
            except:
                continue
            for item in node_status:
                if version in item['version'] and item['status'] == "healthy":
                    node.install_success = True

                if node.enable_ipv6 and not item["addressFamily"] == "inet6":
                    node.install_success = False

                afamily = "Unknown"
                if 'addressFamily' in list(item.keys()):
                    afamily = item['addressFamily']

                log.info("node:{0}\tversion:{1}\taFamily:{2}\tservices:{3}".format(item['hostname'],
                                                                              item['version'],
                                                                              afamily,
                                                                              item['services']))
    install_utils.print_result_and_exit()
Example #2
0
def validate_install(params):
    log.info("-" * 100)
    cluster_nodes = {}
    for node in install_utils.NodeHelpers:
        version = params["version"]
        if node.install_success is None:
            node.install_success = False
            if params["cluster_version"]:
                if node.ip != params["bkrs_client"].ip:
                    version = params["cluster_version"]
            if node.rest:
                try:
                    node_status = node.rest.cluster_status()["nodes"]
                except:
                    continue
                for item in node_status:
                    hostname = item["hostname"]
                    if "alternateAddresses" in item and "external" in item["alternateAddresses"]:
                        hostname = item["alternateAddresses"]["external"]["hostname"]
                    if node.ip not in hostname:
                        continue
                    if version in item['version'] and item['status'] == "healthy":
                        node.install_success = True

                    if node.enable_ipv6 and not item["addressFamily"] == "inet6":
                        node.install_success = False

                    afamily = "Unknown"
                    if 'addressFamily' in list(item.keys()):
                        afamily = item['addressFamily']

                    cluster_nodes[node.ip] = {
                        "hostname": item["hostname"],
                        "version": item["version"],
                        "afamily": afamily,
                        "services": item["services"]
                    }

                # check cluster has correct number of nodes
                if params.get("init_clusters", False):
                    selected_cluster = None
                    for cluster in params["clusters"].values():
                        for server in cluster:
                            if server.ip == node.ip:
                                selected_cluster = cluster
                    if selected_cluster is not None:
                        if len(node_status) != len(selected_cluster):
                            node.install_success = False

    clusters = []

    if params.get("init_clusters", False):
        for cluster in params["clusters"].values():
            nodes = { node.ip: cluster_nodes[node.ip] for node in cluster}
            for [ip, node] in nodes.items():
                del cluster_nodes[ip]
            clusters.append(list(nodes.values()))

    for node in cluster_nodes.values():
        clusters.append([node])

    for [i, cluster] in enumerate(clusters):
        for node in cluster:
            log.info("cluster:C{0}\tnode:{1}\tversion:{2}\taFamily:{3}\tservices:{4}".format(i + 1, node['hostname'],
                                                                                    node['version'],
                                                                                    node['afamily'],
                                                                                    node['services']))

    install_utils.print_result_and_exit()