Esempio n. 1
0
File: bosi.py Progetto: zoirboy/bosi
def setup_dpdk(node_dic):
    for hostname, node in node_dic.iteritems():
        if node.skip:
            safe_print("skip node %(fqdn)s due to %(error)s\n" %
                      {'fqdn': node.fqdn, 'error': node.error})
            continue
        if node.tag != node.env_tag:
            safe_print("skip node %(fqdn)s due to mismatched tag\n" %
                      {'fqdn': node.fqdn})
            continue
        if node.role not in const.DPDK_ROLES:
            safe_print("Skipping node %(hostname)s because deployment mode is "
                       "DPDK and role set for node is not DPDK. It is "
                       "%(role)s\n" %
                       {'hostname': hostname, 'role': node.role})
            continue
        if node.os != const.REDHAT:
            safe_print("Skipping node %(hostname)s because deployment mode is "
                       "DPDK and non REDHAT OS is not supported. OS set for "
                       "node is %(os)s\n" %
                       {'hostname': hostname, 'os': node.os})
            continue

        # all okay, generate scripts for node
        Helper.generate_dpdk_scripts_for_redhat(node)
        node_q.put(node)

    with open(const.LOG_FILE, "a") as log_file:
        for hostname, node in node_dic.iteritems():
            log_file.write(str(node))

    # Use multiple threads to setup nodes
    for i in range(const.MAX_WORKERS):
        t = threading.Thread(target=worker_upgrade_or_sriov_node, args=(node_q,))
        t.daemon = True
        t.start()
    node_q.join()

    sorted_time_dict = OrderedDict(sorted(time_dict.items(),
                                          key=lambda x: x[1]))
    for fqdn, h_time in sorted_time_dict.items():
        safe_print("node: %(fqdn)s, time: %(time).2f\n" %
                   {'fqdn': fqdn, 'time': h_time})

    safe_print("Big Cloud Fabric deployment finished! "
               "Check %(log)s on each node for details.\n" %
              {'log': const.LOG_FILE})