def create(self): """ Method for creating Hadoop clusters in~okeanos.""" try: payload = {"clusterchoice":{"project_name": self.opts['project_name'], "cluster_name": self.opts['name'], "cluster_size": self.opts['cluster_size'], "cpu_master": self.opts['cpu_master'], "ram_master": self.opts['ram_master'], "disk_master": self.opts['disk_master'], "cpu_slaves": self.opts['cpu_slave'], "ram_slaves": self.opts['ram_slave'], "disk_slaves": self.opts['disk_slave'], "disk_template": self.opts['disk_template'], "os_choice": self.opts['image'], "replication_factor": self.opts['replication_factor'], "dfs_blocksize": self.opts['dfs_blocksize']}} yarn_cluster_req = ClusterRequest(self.escience_token, self.server_url, payload, action='cluster') response = yarn_cluster_req.create_cluster() if 'task_id' in response['clusterchoice']: task_id = response['clusterchoice']['task_id'] else: logging.error(response['clusterchoice']['message']) exit(error_fatal) result = task_message(task_id, self.escience_token, self.server_url, wait_timer_create) logging.log(SUMMARY, "YARN Cluster is active, you can access it through {0}:8088/cluster," " and has the following properties:".format(result['master_IP'])) stdout.write("cluster_id: {0}\nmaster_IP: {1}\n" "root password: {2}\n".format(result['cluster_id'], result['master_IP'], result['master_VM_password'])) exit(SUCCESS) except Exception, e: stderr.write('{0}'.format('\r')) logging.error(str(e.args[0])) exit(error_fatal)
def hadoop_action(self): """ Method for applying an action to a Hadoop cluster""" action = str.lower(self.opts['hadoop_status']) clusters = get_user_clusters(self.opts['token'], self.opts['server_url']) active_cluster = None for cluster in clusters: if (cluster['id'] == self.opts['cluster_id']): active_cluster = cluster if cluster['cluster_status'] == const_cluster_status_active: break else: logging.error('Hadoop can only be managed for an active cluster.') exit(error_fatal) if active_cluster: if (active_cluster['hadoop_status'] == const_hadoop_status_started and action == "start"): logging.error('Hadoop already started.') exit(error_fatal) elif (active_cluster['hadoop_status'] == const_hadoop_status_stopped and action == "stop"): logging.error('Hadoop already stopped.') exit(error_fatal) try: payload = {"clusterchoice":{"id": self.opts['cluster_id'], "hadoop_status": action}} yarn_cluster_req = ClusterRequest(self.escience_token, self.server_url, payload, action='cluster') response = yarn_cluster_req.create_cluster() task_id = response['clusterchoice']['task_id'] result = task_message(task_id, self.escience_token, self.server_url, wait_timer_delete) logging.log(SUMMARY, result) exit(SUCCESS) except Exception, e: stderr.write('{0}'.format('\r')) logging.error(str(e.args[0])) exit(error_fatal)
def create(self): """ Method for creating Hadoop clusters in~okeanos.""" try: payload = {"clusterchoice":{"project_name": self.opts['project_name'], "cluster_name": self.opts['name'], "cluster_size": self.opts['cluster_size'], "cpu_master": self.opts['cpu_master'], "ram_master": self.opts['ram_master'], "disk_master": self.opts['disk_master'], "cpu_slaves": self.opts['cpu_slave'], "ram_slaves": self.opts['ram_slave'], "disk_slaves": self.opts['disk_slave'], "disk_template": self.opts['disk_template'], "os_choice": self.opts['image'], "replication_factor": self.opts['replication_factor'], "dfs_blocksize": self.opts['dfs_blocksize']}} yarn_cluster_req = ClusterRequest(self.escience_token, payload, action='cluster') response = yarn_cluster_req.create_cluster() if 'task_id' in response['clusterchoice']: task_id = response['clusterchoice']['task_id'] else: logging.error(response['clusterchoice']['message']) exit(error_fatal) result = task_message(task_id, self.escience_token, wait_timer_create) logging.log(SUMMARY, " Yarn Cluster is active.You can access it through " + result['master_IP'] + ":8088/cluster") logging.log(SUMMARY, " The root password of your master VM is " + result['master_VM_password']) except Exception, e: logging.error(' Fatal error: ' + str(e.args[0])) exit(error_fatal)