예제 #1
0
파일: orka.py 프로젝트: amathilda/e-science
    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)
예제 #2
0
파일: orka.py 프로젝트: amathilda/e-science
 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)
예제 #3
0
    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)