示例#1
0
class VMGenerateApprovalOrd(models.Model):
    """
    vmware申请数据
    """
    approval = models.ForeignKey("VMGenerateApproval", related_name='vm_generate_ord')
    env_type = models.CharField(_("环境类型"), max_length=64)

    apply_deploy_place = models.CharField(_("部署地点"), max_length=64, null=True, blank=True)
    apply_os_version = models.CharField(_("系统版本"), max_length=64, null=True, blank=True)
    apply_node_type = models.CharField(_("节点类型"), max_length=64, null=True, blank=True)
    apply_network_area = models.CharField(_("网络区域"), max_length=64, null=True, blank=True)
    apply_application = JsonField(default=[])
    apply_software = JsonField(default=[])
    apply_cpu = models.SmallIntegerField()
    apply_memory_gb = models.IntegerField()
    apply_disk_gb = models.IntegerField()

    apply_expiration = models.CharField(max_length=64, null=True, blank=True)
    apply_system = JsonField(_("操作系统"), default={})
    apply_filesystem = JsonField(_("文件系统"), default={})

    class Meta:
        verbose_name = "申请工单表"
        verbose_name_plural = verbose_name

    def __str__(self):
        return "%s的详细表单" % (self.approval.approval_number)
示例#2
0
class NodeInstance(models.Model):
    """
    节点任务实例
    """
    STATUS = [
        (0, _('开始')),
        (1, _('参数赋值')),
        (2, _('开始执行')),
        (3, _('执行完毕')),
        (4, _('输出参数回填')),
        (5, _('结束')),
        (6, _('异常')),
    ]
    node_instance_name = models.CharField(u"节点实例名称",
                                          max_length=255,
                                          null=True,
                                          blank=True)
    blue_instance = models.ForeignKey(BlueInstance,
                                      related_name='node_instance',
                                      null=True,
                                      on_delete=models.SET_NULL)
    node_input_entrance = JsonField(u"节点输入口", default={})
    blue_node = models.ForeignKey(BlueNodeDefinition,
                                  null=True,
                                  on_delete=models.SET_NULL)
    status = models.SmallIntegerField(choices=STATUS, default=0)
    node_returns = JsonField(default={})
    url = models.CharField(max_length=255, null=True, blank=True)
    startTime = models.DateTimeField(auto_now_add=True)
    endTime = models.DateTimeField(null=True, blank=True)
示例#3
0
class BluePrintDefinition(BlueComponentEntityDefinition):
    """
    蓝图定义表
    """
    KEEP_STATUS = {
        (0, _('草稿')),  # 初始状态
        (1, _('已保存')),  # 保存蓝图后状态
    }
    VALID_STATUS = {(0, _('未验证')), (1, _('蓝图有效')), (2, _('蓝图无效'))}
    category = models.ForeignKey(BlueCategory,
                                 null=True,
                                 on_delete=models.SET_NULL)
    is_valid = models.SmallIntegerField(choices=VALID_STATUS,
                                        default=0,
                                        null=True)  # 手工维护
    created_user = models.ForeignKey(ExUser,
                                     on_delete=models.SET_NULL,
                                     null=True)
    tmp = models.IntegerField(null=True, default=None)
    keep_status = models.SmallIntegerField(choices=KEEP_STATUS, default=0)
    input = JsonField(default={})
    output = JsonField(default={})
    is_verify = models.BooleanField(default=False)  # 验证节点参数
    link_data = JsonField(default={})
    avaliable_node_sort = JsonField(default=[])  # 节点执行顺序

    def __str__(self):
        return self.name
示例#4
0
class VMGenerateApproveOrd(models.Model):
    """
    vm生成审批表数据
    """
    approve = models.ForeignKey("VMGenerateApprove", related_name='vm_generate_approve_ord')
    env_type = models.CharField(_("环境类型"), max_length=64)

    deploy_location = models.CharField(_("部署地点"), max_length=64, null=True, blank=True)
    appro_os_version = models.CharField(_("系统版本"), max_length=64, null=True, blank=True)
    node_type = models.CharField(_("节点类型"), max_length=64, null=True, blank=True)
    network_area = models.CharField(_("网络区域"), max_length=64, null=True, blank=True)
    application = JsonField(default=[])
    software = JsonField(default=[])
    target_cpu_cores = models.SmallIntegerField()
    target_mem_gb = models.IntegerField()
    add_datadisk_gb = models.IntegerField()
    expiration = models.CharField(max_length=64, null=True, blank=True)
    system_type = JsonField(_("操作系统"), default={})
    apply_filesystem = JsonField(_("文件系统"), default={})
    # 用户自定义软件挂载点和所需磁盘空间大小
    custom_path = JsonField(default={})
    custom_disk = JsonField(default={})
    custom_add_path = JsonField(default={})
    appro_resource = JsonField(default=[])
    configuration_resource_information = JsonField(_('配置资源信息'), default={})
