<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";
        color:black;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";
        color:black;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Balloon Text Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";
        color:black;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;
        color:black;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.BalloonTextChar
        {mso-style-name:"Balloon Text Char";
        mso-style-priority:99;
        mso-style-link:"Balloon Text";
        font-family:"Tahoma","sans-serif";
        color:black;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor="white" lang="SV" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Thank you Steve, this solved my problem.
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Heat works fine for me with the following information in my files:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<pre><span lang="EN-US">In my heat.conf file:<o:p></o:p></span></pre>
<pre><span lang="EN-US"><o:p> </o:p></span></pre>
<pre><span lang="EN-US">[DEFAULT]<o:p></o:p></span></pre>
<pre><span lang="EN-US">connection = </span><a href="mailto:mysql://heat:heat@10.10.10.51/heat"><span lang="EN-US">mysql://heat:heat@10.10.10.51/heat</span></a><span lang="EN-US"><o:p></o:p></span></pre>
<pre><span lang="EN-US"><o:p> </o:p></span></pre>
<pre><span lang="EN-US">[keystone_authtoken]<o:p></o:p></span></pre>
<pre><span lang="EN-US">auth_host = 10.10.10.51<o:p></o:p></span></pre>
<pre><span lang="EN-US">auth_uri = http://10.10.10.51:35357/v2.0<o:p></o:p></span></pre>
<pre><span lang="EN-US">auth_port = 35357<o:p></o:p></span></pre>
<pre><span lang="EN-US">auth_protocol = http<o:p></o:p></span></pre>
<pre><span lang="EN-US">admin_tenant_name = service<o:p></o:p></span></pre>
<pre><span lang="EN-US">admin_user = heat<o:p></o:p></span></pre>
<pre>admin_password = heat<o:p></o:p></pre>
<pre><span lang="EN-US"><o:p> </o:p></span></pre>
<pre><span lang="EN-US">In my /etc/heat/api-paste.conf file:<o:p></o:p></span></pre>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<pre><span lang="EN-US"># Auth middleware that validates token against keystone<o:p></o:p></span></pre>
<pre><span lang="EN-US">[filter:authtoken]<o:p></o:p></span></pre>
<pre><span lang="EN-US">paste.filter_factory = heat.common.auth_token:filter_factory<o:p></o:p></span></pre>
<pre><span lang="EN-US">auth_uri = http://10.10.10.51:35357/v2.0<o:p></o:p></span></pre>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Where auth_uri is the endpoint for keystone.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Best regards<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Therese<br>
<br>
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext">From:</span></b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext"> Steve Baker [mailto:sbaker@redhat.com]
<br>
<b>Sent:</b> den 10 november 2013 22:02<br>
<b>To:</b> openstack@lists.openstack.org<br>
<b>Subject:</b> Re: [Openstack] [Heat] Error - Template not in valid format<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On 11/01/2013 09:35 PM, Therese Persson wrote:<o:p></o:p></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre>Thank you for your answer Angus.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>I tried to remove the parameters from the file as you suggested and tried to create a stack with horizon, but I seem to have an authorization problem.<o:p></o:p></pre>
</blockquote>
<p class="MsoNormal">...<br>
<br>
<o:p></o:p></p>
<pre><o:p> </o:p></pre>
<pre>In my heat.conf file:<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>[DEFAULT]<o:p></o:p></pre>
<pre>connection = <a href="mailto:mysql://heat:heat@10.10.10.51/heat">mysql://heat:heat@10.10.10.51/heat</a><o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>(Everything else is commented out.)<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>In my /etc/heat/api-paste.conf file:<o:p></o:p></pre>
<p class="MsoNormal">...<br>
<br>
<o:p></o:p></p>
<pre><o:p> </o:p></pre>
<pre># Auth middleware that validates token against keystone<o:p></o:p></pre>
<pre>[filter:authtoken]<o:p></o:p></pre>
<pre>paste.filter_factory = heat.common.auth_token:filter_factory<o:p></o:p></pre>
<pre>auth_host = 10.10.10.51<o:p></o:p></pre>
<pre>auth_port = 35357<o:p></o:p></pre>
<pre>auth_protocol = http<o:p></o:p></pre>
<pre>admin_tenant_name = service<o:p></o:p></pre>
<pre>admin_user = heat<o:p></o:p></pre>
<pre>admin_password = heat<o:p></o:p></pre>
<p class="MsoNormal">This section is missing auth_uri, as per this doc fix:<br>
<a href="https://review.openstack.org/#/c/55020/">https://review.openstack.org/#/c/55020/</a><br>
<br>
As an aside, these values should not be set at all in api-paste.ini, but instead they should be set in heat.conf, section [keystone_authtoken]
<o:p></o:p></p>
<pre><o:p> </o:p></pre>
<pre><o:p> </o:p></pre>
<pre><o:p> </o:p></pre>
<pre>-----Original Message-----<o:p></o:p></pre>
<pre>From: Angus Salkeld [<a href="mailto:asalkeld@redhat.com">mailto:asalkeld@redhat.com</a>] <o:p></o:p></pre>
<pre>Sent: den 1 november 2013 00:52<o:p></o:p></pre>
<pre>To: <a href="mailto:openstack@lists.openstack.org">openstack@lists.openstack.org</a><o:p></o:p></pre>
<pre>Subject: Re: [Openstack] [Heat] Error - Template not in valid format<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>On 31/10/13 15:17 +0000, Therese Persson wrote:<o:p></o:p></pre>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre>Hi,<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>I have recently upgraded to Havana and just started trying out Heat. I tried to launch a stack by using this template file:<o:p></o:p></pre>
<pre><a href="https://github.com/openstack/heat-templates/blob/master/hot/servers_in_">https://github.com/openstack/heat-templates/blob/master/hot/servers_in_</a><o:p></o:p></pre>
<pre>existing_neutron_net.yaml<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>However, I am not familiar with these type of files and I am not sure of what information I should add to the file to make it valid for Heat.<o:p></o:p></pre>
<pre>This is what my modified file looks like:<o:p></o:p></pre>
</blockquote>
<pre><o:p> </o:p></pre>
<pre>Hi Therese,<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>It's just yaml, so I sometimes head over to <a href="http://yaml-online-parser.appspot.com/">http://yaml-online-parser.appspot.com/</a> and dump my template in there and tells you what is wrong.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Basically you are putting your parameter values in the wrong place.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>instead of:<o:p></o:p></pre>
<pre>parameters:<o:p></o:p></pre>
<pre>   key_name: mykey<o:p></o:p></pre>
<pre>     type: string<o:p></o:p></pre>
<pre>     description: Name of keypair to assign to servers remove the "mykey" so it is back to:<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>parameters:<o:p></o:p></pre>
<pre>   key_name:<o:p></o:p></pre>
<pre>     type: string<o:p></o:p></pre>
<pre>     description: Name of keypair to assign to servers<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Then start the template like this:<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>heat stack-create mystack --template-file=/scripts/servers_in_existing_neutron_net.yaml -P "key_name=mykey;image=Ubuntu;flavor=m1.small"<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Hope that helps<o:p></o:p></pre>
<pre>-Angus<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre><o:p> </o:p></pre>
<pre>heat_template_version: 2013-05-23<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>description: ><o:p></o:p></pre>
<pre> HOT template to deploy two servers into an existing neutron tenant <o:p></o:p></pre>
<pre>network and<o:p></o:p></pre>
<pre> assign floating IP addresses to each server so they are routable from <o:p></o:p></pre>
<pre>the<o:p></o:p></pre>
<pre> public network.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>parameters:<o:p></o:p></pre>
<pre> key_name: mykey<o:p></o:p></pre>
<pre>   type: string<o:p></o:p></pre>
<pre>   description: Name of keypair to assign to servers<o:p></o:p></pre>
<pre> image: Ubuntu<o:p></o:p></pre>
<pre>   type: string<o:p></o:p></pre>
<pre>   description: Name of image to use for servers<o:p></o:p></pre>
<pre> flavor: m1.small<o:p></o:p></pre>
<pre>   type: string<o:p></o:p></pre>
<pre>   description: Flavor to use for servers<o:p></o:p></pre>
<pre> public_net_id: 55896cd0-040a-4e7b-8a92-cb27f32b4ad9<o:p></o:p></pre>
<pre>   type: string<o:p></o:p></pre>
<pre>   description: ><o:p></o:p></pre>
<pre>     ID of public network for which floating IP addresses will be <o:p></o:p></pre>
<pre>allocated<o:p></o:p></pre>
<pre> private_net_id: 3bd4e56f-1e8c-4316-8e59-a358016e9ef8<o:p></o:p></pre>
<pre>   type: string<o:p></o:p></pre>
<pre>   description: ID of private network into which servers get deployed<o:p></o:p></pre>
<pre> private_subnet_id: f4bac2ea-b74d-47ef-a8b3-5969d60bfbba<o:p></o:p></pre>
<pre>   type: string<o:p></o:p></pre>
<pre>   description: ID of private sub network into which servers get <o:p></o:p></pre>
<pre>deployed<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>resources:<o:p></o:p></pre>
<pre> server1:<o:p></o:p></pre>
<pre>   type: OS::Nova::Server<o:p></o:p></pre>
<pre>   properties:<o:p></o:p></pre>
<pre>     name: Server1<o:p></o:p></pre>
<pre>     image: { get_param: image }<o:p></o:p></pre>
<pre>     flavor: { get_param: flavor }<o:p></o:p></pre>
<pre>     key_name: { get_param: key_name }<o:p></o:p></pre>
<pre>     networks:<o:p></o:p></pre>
<pre>       - port: { get_resource: server1_port }<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre> server1_port:<o:p></o:p></pre>
<pre>   type: OS::Neutron::Port<o:p></o:p></pre>
<pre>   properties:<o:p></o:p></pre>
<pre>     network_id: { get_param: private_net_id }<o:p></o:p></pre>
<pre>     fixed_ips:<o:p></o:p></pre>
<pre>       - subnet_id: { get_param: private_subnet_id }<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre> server1_floating_ip:<o:p></o:p></pre>
<pre>   type: OS::Neutron::FloatingIP<o:p></o:p></pre>
<pre>   properties:<o:p></o:p></pre>
<pre>     floating_network_id: { get_param: public_net_id }<o:p></o:p></pre>
<pre>     port_id: { get_resource: server1_port }<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre> server2:<o:p></o:p></pre>
<pre>   type: OS::Nova::Server<o:p></o:p></pre>
<pre>   properties:<o:p></o:p></pre>
<pre>     name: Server2<o:p></o:p></pre>
<pre>     image: { get_param: image }<o:p></o:p></pre>
<pre>     flavor: { get_param: flavor }<o:p></o:p></pre>
<pre>     key_name: { get_param: key_name }<o:p></o:p></pre>
<pre>     networks:<o:p></o:p></pre>
<pre>       - port: { get_resource: server2_port }<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre> server2_port:<o:p></o:p></pre>
<pre>   type: OS::Neutron::Port<o:p></o:p></pre>
<pre>   properties:<o:p></o:p></pre>
<pre>     network_id: { get_param: private_net_id }<o:p></o:p></pre>
<pre>     fixed_ips:<o:p></o:p></pre>
<pre>       - subnet_id: { get_param: private_subnet_id }<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre> server2_floating_ip:<o:p></o:p></pre>
<pre>   type: OS::Neutron::FloatingIP<o:p></o:p></pre>
<pre>   properties:<o:p></o:p></pre>
<pre>     floating_network_id: { get_param: public_net_id }<o:p></o:p></pre>
<pre>     port_id: { get_resource: server2_port }<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>outputs:<o:p></o:p></pre>
<pre> server1_private_ip:<o:p></o:p></pre>
<pre>   description: IP address of server1 in private network<o:p></o:p></pre>
<pre>   value: { get_attr: [ server1, first_address ] }<o:p></o:p></pre>
<pre> server1_public_ip:<o:p></o:p></pre>
<pre>   description: Floating IP address of server1 in public network<o:p></o:p></pre>
<pre>   value: { get_attr: [ server1_floating_ip, floating_ip_address ] }<o:p></o:p></pre>
<pre> server2_private_ip:<o:p></o:p></pre>
<pre>   description: IP address of server2 in private network<o:p></o:p></pre>
<pre>   value: { get_attr: [ server2, first_address ] }<o:p></o:p></pre>
<pre> server2_public_ip:<o:p></o:p></pre>
<pre>   description: Floating IP address of server2 in public network<o:p></o:p></pre>
<pre>   value: { get_attr: [ server2_floating_ip, floating_ip_address ] }<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre><o:p> </o:p></pre>
<pre>When I try to run the command:<o:p></o:p></pre>
<pre>heat stack-create mystack <o:p></o:p></pre>
<pre>--template-file=/scripts/servers_in_existing_neutron_net.yaml<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>I get the following error:<o:p></o:p></pre>
<pre>ERROR: Template not in valid format<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Any ideas?<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Therese<o:p></o:p></pre>
</blockquote>
<pre><o:p> </o:p></pre>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre>_______________________________________________<o:p></o:p></pre>
<pre>Mailing list: <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack</a><o:p></o:p></pre>
<pre>Post to     : <a href="mailto:openstack@lists.openstack.org">openstack@lists.openstack.org</a><o:p></o:p></pre>
<pre>Unsubscribe : <o:p></o:p></pre>
<pre><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack</a><o:p></o:p></pre>
</blockquote>
<pre><o:p> </o:p></pre>
<pre><o:p> </o:p></pre>
<pre>_______________________________________________<o:p></o:p></pre>
<pre>Mailing list: <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack</a><o:p></o:p></pre>
<pre>Post to     : <a href="mailto:openstack@lists.openstack.org">openstack@lists.openstack.org</a><o:p></o:p></pre>
<pre>Unsubscribe : <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack</a><o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>_______________________________________________<o:p></o:p></pre>
<pre>Mailing list: <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack</a><o:p></o:p></pre>
<pre>Post to     : <a href="mailto:openstack@lists.openstack.org">openstack@lists.openstack.org</a><o:p></o:p></pre>
<pre>Unsubscribe : <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack</a><o:p></o:p></pre>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>