<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -72,7 +72,6 @@ module CloudProviders
       :kernel_id              =&gt; nil,
       :ramdisk_id             =&gt; nil,
       :block_device_mappings  =&gt; nil,
-      :elastic_ips            =&gt; [],  # An array of the elastic ips
       :ebs_volumes            =&gt; []   # The volume id of an ebs volume # TODO: ensure this is consistent with :block_device_mappings
     )
     
@@ -83,7 +82,7 @@ module CloudProviders
       end
     end
     
-    def run
+    def run      
       puts &quot;  for cloud: #{cloud.name}&quot;
       puts &quot;  minimum_instances: #{minimum_instances}&quot;
       puts &quot;  maximum_instances: #{maximum_instances}&quot;
@@ -119,27 +118,6 @@ module CloudProviders
         end
         reset!
         # ELASTIC IPS
-        unless _elastic_ips.empty?
-          unused_elastic_ip_addresses = ElasticIp.unused_elastic_ips(self).map {|i| i.public_ip }
-          used_elastic_ip_addresses = ElasticIp.elastic_ips(self).map {|i| i.public_ip }
-
-          elastic_ip_objects = ElasticIp.unused_elastic_ips(self).select {|ip_obj| _elastic_ips.include?(ip_obj.public_ip) }
-
-          assignee_nodes = nodes.select {|n| !ElasticIp.elastic_ips(self).include?(n.public_ip) }
-
-          elastic_ip_objects.each_with_index do |eip, idx|
-            # Only get the nodes that do not have elastic ips associated with them
-            begin
-              if assignee_nodes[idx]
-                puts &quot;Assigning elastic ip: #{eip.public_ip} to node: #{assignee_nodes[idx].instance_id}&quot;
-                ec2.associate_address(:instance_id =&gt; assignee_nodes[idx].instance_id, :public_ip =&gt; eip.public_ip)
-              end
-            rescue Exception =&gt; e
-              p [:error, e.inspect]
-            end
-            reset!
-          end
-        end
       else
         autoscalers.each do |a|
           puts &quot;    autoscaler: #{a.name}&quot;
@@ -166,6 +144,7 @@ module CloudProviders
         end
       end
       
+      assign_elastic_ips
     end
     
     def teardown
@@ -221,6 +200,30 @@ module CloudProviders
       end
     end
     
+    def assign_elastic_ips
+      unless elastic_ips.empty?
+        unused_elastic_ip_addresses = ElasticIp.unused_elastic_ips(self).map {|i| i.public_ip }
+        used_elastic_ip_addresses = ElasticIp.elastic_ips(self).map {|i| i.public_ip }
+
+        elastic_ip_objects = ElasticIp.unused_elastic_ips(self).select {|ip_obj| elastic_ips.include?(ip_obj.public_ip) }
+
+        assignee_nodes = nodes.select {|n| !ElasticIp.elastic_ips(self).include?(n.public_ip) }
+
+        elastic_ip_objects.each_with_index do |eip, idx|
+          # Only get the nodes that do not have elastic ips associated with them
+          begin
+            if assignee_nodes[idx]
+              puts &quot;Assigning elastic ip: #{eip.public_ip} to node: #{assignee_nodes[idx].instance_id}&quot;
+              ec2.associate_address(:instance_id =&gt; assignee_nodes[idx].instance_id, :public_ip =&gt; eip.public_ip)
+            end
+          rescue Exception =&gt; e
+            p [:error, e.inspect]
+          end
+          reset!
+        end
+      end
+    end
+    
     def nodes
       all_nodes.select {|i| i.in_service? }#describe_instances.select {|i| i.in_service? &amp;&amp; security_groups.include?(i.security_groups) }
     end
@@ -258,7 +261,7 @@ module CloudProviders
       security_groups &lt;&lt; SecurityGroup.new(given_name, sub_opts.merge(o || {}), &amp;block)
     end
     def elastic_ip(*ips)
-      ips.each {|ip| _elastic_ips &lt;&lt; ip}
+      ips.each {|ip| elastic_ips &lt;&lt; ip}
     end
         
     # Proxy to the raw Grempe amazon-aws @ec2 instance
@@ -287,6 +290,9 @@ module CloudProviders
     def autoscalers
       @autoscalers ||= []
     end
+    def elastic_ips
+      @elastic_ips ||= []
+    end
     
     # Clear the cache
     def reset!
@@ -298,9 +304,6 @@ module CloudProviders
     def sub_opts
       dsl_options.merge(:parent =&gt; self, :cloud =&gt; cloud)
     end
-    def _elastic_ips
-      @_elastic_ips ||= []
-    end
     def generate_keypair(n=nil)
       puts &quot;[EC2] generate_keypair is called with #{default_keypair_path/n}&quot;
       begin</diff>
      <filename>lib/cloud_providers/ec2/ec2.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>8958d3b84f15f5b65d29a7ddd75f739490fcc59c</id>
    </parent>
  </parents>
  <author>
    <name>Ari Lerner</name>
    <email>arilerner@mac.com</email>
  </author>
  <url>http://github.com/auser/poolparty/commit/5f3eb872bce1fb494119e6837aa78d3aef9ba94b</url>
  <id>5f3eb872bce1fb494119e6837aa78d3aef9ba94b</id>
  <committed-date>2009-11-07T01:52:56-08:00</committed-date>
  <authored-date>2009-11-07T01:52:56-08:00</authored-date>
  <message>Fixed elastic_ips</message>
  <tree>824583d958ab92496586fd5c2c1b615db8872778</tree>
  <committer>
    <name>Ari Lerner</name>
    <email>arilerner@mac.com</email>
  </committer>
</commit>