示例#5
0
class System(models.Model):
    """
    应用系统表
    """
    name = models.CharField(max_length=20)
    full_name = models.CharField(max_length=100)
    primary_dev = models.CharField(max_length=100, null=True)
    other_dev = JsonField(default=[])
    primary_op = models.CharField(max_length=100, null=True)
    other_op = JsonField(default=[])
    app_level = models.CharField(max_length=20, default='')
    dr_level = models.CharField(max_length=20, default='')
    topo_graph = models.TextField(null=True)
示例#6
0
class BlueEngineTask(models.Model):
    blue_instance_number = models.CharField(_("蓝图实例编号"),
                                            max_length=255,
                                            null=True,
                                            blank=True)
    blue_engine_log = models.TextField()
    access_module_key = models.CharField(_("接入模块KEY"),
                                         max_length=255,
                                         null=True,
                                         blank=True)
    blue_print_id = models.SmallIntegerField(_("蓝图定义"), null=True, blank=True)
    user = models.ForeignKey(to=ExUser,
                             null=True,
                             blank=True,
                             on_delete=models.SET_NULL)
    task_progress = models.CharField(_("进度"),
                                     max_length=64,
                                     null=True,
                                     blank=True)
    result_data = JsonField(default={})
    startTime = models.DateTimeField(auto_now_add=True)
    task_elapsed_time = models.CharField(_("任务耗时"),
                                         max_length=64,
                                         null=True,
                                         blank=True)
示例#7
0
class BlueInstance(models.Model):
    """
    蓝图实例表
    """
    STATUS = [
        (0, _('开始')),
        (1, _('运行中')),
        (2, _('已完成')),
        (3, _('异常')),
    ]
    blue_instance_number = models.CharField(u"蓝图实例编号",
                                            unique=True,
                                            max_length=255,
                                            null=True,
                                            blank=True)
    blue_print = models.ForeignKey(BluePrintDefinition,
                                   null=True,
                                   on_delete=models.SET_NULL)
    user = models.ForeignKey(ExUser, null=True,
                             on_delete=models.SET_NULL)  # 申请人
    status = models.SmallIntegerField(choices=STATUS, default=0)
    avaliable_node_sort = JsonField(default=[])  # 节点执行顺序
    startTime = models.DateTimeField(auto_now_add=True)
    endTime = models.DateTimeField(null=True, blank=True)
    current_node = models.ForeignKey(BlueNodeDefinition,
                                     null=True,
                                     on_delete=models.SET_NULL,
                                     default=None)
示例#8
0
文件: models.py 项目: caijb007/itmsp
class ServerParamsMG(models.Model):
    CH_SETTING_TYPE = (
        ('SELECT', '下拉参数'),
        ('INPUT', '输入参数')
    )
    server_id = models.SmallIntegerField(verbose_name=_("所属服务"))
    params_type = models.CharField(_("参数类型"), max_length=64, choices=CH_SETTING_TYPE)

    params_name = models.CharField(_("参数简称"), max_length=64, help_text="英文,与页面名称保持一致")
    parent_id = models.SmallIntegerField(_('父级ID'), help_text='用于区分级别', null=True, blank=True)
    params_name_display = models.CharField(_("参数名称"), max_length=255, help_text="中文,与页面名称保持一致",
                                           null=True, blank=True)
    values_en = models.CharField(_("参数值"), max_length=100, help_text="英文标识符,不可修改", null=True, blank=True)
    values_display = models.CharField(_("显示值"), max_length=255, help_text="中文,可修改", null=True, blank=True)
    param_option = JsonField(_("参数额外字段"), default={})
    param_comment = models.TextField(_("参数注释"), null=True, blank=True)
    is_editable = models.BooleanField(default=True, help_text="默认为可修改")

    class Meta:
        verbose_name = '服务参数'

        # unique_together = ('server', 'params_type', 'name', 'values')

        # unique_together = ('server_id', 'params_type', 'params_name', 'values_en')

    def __str__(self):
        # queryset = self.objects.filter(parent_id=None)
        # return queryset.values("params_name_display", "params_name")
        return "%s-%s-%s" % (self.params_name_display, self.params_name, self.values_display)
