Module: Bcome::FogHelper

Included in:
Stack::Environment
Defined in:
lib/helpers/fog_helper.rb

Instance Method Summary collapse

Instance Method Details

#colour_code_for_server_statusObject



42
43
44
45
46
47
48
49
50
# File 'lib/helpers/fog_helper.rb', line 42

def colour_code_for_server_status
  {
    "pending" => :headsup,
    "running" => :friendly,
    "terminated" => :menu_item_white, #durr
    "stopping" => :headsup,
    "stopped" => :danger
  } 
end

#credentials_keyObject



3
4
5
# File 'lib/helpers/fog_helper.rb', line 3

def credentials_key
  network_lookup[:credentials_key]
end

#ec2_filtersObject



11
12
13
# File 'lib/helpers/fog_helper.rb', line 11

def ec2_filters
  network_lookup[:ec2_server_lookup_filters] ? network_lookup[:ec2_server_lookup_filters] : unfiltered_search_params 
end

#ec2_tagsObject




71
72
73
# File 'lib/helpers/fog_helper.rb', line 71

def ec2_tags
  network_lookup[:ec2_tag_filter]
end

#filter_by_tags(instances) ⇒ Object



88
89
90
# File 'lib/helpers/fog_helper.rb', line 88

def filter_by_tags(instances)
  return instances.select{|instance| instance_matches_tags?(instance)}
end

#fog_clientObject



7
8
9
# File 'lib/helpers/fog_helper.rb', line 7

def fog_client
  @fog_client ||= get_fog_client
end

#instance_matches_tags?(instance) ⇒ Boolean

Returns:

  • (Boolean)


92
93
94
95
# File 'lib/helpers/fog_helper.rb', line 92

def instance_matches_tags?(instance)
  tags = instance.tags
  return ec2_tags.select{|key, value| tags[key.to_s] == value }.size == ec2_tags.keys.size
end

#reload!Object



15
16
17
18
19
20
21
22
# File 'lib/helpers/fog_helper.rb', line 15

def reload!
  @unfiltered_servers = fog_client.servers.all(ec2_filters)
  restock_inventory = true 
  @resources = do_load_resources(restock_inventory)
  @node = construct_node
  system("clear")
  list
end

#render_servers_not_returned_by_filtered_lookupObject

smell



31
32
33
34
35
36
37
38
39
40
# File 'lib/helpers/fog_helper.rb', line 31

def render_servers_not_returned_by_filtered_lookup
  return unless show_all_unfiltered_status?
  unfiltered_servers = servers(servers_not_returned_by_filtered_lookup)
  if unfiltered_servers.any?
    puts "\n#{network_lookup[:show_all_unfiltered_title]}".informational
    puts unfiltered_servers.collect{|server| 
      "#{server.tags["Name"].menu_item_cyan} - #{server.state.send(colour_code_for_server_status[server.state])}"
    }.join("\n")
  end
end

#servers(all = unfiltered_servers) ⇒ Object



75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/helpers/fog_helper.rb', line 75

def servers(all = unfiltered_servers)
  filtered_by_tags = ec2_tags ? filter_by_tags(all) : all
  custom_filter_method = @meta_data[:network_lookup][:custom_post_process_filter_method]

  if custom_filter_method
    filter = ::Bcome::Filter::Ec2Filter.new(filtered_by_tags, self)
    raise "Custom filter method #{custom_filter_method} is missing. Make sure you've added it".failure unless filter.respond_to?(custom_filter_method.to_sym)
    return filter.send(custom_filter_method.to_sym) 
  else
    return filtered_by_tags
  end
end

#servers_not_returned_by_filtered_lookupObject



52
53
54
55
# File 'lib/helpers/fog_helper.rb', line 52

def servers_not_returned_by_filtered_lookup
  filtered_lookup_names = resources.collect(&:identifier)
  return unfiltered_fog_lookup.select{|server| !filtered_lookup_names.include?(server.tags["Name"]) }  
end

#show_all_unfiltered_status?Boolean

Returns:

  • (Boolean)


61
62
63
# File 'lib/helpers/fog_helper.rb', line 61

def show_all_unfiltered_status?
  self.network_lookup[:show_all_unfiltered]
end

#unfiltered_fog_lookupObject



57
58
59
# File 'lib/helpers/fog_helper.rb', line 57

def unfiltered_fog_lookup
  fog_client.servers.all(unfiltered_search_params)
end

#unfiltered_search_paramsObject



24
25
26
# File 'lib/helpers/fog_helper.rb', line 24

def unfiltered_search_params
  { 'instance-id' => [] }
end

#unfiltered_serversObject

Misnomer - these are filtered



65
66
67
# File 'lib/helpers/fog_helper.rb', line 65

def unfiltered_servers  ### Misnomer - these are filtered
  @unfiltered_servers ||= fog_client.servers.all(ec2_filters)
end