{"id":9321,"date":"2015-11-25T11:50:42","date_gmt":"2015-11-25T09:50:42","guid":{"rendered":"http:\/\/blog.zhaw.ch\/icclab\/?p=9321"},"modified":"2015-12-01T10:58:31","modified_gmt":"2015-12-01T08:58:31","slug":"openstack-heat-plugin-for-apache-cloudstack","status":"publish","type":"post","link":"https:\/\/blog.zhaw.ch\/icclab\/openstack-heat-plugin-for-apache-cloudstack\/","title":{"rendered":"OpenStack Heat plugin for Apache CloudStack"},"content":{"rendered":"<p><span style=\"font-weight: 400\">This blog post presents a plugin for <\/span><a href=\"https:\/\/wiki.openstack.org\/wiki\/Heat\"><span style=\"font-weight: 400\">OpenStack Hea<\/span><\/a><span style=\"font-weight: 400\">t<\/span><span style=\"font-weight: 400\"> which adds support for <\/span><a href=\"https:\/\/cloudstack.apache.org\/\"><span style=\"font-weight: 400\">Apache CloudStack<\/span><\/a><span style=\"font-weight: 400\"> resources and thus enables a template-based orchestration on CloudStack using Heat. <\/span><span style=\"font-weight: 400\">As this plugin extends the standard Heat\u2019s resource type list it can also be used within our <\/span><a href=\"http:\/\/hurtle.it\/\"><span style=\"font-weight: 400\">Hurtle orchestrator<\/span><\/a><span style=\"font-weight: 400\"> for providing your application as a service or any other application underlying on Heat. <\/span><span style=\"font-weight: 400\">This work follows from our earlier work in which we developed a <\/span><a href=\"https:\/\/github.com\/icclab\/sdc-heat\"><span style=\"font-weight: 400\">Heat plugin for SDC<\/span><\/a><span style=\"font-weight: 400\">.<\/span><!--more--><\/p>\n<p><span style=\"font-weight: 400\">An orchestration is a crucial part of a cloud application and service delivery. OpenStack Heat lets users to specify templates describing application resources such as virtual machines, networks, security groups, &#8230; including their dependencies. Based on these templates Heat then does the job of resolving these dependencies and decides the order in which the resources are being created and creates them. A heat plugin extends the set of the available resources and these are then handle in the same way as the original ones.<\/span><\/p>\n<p><span style=\"font-weight: 400\">While Heat has become popular OpenStack component and usually is the first-choice orchestrator for the most of OpenStack users and administrators, CloudStack lacks a dedicated orchestration solution and generally depends on third-party solutions such as <\/span><a href=\"http:\/\/getcloudify.org\/\"><span style=\"font-weight: 400\">Cloudify<\/span><\/a><span style=\"font-weight: 400\">. With Hurtle in mind we developed a plugin that extends the set of available Heat resources with CloudStack ones thus opening the CloudStack universe to Heat users.\u00a0<\/span><span style=\"font-weight: 400\">Moreover, now you can \u201c<\/span><a href=\"http:\/\/hurtle.it\"><span style=\"font-weight: 400\">hurtle.it<\/span><\/a><span style=\"font-weight: 400\">\u201d in CloudStack environments as easy as in OpenStack.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Developing a heat plugin requires a resource specification including a specification of the resource attributes, specification of how to handle the standard resource operations such as resource creation, deletion and providing a mechanism that checks whether the operation succeeds. More information on how to write an Heat plugin can be found in <\/span><a href=\"https:\/\/drive.google.com\/open?id=0Bxg7eRqN5dJ6YnZENFFWb2lSRlE\"><span style=\"font-weight: 400\">our presentation here<\/span><\/a><span style=\"font-weight: 400\">.<\/span><\/p>\n<p><span style=\"font-weight: 400\">So far our plugin integrates following CloudStack resources:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Cloudstack::Compute<\/span><b>::VirtualMachine<\/b><span style=\"font-weight: 400\"> (basic &amp; advanced zone) &#8211; resource representing CloudStack virtual machine.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Cloudstack::Network<\/span><b>::SecurityGroup<\/b><span style=\"font-weight: 400\"> (basic zone) &#8211; resource representing security group resource including definition of security group\u2019s firewall rules.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Cloudstack::Network<\/span><b>::VPC<\/b><span style=\"font-weight: 400\"> (advanced zone) &#8211; resource representing CloudStack Virtual Private Cloud (VPC).<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Cloudstack::Network::<strong>Network<\/strong> (advanced zone) &#8211; resource representing CloudStack Network.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Cloudstack::Network<\/span><b>::StaticNAT<\/b><span style=\"font-weight: 400\"> (advanced zone) &#8211; resource representing static NAT between a VM (::VirtualMachine) and a public ip address (::Address).<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Cloudstack::Network<\/span><b>::Address<\/b><span style=\"font-weight: 400\"> (advanced zone) &#8211; public IP address resource associated to a VPC.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">In order to be able to use this plugin you need access to a running Heat service and access to a CloudStack API (endpoint, API key, secret key). If needed, Heat can be installed in a VM using Packstack as described in documentation for the ICCLab\u2019s <\/span><a href=\"https:\/\/github.com\/icclab\/sdc-heat\/\"><span style=\"font-weight: 400\">Heat plugin for SDC<\/span><\/a><span style=\"font-weight: 400\"> (up to step 4). Further steps how to integrate the CloudStack plugin to the Heat engine can be found at <\/span><a href=\"https:\/\/github.com\/icclab\/cloudstack-heat\"><span style=\"font-weight: 400\">project\u2019s github repository<\/span><\/a><span style=\"font-weight: 400\">.<\/span><\/p>\n<p><a href=\"http:\/\/blog.zhaw.ch\/icclab\/files\/2015\/11\/Screenshot-2015-11-25-09.58.11.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9322\" src=\"http:\/\/blog.zhaw.ch\/icclab\/files\/2015\/11\/Screenshot-2015-11-25-09.58.11.png\" alt=\"Screenshot 2015-11-25 09.58.11\" width=\"638\" height=\"189\" srcset=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2015\/11\/Screenshot-2015-11-25-09.58.11.png 638w, https:\/\/blog.zhaw.ch\/icclab\/files\/2015\/11\/Screenshot-2015-11-25-09.58.11-300x89.png 300w, https:\/\/blog.zhaw.ch\/icclab\/files\/2015\/11\/Screenshot-2015-11-25-09.58.11-500x148.png 500w\" sizes=\"auto, (max-width: 638px) 100vw, 638px\" \/><\/a><\/p>\n<p style=\"text-align: center\">[<span style=\"font-weight: 400\">Resource types available in our \u201cCloudStack region\u201d<\/span>]<\/p>\n<p style=\"text-align: left\"><span style=\"font-weight: 400\">This is work in progress and more resources will follow soon and pull requests are always welcome. Nevertheless, the current resource stack provides operational environment for orchestrating many different workloads. As an example <a href=\"http:\/\/blog.zhaw.ch\/icclab\/orchestrating-ims-project-clearwater-on-cloudstack-using-heat-and-hurtle\/\">we demonstrate<\/a> the plugin\u2019s capability of orchestrating open source <\/span><a href=\"https:\/\/en.wikipedia.org\/wiki\/IP_Multimedia_Subsystem\"><span style=\"font-weight: 400\">IP Multimedia Subsystem<\/span><\/a><span style=\"font-weight: 400\"> (IMS) solution &#8211; Project Clearwater as <\/span><a href=\"http:\/\/www.etsi.org\/deliver\/etsi_gs\/nfv\/001_099\/001\/01.01.01_60\/gs_nfv001v010101p.pdf\"><span style=\"font-weight: 400\">one of ETSI\u2019s NFV use cases<\/span><\/a><span style=\"font-weight: 400\">.<\/span><\/p>\n<p style=\"text-align: left\"><span style=\"font-weight: 400\">This work was made possible by the <a href=\"http:\/\/blog.zhaw.ch\/icclab\/acen-begins\/\">KTI ACEN<\/a> project in collaboration with <a href=\"https:\/\/www.citrix.com\/\">Citrix<\/a>.<\/span><\/p>\n<div class=\"pt-sm\">Schlagw\u00f6rter: <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/apache\/\">Apache<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/apache-cloudstack\/\">Apache CloudStack<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/automation\/\">automation<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/citrix\/\">citrix<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/cloudstack\/\">CloudStack<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/heat\/\">heat<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/heat-plugin\/\">heat plugin<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/openstack-heat\/\">OpenStack Heat<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/orchestration\/\">orchestration<\/a><br><\/div>","protected":false},"excerpt":{"rendered":"<p>This blog post presents a plugin for OpenStack Heat which adds support for Apache CloudStack resources and thus enables a template-based orchestration on CloudStack using Heat. As this plugin extends the standard Heat\u2019s resource type list it can also be used within our Hurtle orchestrator for providing your application as a service or any other [&hellip;]<\/p>\n","protected":false},"author":155,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[1,5],"tags":[694,716,51,662,85,177,717,715,489],"features":[],"class_list":["post-9321","post","type-post","status-publish","format-standard","hentry","category-allgemein","category-articles","tag-apache","tag-apache-cloudstack","tag-automation","tag-citrix","tag-cloudstack","tag-heat","tag-heat-plugin","tag-openstack-heat","tag-orchestration"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>OpenStack Heat plugin for Apache CloudStack - Service Engineering (ICCLab &amp; SPLab)<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.zhaw.ch\/icclab\/openstack-heat-plugin-for-apache-cloudstack\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"OpenStack Heat plugin for Apache CloudStack\" \/>\n<meta property=\"og:description\" content=\"This blog post presents a plugin for OpenStack Heat which adds support for Apache CloudStack resources and thus enables a template-based orchestration on CloudStack using Heat. As this plugin extends the standard Heat\u2019s resource type list it can also be used within our Hurtle orchestrator for providing your application as a service or any other [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.zhaw.ch\/icclab\/openstack-heat-plugin-for-apache-cloudstack\/\" \/>\n<meta property=\"og:site_name\" content=\"Service Engineering (ICCLab &amp; SPLab)\" \/>\n<meta property=\"article:published_time\" content=\"2015-11-25T09:50:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2015-12-01T08:58:31+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/blog.zhaw.ch\/icclab\/files\/2015\/11\/Screenshot-2015-11-25-09.58.11.png\" \/>\n<meta name=\"author\" content=\"cima\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"cima\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/openstack-heat-plugin-for-apache-cloudstack\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/openstack-heat-plugin-for-apache-cloudstack\/\"},\"author\":{\"name\":\"cima\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/bfb29453d69d6e8260cbfc3ff86df20b\"},\"headline\":\"OpenStack Heat plugin for Apache CloudStack\",\"datePublished\":\"2015-11-25T09:50:42+00:00\",\"dateModified\":\"2015-12-01T08:58:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/openstack-heat-plugin-for-apache-cloudstack\/\"},\"wordCount\":549,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/openstack-heat-plugin-for-apache-cloudstack\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/blog.zhaw.ch\/icclab\/files\/2015\/11\/Screenshot-2015-11-25-09.58.11.png\",\"keywords\":[\"Apache\",\"Apache CloudStack\",\"automation\",\"citrix\",\"CloudStack\",\"heat\",\"heat plugin\",\"OpenStack Heat\",\"orchestration\"],\"articleSection\":[\"*.*\",\"Articles\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blog.zhaw.ch\/icclab\/openstack-heat-plugin-for-apache-cloudstack\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/openstack-heat-plugin-for-apache-cloudstack\/\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/openstack-heat-plugin-for-apache-cloudstack\/\",\"name\":\"OpenStack Heat plugin for Apache CloudStack - Service Engineering (ICCLab &amp; SPLab)\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/openstack-heat-plugin-for-apache-cloudstack\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/openstack-heat-plugin-for-apache-cloudstack\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/blog.zhaw.ch\/icclab\/files\/2015\/11\/Screenshot-2015-11-25-09.58.11.png\",\"datePublished\":\"2015-11-25T09:50:42+00:00\",\"dateModified\":\"2015-12-01T08:58:31+00:00\",\"author\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/bfb29453d69d6e8260cbfc3ff86df20b\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/openstack-heat-plugin-for-apache-cloudstack\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.zhaw.ch\/icclab\/openstack-heat-plugin-for-apache-cloudstack\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/openstack-heat-plugin-for-apache-cloudstack\/#primaryimage\",\"url\":\"http:\/\/blog.zhaw.ch\/icclab\/files\/2015\/11\/Screenshot-2015-11-25-09.58.11.png\",\"contentUrl\":\"http:\/\/blog.zhaw.ch\/icclab\/files\/2015\/11\/Screenshot-2015-11-25-09.58.11.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/openstack-heat-plugin-for-apache-cloudstack\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/blog.zhaw.ch\/icclab\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"OpenStack Heat plugin for Apache CloudStack\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#website\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/\",\"name\":\"Service Engineering (ICCLab &amp; SPLab)\",\"description\":\"A Blog of the ZHAW Zurich University of Applied Sciences\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.zhaw.ch\/icclab\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/bfb29453d69d6e8260cbfc3ff86df20b\",\"name\":\"cima\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/8d7cb1dd9511a1465510abf53f139c259c510dbce26f647ee43e3771f65a7143?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8d7cb1dd9511a1465510abf53f139c259c510dbce26f647ee43e3771f65a7143?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8d7cb1dd9511a1465510abf53f139c259c510dbce26f647ee43e3771f65a7143?s=96&d=mm&r=g\",\"caption\":\"cima\"},\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/author\/cima\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"OpenStack Heat plugin for Apache CloudStack - Service Engineering (ICCLab &amp; SPLab)","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.zhaw.ch\/icclab\/openstack-heat-plugin-for-apache-cloudstack\/","og_locale":"en_US","og_type":"article","og_title":"OpenStack Heat plugin for Apache CloudStack","og_description":"This blog post presents a plugin for OpenStack Heat which adds support for Apache CloudStack resources and thus enables a template-based orchestration on CloudStack using Heat. As this plugin extends the standard Heat\u2019s resource type list it can also be used within our Hurtle orchestrator for providing your application as a service or any other [&hellip;]","og_url":"https:\/\/blog.zhaw.ch\/icclab\/openstack-heat-plugin-for-apache-cloudstack\/","og_site_name":"Service Engineering (ICCLab &amp; SPLab)","article_published_time":"2015-11-25T09:50:42+00:00","article_modified_time":"2015-12-01T08:58:31+00:00","og_image":[{"url":"http:\/\/blog.zhaw.ch\/icclab\/files\/2015\/11\/Screenshot-2015-11-25-09.58.11.png","type":"","width":"","height":""}],"author":"cima","twitter_card":"summary_large_image","twitter_misc":{"Written by":"cima","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.zhaw.ch\/icclab\/openstack-heat-plugin-for-apache-cloudstack\/#article","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/openstack-heat-plugin-for-apache-cloudstack\/"},"author":{"name":"cima","@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/bfb29453d69d6e8260cbfc3ff86df20b"},"headline":"OpenStack Heat plugin for Apache CloudStack","datePublished":"2015-11-25T09:50:42+00:00","dateModified":"2015-12-01T08:58:31+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/openstack-heat-plugin-for-apache-cloudstack\/"},"wordCount":549,"commentCount":0,"image":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/openstack-heat-plugin-for-apache-cloudstack\/#primaryimage"},"thumbnailUrl":"http:\/\/blog.zhaw.ch\/icclab\/files\/2015\/11\/Screenshot-2015-11-25-09.58.11.png","keywords":["Apache","Apache CloudStack","automation","citrix","CloudStack","heat","heat plugin","OpenStack Heat","orchestration"],"articleSection":["*.*","Articles"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.zhaw.ch\/icclab\/openstack-heat-plugin-for-apache-cloudstack\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.zhaw.ch\/icclab\/openstack-heat-plugin-for-apache-cloudstack\/","url":"https:\/\/blog.zhaw.ch\/icclab\/openstack-heat-plugin-for-apache-cloudstack\/","name":"OpenStack Heat plugin for Apache CloudStack - Service Engineering (ICCLab &amp; SPLab)","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/openstack-heat-plugin-for-apache-cloudstack\/#primaryimage"},"image":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/openstack-heat-plugin-for-apache-cloudstack\/#primaryimage"},"thumbnailUrl":"http:\/\/blog.zhaw.ch\/icclab\/files\/2015\/11\/Screenshot-2015-11-25-09.58.11.png","datePublished":"2015-11-25T09:50:42+00:00","dateModified":"2015-12-01T08:58:31+00:00","author":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/bfb29453d69d6e8260cbfc3ff86df20b"},"breadcrumb":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/openstack-heat-plugin-for-apache-cloudstack\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.zhaw.ch\/icclab\/openstack-heat-plugin-for-apache-cloudstack\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.zhaw.ch\/icclab\/openstack-heat-plugin-for-apache-cloudstack\/#primaryimage","url":"http:\/\/blog.zhaw.ch\/icclab\/files\/2015\/11\/Screenshot-2015-11-25-09.58.11.png","contentUrl":"http:\/\/blog.zhaw.ch\/icclab\/files\/2015\/11\/Screenshot-2015-11-25-09.58.11.png"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.zhaw.ch\/icclab\/openstack-heat-plugin-for-apache-cloudstack\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/blog.zhaw.ch\/icclab\/"},{"@type":"ListItem","position":2,"name":"OpenStack Heat plugin for Apache CloudStack"}]},{"@type":"WebSite","@id":"https:\/\/blog.zhaw.ch\/icclab\/#website","url":"https:\/\/blog.zhaw.ch\/icclab\/","name":"Service Engineering (ICCLab &amp; SPLab)","description":"A Blog of the ZHAW Zurich University of Applied Sciences","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.zhaw.ch\/icclab\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/bfb29453d69d6e8260cbfc3ff86df20b","name":"cima","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/8d7cb1dd9511a1465510abf53f139c259c510dbce26f647ee43e3771f65a7143?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/8d7cb1dd9511a1465510abf53f139c259c510dbce26f647ee43e3771f65a7143?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8d7cb1dd9511a1465510abf53f139c259c510dbce26f647ee43e3771f65a7143?s=96&d=mm&r=g","caption":"cima"},"url":"https:\/\/blog.zhaw.ch\/icclab\/author\/cima\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/9321","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/users\/155"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/comments?post=9321"}],"version-history":[{"count":8,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/9321\/revisions"}],"predecessor-version":[{"id":9340,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/9321\/revisions\/9340"}],"wp:attachment":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/media?parent=9321"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/categories?post=9321"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/tags?post=9321"},{"taxonomy":"features","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/features?post=9321"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}