首页 > 其他分享 >Murano数据设计

Murano数据设计

时间:2022-09-23 16:33:37浏览次数:72  
标签:定义 environment Terraform Murano 构件 设计 数据 action string

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

相关文章

  • layui 数据表格使用python django提供的数据接口
    数据库新建表 fromdjango.dbimportmodels#Createyourmodelshere.classHost(models.Model):hostname=models.CharField(max_length=32,verbose_name......
  • 设计模式_装饰模式
    先看个例子:你买了一辆爱车,现在想给车子增加装饰? 定义汽车行为接口【IBaoMa】,定义方法【startEngine】,【switchOnLights】,【start】。   定义爱车类【LoveCars】,实......
  • list对象中的数据如何去重呢?
    下文笔者讲述list对象的去重方法分享,list的实现类是我们存储数据的容器,当里面存储的对象存在重复值时,我们该如何对其进行去重操作呢?下文笔者将一一道来,首先我们需了解对......
  • ABAP链接FTP把txt文件数据获取到内表
    啥都不说,直接上代码*******如果无法链接FTP,可能需要往表SAPFTP_SERVERS加入IP地址和端口(21)即可DATA:p_hostTYPEchar64VALUE'IP',"IPp_unameTYPEc......
  • 我眼中的大数据(三)——MapReduce
    ​这次来聊聊Hadoop中使用广泛的分布式计算方案——MapReduce。MapReduce是一种编程模型,还是一个分布式计算框架。MapReduce作为一种编程模型功能强大,使用简单。运算内容......
  • 简化数据结构的初始化过程
    避免在每新建类时,都要重复实现构造器,因此可以定义一个公共基类,在基类中实现实例属性的初始化规则,此后在派生类中,只需要指定属性字段即可1classInit:2_fields=......
  • vue收集表单数据给后端交互
    vue项目中需要收集表单数据给后端发送请求进行交互:查看代码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compa......
  • mybatis-plus使用selectPage查询数据时,total为0 的解决方案
    1:问题描述项目迁移,原本正常的mp的分页坏了,经过调试发现是total参数没有  2:原因这是mp需要设置分页拦截器才能生效的,所以只要注入一下拦截器即可3:解决把这段代码放......
  • 业务数据治理体系化思考与实践
    https://tech.meituan.com/2022/05/12/business-data-governance.html  ......
  • 【设计模式】之策略模式
    场景引入假如你在A城市,要去B城市旅游,交通方式有以下几种选择:驾车火车飞机不难写出这样的代码:voidtransport(stringmethod){if(method=="drive"){......