Пример #1
0
    def update_mount_info(self, cluster_name, mount_id, data):
        if not self.is_key_exist('%s/%s' % (cluster_name, mount_id)):
            Log(
                1,
                'MountDB.update_mount_info [%s/%s]fail,as the key not exist' %
                (cluster_name, mount_id))
            return Result('', ETCD_KEY_NOT_FOUND_ERR, 'The volume not exist.')

        data['create_time'] = NowMilli()
        rlt = self.update_json_value('%s/%s' % (cluster_name, mount_id), data)
        if not rlt.success:
            Log(
                1, 'MountDB.update_mount_info save info fail,as[%s]' %
                (rlt.message))
            return rlt

        return Result(mount_id)
Пример #2
0
 def get_pods_load(self, clu_name, host_name):
     Log(3, "pods:{}".format(self.__pods))
     if self.load_pod_time <= NowMilli():
         rlt = self.get_host_all_pods(clu_name, host_name)
         if not rlt.success:
             return rlt
         self.load_clu_pods(clu_name, host_name, rlt.content)
         return Result(rlt.content)
     else:
         pods = self.__pods.get(clu_name, {}).get(host_name)
         Log(3, "get_pods_load:{}".format(pods))
         if not pods:
             rlt = self.get_host_all_pods(clu_name, host_name)
             if not rlt.success:
                 return rlt
             self.load_clu_pods(clu_name, host_name, rlt.content)
             return Result(rlt.content)
         return Result(pods)
Пример #3
0
    def create_disk(self, host_ip, data):
        rlt = self.get_identity_id()
        if not rlt.success:
            Log(
                1, 'DiskDB.create_disk.get_identity_id fail,as[%s]' %
                (rlt.message))
            return Result(0, ETCD_CREATE_KEY_FAIL_ERR, 'get_identity_id fail.')

        disk_id = rlt.content
        host_id = host_ip.replace('.', '-')

        data['create_time'] = NowMilli()
        rlt = self.set('%s/%s' % (host_id, disk_id), data)
        if not rlt.success:
            Log(1, 'DiskDB.create_disk save info fail,as[%s]' % (rlt.message))
            return rlt

        return Result(disk_id)
Пример #4
0
    def create_workspace(self, project_id, data):
        rlt = self.get_identity_id()
        if not rlt.success:
            Log(
                1, 'Launcherdb.create_workspace.get_identity_id fail,as[%s]' %
                (rlt.message))
            return Result(0, ETCD_CREATE_KEY_FAIL_ERR, 'get_identity_id fail.')

        key = rlt.content
        data['create_time'] = NowMilli()
        rlt = self.set('%s/%s' % (project_id, key), data)
        if not rlt.success:
            Log(
                1, 'Launcherdb.create_workspace save info fail,as[%s]' %
                (rlt.message))
            return rlt

        return Result(key)
Пример #5
0
    def update_workspace(self, project_id, workspace_id, data):
        if not self.is_key_exist('%s/%s' % (project_id, workspace_id)):
            Log(
                1,
                'Launcherdb.update_workspace [%s/%s]fail,as the key not exist'
                % (project_id, workspace_id))
            return Result('', ETCD_KEY_NOT_FOUND_ERR,
                          'The workspace not exist.')

        data['create_time'] = NowMilli()
        rlt = self.update_json_value('%s/%s' % (project_id, workspace_id),
                                     data)
        if not rlt.success:
            Log(
                1, 'Launcherdb.update_workspace save info fail,as[%s]' %
                (rlt.message))
            return rlt

        return Result(workspace_id)
Пример #6
0
    def parse_token(self, token_str):
        if not token_str:
            Log(3, 'Unauthorized visit.')
            return {'ring': 'ring8'}

        if isinstance(token_str, list):
            token_str = token_str[0]

        data = self.__store.get(token_str, None)
        if data:
            return data['passport']

        passport = self._parse_token(token_str)
        if passport:
            self.__store[token_str] = {
                'passport': passport,
                'expire': NowMilli() + 60000
            }

        return passport
