如何使用murano的PL语言

本文介绍了如何使用Murano的PL语言进行应用部署。Murano包包含Application和Library,其中UI目录用于生成表单,Resource目录存储脚本,Classes目录的yaml文件是用Murano PL描述的类。Murano PL语言具有特定的语法约束,包括类型声明、作用域、赋值方式等,并提供了丰富的内置方法。文章还提到了安装Murano的步骤和调试方法。
摘要由CSDN通过智能技术生成

声明:
本博客欢迎转载,但请保留原作者信息!
作者:柯晓东
团队:华为杭州OpenStack团队

最近在用Murano来部署应用,关于Murano包及PL语言的使用,这里总结一下,便于后来者。

先说Murano包,典型的Murano包如下图所示。含有UI的称为Application,它能继承library,但是不能被其他Application继承了。library不含UI,一般是平台提供,里面含有丰富的公共方法和属性。
这里写图片描述

UI目录 下放能自动生成表单的yaml文件。Murano之所以好用,是因为含有用文本描述的UI,以此可以在新接入一个组件时UI的活由新组件提供,非常适合平台和服务解耦。Murano通过yaml描述的UI也不是什么都能体现。指定某个输入框一定要输入字符串或一定要有值,这它是能做到的。但是下面这种场景它做不到:某radio button的值,为A时,几个输入框必须输入;为B时,同样的几个输入框可以不输入。
UI支持数字、字符串、布尔型,是否必选等基本类型,还支持通过glance、neutron选择镜像、虚拟网络,但是不支持选择物理主机。它支持的类型如下:

类型 说明
string Django 字符串类型
boolean Django 布尔类型
text Django 文本类型
integer Django 数字类型
password 秘密类型
clusterip 集群IP
floatingip 外网Ip
domain 域名
table 表格
flavor 规格
keypair 密钥对
image 镜像
azone availability zoom
imageType 仅为镜像提供的属性


Resource目录 下放的是各式各样的脚本,这部分基本都和服务的实现有关。例如运行态的动态配置脚本,数据转换脚本等。

Classes目录 下放的是核心的yaml描述的部署文件。这些yaml就是用murano PL语言描述的类。这是这次介绍的核心部分。

Murano PL的类分为这么几部分:
1. 类名声明
2. 继承声明
3. 属性声明
4. 方法实现
前两部分和其他语言一样,就略过了。

属性声明的地方,主要涉及给变量起了名字后,要写什么类型,作用范围。如下图是典型的属性声明的代码段:
这里写图片描述

这里的Contract表示类型声明,下表是所有可用的类型:

类型 说明
$.int() 整形
$.string() 字符串
$.string().notNull() 非空字符串
$.bool() 布尔类型(true/false) 0会被转为false,其他转为true
$.class(ns:ClassName)
$.class(ns:ClassName).notNull() 非空类
$.class(ns:Name).check($.p = 12) 类,并且含有名为p的属性,且值为12
$.template(ns:ClassName) 模板声明,一般用于脚本调用使用
[$.int()] 数组
[$.int().notNull()] 数组
[$.string()] 数组
[$.int().check($ > 0)] 正数的数组
[$.int(), 2] 数组长度至少为2
[$.int(), 2, 5] 数组长度至少为2,至多为5
{ A: $.int(), B: [$.string()] } 字典,key是int,value是字符串


Usage是用来声明作用域,可填的值如下:

属性类型 说明
In 输入参数,该参数只能通过UI设置,不能在MuranoPL代码里面修改。这是类属性的默认类型。
Out 输出参数,该参数只能在MuranoPL代码里面修改,不能通过UI设置。
InOut
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值