Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > 4b137326f38b5adf1f9ffd3dbbb48a7b > files > 519

deltacloud-core-doc-0.4.0-4.fc15.noarch.rpm

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html 
     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>
<head>
  <title>images (Deltacloud::Drivers::VSphere::VSphereDriver)</title>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  <link rel="stylesheet" href="../../../../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
  <pre><span class="ruby-comment cmt"># File lib/deltacloud/drivers/vsphere/vsphere_driver.rb, line 71</span>
    <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">images</span>(<span class="ruby-identifier">credentials</span>, <span class="ruby-identifier">opts</span>=<span class="ruby-keyword kw">nil</span>)
      <span class="ruby-identifier">cloud</span> = <span class="ruby-identifier">new_client</span>(<span class="ruby-identifier">credentials</span>)
      <span class="ruby-identifier">img_arr</span> = []

      <span class="ruby-comment cmt"># Skip traversing through all instances in all datacenters when ID</span>
      <span class="ruby-comment cmt"># attribute is set</span>
      <span class="ruby-identifier">safely</span> <span class="ruby-keyword kw">do</span>
        <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">opts</span>[<span class="ruby-identifier">:id</span>]
          <span class="ruby-identifier">template_vms</span> = [ <span class="ruby-identifier">find_vm</span>(<span class="ruby-identifier">credentials</span>, <span class="ruby-identifier">opts</span>[<span class="ruby-identifier">:id</span>]) ].<span class="ruby-identifier">select</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">vm</span><span class="ruby-operator">|</span> <span class="ruby-identifier">vm</span>[<span class="ruby-identifier">:instance</span>] }.<span class="ruby-identifier">compact</span>
        <span class="ruby-keyword kw">else</span>
          <span class="ruby-identifier">template_vms</span> = <span class="ruby-identifier">list_virtual_machines</span>(<span class="ruby-identifier">credentials</span>).<span class="ruby-identifier">select</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">vm</span><span class="ruby-operator">|</span> <span class="ruby-identifier">vm</span>[<span class="ruby-identifier">:instance</span>] <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">vm</span>[<span class="ruby-identifier">:instance</span>].<span class="ruby-identifier">summary</span>.<span class="ruby-identifier">config</span>[<span class="ruby-identifier">:template</span>] }
        <span class="ruby-keyword kw">end</span>
        <span class="ruby-identifier">img_arr</span> = <span class="ruby-identifier">template_vms</span>.<span class="ruby-identifier">collect</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">image_hash</span><span class="ruby-operator">|</span>
          <span class="ruby-identifier">image</span>, <span class="ruby-identifier">realm</span> = <span class="ruby-identifier">image_hash</span>[<span class="ruby-identifier">:instance</span>], <span class="ruby-identifier">image_hash</span>[<span class="ruby-identifier">:datastore</span>]
          <span class="ruby-identifier">config</span> = <span class="ruby-identifier">image</span>.<span class="ruby-identifier">summary</span>.<span class="ruby-identifier">config</span>
          <span class="ruby-identifier">instance_state</span> = <span class="ruby-identifier">convert_state</span>(<span class="ruby-identifier">:instance</span>, <span class="ruby-identifier">image</span>.<span class="ruby-identifier">summary</span>.<span class="ruby-identifier">runtime</span>[<span class="ruby-identifier">:powerState</span>])
          <span class="ruby-comment cmt"># Preload all properties to save multiple SOAP calls to vSphere</span>
          <span class="ruby-identifier">properties</span> = {
            <span class="ruby-identifier">:name</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">config</span>[<span class="ruby-identifier">:name</span>],
            <span class="ruby-identifier">:full_name</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">config</span>[<span class="ruby-identifier">:guestFullName</span>]
          }
          <span class="ruby-identifier">image_state</span> = <span class="ruby-identifier">convert_state</span>(<span class="ruby-identifier">:image</span>, <span class="ruby-identifier">image</span>.<span class="ruby-identifier">summary</span>.<span class="ruby-identifier">runtime</span>[<span class="ruby-identifier">:powerState</span>])
          <span class="ruby-comment cmt"># This will determine image architecture using image description.</span>
          <span class="ruby-comment cmt"># Ussualy description include '64-bit' or '32-bit'. In case you used</span>
          <span class="ruby-comment cmt"># some weird template/OS it will fallback to 64 bit</span>
          <span class="ruby-identifier">image_architecture</span> = <span class="ruby-identifier">extract_architecture</span>(<span class="ruby-identifier">properties</span>[<span class="ruby-identifier">:full_name</span>]) <span class="ruby-operator">||</span> <span class="ruby-value str">'x86_64'</span>
          <span class="ruby-constant">Image</span>.<span class="ruby-identifier">new</span>(
            <span class="ruby-identifier">:id</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">properties</span>[<span class="ruby-identifier">:name</span>],
            <span class="ruby-identifier">:name</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">properties</span>[<span class="ruby-identifier">:name</span>],
            <span class="ruby-identifier">:architecture</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">image_architecture</span>,
            <span class="ruby-identifier">:owner_id</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">credentials</span>.<span class="ruby-identifier">user</span>,
            <span class="ruby-identifier">:description</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">properties</span>[<span class="ruby-identifier">:full_name</span>],
            <span class="ruby-identifier">:state</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">image_state</span>
          )
        <span class="ruby-keyword kw">end</span>
      <span class="ruby-keyword kw">end</span>
      <span class="ruby-identifier">img_arr</span> = <span class="ruby-identifier">filter_on</span>( <span class="ruby-identifier">img_arr</span>, <span class="ruby-identifier">:architecture</span>, <span class="ruby-identifier">opts</span> )
      <span class="ruby-identifier">img_arr</span>.<span class="ruby-identifier">sort_by</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">e</span><span class="ruby-operator">|</span> [<span class="ruby-identifier">e</span>.<span class="ruby-identifier">owner_id</span>, <span class="ruby-identifier">e</span>.<span class="ruby-identifier">name</span>]}
    <span class="ruby-keyword kw">end</span></pre>
</body>
</html>