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)
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)
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)
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)
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)
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
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)
def reload(self, flush=0): if flush == 1: self.loaddata() else: if self.expiry_time <= NowMilli(): self.loaddata()
def loaddata(self): self.expiry_time = NowMilli() + 30000 self.load_all_client()
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
def loaddata(self): self.expiry_time = NowMilli() + 2000 self.allhostinfo()
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