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