开发cloudify配方文件-配方的继承

Cloudify配方像面向对象一样可以使用继承。

为什么要继承

在很多时候我们可能想要创建一个基于已有服务的新服务,只需重写部分属性,而不需要复制已经存在的配方的相关内容。

Cloudify提供这种机制来允许开发者继承配方,新配方继承父配方,而只需要描述需要重写的部分。

继承如何工作

继承配方需要遵守下面规则:

  • 递归(Recursion继承机制是递归的,一个服务可以继承另一个服务,而另一个服务又是可以继承第三个服务的。
  • 继承(Inheritance

    继承对所有元素都有效,无论是顶层元素(如lifecycle),还是其他特定元素(lifecycle -> init

    例如,以下是一个父服务配方:

     

    service{

    name "myService"

    lifecycle {

    postStart

    init

    }

    }

    继承的服务配方可以添加preStop 事件处理,或者改变init 事件处理,并保存postStart 事件处理。如下:

     

    service{

    extend <myService path>

    lifecycle {

    init <my new init behavior>

    preStop

    }

    }

    怎样使用继承配方

  1. 在你的应用配方中创建一个新的服务配方文件,如 my-tomcat-service.groovy
  2. 在服务块中使用指定的URL来继承的extend 属性的值,如下:
     

    service {

    extend <path to service directory/recipe file>

    name "myNewService"

    }

     

注意:为了让继承可用,必须让extend属性放在服务块的第一属性的位置。

你可能感兴趣的:(Cloudify,配方参数)