Example #1
0
 def create_switch(self, zone, switch_name):
     if "head" in switch_name:
         self.printout_cluster("creating main switch in " + zone + " ……", cls_monitor_level = 2, overwrite = True)
         logger.debug("creating main switch")
         switch_name = "Switch for " + self.configuration_info["config name"]
             
     else:
         self.printout_cluster("creating shared switch ……", cls_monitor_level = 2, overwrite = True)
         logger.debug("creating shared switch")
         switch_name = "Switch for compute node"
 
     param = {"Switch":{"Name":switch_name,"Tags":[self.cluster_id]},"Count":0}
 
     if (self.api_index == True):
         while(True):
             switch_response = post(self.url_list[zone] + self.sub_url[2], self.auth_res, param)
             check,msg = self.res_check(switch_response, "post")
             if check == True:
                 switch_id = switch_response["Switch"]["ID"]
                 logger.info("switch ID: " + switch_id + "-Success")
                 break
             else:
                 self.build_error()
         
     else:
         switch_response = "API is not used."
         switch_id = "0000"
 
     return switch_id
Example #2
0
    def build_server(self, zone, node_name, head_switch_id = None, ind = 0):
        self.printout_cluster("constructing " + node_name + " ……", cls_monitor_level = 2, overwrite = True)
        logger.debug("constructing " + node_name + " ……")
        if "headnode" == node_name:
            node_planid = self.configuration_info["server plan ID for head node"]
            com_index = False
            #param = {"Server":{"Name":node_name,"ServerPlan":{"ID":node_planid},"Tags":[self.cluster_id, self.date_modified],"ConnectedSwitches":[{"Scope":"shared"}],"InterfaceDriver":self.configuration_info["connection type for head node"]},"Count":0}
            param = {"Server":{"Name":node_name,"ServerPlan":{"ID":node_planid},"Tags":[self.cluster_id, self.date_modified],"ConnectedSwitches":[{"Scope":"shared"}]},"Count":0}
        else:
            node_planid = self.configuration_info["server plan ID for compute node"]
            com_index = True
            #param = {"Server":{"Name":node_name,"ServerPlan":{"ID":node_planid},"Tags":[self.cluster_id, self.date_modified],"ConnectedSwitches":[{"ID": head_switch_id}],"InterfaceDriver": self.configuration_info["connection type for compute node"]},"Count":0}
            param = {"Server":{"Name":node_name,"ServerPlan":{"ID":node_planid},"Tags":[self.cluster_id, self.date_modified],"ConnectedSwitches":[{"ID": head_switch_id}]},"Count":0}
            
            
        if(self.api_index == True):
            while(True):
                logger.debug("build server")
                server_response = post(self.url_list[zone] + self.sub_url[0], self.auth_res, param)
                check, msg = self.res_check(server_response, "post", com_index)

                if check == True:
                    node_id = server_response["Server"]["ID"]
                    logger.info(node_name + " ID: " + node_id + "-Success")
                    logger.debug("constructed " + node_name)
                    res_index = True
                    break
                else:
                    if com_index == False:
                        logger.debug("Error:cannot build server")
                        res_index = False
                        self.build_error()
                    else:
                        logger.debug("Error:cannot build server")
                        res_index = False
                        return msg,res_index
            
        else:
            server_response = "API is not used."
            logger.debug("constructed " + node_name)
            res_index = True

        return server_response,res_index
Example #3
0
 def create_bridge(self, place):
     self.printout_cluster("creating bridge ……", cls_monitor_level = 2, overwrite = True)
     logger.debug("creating bridge")
     bridge_name = "Bridge for " + self.configuration_info["config name"]
     param = {"Bridge":{"Name":bridge_name}}
 
     if (self.api_index == True):
         while(True):
             bridge_res = post(self.head_url + self.sub_url[4], self.auth_res, param)
             check,msg = self.res_check(bridge_res, "post")
             if check == True:
                 self.all_id_dict["clusterparams"]["bridge"][place] = {}
                 self.all_id_dict["clusterparams"]["bridge"][place]["id"] = int(bridge_res["Bridge"]["ID"])
                 break
             else:
                 self.build_error()
             
     else:
         bridge_res = "API is not used."
         self.all_id_dict["clusterparams"]["bridge"][place] = {}
         self.all_id_dict["clusterparams"]["bridge"][place]["id"] = 0000
