Exemple #1
0
def stop_cluster(headers, cluster):
    nova = novaclient(headers)

    for node in cluster.nodes:
        try:
            nova.servers.delete(node.vm_id)
            LOG.debug("vm '%s' has been stopped", node.vm_id)
        except Exception, e:
            LOG.info("Can't stop vm '%s': %s", node.vm_id, e)
Exemple #2
0
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:
            proc_name = cf.node_process_property.node_process.name
            if proc_name not in configs:
                configs[proc_name] = dict()

            name = cf.node_process_property.name
            configs[proc_name][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()
            node['id'] = None
            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)

    try:
        for node in clmap['nodes']:
            LOG.debug("Starting node for cluster '%s', node: %s, image: %s",
                      cluster.name, node, clmap['image'])
            _launch_node(nova, node, clmap['image'])
    except Exception, e:
        _rollback_cluster_creation(cluster, clmap, nova, e)
        return
Exemple #3
0
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']:
        LOG.debug("Starting node for cluster '%s', node: %s, iamge: %s",
                  cluster.name, node, clmap['image'])
        _launch_node(nova, node, clmap['image'])

    all_set = False

    LOG.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)

    LOG.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)

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

    _start_cluster(cluster, clmap)