示例#9
0
文件: models.py 项目: caijb007/itmsp
class ServerParams(models.Model):
    CH_SETTING_TYPE = (
        ('SELECT', '选择参数'),
        ('INPUT', '输入参数')
    )
    CH_INTERFACE_TYPE = (
        ('INT','整形'),
        ('STR', '字符串'),
        ('LIST', '列表/数组'),
        ('DICT', '字典')
    )
    PARAMS_PURPOSE_TYPE = (
        ('PAGE_PARAM', '页面'),
        ('INTERFACE_PARAM', '接口')
    )
    server_id = models.SmallIntegerField(verbose_name=_("所属服务"))
    params_type = models.CharField(_("参数类型"), max_length=64)
    params_purpose = models.CharField(_("参数用途"), max_length=64, choices=PARAMS_PURPOSE_TYPE, default='PAGE_PARAM')
    params_name = models.CharField(_("参数简称"), max_length=100, help_text="英文,与页面名称保持一致", unique=True)
    params_name_display = models.CharField(_("参数名称"), max_length=255, help_text="中文,与页面名称保持一致",
                                           null=True, blank=True)
    param_option = JsonField(_("参数额外字段"), default={})
    param_comment = models.TextField(_("参数注释"), null=True, blank=True)
    is_editable = models.BooleanField(default=True)
    class Meta:
        verbose_name = '服务参数'
        verbose_name_plural = verbose_name

    def __str__(self):
        return "%s_%s" % (self.params_name_display, self.params_name)
示例#10
0
class VMGenerateApproval(models.Model):
    """
    vmware资源申请表
    """
    APPROVAL_STATUS = (
        (0, u"未提交/退回"),
        (1, u"已提交"),
        (2, u"已审批"),
        (3, u"处理中"),
        (4, u"已完成"),
        (-1, u"错误未处理"),
    )
    title = models.CharField(_("申请标题"), max_length=64, null=True, blank=True)
    approval_number = models.CharField(_("申请编号"), max_length=100, null=True, blank=True)
    status = models.SmallIntegerField(choices=APPROVAL_STATUS, default=0)
    # deploy_place = models.CharField(_("部署地点"), max_length=64)
    env_type = models.CharField(_("环境类型"), max_length=64, null=True, blank=True)
    # os_type = models.CharField(_("操作系统"), max_length=64)
    applicant = models.ForeignKey(verbose_name=_("申请人"), to=ExUser, null=True, blank=True)
    apply_msg = models.TextField(_("申请信息"), null=True, blank=True)
    apply_date = models.DateTimeField(_(u"申请时间"), default=now, help_text="默认时间为创建时间")
    workflow_number = models.CharField(_("所属流程编号"), max_length=255, null=True, blank=True)
    blue_ins_number = models.CharField(_("所属蓝图实例编号"), max_length=255, null=True, blank=True)
    map_relation = JsonField(_("映射关系"), default={})

    @property
    def status_display(self):
        return self.get_status_display()

    def __str__(self):
        return self.approval_number
示例#11
0
文件: models.py 项目: caijb007/itmsp
class WorkflowLog(models.Model):
    pInstance_number = models.CharField(_("流程实例编号"), max_length=64)
    suggestion = models.CharField(_("处理意见"),
                                  max_length=1000,
                                  null=True,
                                  blank=True)
    participant = models.CharField(_('处理人'),
                                   max_length=50,
                                   blank=True,
                                   null=True)
    taskInstanceId = models.CharField(_('当前任务实例id'),
                                      max_length=32,
                                      blank=True,
                                      null=True)
    intervene_type_id = models.IntegerField(_('记录类型'),
                                            default=0,
                                            help_text='0.申请记录,1.审批记录',
                                            null=True,
                                            blank=True)
    business_data = JsonField(default=[])
    business_map_relation = JsonField(default=[])
    business_blue_info = JsonField(default={}, null=True, blank=True)

    creator = models.CharField(_(u'创建人'),
                               max_length=50,
                               help_text="关联的是user",
                               null=True,
                               blank=True)
    createTime = models.DateTimeField(_(u"创建时间"), auto_now_add=True)
    updateTime = models.DateTimeField(_(u"更新时间"),
                                      null=True,
                                      blank=True,
                                      auto_now=True)
    is_deleted = models.BooleanField(_(u'已删除'), default=False)

    class Meta:
        verbose_name = '实例流转操作日志'
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.pInstance_number
示例#12
0
class VMGenerateApprove(models.Model):
    APPROVE_STATUS = (
        (0, u"未提交/退回"),
        (1, u"已提交"),
        (2, u"已审批"),
        (3, u"处理中"),
        (4, u"已完成"),
        (-1, u"错误未处理"),
    )
    title = models.CharField(_("审批标题"), max_length=64, null=True, blank=True)
    blue_ins_number = models.CharField(_("所属蓝图实例编号"), max_length=255, null=True, blank=True)
    approval_number = models.CharField(_("申请编号"), max_length=100, null=True, blank=True)
    approve_number = models.CharField(_("审批编号"), max_length=100, null=True, blank=True)
    workflow_number = models.CharField(max_length=100, null=True, blank=True)
    workflow_note_ins_id = models.SmallIntegerField(null=True, blank=True)
    status = models.SmallIntegerField(choices=APPROVE_STATUS, default=0)
    # deploy_place = models.CharField(_("部署地点"), max_length=64)
    # env_type = models.CharField(_("环境类型"), max_length=64)
    # os_type = models.CharField(_("操作系统"), max_length=64)
    aprover = models.CharField(verbose_name=_("审批人"), max_length=64, null=True, blank=True)
    approve_msg = models.TextField(_("审批信息"), null=True, blank=True)
    approve_date = models.DateTimeField(_(u"审批时间"), default=now, help_text="默认时间为创建时间")
    approve_result = JsonField(_("审批结果"), default={})
    map_relation = JsonField(_("映射关系"), default={})