Пример #7
0
    def create_record(self, data):
        server_name = data.get('name', None)
        if not server_name:
            return Result(0, INVALID_PARAM_ERR, 'Service name invalid')

        workspace = data.get('workspace', None)
        if not workspace:
            return Result(0, INVALID_PARAM_ERR, 'workspace invalid')

        if self.is_record_exist(workspace, server_name):
            return Result(0, INVALID_PARAM_ERR,
                          'Service [%s][%s] repeat' % (workspace, server_name))

        key = data.get('id', None)
        if key:
            if self.is_key_exist(key):
                return Result(0, FAIL, 'The record id[%s] is repeat' % (key))
        else:
            rlt = self.get_identity_id()
            if not rlt.success:
                Log(
                    1, 'MonitorMgr.create_record.get_identity_id fail,as[%s]' %
                    (rlt.message))
                return Result(0, ETCD_CREATE_KEY_FAIL_ERR,
                              'get_identity_id fail.')

            key = rlt.content
            data['id'] = key

        data['create_time'] = NowMilli()
        rlt = self.set(key, data)
        if not rlt.success:
            Log(1, 'MonitorMgr.create_record fail,as[%s]' % (rlt.message))
            return rlt

        return Result(key)
Пример #8
0
 def reload(self, flush=0):
     if flush == 1:
         self.loaddata()
     else:
         if self.expiry_time <= NowMilli():
             self.loaddata()
Пример #9
0
 def loaddata(self):
     self.expiry_time = NowMilli() + 30000
     self.load_all_client()
Пример #10
0
 def update_volume(self, cluster_name, pv_name, data):
     data['create_time'] = NowMilli()
     rlt = self.update_json_value('%s/%s' % (cluster_name, pv_name), data)
     if not rlt.success:
         Log(1, 'PVDB.update_volume save info fail,as[%s]' % (rlt.message))
     return rlt
Пример #11
0
 def loaddata(self):
     self.expiry_time = NowMilli() + 2000
     self.allhostinfo()
Пример #12
0
    def loaddata(self):
        self.expiry_time = NowMilli() + 30000

        clu_node = {}
        rlt = CluNodedb.instance().read_clunode_map()
        if not rlt.success:
            return Result('', rlt.result, rlt.message, 500)
        if rlt.success:
            for k, v in rlt.content.items():
                sp_key = k.split('/')
                if sp_key[-3] == 'clusternodes':
                    clu_node.setdefault(sp_key[-2], []).append(v)

        for k, v in clu_node.items():
            master_num = 0
            run_num = 0
            for i in v:
                if i['type'] == 'master':
                    master_num += 1
                    if i['status'] != 'running':
                        run_num += 1
            # 单集群判断集群状态
            if master_num == 1 and run_num == 1:
                clu_node.pop(k)
            # ha集群判断集群状态
            if master_num == 3 and (run_num == 2 or run_num == 3):
                clu_node.pop(k)

        all_ippool = []
        for i in clu_node.keys():
            one_ippool = {
                'key': str(uuid.uuid1()),
                'pool_name': '',
                'cluster_name': '',
                'creater': '',
                'subnetnum': '',
                'subnet': []
            }
            rlt_net = Networkdb.instance().key_value_map(i)
            if not rlt_net.success:
                continue
            subnet_num = 0
            # fa_ip = set()
            d = {}
            for k, v in rlt_net.content.items():
                d.setdefault(v['fa_ip'], []).append(v)
                subnet_num += 1
            for k, v in d.items():
                sub = {
                    'subnet': k,
                    'children': v,
                    'creater': v[0].get('creater', ''),
                    'create_time': v[0].get('create_time', ''),
                    'key': str(uuid.uuid1()),
                    'cluster_name': i
                }
                one_ippool['subnet'].append(sub)
            one_ippool['pool_name'] = i
            one_ippool['cluster_name'] = i
            one_ippool['subnetnum'] = subnet_num
            all_ippool.append(one_ippool)

        self.__store = all_ippool