{"id":8946,"date":"2015-09-25T17:54:42","date_gmt":"2015-09-25T15:54:42","guid":{"rendered":"http:\/\/blog.zhaw.ch\/icclab\/?p=8946"},"modified":"2015-09-25T18:04:57","modified_gmt":"2015-09-25T16:04:57","slug":"initial-experience-with-openstack-nova-cells","status":"publish","type":"post","link":"https:\/\/blog.zhaw.ch\/icclab\/initial-experience-with-openstack-nova-cells\/","title":{"rendered":"Initial Experience with Openstack Nova Cells"},"content":{"rendered":"<p>In the GEYSER project, we are examining suitable Openstack architectures for our pilot deployments. In <a href=\"http:\/\/blog.zhaw.ch\/icclab\/how-do-you-organise-your-openstack-deployment\/\">an earlier blog post<\/a> we described <a href=\"http:\/\/docs.openstack.org\/openstack-ops\/content\/scaling.html#segregate_cloud\">different ways to <\/a>architect \u00a0an Openstack deployment mostly focusing on AZ (Availability Zone) and Cells (those were the only options available back in 2013). Much has changed since then and new concepts were added such as regions and host aggregates. Even though Cells have been available since Grizzly they are still considered experimental due to lack of maturity and instability. In this blog post we describe our experience enabling Cells in an experimental Openstack deployment.<\/p>\n<h4><strong>Why Cells?<\/strong><\/h4>\n<p>The <a href=\"http:\/\/docs.openstack.org\/juno\/config-reference\/content\/section_compute-cells.html\">documentation<\/a> says that \u201cCells functionality enables you to scale an OpenStack Compute cloud in a more distributed fashion without having to use complicated technologies like database and message queue clustering. It supports very large deployments\u201d. Although we don\u2019t have a large deployment this is pretty much in line with our requirements for our pilot &#8211; a distributed system with a single public API exposed. Comparing with other architectural approaches currently available the one which gets closer to this design are regions, but even then is not desirable as it exposes a public API for each region.<!--more--><\/p>\n<h4><strong>Cells Architecture<\/strong><\/h4>\n<p>Understanding Nova Cells architecture was somewhat tricky, as the documentation does not make it clear where each service should run and new concepts are introduced &#8211; \u00a0the API Cell and the Compute Cell &#8211; which do not map obviously to the standard controller\/compute node architectures. While there are a number of articles on getting started with Nova cells (listed below) the clearest picture of its design is presented in the <a href=\"http:\/\/docs.openstack.org\/arch-design\/content\/prescriptive-example-compute-focus.html\">prescriptive example<\/a> of CERN architecture.<\/p>\n<p>It is important to understand that the API Cell operates as a thin layer managing and redirecting queries to the right Compute Cell; it sits on top of each Compute Cell being the top-level cell of the hierarchical tree exposing a single public API to users.<\/p>\n<p>Compute Cells are very similar to a classical Openstack deployments comprised of controller and compute nodes and associated resource management. However, instead of running the nova-api service on every controller node a new service &#8211; nova-cells &#8211; is added which connects its nova-* services to the API Cell via a message bus. This is shown below (<a href=\"http:\/\/docs.openstack.org\/arch-design\/content\/prescriptive-example-compute-focus.html\">source<\/a>).<\/p>\n<p><a href=\"http:\/\/blog.zhaw.ch\/icclab\/files\/2015\/09\/Generic_CERN_Example.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-8947 aligncenter\" src=\"http:\/\/blog.zhaw.ch\/icclab\/files\/2015\/09\/Generic_CERN_Example-300x286.png\" alt=\"Generic_CERN_Example\" width=\"300\" height=\"286\" srcset=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2015\/09\/Generic_CERN_Example-300x286.png 300w, https:\/\/blog.zhaw.ch\/icclab\/files\/2015\/09\/Generic_CERN_Example-315x300.png 315w, https:\/\/blog.zhaw.ch\/icclab\/files\/2015\/09\/Generic_CERN_Example.png 647w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<h4><strong>Converting to Openstack Cells<\/strong><\/h4>\n<p>For our experimentation we actually didn\u2019t want to redeploy a full environment; we wanted to convert from a typical small controller\/compute nodes configuration to a cell architecture &#8211; note that we have installed Juno version following the <a href=\"http:\/\/docs.openstack.org\/juno\/install-guide\/install\/apt\/content\/\">installation guide<\/a> and all packages and services were installed from the main ubuntu repository. The instructions in <a href=\"http:\/\/www.dorm.org\/blog\/converting-to-openstack-nova-cells-without-destroying-the-world\/\">this blog post<\/a> provide a clear idea of what has to be done to convert a running Openstack deployment to use nova cells. Our biggest issue was to think that the controller node was supposed to be converted to the API cell, which was the source of some misunderstanding which resulted in reinstalling nova services of a controller node in a compute node(much more work). Rather than converting the controller to an API cell, it is simpler to get a new server and use it as API Cell, or take a compute node and change the installed Openstack services. The picture below illustrates key services running on both API and Compute cell and Controller and Compute nodes. We haven\u2019t worked with other services as yet like ceilometer, neutron and cinder and hence these are not shown (for networking, we used nova-network in each of the cells).<\/p>\n<p style=\"text-align: center\"><a href=\"http:\/\/blog.zhaw.ch\/icclab\/files\/2015\/09\/Cells.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-8948\" src=\"http:\/\/blog.zhaw.ch\/icclab\/files\/2015\/09\/Cells-300x277.png\" alt=\"Cells\" width=\"300\" height=\"277\" srcset=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2015\/09\/Cells-300x277.png 300w, https:\/\/blog.zhaw.ch\/icclab\/files\/2015\/09\/Cells-325x300.png 325w, https:\/\/blog.zhaw.ch\/icclab\/files\/2015\/09\/Cells.png 783w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<h5><strong>Configuring the \u00a0API Cell<\/strong><\/h5>\n<p>To configure the API call, we had to add the following lines to \/etc\/nova\/nova.conf:<br \/>\n<code><br \/>\n[default]<\/code><\/p>\n<p>rabbit_host=api_rabbit_ip<br \/>\nrabbit_port=api_rabbit_port<br \/>\nrabbit_username=api_rabbit_user<br \/>\nrabbit_password=api_rabbit_password<br \/>\nrabbit_virtual_host=api_rabbit_vhost<\/p>\n<p>[cells]<\/p>\n<p>enable=True<br \/>\nname=API_CELL_NAME<br \/>\ncell_type=api<\/p>\n<h5>Configuring the Compute Cells<\/h5>\n<p>To configure the compute cells we had to add the following lines to \/etc\/nova\/nova.conf:<br \/>\n<code><br \/>\n[default]<\/code><\/p>\n<p>quota_driver=nova.quota.NoopQuotaDriver<br \/>\nrabbit_host=cellX_rabbit_ip<br \/>\nrabbit_port=cellX_rabbit_port<br \/>\nrabbit_username=cellX_rabbit_user<br \/>\nrabbit_password=cellX_rabbit_password<br \/>\nrabbit_virtual_host=cellX_rabbit_vhost<\/p>\n<p>[cells]<\/p>\n<p>enable=True<br \/>\nname=CELLX_NAME<br \/>\ncell_type=compute<\/p>\n<p>Finally run this command on the API Cell for each child (Compute) and in each child to connect to the API Cell.<\/p>\n<p><code>nova-manage cell create --name cell_name --cell_type child\/parent \\<br \/>\n--username cell_user --password cell_passwd --hostname cell_rabbit_host \\<br \/>\n--port cell_rabbit_port --virtual_host cell_rabbit_vhost --woffset 1.0 --wscale 1.0<\/code><\/p>\n<h5><strong>Installing from scratch<\/strong><\/h5>\n<p>Installing a Cell based system from scratch is easier than converting an existing deployment in terms of placing the right services on the right systems, although it probably requires more work setting up the configuration files.<\/p>\n<h4><strong>Conclusions<\/strong><\/h4>\n<p>In this blog post we presented an overview of Nova Cells and how a basic configuration can be set up. Our initial experimentation shows the system to be quite stable and the design offers much greater flexibility and elasticity to an Openstack deployment &#8211; cells can be easily added, changes to the cell hierarchy are straightforward &#8211; and also looked reasonably robust in terms of standard operations such as start and remove vms, etc. We are still \u00a0investigating whether Nova Cells meets the requirements of our pilot deployment, so stay tuned as we investigate it further!<\/p>\n<p>Useful readings:<\/p>\n<ul>\n<li><a href=\"http:\/\/www.dorm.org\/blog\/exploring-openstack-nova-cells\/\">Exploring Openstack Nova Cells<\/a><\/li>\n<li><a href=\"http:\/\/www.dorm.org\/blog\/converting-to-openstack-nova-cells-without-destroying-the-world\/\">Converting to Openstack Nova Cells Without Destroying the World<\/a><\/li>\n<li><a href=\"http:\/\/aqorn.com\/what-are-openstack-cells\/\">What are Openstack Cells<\/a><\/li>\n<li><a href=\"http:\/\/comstud.com\/GrizzlyCells.pdf\">Compute Cells for Grizzly<\/a><\/li>\n<li><a href=\"https:\/\/wiki.openstack.org\/wiki\/Blueprint-nova-compute-cells\">Blueprint Nova Cells<\/a><\/li>\n<\/ul>\n<div class=\"pt-sm\">Schlagw\u00f6rter: <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/cells\/\">cells<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/nova\/\">nova<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/nova-cells\/\">nova-cells<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/openstack\/\">openstack<\/a><br><\/div>","protected":false},"excerpt":{"rendered":"<p>In the GEYSER project, we are examining suitable Openstack architectures for our pilot deployments. In an earlier blog post we described different ways to architect \u00a0an Openstack deployment mostly focusing on AZ (Availability Zone) and Cells (those were the only options available back in 2013). Much has changed since then and new concepts were added [&hellip;]<\/p>\n","protected":false},"author":101,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[1],"tags":[66,411,674,240],"features":[],"class_list":["post-8946","post","type-post","status-publish","format-standard","hentry","category-allgemein","tag-cells","tag-nova","tag-nova-cells","tag-openstack"],"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>Initial Experience with Openstack Nova Cells - 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\/initial-experience-with-openstack-nova-cells\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Initial Experience with Openstack Nova Cells\" \/>\n<meta property=\"og:description\" content=\"In the GEYSER project, we are examining suitable Openstack architectures for our pilot deployments. In an earlier blog post we described different ways to architect \u00a0an Openstack deployment mostly focusing on AZ (Availability Zone) and Cells (those were the only options available back in 2013). Much has changed since then and new concepts were added [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.zhaw.ch\/icclab\/initial-experience-with-openstack-nova-cells\/\" \/>\n<meta property=\"og:site_name\" content=\"Service Engineering (ICCLab &amp; SPLab)\" \/>\n<meta property=\"article:published_time\" content=\"2015-09-25T15:54:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2015-09-25T16:04:57+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/blog.zhaw.ch\/icclab\/files\/2015\/09\/Generic_CERN_Example-300x286.png\" \/>\n<meta name=\"author\" content=\"Bruno Grazioli\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Bruno Grazioli\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/initial-experience-with-openstack-nova-cells\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/initial-experience-with-openstack-nova-cells\/\"},\"author\":{\"name\":\"Bruno Grazioli\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/769a2455bfa3cbcc87857218f19abeba\"},\"headline\":\"Initial Experience with Openstack Nova Cells\",\"datePublished\":\"2015-09-25T15:54:42+00:00\",\"dateModified\":\"2015-09-25T16:04:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/initial-experience-with-openstack-nova-cells\/\"},\"wordCount\":892,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/initial-experience-with-openstack-nova-cells\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/blog.zhaw.ch\/icclab\/files\/2015\/09\/Generic_CERN_Example-300x286.png\",\"keywords\":[\"cells\",\"nova\",\"nova-cells\",\"openstack\"],\"articleSection\":[\"*.*\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blog.zhaw.ch\/icclab\/initial-experience-with-openstack-nova-cells\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/initial-experience-with-openstack-nova-cells\/\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/initial-experience-with-openstack-nova-cells\/\",\"name\":\"Initial Experience with Openstack Nova Cells - Service Engineering (ICCLab &amp; SPLab)\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/initial-experience-with-openstack-nova-cells\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/initial-experience-with-openstack-nova-cells\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/blog.zhaw.ch\/icclab\/files\/2015\/09\/Generic_CERN_Example-300x286.png\",\"datePublished\":\"2015-09-25T15:54:42+00:00\",\"dateModified\":\"2015-09-25T16:04:57+00:00\",\"author\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/769a2455bfa3cbcc87857218f19abeba\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/initial-experience-with-openstack-nova-cells\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.zhaw.ch\/icclab\/initial-experience-with-openstack-nova-cells\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/initial-experience-with-openstack-nova-cells\/#primaryimage\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2015\/09\/Generic_CERN_Example.png\",\"contentUrl\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2015\/09\/Generic_CERN_Example.png\",\"width\":647,\"height\":617},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/initial-experience-with-openstack-nova-cells\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/blog.zhaw.ch\/icclab\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Initial Experience with Openstack Nova Cells\"}]},{\"@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\/769a2455bfa3cbcc87857218f19abeba\",\"name\":\"Bruno Grazioli\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/07d475be0415d5914aa49599b3295e4d972f971e46f5d7ab89d474327ab7b5f0?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/07d475be0415d5914aa49599b3295e4d972f971e46f5d7ab89d474327ab7b5f0?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/07d475be0415d5914aa49599b3295e4d972f971e46f5d7ab89d474327ab7b5f0?s=96&d=mm&r=g\",\"caption\":\"Bruno Grazioli\"},\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/author\/gaea\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Initial Experience with Openstack Nova Cells - 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\/initial-experience-with-openstack-nova-cells\/","og_locale":"en_US","og_type":"article","og_title":"Initial Experience with Openstack Nova Cells","og_description":"In the GEYSER project, we are examining suitable Openstack architectures for our pilot deployments. In an earlier blog post we described different ways to architect \u00a0an Openstack deployment mostly focusing on AZ (Availability Zone) and Cells (those were the only options available back in 2013). Much has changed since then and new concepts were added [&hellip;]","og_url":"https:\/\/blog.zhaw.ch\/icclab\/initial-experience-with-openstack-nova-cells\/","og_site_name":"Service Engineering (ICCLab &amp; SPLab)","article_published_time":"2015-09-25T15:54:42+00:00","article_modified_time":"2015-09-25T16:04:57+00:00","og_image":[{"url":"http:\/\/blog.zhaw.ch\/icclab\/files\/2015\/09\/Generic_CERN_Example-300x286.png","type":"","width":"","height":""}],"author":"Bruno Grazioli","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Bruno Grazioli","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.zhaw.ch\/icclab\/initial-experience-with-openstack-nova-cells\/#article","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/initial-experience-with-openstack-nova-cells\/"},"author":{"name":"Bruno Grazioli","@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/769a2455bfa3cbcc87857218f19abeba"},"headline":"Initial Experience with Openstack Nova Cells","datePublished":"2015-09-25T15:54:42+00:00","dateModified":"2015-09-25T16:04:57+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/initial-experience-with-openstack-nova-cells\/"},"wordCount":892,"commentCount":0,"image":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/initial-experience-with-openstack-nova-cells\/#primaryimage"},"thumbnailUrl":"http:\/\/blog.zhaw.ch\/icclab\/files\/2015\/09\/Generic_CERN_Example-300x286.png","keywords":["cells","nova","nova-cells","openstack"],"articleSection":["*.*"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.zhaw.ch\/icclab\/initial-experience-with-openstack-nova-cells\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.zhaw.ch\/icclab\/initial-experience-with-openstack-nova-cells\/","url":"https:\/\/blog.zhaw.ch\/icclab\/initial-experience-with-openstack-nova-cells\/","name":"Initial Experience with Openstack Nova Cells - Service Engineering (ICCLab &amp; SPLab)","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/initial-experience-with-openstack-nova-cells\/#primaryimage"},"image":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/initial-experience-with-openstack-nova-cells\/#primaryimage"},"thumbnailUrl":"http:\/\/blog.zhaw.ch\/icclab\/files\/2015\/09\/Generic_CERN_Example-300x286.png","datePublished":"2015-09-25T15:54:42+00:00","dateModified":"2015-09-25T16:04:57+00:00","author":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/769a2455bfa3cbcc87857218f19abeba"},"breadcrumb":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/initial-experience-with-openstack-nova-cells\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.zhaw.ch\/icclab\/initial-experience-with-openstack-nova-cells\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.zhaw.ch\/icclab\/initial-experience-with-openstack-nova-cells\/#primaryimage","url":"https:\/\/blog.zhaw.ch\/icclab\/files\/2015\/09\/Generic_CERN_Example.png","contentUrl":"https:\/\/blog.zhaw.ch\/icclab\/files\/2015\/09\/Generic_CERN_Example.png","width":647,"height":617},{"@type":"BreadcrumbList","@id":"https:\/\/blog.zhaw.ch\/icclab\/initial-experience-with-openstack-nova-cells\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/blog.zhaw.ch\/icclab\/"},{"@type":"ListItem","position":2,"name":"Initial Experience with Openstack Nova Cells"}]},{"@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\/769a2455bfa3cbcc87857218f19abeba","name":"Bruno Grazioli","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/07d475be0415d5914aa49599b3295e4d972f971e46f5d7ab89d474327ab7b5f0?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/07d475be0415d5914aa49599b3295e4d972f971e46f5d7ab89d474327ab7b5f0?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/07d475be0415d5914aa49599b3295e4d972f971e46f5d7ab89d474327ab7b5f0?s=96&d=mm&r=g","caption":"Bruno Grazioli"},"url":"https:\/\/blog.zhaw.ch\/icclab\/author\/gaea\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/8946","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\/101"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/comments?post=8946"}],"version-history":[{"count":6,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/8946\/revisions"}],"predecessor-version":[{"id":8954,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/8946\/revisions\/8954"}],"wp:attachment":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/media?parent=8946"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/categories?post=8946"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/tags?post=8946"},{"taxonomy":"features","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/features?post=8946"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}