Sha256: 31d988fdd66b3fadec61836517b525b784e3d4686d4d22a9634936385bc63109

Contents?: true

Size: 1.56 KB

Versions: 1

Compression:

Stored size: 1.56 KB

Contents

module Nucleon
module Action
module Cloud
class Images < CORL.plugin_class(:nucleon, :cloud_action)
  
  #-----------------------------------------------------------------------------
  # Info
  
  def self.describe
    super(:cloud, :images, 850)
  end

  #-----------------------------------------------------------------------------
  # Settings
  
  def configure
    super do
      codes :node_load_failure,
            :image_load_failure
      
      register :region, :str, nil      
      register :match_case, :bool, false
      register :require_all, :bool, true
      register :search, :array, []
    end
  end
  
  #---
  
  def ignore
    node_ignore - [ :node_provider ]
  end
  
  def arguments
    [ :node_provider, :search ]
  end
  
  #-----------------------------------------------------------------------------
  # Operations
 
  def execute
    super do |local_node, network|
      info('corl.actions.images.start')
      
      ensure_network(network) do
        if node = network.test_node(settings[:node_provider], { :region => settings[:region] })
          if images = node.images(settings[:search], settings)
            images.each do |image|
              render(node.render_image(image), { :prefix => false })
            end
          
            myself.result = images
            success('corl.actions.images.results', { :images => images.length }) if images.length > 1
          else
            myself.status = code.image_load_failure
          end
        else
          myself.status = code.node_load_failure
        end
      end
    end
  end
end
end
end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
corl-0.5.0 lib/nucleon/action/cloud/images.rb