Class: Nucleon::Action::Cloud::Images

Inherits:
Object
  • Object
show all
Defined in:
lib/nucleon/action/cloud/images.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.describeObject


Info



10
11
12
# File 'lib/nucleon/action/cloud/images.rb', line 10

def self.describe
  super(:cloud, :images, 850)
end

Instance Method Details

#argumentsObject



35
36
37
# File 'lib/nucleon/action/cloud/images.rb', line 35

def arguments
  [ :node_provider, :search ]
end

#configureObject


Settings



17
18
19
20
21
22
23
24
25
26
27
# File 'lib/nucleon/action/cloud/images.rb', line 17

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

#executeObject


Operations



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/nucleon/action/cloud/images.rb', line 42

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|
            info(node.render_image(image), { :prefix => false, :i18n => 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

#ignoreObject




31
32
33
# File 'lib/nucleon/action/cloud/images.rb', line 31

def ignore
  node_ignore - [ :node_provider ]
end