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
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
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
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
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"
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