示例#13
0
文件: models.py 项目: caijb007/itmsp
class ServerMatchingRule(models.Model):
    CH_MATCHING_TYPE = (
        ('AND', '和'),
        ('OR', '或')
    )
    # param = models.ForeignKey(verbose_name=_("参数对象"), to=ServerParams, related_name="server_matching_rule", null=True,
    #                           blank=True)
    # param_name = models.CharField(_("参数名称"), max_length=64, null=True, blank=True)
    param_id = models.SmallIntegerField(_("参数ID"))
    param_of_server_id = models.SmallIntegerField(_("参数来源服务"), null=True, blank=True)
    param_value_id = JsonField(_("参数值ID"), default=[])
    # param_value = JsonField(_("参数值"), default=[])
    comment = JsonField(_("备注"), default={})

    param_matching_pattern = models.CharField(_("参数匹配方式"), max_length=64, choices=CH_MATCHING_TYPE, default="AND",
                                              null=True, blank=True)

    class Meta:
        verbose_name = "服务参数匹配规则"
        verbose_name_plural = verbose_name
        # unique_together = ("param_name", "param_value")
    def __str__(self):
        ins = ServerParams.objects.filter(id=self.param_id).first()
        return "%s的匹配规则" % (ins.params_name_display)
示例#14
0
class BlueAccessModuleParamsInstance(models.Model):
    access_module_key = models.CharField(_("接入模块KEY"),
                                         max_length=255,
                                         null=True,
                                         blank=True)
    blue_print = models.SmallIntegerField(_("蓝图定义"), null=True, blank=True)
    blue_instance_number = models.CharField(_("蓝图实例编号"),
                                            max_length=255,
                                            null=True,
                                            blank=True)
    user = models.ForeignKey(to=ExUser,
                             null=True,
                             blank=True,
                             on_delete=models.SET_NULL)
    business_data = JsonField(_("业务数据"), default={})
    startTime = models.DateTimeField(auto_now_add=True)
示例#15
0
文件: models.py 项目: caijb007/itmsp
class MatchedCondition(models.Model):
    matching_rule = models.ForeignKey(verbose_name=_("匹配条件的匹配对象"), to=ServerMatchingRule,on_delete=models.CASCADE,
                                      related_name="matched_condition", null=True, blank=True)
    matching_param = models.ForeignKey(verbose_name=_("匹配参数对象"), to=ServerParams, on_delete=models.SET_NULL,
                                       related_name="matching_param_condition", null=True, blank=True)
    # matching_param_value = models.CharField(_("匹配条件参数值"), max_length=64, null=True, blank=True)
    matching_param_value_id = models.SmallIntegerField(_("匹配条件参数值ID"), null=True, blank=True)
    comment = JsonField(_("备注"), default={})

    class Meta:
        verbose_name = "服务参数匹配条件"
        verbose_name_plural = verbose_name

    def __str__(self):
        ins = ServerParams.objects.filter(id=self.matching_rule.param_id).first()
        return "%s匹配规则的条件" % (ins.params_name_display)