Example #4
0
    def add_interface(self, zone, node_id):
        self.printout_cluster("adding nic ……", cls_monitor_level = 3, overwrite = True)
        logger.debug("adding nic")

        add_nic_param = {"Interface":{"Server":{"ID":node_id}}, "Count":0}
    
        if (self.api_index == True):
            while(True):
                add_nic_response = post(self.url_list[zone] + self.sub_url[3], self.auth_res, add_nic_param)
                check,msg = self.res_check(add_nic_response, "post")
                if check == True:
                    nic_id = add_nic_response["Interface"]["ID"]
                    logger.info("nic ID: " + nic_id + "-Success")
                    break
                else:
                    self.build_error()
            
        else:
            add_nic_response = "API is not used."
            nic_id = "0000"
    
        return nic_id
Example #5
0
 def setting_nfs(self, zone, switch_id):
     self.printout_cluster("setting NFS ……", cls_monitor_level = 2, overwrite = True)
     logger.debug("setting NFS")
     nfs_name = "NFS"
     ip = str(ipaddress.ip_address('192.168.1.200'))
         
     param = {"Appliance":{"Class":"nfs","Name":nfs_name,"Plan":{"ID":self.configuration_info["NFS plan ID"][zone]},"Tags":[self.cluster_id],"Remark":{"Network":{"NetworkMaskLen":24},"Servers":[{"IPAddress":ip}],"Switch":{"ID":switch_id}}}} 
 
     if (self.api_index == True):
         while(True):
             nfs_res = post(self.url_list[zone] + self.sub_url[6], self.auth_res, param)
             check,msg = self.res_check(nfs_res, "post")
             if check == True:
                 self.all_id_dict["clusterparams"]["nfs"][zone]["id"] = int(nfs_res["Appliance"]["ID"])
                 self.all_id_dict["clusterparams"]["nfs"][zone]["state"] = "up"
                 
                 break
             else:
                 self.build_error()
     else:
         nfs_res = "API is not used."
         self.all_id_dict["clusterparams"]["nfs"][zone]["id"] = 0000
         self.all_id_dict["clusterparams"]["nfs"][zone]["state"] = "down"
Example #6
0
    def add_disk(self, zone, disk_name):
        self.printout_cluster("creating disk ……", cls_monitor_level = 2, overwrite = True)
        logger.debug("creating disk for " + disk_name)
        if "headnode" == disk_name:
            disk_type = self.configuration_info["disk type for head node"]
            disk_size = self.configuration_info["disk size for head node"]
            os_type = self.configuration_info["OS ID for head node"][zone]
        
        else:
            disk_type = self.configuration_info["disk type for compute node"]
            disk_size = self.configuration_info["disk size for compute node"]
            os_type = self.configuration_info["OS ID for compute node"][zone]

        if disk_type == "SSD":
            disk_type_id = 4
        elif disk_type == "HDD":
            disk_type_id = 2
        
        param = {"Disk":{"Name":disk_name,"Plan":{"ID":disk_type_id}, "Connection":self.configuration_info["connection type for head node"] ,"SizeMB":disk_size,"SourceArchive":{"Availability": "available","ID":os_type},"Tags":[self.cluster_id]},"Config":{"Password":self.configuration_info["password"],"HostName":self.configuration_info["username"]}}
    
        if (self.api_index == True):
            while(True):
                disk_res = post(self.url_list[zone] + self.sub_url[1], self.auth_res, param)
                check,msg = self.res_check(disk_res, "post")
                if check == True:
                    disk_id = disk_res["Disk"]["ID"]
                    logger.info("disk ID: " + disk_id + "-Success")
                    break
                else:
                    self.build_error()
            
        else:
            disk_res = "API is not used."
            disk_id = "0000"
    
        return disk_res