def __is_cluster_already_exist(self, list_nodes): for node in list_nodes.itervalues(): gluster = Gluster(node['ip']) peer_status = gluster.get_peer_manager().status() if peer_status["peers"] > 0: return True return False
def __is_already_on_glusterfs(self): gluster = Gluster() peer_manager = gluster.get_peer_manager() peer_status = peer_manager.status() if peer_status["peers"] == 0: return False else: return True
def __create_cluster(self, list_nodes, numbers_nodes): gluster = Gluster() peer_manager = gluster.get_peer_manager() for node in list_nodes.itervalues(): peer_manager.probe(node['ip']) print(node['name'] + " ( " + node['ip'] + " ) " + " added on cluster") # I wait all node join the glusterfs before continue while(self.__get_numbers_peer() != numbers_nodes): time.sleep(1)
def __create_cluster(self, list_nodes, numbers_nodes): gluster = Gluster() peer_manager = gluster.get_peer_manager() for node in list_nodes.itervalues(): peer_manager.probe(node['ip']) print(node['name'] + " ( " + node['ip'] + " ) " + " added on cluster") # I wait all node join the glusterfs before continue while (self.__get_numbers_peer() != numbers_nodes): time.sleep(1)
def __wait_all_glusterfs_start(self, list_nodes): loop = True while loop: time.sleep(1) try: for node in list_nodes.itervalues(): gluster = Gluster(node['ip']) peer_status = gluster.get_peer_manager().status() loop = False except Exception,e: loop = True
def __wait_all_glusterfs_start(self, list_nodes): loop = True while loop: time.sleep(1) try: for node in list_nodes.itervalues(): gluster = Gluster(node['ip']) peer_status = gluster.get_peer_manager().status() loop = False except Exception, e: loop = True
def __wait_all_glusterfs_start(self, list_nodes): loop = True while loop: time.sleep(1) try: print(str(list_nodes)) for node in list_nodes.itervalues(): gluster = Gluster(node['ip']) print("peer status()") peer_status = gluster.get_peer_manager().status() loop = False except Exception, e: print(traceback.format_exc()) print(e.message) loop = True
def __wait_all_glusterfs_start(self, list_nodes): loop = True while loop: time.sleep(1) try: print(str(list_nodes)) for node in list_nodes.itervalues(): gluster = Gluster(node['ip']) print("peer status()") peer_status = gluster.get_peer_manager().status() loop = False except Exception,e: print(traceback.format_exc()) print(e.message) loop = True
def manage_cluster(self): gluster = Gluster() peer_manager = gluster.get_peer_manager() volume_manager = gluster.get_volume_manager() metadata_manager = MetadataAPI() # I check there are more than 1 container number_node = self.__get_numbers_of_node_in_service() # I get my container info current_container = self.__get_my_container_info() # I get all other containers list_containers = self.__get_other_container_in_service( current_container) # If I am not on cluster and there are no cluster and I am the master, so I create the gluster if (self.__is_already_on_glusterfs() is False) and (self._is_master( current_container, list_containers) is True) and ( self.__is_cluster_already_exist(list_containers) is False): self.__create_cluster(list_containers, number_node) # If I am already on cluster and there are new peer, I guest them. if (self.__is_already_on_glusterfs() is True) and (number_node > self.__get_numbers_peer()): list_nodes = {} peer_status = self.__get_peers() for container in list_containers.itervalues(): if container['ip'] not in peer_status["host"]: list_nodes[container["name"]] = container print("New host : " + container["name"]) self.__create_cluster(list_nodes, number_node) list_containers = list_nodes # I create all volumes if self.__is_already_on_glusterfs() is True: list_nodes = list_containers.copy() list_nodes[current_container["name"]] = current_container self.__create_all_volumes(self.__list_volumes, self.__transport, self.__stripe, self.__replica, self.__quota, self.__gluster_directory, list_nodes)
def manage_cluster(self): gluster = Gluster() peer_manager = gluster.get_peer_manager() volume_manager = gluster.get_volume_manager() metadata_manager = MetadataAPI() # I check there are more than 1 container number_node = self.__get_numbers_of_node_in_service() # I get my container info current_container = self.__get_my_container_info() # I get all other containers list_containers = self.__get_other_container_in_service(current_container["name"]) # If I am not on cluster and there are no cluster and I am the master, so I create the gluster if (self.__is_already_on_glusterfs() is False) and (self._is_master(current_container, list_containers) is True) and (self.__is_cluster_already_exist(list_containers) is False): self.__create_cluster(list_containers, number_node) # If I am already on cluster and there are new peer, I guest them. if (self.__is_already_on_glusterfs() is True) and (number_node > self.__get_numbers_peer()): list_nodes = {} peer_status = self.__get_peers() for container in list_containers.itervalues(): if container['ip'] not in peer_status["host"]: list_nodes[container["name"]] = container print("New host : " + container["name"]) self.__create_cluster(list_nodes, number_node) list_containers = list_nodes # I create all volumes if self.__is_already_on_glusterfs() is True: list_nodes = list_containers.copy() list_nodes[current_container["name"]] = current_container self.__create_all_volumes(self.__list_volumes, self.__transport, self.__stripe, self.__replica, self.__quota,self.__gluster_directory,list_nodes)
def __get_peers(self): gluster = Gluster() peer_manager = gluster.get_peer_manager() return peer_manager.status()
def __get_numbers_peer(self): gluster = Gluster() peer_manager = gluster.get_peer_manager() peer_status = peer_manager.status() return peer_status["peers"]