Project Update - Heat
Mon 8 , 5:30pm-6:10pm
Hynes Convention Center - Level 2 - MR 203
Heat- Project Onboarding
Tue 9 , 2:00pm-3:30pm
Hynes Convention Center - Plaza Level - MR 105
Large Orchestration stacks
Wed 10 , 5:20pm-6:00pm
Hynes Convention Center - Plaza Level - MR 104
Heat - Project Onboarding
Rico Lin @ EasyStack
Zane Bitter @ Red Hat
Rabi Mishra (Ocata PTL), Thomas Herve (Newton PTL), Huang Tianhua, Peter Razumovsky, Sahdev Zala, Crag Wolfe,
Steve Baker, shizhihui, Kanagaraj Manickam, Dan Prince, Ethan Lynn, Cao Xuan Hoang, Steven Hardy, Flavio Percoco
Premoli, Jason Dunsmore, Dmitriy, Ian Main, Sergey Kraynev, gengchc, Andreas Jaeger, Juan Antonio Osorio Robles,
Tuan, Mohankumar, zhufl, Yong Sheng Gong, Alex Schultz, Oleksii Chuprykov, Ha Van Tu, pawnesh kumar, Sam Yaple,
shangxdy, Sofer Athlan-Guyot, Chris, Tanvir Talukder, Rakesh, Bharath Thiruveedula, James Slagle, Csaba Fülöp, Miguel
Caballer, Anant Patil, Mathieu Velten, Yosef Hoffman, Michael Still, Georgy Dyuldin, Dan Radez, Zhenyu Zheng, Abhishek
Chanda, Tony Breeds, gecong, zhangyanxian, anusreea, Alexander Ignatyev, ChangBo Guo(gcb), Nam, Chuck Short, Béla
Vancsics, Davanum Srinivas, lvdongbing, Pierre Riteau, Daniel Gonzalez Nothnagel, Bhagyashri Shewale, Chason, Lars
Kellogg-Stedman, Ying Zuo, Bin Zhou, Julian Sy, Spencer Yu, WeiJi, prince_katiyar, Martin André, Tovin Seven, yunfeng
zhou, Jeremy Pugh, zengchen, Stephen Gordon, Jan Provaznik, surbhi sarda, Ana Krivokapić, Lu lei, Vijendra Soni,
liangshang, Liusheng, Tetiana Lashchova, LiuNanke, Rob Cresswell, Lucky samadhiya, Bertrand Lallau, avnish,
PanFengyun, Amit Ugol, Sylvain Baubeau, Russell Bryant, Drago Rosson, Anh Tran, Boden Russell, Leon Shaw, Sharat
Sharma, Qiming Teng, Di XiaoLi, Ashutosh Mishra
Ideas + blueprints/bugs + specs/patches + reviews
= Super !!!
And
Your Help Is Desired!
● Heat
● Python-heatclient
● Heat-agents
● Heat-templates
● Heat-specs
● Heat-cfnclient
● Heat-cfntools
● Heat-translator
● Tosca-parser
● Also alot of projects that relative
Heat repos
Heat Architecture
worker worker
YAML Template
Convergence
worker1 workerN
amqp
engine1 engineN
$ openstack stack create -t kubernetes.yaml
Stack
Stack
Stack
worker2
depends on
Stack
CREATE_COMPLETE!!
SyncPoint 1
Stack
engine1
Stack
Lagency
From Template to Resources
heat_template_version: pike
...
resources:
dog1:
type: OS::Sled::Dog
properties:
name: snow_white
…..
dog2:
type: OS::Sled::Dog
properties:
leader: { get_resource: dog1 }
…..
dog3:
…..
Create a stack and validate it
heat_template_version: pike
...
resources:
dog1:
type: OS::Sled::Dog
properties:
name: snow_white
…..
dog2:
type: OS::Sled::Dog
properties:
leader: { get_resource: dog1 }
…..
dog3:
…..
Stack
dog1
2 3 4 5
registered resource mapping:
OS::Sled::Dog: a class or another file
OS::Heat::Fire: OS::Heat::None
...
3. check and parse with
property schema.
class
4. if func. in side, call
function of the version
(pike)
5. got resource
object
2. get a class or files for
that resource
1. search mapping
implements base
on type
6. build dependenices
for resource
From a resource object to actually create
Stack
dog1
2 3 4 5
1. ask worker to
`check_resource`
2. call with
`create_convergence`
3. create with
`handle_create`
4. use service client with context from
heat to triger create
like: self.sled_dogs().create(*kwargs)
5. mark as CREATE
COMPLETE.
All resource go to `CREATE
COMPLETE`
Update the resource
Stack
dog1
2 3 4 5
1. Only will update
resources that
been changed
heat_template_version: pike
...
resources:
…..
dog2:
type: OS::Sled::Dog
properties:
leader: { get_resource: dog3 }
…..
2. worker check
resource
3. get original data
from database or
reality
4. update or replace
5. Mark as
Update/Create COMPLETE
Stack'
dog1
2.1 3 4 5
● support_status =
support.SupportStatus(version='9.0.0')
● entity = 'sled_dogs'
● default_client_name = 'sled'
● properties_schema
● attributes_schema
● _resolve_attribute
● parse_live_resource_data
● translation_rules
● handle_XXX
○ create
○ update
○ delete
○ suspend
○ resume
○ adopt
○ restore
○ snapshot
○ create_cancel
○ update_cancel
○ signal
○ metadata_reset
● check_XXX_complete
I need a new resource type
def resource_mapping():
return {
'OS::Sled::Dog': SledDog
}
Or in environment file:
source_registry:
"OS::Sled::Dog": "OS::Sled::Cat"
"OS::Sled::Puppy": "An URL or file"
Software Config
Software Deploy
Nova Server
What you can install with
heat-config-ansible
heat-config-apply-config
heat-config-cfn-init
heat-config-chef
heat-config-docker-cmd
heat-config-docker-compose
heat-config-hiera
heat-config-json-file
heat-config-kubelet
heat-config-puppet
heat-config-salt
heat-config-script
And you can customize your
own hook
os-collect-config
os-refresh-config
os-apply-config
kubelet-hook $ kubelet
Webserver
done
config-notify
Signal
CCFN_SIGNAL
TEMP_URL_SIGNAL
NO_SIGNAL
HEAT_SIGNAL
ZAQAR_SIGNAL
auto_scaling(auto_healing(server))
OS::Nova::Server
OS::Zaqar::Queu
e
OS::Aodh::EventAlarm
OS::Mistral::Workflow
OS::Zaqar::MistralTrigger
Signal
Fix
Meter
Trigger
OS::Heat::AutoScalingGroup
Auto_{what matters}
XXX::Server
XXX::Signal XXX::Alarm
XXX::Workflow
Signal
Meter
Trigger
XXX::AutoScaling
How you
metering?
How you
handle
signal?
How you
trigger a
fix job
What's
meter to
you?
Fix
● openstack stack event show <stack> <resource> <event>
● openstack stack resource show <stack> <resource>
● report a bug! https://bugs.launchpad.net/heat
● chat on irc #heat or join our meeting
● A reset botton?
And if anything went wrong
● openstack stack abandon <stack>
● openstack stack export <stack>
● openstack stack adopt --adopt-file <adopt-file> <stack-name>
● openstack stack snapshot create <stack>
● openstack stack snapshot restore <stack> <snapshot>
A Reset Button
● Consider backwards
● With Unittest
● synchronize
● review! review! review!
Hacking rules
● Python 3.5 support
● Neutron Segment resource for routed networks
● Neutron VLAN trunk ports (802.1Q)
● External custom resources managed by Mistral workflows
● New intrinsic functions: make_url, list_concat_unique
● Internal architecture improvements
● Stable attribute values (no live lookup) in convergence
● Memory & performance improvement for convergence
● Reliability improvements for large stacks
● [Preview] Optionally compare to actual state of resources during updates
Pike Roadmap
Questions?
https://github.com/openstack/heat
https://launchpad.net/heat
https://wiki.openstack.org/wiki/Heat
IRC: #heat
Our Meeting time:
Every Wednesdays at 1500 UTC
in #openstack-meeting-5
Large Orchestration stacks
Wed 10 , 5:20pm-6:00pm
Hynes Convention Center - Plaza Level -
MR 104
Thank You!https://github.com/openstack/heat
https://launchpad.net/heat
https://wiki.openstack.org/wiki/Heat
IRC: #heat
Our Meeting time:
Every Wednesdays at 1500 UTC
in #openstack-meeting-5
Large Orchestration stacks
Wed 10 , 5:20pm-6:00pm
Hynes Convention Center - Plaza Level -
MR 104

