示例#1
0
    def put(self, request, *args, **kwargs):
        """
        Handles ember requests with user's cluster creation parameters.
        Check the parameters with HadoopCluster object from create_cluster
        script.
        """
        self.resource_name = 'clusterchoice'
        self.serializer_class = ClusterchoicesSerializer
        serializer = self.serializer_class(data=request.DATA)
        if serializer.is_valid():
            user_token = Token.objects.get(key=request.auth)
            user = UserInfo.objects.get(user_id=user_token.user.user_id)
            if serializer.data['hadoop_status']:
                try:
                    cluster_action = hadoop_cluster_action_async.delay(
                        serializer.data['id'],
                        serializer.data['hadoop_status'])
                    task_id = cluster_action.id
                    return Response({
                        "id": 1,
                        "task_id": task_id
                    },
                                    status=status.HTTP_202_ACCEPTED)
                except Exception, e:
                    return Response({"status": str(e.args[0])})

            # Dictionary of YarnCluster arguments
            choices = dict()
            choices = serializer.data.copy()
            choices.update({'token': user.okeanos_token})
            try:
                YarnCluster(choices).check_user_resources()
            except ClientError, e:
                return Response({"id": 1, "message": e.message})
示例#2
0
    def bind_okeanos_resources(self, remaining_disk, disk_list):
        '''
        Create a bare cluster in ~okeanos with two vms. The disk size depend
        on remaining_disk argument.
        '''
        if remaining_disk == 0:
            opts = {
                "name": self.name,
                "clustersize": 2,
                "cpu_master": 1,
                "ram_master": 1024,
                "disk_master": 5,
                "disk_template": 'Archipelago',
                "cpu_slave": 1,
                "ram_slave": 1024,
                "disk_slave": 5,
                "token": self.token,
                "image": 'Debian Base',
                "project_name": self.project_name
            }
            c_yarn_cluster = YarnCluster(opts)
            return c_yarn_cluster.create_bare_cluster()

        else:
            for disk in disk_list:
                if disk >= remaining_disk:
                    remaining_disk = disk
                    opts = {
                        "name": self.name,
                        "clustersize": 2,
                        "cpu_master": 1,
                        "ram_master": 1024,
                        "disk_master": remaining_disk,
                        "disk_template": 'Archipelago',
                        "cpu_slave": 1,
                        "ram_slave": 1024,
                        "disk_slave": remaining_disk,
                        "token": self.token,
                        "image": 'Debian Base',
                        "project_name": self.project_name
                    }
                    c_yarn_cluster = YarnCluster(opts)
                    return c_yarn_cluster.create_bare_cluster()
示例#3
0
def create_server_async(choices):
    """
    Asynchronous create VRE server task.
    """
    new_vre_server = YarnCluster(choices)
    server_id, server_pass, server_ip = new_vre_server.create_vre_server()
    task_result = {
        "server_IP": server_ip,
        "VRE_VM_password": server_pass,
        "server_id": server_id
    }
    return task_result
示例#4
0
    def bind_okeanos_resources(self):
        '''
        Create a bare cluster with two vms, so we can bind the
        resources in ~okeanos
        '''
	opts = {"name": self.name,
                              "clustersize": 2,
                              "cpu_master": 1, "ram_master": 1024, "disk_master": 5,
                              "disk_template":'Archipelago', "cpu_slave": 1,
                              "ram_slave": 1024, "disk_slave": 5, "token": self.token,
                              "image": 'Debian Base', "project_name": self.project_name}
	c_yarn_cluster = YarnCluster(opts)
        return c_yarn_cluster.create_bare_cluster()
示例#5
0
def create_cluster_async(choices):
    """
    Asynchronous create cluster task.
    """
    new_yarn_cluster = YarnCluster(choices)
    MASTER_IP, servers, password, cluster_id = new_yarn_cluster.create_yarn_cluster(
    )
    task_result = {
        "master_IP": MASTER_IP,
        "master_VM_password": password,
        "cluster_id": cluster_id
    }

    return task_result