def create(user, organization_id, name, description=None): try: errmsg = list() if organization_id == None: errmsg.append('组织ID不能为空') if name == None or len(name) == 0: errmsg.append('团队名字不能为空') if len(errmsg) != 0: return False, ','.join(errmsg), None pm_list = InternalAPI.get_user_permissions_on_resource( user, RS_ORG, organization_id ) if not pm_list[PM_CREATE_TEAM]: return False, ARK_ERRMSG_CONTENT[1201] org = Organization.objects.get(id=organization_id) team = Team(name=name, organization=org) if description is not None: team.description = description with transaction.atomic(): team.save() InternalAPI.update_resource_and_roles_relationship( RS_TEAM, team.id ) return True, None except Exception as e: return False, str(e)
def create(user, organization_id, name, url, username, scm_type, description=None, branch=None, revision=None): try: errmsg = list() if organization_id == None: errmsg.append('组织ID不能为空') if name == None or len(name) == 0: errmsg.append('项目名字不能为空') if url == None or len(url) == 0: errmsg.append('URL不能为空') if username == None or len(username) == 0: errmsg.append('项目的用户名不能为空') if scm_type == None: errmsg.append('源码管理类型不能为空') if len(errmsg) != 0: return False, ','.join(errmsg), None pm_list = InternalAPI.get_user_permissions_on_resource( user, RS_ORG, organization_id) if not pm_list[PM_CREATE_PROJECT]: return False, ARK_ERRMSG_CONTENT[1201] org = Organization.objects.get(id=organization_id) pro = Project(name=name, url=url, username=username, scm_type=scm_type, organization=org) if description is not None and len(description) != 0: pro.description = description else: pro.description = '' if branch is not None and len(branch) != 0: pro.branch = branch else: pro.branch = 'master' if revision is not None: pro.revision = revision with transaction.atomic(): pro.save() InternalAPI.update_resource_and_roles_relationship( RS_PRO, pro.id) return True, None, pro except Exception as e: return False, str(e)
def create(user, organization_id, name, description=None, vars=None): try: pm_list = InternalAPI.get_user_permissions_on_resource( user, RS_ORG, organization_id ) if not pm_list.get(PM_CREATE_INVENTORY): return False, ARK_ERRMSG_CONTENT[1201] org = Organization.objects.get(id=organization_id) if not name or len(name)<4 or len(name)>32: return False, '名称长度必须为4~32个字符' if Inventory.objects.filter(name=name, organization=org).exists(): return False, '组织中已存在同名仓库' inv = Inventory(name=name, organization=org) if description is not None: if len(description) > 128: return False, '描述长度必须小于等于128个字符' inv.description = description if vars is not None: if vars != '': try: tmp_vars = json.loads(vars) if not isinstance(tmp_vars, dict): return False, '变量必须为对象形式的数据' except json.decoder.JSONDecodeError: return False, '变量必须为JSON格式的数据' inv.vars = vars with transaction.atomic(): inv.save() InternalAPI.update_resource_and_roles_relationship( RS_INV, inv.id ) return True, None except Exception as e: return False, str(e) if settings.DEBUG else '未知的错误'
def create(user, name, description=None): try: pm_list = InternalAPI.get_user_permissions_on_resource( user, RS_SYS) if not pm_list[PM_CREATE_ORGANIZATION]: return False, ARK_ERRMSG_CONTENT[1201] if name == None or len(name) == 0: return False, '组织名字不能为空' org = Organization(name=name) if description is not None: org.description = description with transaction.atomic(): org.save() InternalAPI.update_resource_and_roles_relationship( RS_ORG, org.id) return True, None, org.id except Exception as e: return False, str(e)
def create(user, project_id, inventory_id, name, playbook, job_tags, job_type, description=None, limit=None, forks=None, verbosity=None, extra_variables=None, allow_callback=None): try: # everybody can create template pm_list = InternalAPI.get_user_permissions_on_resource( user, RS_PRO, project_id) if not pm_list[PM_USE_PROJECT_IN_JOB]: return False, ARK_ERRMSG_CONTENT[1201] pm_list = InternalAPI.get_user_permissions_on_resource( user, RS_INV, inventory_id) if not pm_list[PM_USE_INVENTORY_IN_JOB]: return False, ARK_ERRMSG_CONTENT[1201] pro = Project.objects.get(id=project_id) inv = Inventory.objects.get(id=inventory_id) if pro.organization != inv.organization: return False, 'cannot create template across organizations' tem = JobTemplate(name=name, playbook=playbook, job_tags=job_tags, job_type=job_type, project=pro, inventory=inv) if description is not None: tem.description = description if limit is not None: tem.limit = limit if forks is not None: tem.forks = forks if verbosity is not None: tem.verbosity = verbosity if extra_variables is not None: if extra_variables != '': try: tmp_vars = json.loads(extra_variables) if not isinstance(tmp_vars, dict): return False, '变量必须为对象形式的数据' except json.decoder.JSONDecodeError: return False, '变量必须为JSON格式的数据' tem.extra_variables = extra_variables if allow_callback is not None: tem.allow_callback = allow_callback with transaction.atomic(): tem.save() InternalAPI.update_resource_and_roles_relationship( RS_TEM, tem.id) return True, None except Exception as e: return False, str(e)