Heat project onboarding

  • 1.
    Project Update -Heat Mon 8 , 5:30pm-6:10pm Hynes Convention Center - Level 2 - MR 203 Heat- Project Onboarding Tue 9 , 2:00pm-3:30pm Hynes Convention Center - Plaza Level - MR 105 Large Orchestration stacks Wed 10 , 5:20pm-6:00pm Hynes Convention Center - Plaza Level - MR 104
  • 2.
    Heat - ProjectOnboarding Rico Lin @ EasyStack Zane Bitter @ Red Hat Rabi Mishra (Ocata PTL), Thomas Herve (Newton PTL), Huang Tianhua, Peter Razumovsky, Sahdev Zala, Crag Wolfe, Steve Baker, shizhihui, Kanagaraj Manickam, Dan Prince, Ethan Lynn, Cao Xuan Hoang, Steven Hardy, Flavio Percoco Premoli, Jason Dunsmore, Dmitriy, Ian Main, Sergey Kraynev, gengchc, Andreas Jaeger, Juan Antonio Osorio Robles, Tuan, Mohankumar, zhufl, Yong Sheng Gong, Alex Schultz, Oleksii Chuprykov, Ha Van Tu, pawnesh kumar, Sam Yaple, shangxdy, Sofer Athlan-Guyot, Chris, Tanvir Talukder, Rakesh, Bharath Thiruveedula, James Slagle, Csaba Fülöp, Miguel Caballer, Anant Patil, Mathieu Velten, Yosef Hoffman, Michael Still, Georgy Dyuldin, Dan Radez, Zhenyu Zheng, Abhishek Chanda, Tony Breeds, gecong, zhangyanxian, anusreea, Alexander Ignatyev, ChangBo Guo(gcb), Nam, Chuck Short, Béla Vancsics, Davanum Srinivas, lvdongbing, Pierre Riteau, Daniel Gonzalez Nothnagel, Bhagyashri Shewale, Chason, Lars Kellogg-Stedman, Ying Zuo, Bin Zhou, Julian Sy, Spencer Yu, WeiJi, prince_katiyar, Martin André, Tovin Seven, yunfeng zhou, Jeremy Pugh, zengchen, Stephen Gordon, Jan Provaznik, surbhi sarda, Ana Krivokapić, Lu lei, Vijendra Soni, liangshang, Liusheng, Tetiana Lashchova, LiuNanke, Rob Cresswell, Lucky samadhiya, Bertrand Lallau, avnish, PanFengyun, Amit Ugol, Sylvain Baubeau, Russell Bryant, Drago Rosson, Anh Tran, Boden Russell, Leon Shaw, Sharat Sharma, Qiming Teng, Di XiaoLi, Ashutosh Mishra
  • 3.
    Ideas + blueprints/bugs+ specs/patches + reviews = Super !!! And Your Help Is Desired!
  • 4.
    ● Heat ● Python-heatclient ●Heat-agents ● Heat-templates ● Heat-specs ● Heat-cfnclient ● Heat-cfntools ● Heat-translator ● Tosca-parser ● Also alot of projects that relative Heat repos
  • 5.
  • 6.
    Convergence worker1 workerN amqp engine1 engineN $openstack stack create -t kubernetes.yaml Stack Stack Stack worker2 depends on Stack CREATE_COMPLETE!! SyncPoint 1 Stack engine1 Stack Lagency
  • 7.
    From Template toResources heat_template_version: pike ... resources: dog1: type: OS::Sled::Dog properties: name: snow_white ….. dog2: type: OS::Sled::Dog properties: leader: { get_resource: dog1 } ….. dog3: …..
  • 8.
    Create a stackand validate it heat_template_version: pike ... resources: dog1: type: OS::Sled::Dog properties: name: snow_white ….. dog2: type: OS::Sled::Dog properties: leader: { get_resource: dog1 } ….. dog3: ….. Stack dog1 2 3 4 5 registered resource mapping: OS::Sled::Dog: a class or another file OS::Heat::Fire: OS::Heat::None ... 3. check and parse with property schema. class 4. if func. in side, call function of the version (pike) 5. got resource object 2. get a class or files for that resource 1. search mapping implements base on type 6. build dependenices for resource
  • 9.
    From a resourceobject to actually create Stack dog1 2 3 4 5 1. ask worker to `check_resource` 2. call with `create_convergence` 3. create with `handle_create` 4. use service client with context from heat to triger create like: self.sled_dogs().create(*kwargs) 5. mark as CREATE COMPLETE. All resource go to `CREATE COMPLETE`
  • 10.
    Update the resource Stack dog1 23 4 5 1. Only will update resources that been changed heat_template_version: pike ... resources: ….. dog2: type: OS::Sled::Dog properties: leader: { get_resource: dog3 } ….. 2. worker check resource 3. get original data from database or reality 4. update or replace 5. Mark as Update/Create COMPLETE Stack' dog1 2.1 3 4 5
  • 11.
    ● support_status = support.SupportStatus(version='9.0.0') ●entity = 'sled_dogs' ● default_client_name = 'sled' ● properties_schema ● attributes_schema ● _resolve_attribute ● parse_live_resource_data ● translation_rules ● handle_XXX ○ create ○ update ○ delete ○ suspend ○ resume ○ adopt ○ restore ○ snapshot ○ create_cancel ○ update_cancel ○ signal ○ metadata_reset ● check_XXX_complete I need a new resource type def resource_mapping(): return { 'OS::Sled::Dog': SledDog } Or in environment file: source_registry: "OS::Sled::Dog": "OS::Sled::Cat" "OS::Sled::Puppy": "An URL or file"
  • 12.
    Software Config Software Deploy NovaServer What you can install with heat-config-ansible heat-config-apply-config heat-config-cfn-init heat-config-chef heat-config-docker-cmd heat-config-docker-compose heat-config-hiera heat-config-json-file heat-config-kubelet heat-config-puppet heat-config-salt heat-config-script And you can customize your own hook os-collect-config os-refresh-config os-apply-config kubelet-hook $ kubelet Webserver done config-notify Signal CCFN_SIGNAL TEMP_URL_SIGNAL NO_SIGNAL HEAT_SIGNAL ZAQAR_SIGNAL
  • 13.
  • 14.
    Auto_{what matters} XXX::Server XXX::Signal XXX::Alarm XXX::Workflow Signal Meter Trigger XXX::AutoScaling Howyou metering? How you handle signal? How you trigger a fix job What's meter to you? Fix
  • 15.
    ● openstack stackevent show <stack> <resource> <event> ● openstack stack resource show <stack> <resource> ● report a bug! https://bugs.launchpad.net/heat ● chat on irc #heat or join our meeting ● A reset botton? And if anything went wrong
  • 16.
    ● openstack stackabandon <stack> ● openstack stack export <stack> ● openstack stack adopt --adopt-file <adopt-file> <stack-name> ● openstack stack snapshot create <stack> ● openstack stack snapshot restore <stack> <snapshot> A Reset Button
  • 17.
    ● Consider backwards ●With Unittest ● synchronize ● review! review! review! Hacking rules
  • 18.
    ● Python 3.5support ● Neutron Segment resource for routed networks ● Neutron VLAN trunk ports (802.1Q) ● External custom resources managed by Mistral workflows ● New intrinsic functions: make_url, list_concat_unique ● Internal architecture improvements ● Stable attribute values (no live lookup) in convergence ● Memory & performance improvement for convergence ● Reliability improvements for large stacks ● [Preview] Optionally compare to actual state of resources during updates Pike Roadmap
  • 19.
    Questions? https://github.com/openstack/heat https://launchpad.net/heat https://wiki.openstack.org/wiki/Heat IRC: #heat Our Meetingtime: Every Wednesdays at 1500 UTC in #openstack-meeting-5 Large Orchestration stacks Wed 10 , 5:20pm-6:00pm Hynes Convention Center - Plaza Level - MR 104
  • 20.
    Thank You!https://github.com/openstack/heat https://launchpad.net/heat https://wiki.openstack.org/wiki/Heat IRC: #heat OurMeeting time: Every Wednesdays at 1500 UTC in #openstack-meeting-5 Large Orchestration stacks Wed 10 , 5:20pm-6:00pm Hynes Convention Center - Plaza Level - MR 104