def _launch_cluster_from_thread(request, node_count, roxie_nodes, launch_config): # Get needed info session = request.session access_key_id = session.get('access_key_id') secret_access_key = session.get('secret_access_key') owner_id = session.get('owner_id') region = launch_config['region'] # Get a new cluster row id cluster = Cluster(owner_id=owner_id, node_count=node_count) cluster.requesting_ip = request.META.get('REMOTE_ADDR') cluster.region = region cluster.is_launching = True cluster.save() cluster_id = cluster.pk debug = False # Launch Cluster if debug: launch_cluster(node_count, roxie_nodes, cluster_id, launch_config, access_key_id, secret_access_key, owner_id) else: args = (node_count, roxie_nodes, cluster_id, launch_config, access_key_id, secret_access_key, owner_id) thread = Thread(target=launch_cluster, args=args) thread.daemon = True thread.start() return cluster_id
def create(self, payload): """ signup function :return: """ try: if payload.get('cluster_name') == "": return {'msg': "Cluster name is requerid", 'code': 0} records = Cluster.objects( cluster_name__exact=payload.get('cluster_name')) #_id = base_obj.insert(COLLECTIONS['USERS'], payload) if records.count() > 0: return {'msg': 'Cluster Aready Exists', 'code': 0} cluster = Cluster( cluster_name=payload.get('cluster_name'), cluster_id=payload.get('cluster_id'), ) _id = Cluster.objects.insert(cluster) return {'msg': _id.pk, 'code': 1} except Exception as err: print(err) return err
def clusters_post(): """ CREATE new cluster from POST data. args: - none expected request json: - {'name': str, 'notes': str} returns: - response with json payload and http status code """ try: data = request.json keys = ['name', 'notes'] cluster = Cluster() for key in keys: if key not in data: continue setattr(cluster, key, data[key]) cluster.insert() return jsonify({'success': True, 'clusters': [cluster.as_dict()]}), 200 except Exception as err: abort(422, str(err))
def _gen_cluster(zone_name, zone_cluster_details, latency, pricing, datacenters_map, services_config): zone = _gen_zone(zone_name, latency, pricing, datacenters_map) cluster = Cluster(zone) available_services = zone_cluster_details["services"] for service in available_services.values(): service_name = service["name"] service_capacity = service["rps_capacity"] svc = _gen_service(services_config[service_name], service_capacity) cluster.add_service(svc) return cluster
def asymsched_test(): """ 正确性测试 模拟CPU一共有四个节点。 运行两个app,每个app有一个cluster,每个cluster使用两个node。 """ test_bandwidths = [[0, 3000000000, 1000000000, 1000000000], [3000000000, 0, 1000000000, 1000000000], [1000000000, 1000000000, 0, 7000000000], [1000000000, 1000000000, 7000000000, 0]] test_remote_access = [[0, 3000000000, 0, 0], [3000000000, 0, 0, 0], [0, 0, 0, 5000], [0, 0, 5000, 0]] test_apps = [] test_apps.append(App()) test_apps[0].tt = 50000 test_apps[0].clusters.append(Cluster()) test_apps[0].clusters[0].memories = [200, 400] test_apps[0].clusters[0].current_nodes = [0, 1] test_apps.append(App()) test_apps[1].tt = 50000 test_apps[1].clusters.append(Cluster()) test_apps[1].clusters[0].memories = [30, 300] test_apps[1].clusters[0].current_nodes = [2, 3] _, _, test_min_pid, test_do_migration = asymsched(test_apps, test_bandwidths, test_remote_access) print(test_min_pid, test_do_migration) for app in test_apps: for cluster in app.clusters: print(cluster.origin_nodes, "==>", cluster.current_nodes)
def add_cluster(): cluster = Cluster(jobflow_id=str(uuid.uuid1())) cluster.save() return cluster