Home > Heat, OpenStack, 云计算 > 2.3 水乳交融的HOT和Resource type Python类 — OpenStack Heat从入门到实践

2.3 水乳交融的HOT和Resource type Python类 — OpenStack Heat从入门到实践

September 23rd, 2015      Leave a comment Go to comments
 
水乳交融的HOT和Resource type Python类 —— OpenStack Heat从入门到实践
 
 
1. YAML和Python类是怎么关联起来的?
创建一个虚拟机的命令是heat stack-create stack-vm-2015092101 -f /usr/lib/heat/qingcloud_heat_plugin/template/qingcloud_vm_stack.yaml
这个Heat命令是调用Python类server.py。那YAML和Python类是怎么关联起来的呢?
YAML里定义的resource type是“ COM::TwoFellows::Server”,Python里有如下mapping。
即“ COM::TwoFellows::Server” mapping到了QingCloudServer类,而这个类,正好就是server.py。
这样,-f后面YAML就能够指定由那个Python类来执行操作。
 
2. YAML怎么传值给Python类?
这里的properties是指类QingCloudServer,该类的properties image_id通过get_param获取YAML里parameters里的server_image_id
模板里的parameter server_image_id的值trustysrvx64e会根据如下定义“get_param”
传递给properties_schema里的IMAGE_ID.
IMAGE_ID表示’image_id’
然后,通过self.perperties[]获取到YAML模板的传值。
总结:YAML里的parameters根据get_param将值传递给resource class的properties。
 
3. Python类是怎么给YAML传值的?
使用stack-show命令可以查看resource的outputs。
outputs输出那些,是由YAML决定的。
instance_id的值是从server的attribute instance_id获取的。
server是什么?—— resource type COM::TwoFellows::Server的别称。
具体的获取方式,是由QingCloudServer类的方法_resolve_attribute决定的。
总结:resource type的outputs是由YAML模板决定,根据resource type的_resolve_attribute()获取后,通过get_attr传递给resource type。
 
这样,HOT和Resource type Python类水乳交融的关系就里清了。
 
 
更多《OpenStack Heat从入门到实践》系列文章,请关注
2)微信公众账号,Geek2014。
 
 
Categories: Heat, OpenStack, 云计算 Tags: , ,
  1. No comments yet.
  1. No trackbacks yet.