コード例 #1
0
ファイル: etcd_manage.py プロジェクト: zhenshuitieniu/sdfs
    def etcd_service_start_force(cls):
        cls._etcd_service_trystart()

        if cls._etcd_check_running():
            _sysinfo("etcd service start ok!")
            return

        if cls._etcd_check_removed():
            #try to run as proxy mode
            _syswarn("etcd was removed, try start as proxy mode !")
            cls._etcd_try_start_as_proxy()
            _syswarn("etcd was removed, start as proxy mode ok !")
        else:
            raise Exp(errno.EPERM, "etcd service start fail, please check it!")
コード例 #2
0
ファイル: etcd_manage.py プロジェクト: zhenshuitieniu/sdfs
class Etcd_manage(object):
    def __init__(self):
        self.config = Config()
        pass

    def member_add(self, hosts):
        origin_cluster_list = self._etcd_get_init_cluster().keys()
        new_cluster_list = origin_cluster_list
        add_list = []

        for host in hosts.split(','):
            if host in new_cluster_list:
                _dwarn("host:%s is already in etcd cluster, please check it!" % (host))
                continue
            else:
                # add etcd member one by one
                self._etcd_health_wait()

                self._etcd_add_member(host)
                new_cluster_list.append(host)

                try:
                    cmd = "python %s/app/admin/node.py etcd --state %s --hosts %s" % (self.config.home, "existing", ','.join(new_cluster_list))
                    self._exec_node(host, cmd)
                except Exp, e:
                    self._etcd_del_member(host)
                    _syserror("etcd set conf on host:%s fail, errmsg:%s" % (host, e.err))
                    raise Exp(e.errno, "etcd set conf on host:%s fail, errmsg:%s" % (host, e.err))

        _sysinfo("etcd member add hosts:%s ok !" % (host))
        print "member add hosts:%s ok !" % (hosts)
コード例 #3
0
ファイル: etcd_manage.py プロジェクト: zhenshuitieniu/sdfs
    def member_del(self, hosts, proxy=False):
        origin_cluster_list = self._etcd_get_init_cluster().keys()
        del_list = hosts.split(',')
        new_cluster_list = origin_cluster_list
        new_del_list = []

        for host in del_list:
            if host not in new_cluster_list:
                _dwarn("host:%s is not in etcd cluster, please check it!" % (host))
                del_list.remove(host)
                continue
            else:
                #etcd member remove host
                new_cluster_list.remove(host)

        for host in del_list:
            if len(host) == 0:
                continue

            _dmsg("wait etcd for health, host:%s" % (host))

            self._etcd_health_wait()
            _dmsg("etcd is health, begin check is permit to remove... host:%s" % (host))

            if not self.etcd_check_member_remove_permition(host):
                _dwarn("host:%s not permit to remove. pelease check it!\n" % (host))
                new_cluster_list.append(host)
                continue

            _dmsg("host:%s permit to remove, begin remove..." % (host))

            try:
                cmd = "etcdctl member list | grep %s | awk '{print $1}' | awk -F':' '{print $1}'| awk -F'[' '{print $1}'| xargs etcdctl member remove" % (host)
                self._exec_node(new_cluster_list[0], cmd)
                _sysinfo("etcd member remove %s ok !" % (host))
                new_del_list.append(host)
            except Exp, e:
                _syserror("etcd member remove %s fail ! errmsg:%s" % (host, e.err))
                raise Exp(errno.EPERM, "etcd member remove %s fail, %s" % (host, e.err))
コード例 #4
0
ファイル: etcd_manage.py プロジェクト: zhenshuitieniu/sdfs
            try:
                cmd = "etcdctl member list | grep %s | awk '{print $1}' | awk -F':' '{print $1}'| awk -F'[' '{print $1}'| xargs etcdctl member remove" % (host)
                self._exec_node(new_cluster_list[0], cmd)
                _sysinfo("etcd member remove %s ok !" % (host))
                new_del_list.append(host)
            except Exp, e:
                _syserror("etcd member remove %s fail ! errmsg:%s" % (host, e.err))
                raise Exp(errno.EPERM, "etcd member remove %s fail, %s" % (host, e.err))

        if proxy and len(new_del_list) > 0:
            #set hosts run as proxy mode
            cmd = "python %s/app/admin/node.py etcd --state %s --hosts %s" % (self.config.home, "existing", ','.join(new_cluster_list))
            args = [[x, cmd] for x in del_list]
            mutil_exec(self._exec_node, args)
            _sysinfo("etcd member remove %s ok , new_cluster_list:%s!" % (del_list, new_cluster_list))

        print "member del hosts:%s ok !" % (new_del_list)

    def member_list(self):
        _etcd_cluster = self._etcd_get_init_cluster()
        for host in _etcd_cluster.keys():
            if _etcd_cluster[host] == "true":
                print "%s : leader" % (host)
            else:
                print "%s" % (host)

    def create_cluster(self, hosts, proxy_nodes=None):
        cluster_list = hosts.split(',')
        proxy_list = []