Class: ZAWS::AWSCLI::Data::EC2::Instance

Inherits:
Object
  • Object
show all
Defined in:
lib/zaws/external/awscli/data/ec2/instance.rb

Instance Method Summary collapse

Constructor Details

#initialize(shellout, filestore) ⇒ Instance

Returns a new instance of Instance.



7
8
9
10
11
# File 'lib/zaws/external/awscli/data/ec2/instance.rb', line 7

def initialize(shellout, filestore)
  @shellout=shellout
  @filestore=filestore
  @instance_hash=nil
end

Instance Method Details

#create_lookup_hashesObject



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/zaws/external/awscli/data/ec2/instance.rb', line 64

def create_lookup_hashes()
  @ids_to_names = {}
  @ids_to_externalid = {}
  @externalids_to_id = {}
  @names_to_id = {}
  @names_to_status = {}
  @externalid_to_status = {}
  @ids_interval={}
  if @instance_hash and @instance_hash["Reservations"]
    @instance_hash["Reservations"].each do |res|
      if res["Instances"]
        res["Instances"].each do |ins|
          hash_identification(ins)
          hash_status(ins)
          hash_interval(ins)
        end
      end
    end
  end
end

#externalid(instanceid) ⇒ Object



122
123
124
125
# File 'lib/zaws/external/awscli/data/ec2/instance.rb', line 122

def externalid(instanceid)
  return @ids_to_externalid[instanceid] if @ids_to_externalid[instanceid]
  return "unknown"
end

#has_interval?(instanceid) ⇒ Boolean

Returns:

  • (Boolean)


132
133
134
# File 'lib/zaws/external/awscli/data/ec2/instance.rb', line 132

def has_interval?(instanceid)
  return @ids_interval[instanceid] ? true : false
end

#hash_identification(single_instance_hash) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/zaws/external/awscli/data/ec2/instance.rb', line 49

def hash_identification(single_instance_hash)
  instance_name = nil
  instance_externalid = nil
  if single_instance_hash["Tags"]
    single_instance_hash["Tags"].each do |tag|
      instance_name = tag["Value"] if tag["Key"] == "Name"
      instance_externalid = tag["Value"] if tag["Key"] == "Name"
    end
  end
  @ids_to_names[single_instance_hash["InstanceId"]] = instance_name if single_instance_hash["InstanceId"] and instance_name
  @ids_to_externalid[single_instance_hash["InstanceId"]] = instance_externalid if single_instance_hash["InstanceId"] and instance_externalid
  @externalids_to_id[instance_externalid] = single_instance_hash["InstanceId"] if single_instance_hash["InstanceId"] and instance_externalid
  @names_to_id[instance_name] = single_instance_hash["InstanceId"] if single_instance_hash["InstanceId"] and instance_name
end

#hash_interval(single_instance_hash) ⇒ Object



85
86
87
88
89
90
91
92
93
# File 'lib/zaws/external/awscli/data/ec2/instance.rb', line 85

def hash_interval(single_instance_hash)
  instance_interval =nil
  if single_instance_hash["Tags"]
    single_instance_hash["Tags"].each do |tag|
      instance_interval = tag["Value"] if tag["Key"] == "interval"
    end
  end
  @ids_interval[single_instance_hash["InstanceId"]]=instance_interval if single_instance_hash["InstanceId"] and instance_interval
end

#hash_status(single_instance_hash) ⇒ Object



95
96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/zaws/external/awscli/data/ec2/instance.rb', line 95

def hash_status(single_instance_hash)
  instance_name = nil
  instance_externalid = nil
  instance_status = nil
  if single_instance_hash["Tags"]
    single_instance_hash["Tags"].each do |tag|
      instance_name = tag["Value"] if tag["Key"] == "Name"
      instance_externalid = tag["Value"] if tag["Key"] == "externalid"
    end
  end
  instance_status = single_instance_hash["State"]["Name"] if single_instance_hash["State"] and single_instance_hash["State"]["Name"]
  @names_to_status[instance_name]=instance_status if instance_status and instance_name
  @externalid_to_status[instance_externalid]=instance_status if instance_status and instance_externalid
