<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">On 07/11/2013 10:04 PM, Geoffroy wrote:<br>
    </div>
    <blockquote
cite="mid:CAOjXrFc00bA7yGQBRjy_RACZwxE4NOOXvtYf2k-eAnH7ui+Nmw@mail.gmail.com"
      type="cite">
      <div dir="ltr">I am trying to use Heat as an provisioning tool on
        multiple Cloud providers, lets say HpCloud and Rackspace. I got
        local keystone, heat-api and heat-engine servers. My scenario
        is: if i submit a template with 2 compute instances, i want them
        to be distributed on each providers.
        <div>
          <br>
        </div>
        <div>It's a little difficult, because heat-engine reuses my
          local keystone to retrieve the endpoint and credentials, which
          are different for each external providers.</div>
        <div><br>
        </div>
        <div>My guess was to use the Environment to store every external
          credentials in the parameters, and precise in the
          resource_registry a binding for every instances:</div>
        <div><br>
        </div>
        <div>parameters:</div>
        <div>  HpCloudUserName: foo</div>
        <div>  HpCloudPassword: foo</div>
        <div>  HpCloudAuthUrl: <a moz-do-not-send="true"
            href="http://foo.org">http://foo.org</a></div>
        <div>  RackspaceUserName: bar</div>
        <div>  RackspacePassword: bar</div>
        <div>  RackspaceAuthUrl: <a moz-do-not-send="true"
            href="http://bar.org">http://bar.org</a></div>
        <div>resource_registry:</div>
        <div>  resources:</div>
        <div>    my_instance_1:</div>
        <div>      "AWS::EC2::Instance" : "HpCloud::Nova::Compute"</div>
        <div>    my_instance_2:</div>
        <div>      "AWS::EC2::Instance" : "Rackspace::Compute::Server"</div>
        <div><br>
        </div>
        <div>Then, i code some new python plugins, that will handle this
          2 new type, take the corresponding credentials in the
          environment, and call the novaclient with the correct
          arguments.</div>
        <div><br>
        </div>
        <div><br>
        </div>
        <div>But my problem is that this solution seems overkill, as i
           will have to add a new python class for every type i want to
          use, multiply by the number of externals providers. Even if i
          can factorize the code, in the end i just want to customize
          the credentials and auth endpoint.</div>
        <div><br>
        </div>
        <div><br>
        </div>
        <div>Do you known if there is a better way to achieve this goal,
          or simply if Heat shouldn't be use for this ?.</div>
        <br>
      </div>
    </blockquote>
    There are a few interim steps required before we can handle your
    scenario of multiple clouds in a single template. The first steps
    are to change API middleware behaviour to not assume heat is
    installed in a single integrated openstack:<br>
    <meta http-equiv="content-type" content="text/html;
      charset=ISO-8859-1">
    <a
      href="https://blueprints.launchpad.net/heat/+spec/heat-standalone">https://blueprints.launchpad.net/heat/+spec/heat-standalone</a><br>
    <meta http-equiv="content-type" content="text/html;
      charset=ISO-8859-1">
    <a
      href="https://blueprints.launchpad.net/heat/+spec/heat-multicloud">https://blueprints.launchpad.net/heat/+spec/heat-multicloud</a><br>
    <br>
    When they are ready, the HOT template concepts of Environments and
    Providers should allow you to implement your HpCloud::Nova::Compute
    and Rackspace::Compute::Server as nested stacks so you won't need to
    code these in python.<br>
    <br>
    <br>
  </body>
</html>