Example #1
0
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
Example #2
0
    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
Example #3
0
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))
Example #4
0
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
Example #5
0
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)
Example #6
0
 def add_cluster():
     cluster = Cluster(jobflow_id=str(uuid.uuid1()))
     cluster.save()
     return cluster