def POST(self, group_name, proj_name): group = GroupModel().load(group_name) if group == None: return self.resp(errno=1, errmsg='no this group') group_id = group['id'] project = ProjectModel().load(group_id, proj_name) if project == None: return self.resp(errno=2, errmsg='no this project') project_id = project['id'] all_envs = EnvironmentModel().rows(project_id) all_env_names = [ env['name'] for env in all_envs ] if len(all_envs) == 0: return self.resp(errno=3, errmsg='no environment in this project') param_keys = web.input().keys() if param_keys == None or len(param_keys) == 0: return self.resp(errno=4, errmsg='no envoronment and uid_rate param in request body') for param_key in param_keys: if param_key not in all_env_names: return self.resp(errno=5, errmsg='%s is not in project environment, please check, all env names is:%s' % ( param_key, str(all_env_names) )) if len(param_keys) != len(all_envs): return self.resp(errno=6, errmsg="param count is not equal to this project's environment name count, all env names is:%s" % ( str(all_env_names) )) param_val_sum = 0 param_vals = web.input().values() for param_val in param_vals: if '.' in param_val: return self.resp(errno=7, errmsg='uid_rate should be interger not float') try: param_val = int(param_val) except Exception, ex: return self.resp(errno=8, errmsg='uid_rate should be interger not float') if param_val < 0: return self.resp(errno=9, errmsg='uid_rate should be more than or equal 0') param_val_sum = param_val_sum + param_val
def DELETE(self, group_name, proj_name, env_name): group = GroupModel().load(group_name) if group == None: return self.resp(errno=1, errmsg='no this group') group_id = group['id'] project = ProjectModel().load(group_id, proj_name) if project == None: return self.resp(errno=2, errmsg='no this project') project_id =project['id'] EnvironmentModel().delete(project_id, env_name) return self.resp()
def GET(self, group_name, proj_name): group = GroupModel().load(group_name) if group == None: return self.resp(errno=1, errmsg='no this group') group_id = group['id'] project = ProjectModel().load(group_id, proj_name) if project == None: return self.resp(errno=2, errmsg='no this project') project_id =project['id'] rows = EnvironmentModel().rows(project_id) return self.resp(data=rows)
def PUT(self, group_name, proj_name, env_name): group = GroupModel().load(group_name) if group == None: return self.resp(errno=1, errmsg='no this group') group_id = group['id'] project = ProjectModel().load(group_id, proj_name) if project == None: return self.resp(errno=2, errmsg='no this project') project_id =project['id'] try: EnvironmentModel().add(project_id, env_name) except Exception, ex: return self.resp(errno=3, errmsg=str(ex))
def DELETE(self, group_name, proj_name, env_name, host, port): group = GroupModel().load(group_name) if group == None: return self.resp(errno=1, errmsg='no this group') group_id = group['id'] project = ProjectModel().load(group_id, proj_name) if project == None: return self.resp(errno=2, errmsg='no this project') project_id =project['id'] environment = EnvironmentModel().load(project_id, env_name) if environment == None: return self.resp(errno=3, errmsg='no this environment') env_id = environment['id'] UpstreamModel().delete(env_id, host, port) return self.resp()
def PUT(self, group_name, proj_name, no_uid_env_name): group = GroupModel().load(group_name) if group == None: return self.resp(errno=1, errmsg='no this group') group_id = group['id'] projModel = ProjectModel() project = projModel.load(group_id, proj_name) if project == None: return self.resp(errno=2, errmsg='no this project') project_id = project['id'] all_envs = EnvironmentModel().rows(project_id) all_env_names = [env['name'] for env in all_envs] if no_uid_env_name not in all_env_names: if no_uid_env_name != '': return self.resp(errno=3, errmsg='no this env, please call api set') projModel.setNoUidEnv(project_id, no_uid_env_name) return self.resp()
def PUT(self, group_name, proj_name, env_name, host, port): group = GroupModel().load(group_name) if group == None: return self.resp(errno=1, errmsg='no this group') group_id = group['id'] project = ProjectModel().load(group_id, proj_name) if project == None: return self.resp(errno=2, errmsg='no this project') project_id =project['id'] environment = EnvironmentModel().load(project_id, env_name) if environment == None: return self.resp(errno=3, errmsg='no this environment') env_id = environment['id'] if self.isValidIp(host) == False: return self.resp(errno=4, errmsg = '%s is invalid ip' % host) if self.isValidPort(port) == False: return self.resp(errno=5, errmsg='%s is invalid port' % port) try: UpstreamModel().add(env_id, host, port) except Exception, ex: return self.resp(errno=6, errmsg=str(ex))
def PUT(self, group_name, proj_name, spec_env_name): group = GroupModel().load(group_name) if group == None: return self.resp(errno=1, errmsg='no this group') group_id = group['id'] projModel = ProjectModel() project = projModel.load(group_id, proj_name) if project == None: return self.resp(errno=2, errmsg='no this priject') project_id = project['id'] all_envs = EnvironmentModel().rows(project_id) if len(all_envs) == 0: return self.resp( errno=3, errmsg='now this project has no environment, please add') all_env_names = [env['name'] for env in all_envs] if spec_env_name not in all_env_names and spec_env_name != '': return self.resp( errno=4, errmsg="special env name is not in this project's environment") projModel.setSpecialEnv(project_id, spec_env_name) return self.resp()
if param_key not in all_env_names: return self.resp(errno=5, errmsg='%s is not in project environment, please check, all env names is:%s' % ( param_key, str(all_env_names) )) if len(param_keys) != len(all_envs): return self.resp(errno=6, errmsg="param count is not equal to this project's environment name count, all env names is:%s" % ( str(all_env_names) )) param_val_sum = 0 param_vals = web.input().values() for param_val in param_vals: if '.' in param_val: return self.resp(errno=7, errmsg='uid_rate should be interger not float') try: param_val = int(param_val) except Exception, ex: return self.resp(errno=8, errmsg='uid_rate should be interger not float') if param_val < 0: return self.resp(errno=9, errmsg='uid_rate should be more than or equal 0') param_val_sum = param_val_sum + param_val if param_val_sum != 100: return self.resp(errno=10, errmsg='uid_rate sum shoud be 100') env_name_id_hash = {} for env in all_envs: env_id = env['id'] name = env['name'] env_name_id_hash[name] = env_id envModel = EnvironmentModel() for env_name, uid_rate in web.input().items(): uid_rate = int(uid_rate) env_id = env_name_id_hash[env_name] envModel.setUidRate(project_id, env_id, uid_rate) return self.resp()