end

#instanceid(name, externalid) ⇒ Object



116
117
118
119
120
# File 'lib/zaws/external/awscli/data/ec2/instance.rb', line 116

def instanceid(name, externalid)
  return @names_to_id[name] if @names_to_id[name]
  return @externalids_to_id[externalid] if @externalids_to_id[externalid]
  return "unknown"
end

#interval_email(instanceid) ⇒ Object



144
145
146
# File 'lib/zaws/external/awscli/data/ec2/instance.rb', line 144

def interval_email(instanceid)
  return @ids_interval[instanceid] ? @ids_interval[instanceid].split(":")[2] : "-1"
end

#interval_end(instanceid) ⇒ Object



140
141
142
# File 'lib/zaws/external/awscli/data/ec2/instance.rb', line 140

def interval_end(instanceid)
  return @ids_interval[instanceid] ? @ids_interval[instanceid].split(":")[1] : "-1"
end

#interval_start(instanceid) ⇒ Object



136
137
138
# File 'lib/zaws/external/awscli/data/ec2/instance.rb', line 136

def interval_start(instanceid)
  return @ids_interval[instanceid] ? @ids_interval[instanceid].split(":")[0] : "-1"
end

#load(command, data, verbose, cache = true) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/zaws/external/awscli/data/ec2/instance.rb', line 27

def load(command, data, verbose,cache=true)
  @instance_raw_data = data
  verbose.puts(@instance_raw_data) if verbose
  @instance_hash=nil
  begin
    @instance_hash =JSON.parse(data)
    create_lookup_hashes()
    @filestore.store("instance",@instance_raw_data,Time.now + @filestore.timeout,command) if cache
  rescue JSON::ParserError => e
  end
end

#load_cached(command, verbose) ⇒ Object



17
18
19
20
21
22
23
24
25
# File 'lib/zaws/external/awscli/data/ec2/instance.rb', line 17

def load_cached(command,verbose)
  fileinstances = @filestore.retrieve("instance",command)
  if fileinstances.nil?
    return false
  else
    load(command,fileinstances,verbose,false)
    return true
  end
end

#name(instanceid) ⇒ Object



127
128
129
130
# File 'lib/zaws/external/awscli/data/ec2/instance.rb', line 127

def name(instanceid)
  return @ids_to_names[instanceid] if @ids_to_names[instanceid]
  return "unknown"
end

#names_by_ids(instanceids) ⇒ Object



148
149
150
151
152
153
154
155
156
157
# File 'lib/zaws/external/awscli/data/ec2/instance.rb', line 148

def names_by_ids(instanceids)
  names = nil
  instanceids.split("\n").each do |item|
    if @ids_to_names[item]
      names += "\n" + @ids_to_names[item] if !names.nil?
      names = @ids_to_names[item] if names.nil?
    end
  end
  return names
end

#status(name, externalid) ⇒ Object



110
111
112
113
114
# File 'lib/zaws/external/awscli/data/ec2/instance.rb', line 110

def status(name, externalid)
  return @names_to_status[name] if @names_to_status[name]
  return @externalid_to_status[externalid] if @externalid_to_status[externalid]
  return "unknown"
end

#validJSONObject



13
14
15
# File 'lib/zaws/external/awscli/data/ec2/instance.rb', line 13

def validJSON
  return (@instance_hash.nil?)
end

#view(view = nil) ⇒ Object



39
40
41
42
43
44
45
46
47
# File 'lib/zaws/external/awscli/data/ec2/instance.rb', line 39

def view(view=nil)
  if view=="yaml"
     return @instance_hash.to_yaml
  elsif view=="hash"
     return @instance_hash
  else
     return @instance_raw_data
  end
end