1. 运行数据表
- environment:环境定义,当前有效的运行上下文,对应Heat的Stack
- session:会话定义,用户编辑环境时的临时存储,支持服务的增量变更,是部署的前提准备;用户完成session编辑之后,对此session进行action
- task:引擎任务定义,session完成编辑后用户可以发起deploy,或者用户可以对指定环境的某个实体(entity)发起action,系统创建task记录,并分配一个引擎执行;执行完成后deploy或action的返回值或异常作为result连同task的启停时间记录在此表中;task完成之后,环境对象树序列化为description写回environment,并递增environment的version字段
- status:日志表,task运行过程中,各对象(entity_id)调用reporter接口打印信息到此表中
2. 构件数据表
- package:运行构件的存储表,包含了构件包实体archive及其动态UI定义ui_definition(对于Terraform构件自动根据Varible生成)
- class_definition:可被执行的类列表,MuranoPL及environment运行时根据本表找到其包含的对象所对应的运行实体
- category、package_to_category:构件的分类,每个构件都有其相应的自定义分类,比如TOSCA、Terraform、Suites、Services、Components,用于分类查看构件
- tag、package_to_tag:构件的标签,每个构件可以定义一组标签,可以是任意字符串,用于模糊搜索感兴趣的构件进行部署
3. 模型定义(description)
Attributes:
- [ $.string(), $.string(), $.string(), $.string() ] # [ object_id, class, key, value ]
Objects:
services: [ $.class(io.murano.Application) ]
name: $.string()
?:
classVersion: $.string()
type: io.murano.Environment
_actions: {} # dict of '${object_id}_${action}=>{enabled=>true, name=>${action}
ObjectsCopy: {} # copy of Objects last deployed
SystemData:
TrustId: $.string()
IssueAt: $.int()
运行数据表中的description定义了环境的模型(model),与Terraform的状态数据基本上是一样的,不过首次执行时是顶级模板对象及其相应的输入值,对应Terraform的workspace
Objects是当前要部署的环境定义,对应Terraform的tfstate,部署过程中引擎会定时将当前运行状态序列化之后存入数据库
ObjectsCopy是上次部署的环境定义,对应Terraform的tfstate.backup,部署结束时引擎将环境的上次终态定义序列化保存于此
Objects的serivces数据组织结构如下图所示,一个environment的services由多个应用package(包含动态UI定义的包)构成,而这些package的动态UI里会定义一个多层实体(entity)模板,每个实体又可以由对应的实现类定义多个action供用户使用(environment对象io.murano.Environment是预定义的默认实体,是一切实体的根,其他实体都挂接在envronment下,必要时可以考虑由其他继承自io.murano.Environment的environment类替代)
Attributes是持久化的实体(entity)内部数据,不在API接口上呈现,而Objects是可以通过API接口查询的实体(entity)外部数据
4. 动态UI定义
参见动态UI定义规范,每个构件在放入环境准备部署时,自动生成输入表单,提示用户输入相应的值,并构造初始模板对象,模板对象在部署完成后会删除自己,只留下模板包含的对象列表放置在services里
标签:定义,environment,Terraform,Murano,构件,设计,数据,action,string From: https://www.cnblogs.com/chenyujie/p/16723204.html