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