예제 #1
0
파일: cluster_ops.py 프로젝트: akshayms/eho
def stop_cluster(headers, cluster):
    nova = novaclient(headers)

    for node in cluster.nodes:
        try:
            nova.servers.delete(node.vm_id)
            logging.debug("vm '%s' has been stopped", node.vm_id)
        except Exception, e:
            logging.info("Can't stop vm '%s': %s", node.vm_id, e)
예제 #2
0
파일: cluster_ops.py 프로젝트: akshayms/eho
def launch_cluster(headers, cluster):
    nova = novaclient(headers)

    clmap = dict()
    clmap["id"] = cluster.id
    clmap["name"] = cluster.name
    clmap["image"] = _find_by_id(nova.images.list(), cluster.base_image_id)
    _check_finding(clmap["image"], "id", cluster.base_image_id)

    clmap["nodes"] = []
    num = 1

    for nc in cluster.node_counts:
        configs = dict()
        for cf in nc.node_template.node_template_configs:
            name = cf.node_process_property.name
            configs[name] = cf.value

        ntype = nc.node_template.node_type.name
        templ_id = nc.node_template.id
        flv_id = nc.node_template.flavor_id
        flv = _find_by_name(nova.flavors.list(), flv_id)
        _check_finding(flv, "id", flv_id)

        for _ in xrange(0, nc.count):
            node = dict()
            if ntype == "JT+NN":
                node["name"] = "%s-master" % cluster.name
            else:
                node["name"] = "%s-%i" % (cluster.name, num)
                num += 1
            node["type"] = ntype
            node["templ_id"] = templ_id
            node["flavor"] = flv
            node["configs"] = configs
            node["is_up"] = False
            clmap["nodes"].append(node)

    for node in clmap["nodes"]:
        logging.debug("Starting node for cluster '%s', node: %s, iamge: %s", cluster.name, node, clmap["image"])
        _launch_node(nova, node, clmap["image"])

    all_set = False

    logging.debug("All nodes for cluster '%s' have been started, " "waiting for them to come up", cluster.name)

    while not all_set:
        all_set = True

        for node in clmap["nodes"]:
            _check_if_up(nova, node)

            if not node["is_up"]:
                all_set = False

        time.sleep(1)

    logging.debug("All nodes of cluster '%s' are up: %s", cluster.name, all_set)

    _pre_cluster_setup(clmap)
    for node in clmap["nodes"]:
        _setup_node(node, clmap)
        _register_node(node, cluster)

    logging.debug("All nodes of cluster '%s' are configured and registered, " "starting the cluster...", cluster.name)

    _start_cluster(cluster, clmap)