示例#16
0
class TaskInstance(models.Model):
    # taskInstanceId = models.IntegerField(_(u"任务实例ID"))
    id = models.AutoField(_("任务实例ID"), primary_key=True)
    pInstanceId = models.ForeignKey(to=ProcessInstance,
                                    verbose_name="对应的流程实例",
                                    related_name="task_instance")
    pDefinitionId = models.ForeignKey(to=ProcessDefinition,
                                      verbose_name="流程定义的名称")
    # businessKey = models.CharField(u"业务数据主键", max_length=64)
    # businessKey = models.ForeignKey(to=BusinessInfo, null=True, blank=True)
    businessKey = models.CharField(verbose_name="业务主键",
                                   null=True,
                                   blank=True,
                                   max_length=64)
    tDefinitionId = models.ForeignKey(to=TaskDefinition, verbose_name="任务定义")
    taskName = models.CharField(u"任务名称", max_length=64)
    taskNode = models.ForeignKey(to=TaskNode,
                                 verbose_name="对应流程节点名称",
                                 null=True,
                                 blank=True)
    assignee = JsonField(default=[])
    startTime = models.CharField(u"开始时间",
                                 max_length=80,
                                 default=now,
                                 help_text="默认为当前时间",
                                 null=True,
                                 blank=True)
    endTime = models.CharField(u"结束时间", null=True, blank=True, max_length=80)
    duration = models.IntegerField(u"任务执行时长",
                                   null=True,
                                   blank=True,
                                   help_text="任务执行时长,单位毫秒")
    taskStatus = models.PositiveIntegerField(
        u"任务执行状态",
        default=0,
        help_text="任务状态0:任务未开启;1:任务开启中,2 任务执行成功,3:任务执行失败")
    comment = models.CharField(u"备注", max_length=500, null=True, blank=True)

    # is_deleted = models.BooleanField(u"任务是否删除", default=False, help_text="默认不删除")

    class Meta:
        verbose_name = "任务实例"
        verbose_name_plural = verbose_name

    def __str__(self):
        return str(self.id)
示例#17
0
文件: models.py 项目: caijb007/itmsp
class ExGroup(Group):
    """
    自定义扩展组模型
    """
    MEM_TYPE_CHOICES = (
        ('staff', 'Staff'),
        ('service', 'Service'),
    )
    comment = models.CharField(max_length=160, blank=True, null=True)
    member_type = models.CharField(max_length=10,
                                   choices=MEM_TYPE_CHOICES,
                                   default='staff')
    managers = models.ManyToManyField('ExUser',
                                      related_name="mana_group_set",
                                      related_query_name="mana_group")
    # managers = models.ManyToManyField('ExUser', through="Membership")
    menu = JsonField(default=[])
示例#18
0
class BlueNodeDefinition(models.Model):
    """
    蓝图节点表(接口)
    """
    blue_print = models.ForeignKey(BluePrintDefinition,
                                   related_name="blue_nodes")
    name = models.CharField(max_length=100, default=None)  # 填写接口name
    key = models.CharField(max_length=10, default=None,
                           null=True)  # 前段需要显示字段, 保存当前id
    is_verify = models.BooleanField(default=False)  # 验证节点参数
    is_maintain = models.BooleanField(default=False)  # 是否维护中
    component_type = models.SmallIntegerField(choices=COMPONENT_TYPE,
                                              default=0)  # 组件类型
    component_data = JsonField(default={})
    downstream_node = models.ManyToManyField("BlueNodeDefinition",
                                             related_name="down_nodes",
                                             blank=True)
    create_time = models.DateTimeField(auto_now_add=True)
    update_time = models.DateTimeField(null=True, auto_now=True)

    def __str__(self):
        return self.name
示例#19
0
class J2TemplFile(models.Model):
    """
    Jinja2模板实例表
    """
    src = models.CharField(max_length=100)
    dest = models.CharField(max_length=100)
    host = models.CharField(max_length=20)
    owner = models.CharField(max_length=20, null=True)
    group = models.CharField(max_length=20, null=True)
    mode = models.CharField(max_length=20, null=True)
    var_dict = JsonField(default={})

    @property
    def file_attr(self):
        dc = dict()
        if self.owner:
            dc['owner'] = self.owner
        if self.group:
            dc['group'] = self.group
        if self.mode:
            dc['mode'] = self.mode
        return dc
示例#20
0
class DataDict(models.Model):
    """
    应用参数及动态表单选项
    """
    CH_SETTING_TYPE = (
        ('PARAM', 'parameter'),
        ('OPTION', 'field options')
    )
    app = models.CharField(max_length=20)
    setting_type = models.CharField(max_length=20, choices=CH_SETTING_TYPE)
    name = models.CharField(max_length=100)
    value = models.CharField(max_length=100)
    display = models.CharField(max_length=255, null=True)
    ext_attr = JsonField(default={})

    objects = models.Manager()
    params = ParamManager()
    options = OptionManager()

    class Meta:
        unique_together = ('app', 'setting_type', 'name', 'value')

    def __unicode__(self):
        return "_%s_%s_%s" % (self.app, self.setting_type, self.name)