opennebula_nagios_probe 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/.gitignore +5 -0
- data/.rubocop.yml +6 -0
- data/.travis.yml +10 -0
- data/Gemfile +18 -0
- data/Gemfile.lock +87 -0
- data/README.md +36 -0
- data/Rakefile +65 -0
- data/bin/check_opennebula +70 -0
- data/conf/opennebula.cfg.erb +32 -0
- data/lib/opennebula_nagios_probe.rb +29 -0
- data/lib/probe/occi/client.rb +50 -0
- data/lib/probe/occi/nocci/compute.rb +20 -0
- data/lib/probe/occi/nocci/network.rb +21 -0
- data/lib/probe/occi/nocci/resource.rb +96 -0
- data/lib/probe/occi/nocci/storage.rb +22 -0
- data/lib/probe/occi/rocci/compute.rb +70 -0
- data/lib/probe/occi/rocci/network.rb +21 -0
- data/lib/probe/occi/rocci/resource.rb +62 -0
- data/lib/probe/occi/rocci/storage.rb +22 -0
- data/lib/probe/opennebula_econe_probe.rb +108 -0
- data/lib/probe/opennebula_occi_probe.rb +126 -0
- data/lib/probe/opennebula_oned_probe.rb +101 -0
- data/lib/probe/opennebula_probe.rb +97 -0
- data/lib/probe/optparse_nagios_probe.rb +174 -0
- data/opennebula_nagios_probe.gemspec +32 -0
- data/spec/probe/fixtures/cassettes/econe/econe_critical_existing_resources.yml +75 -0
- data/spec/probe/fixtures/cassettes/econe/econe_critical_no_resources.yml +75 -0
- data/spec/probe/fixtures/cassettes/econe/econe_critical_nonexisting_resources.yml +75 -0
- data/spec/probe/fixtures/cassettes/econe/econe_warning_existing_resources.yml +75 -0
- data/spec/probe/fixtures/cassettes/econe/econe_warning_nonexisting_resources.yml +40 -0
- data/spec/probe/fixtures/cassettes/occi/occi_critical_existing_resources.yml +143 -0
- data/spec/probe/fixtures/cassettes/occi/occi_critical_no_resources.yml +143 -0
- data/spec/probe/fixtures/cassettes/occi/occi_critical_nonexisting_resources.yml +143 -0
- data/spec/probe/fixtures/cassettes/occi/occi_warning_existing_resources.yml +230 -0
- data/spec/probe/fixtures/cassettes/occi/occi_warning_nonexisting_resources.yml +49 -0
- data/spec/probe/fixtures/cassettes/oned/oned_critical_existing_resources.yml +131 -0
- data/spec/probe/fixtures/cassettes/oned/oned_critical_no_resources.yml +131 -0
- data/spec/probe/fixtures/cassettes/oned/oned_critical_nonexisting_resources.yml +131 -0
- data/spec/probe/fixtures/cassettes/oned/oned_warning_existing_resources.yml +671 -0
- data/spec/probe/fixtures/cassettes/oned/oned_warning_nonexisting_resources.yml +130 -0
- data/spec/probe/fixtures/cassettes/rocci/rocci_critical_existing_resources.yml +1220 -0
- data/spec/probe/fixtures/cassettes/rocci/rocci_critical_no_resources.yml +1220 -0
- data/spec/probe/fixtures/cassettes/rocci/rocci_critical_nonexisting_resources.yml +1220 -0
- data/spec/probe/fixtures/cassettes/rocci/rocci_warning_existing_resources.yml +817 -0
- data/spec/probe/fixtures/cassettes/rocci/rocci_warning_no_resources.yml +591 -0
- data/spec/probe/fixtures/cassettes/rocci/rocci_warning_nonexisting_resources.yml +640 -0
- data/spec/probe/opennebula_econe_probe_spec.rb +150 -0
- data/spec/probe/opennebula_occi_probe_spec.rb +149 -0
- data/spec/probe/opennebula_oned_probe_spec.rb +154 -0
- data/spec/probe/opennebula_rocci_probe_spec.rb +156 -0
- metadata +280 -0
@@ -0,0 +1,101 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
###########################################################################
|
3
|
+
## Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
## you may not use this file except in compliance with the License.
|
5
|
+
## You may obtain a copy of the License at
|
6
|
+
##
|
7
|
+
## http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
##
|
9
|
+
## Unless required by applicable law or agreed to in writing, software
|
10
|
+
## distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
## See the License for the specific language governing permissions and
|
13
|
+
## limitations under the License.
|
14
|
+
###########################################################################
|
15
|
+
|
16
|
+
require 'opennebula_probe'
|
17
|
+
require 'opennebula'
|
18
|
+
|
19
|
+
include OpenNebula
|
20
|
+
|
21
|
+
# OpenNebulaOnedProbe - XML-RPC ONED client query service implementation.
|
22
|
+
|
23
|
+
class OpenNebulaOnedProbe < OpennebulaProbe
|
24
|
+
FAILED_CONNECTIVITY = 'Failed to check connectivity: '
|
25
|
+
FAILED_RESOURCE = 'Failed to check resource availability: '
|
26
|
+
|
27
|
+
def initialize(opts)
|
28
|
+
super(opts)
|
29
|
+
|
30
|
+
# OpenNebula credentials
|
31
|
+
@credentials = "#{@opts.username}:#{@opts.password}"
|
32
|
+
@client = Client.new(@credentials, @endpoint)
|
33
|
+
end
|
34
|
+
|
35
|
+
def check_pool(pool, msg)
|
36
|
+
rc = pool.info
|
37
|
+
fail "#{msg} #{rc.message}" if OpenNebula.is_error?(rc)
|
38
|
+
end
|
39
|
+
|
40
|
+
def check_crit
|
41
|
+
@logger.info "Checking for basic connectivity at #{@endpoint}"
|
42
|
+
|
43
|
+
pool_class_array = [VirtualNetworkPool, ImagePool, VirtualMachinePool]
|
44
|
+
pool_class_array.each do |pool_class|
|
45
|
+
pool = pool_class.new(@client, -1)
|
46
|
+
check_pool(pool, FAILED_CONNECTIVITY)
|
47
|
+
end
|
48
|
+
|
49
|
+
false
|
50
|
+
|
51
|
+
rescue StandardError => e
|
52
|
+
@logger.error "Failed to check basic connectivity: #{e.message}"
|
53
|
+
@logger.debug "#{e.backtrace.join("\n")}"
|
54
|
+
return true
|
55
|
+
end
|
56
|
+
|
57
|
+
def check_resources(resources)
|
58
|
+
if resources.map { |x| x[:resource] }.reduce(true) { |product, resource| product && resource.nil? }
|
59
|
+
@logger.info 'There are no resources to check, for details on how to specify resources see --help'
|
60
|
+
return false
|
61
|
+
end
|
62
|
+
|
63
|
+
resources.each do |resource_hash|
|
64
|
+
resource = resource_hash[:resource]
|
65
|
+
|
66
|
+
next unless resource
|
67
|
+
|
68
|
+
@logger.info "Looking for #{resource_hash[:resource_string]}s: #{resource.inspect}"
|
69
|
+
pool = resource_hash[:resource_pool].new(@client, -1)
|
70
|
+
check_pool(pool, FAILED_RESOURCE)
|
71
|
+
|
72
|
+
resource.each do |resource_to_look_for|
|
73
|
+
found = false
|
74
|
+
|
75
|
+
pool.each do |res|
|
76
|
+
check_pool(res, FAILED_RESOURCE)
|
77
|
+
found = true if res.id.to_s == resource_to_look_for
|
78
|
+
end
|
79
|
+
fail "#{resource_hash[:resource_string].capitalize} #{resource_to_look_for} not found" unless found
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
false
|
84
|
+
end
|
85
|
+
|
86
|
+
def check_warn
|
87
|
+
@logger.info "Checking for resource availability at #{@endpoint}"
|
88
|
+
|
89
|
+
resources = []
|
90
|
+
resources << { resource: @opts.storage, resource_string: 'image', resource_pool: ImagePool }
|
91
|
+
resources << { resource: @opts.compute, resource_string: 'compute instance', resource_pool: VirtualMachinePool }
|
92
|
+
resources << { resource: @opts.network, resource_string: 'network', resource_pool: VirtualNetworkPool }
|
93
|
+
|
94
|
+
check_resources(resources)
|
95
|
+
|
96
|
+
rescue StandardError => e
|
97
|
+
@logger.error "Failed to check resource availability: #{e.message}"
|
98
|
+
@logger.debug "#{e.backtrace.join("\n")}"
|
99
|
+
return true
|
100
|
+
end
|
101
|
+
end
|
@@ -0,0 +1,97 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
###########################################################################
|
3
|
+
## Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
## you may not use this file except in compliance with the License.
|
5
|
+
## You may obtain a copy of the License at
|
6
|
+
##
|
7
|
+
## http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
##
|
9
|
+
## Unless required by applicable law or agreed to in writing, software
|
10
|
+
## distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
## See the License for the specific language governing permissions and
|
13
|
+
## limitations under the License.
|
14
|
+
###########################################################################
|
15
|
+
|
16
|
+
###########################################################################
|
17
|
+
# Nagios code explanation (source: https://www.nagios-plugins.org/doc/guidelines.html, q. 11-26-2013)
|
18
|
+
#
|
19
|
+
# OK/UP - The plugin was able to check the service and it appeared to be functioning properly
|
20
|
+
# WARNING - The plugin was able to check the service, but it appeared to be above some "warning"
|
21
|
+
# threshold or did not appear to be working properly
|
22
|
+
# CRITICAL/DOWN - The plugin detected that either the service was not running or it was above
|
23
|
+
# some "critical" threshold
|
24
|
+
# UNKNOWN - Invalid command line arguments were supplied to the plugin or low-level failures internal to the plugin
|
25
|
+
# (such as unable to fork, or open a tcp socket) that prevent it from performing the specified operation.
|
26
|
+
# Higher-level errors (such as name resolution errors, socket timeouts, etc) are outside of the control of plugins
|
27
|
+
# and should generally NOT be reported as UNKNOWN states.
|
28
|
+
###########################################################################
|
29
|
+
|
30
|
+
OK = 0
|
31
|
+
WARNING = 1
|
32
|
+
CRITICAL = 2
|
33
|
+
UNKNOWN = 3
|
34
|
+
|
35
|
+
# OpennebulaProbe covers generic implementation of subprobes.
|
36
|
+
# ==== Attributes
|
37
|
+
# * logger - Logger connector.
|
38
|
+
# * message - Resulting message.
|
39
|
+
# * retval - Probe status constant.
|
40
|
+
# * endpoint - Server URI.
|
41
|
+
#
|
42
|
+
# ==== Options
|
43
|
+
# * opts - Hash with parsed command line arguments.
|
44
|
+
#
|
45
|
+
# ==== Examples
|
46
|
+
# Instance is initialized from child class
|
47
|
+
|
48
|
+
class OpennebulaProbe
|
49
|
+
OK_MSG = 'Remote resources successfully queried!'
|
50
|
+
WARN_MSG = 'Failed to query specified remote resources!'
|
51
|
+
CRIT_MSG = 'Failed to establish connection with the remote server!'
|
52
|
+
UNKWN_MSG = 'An exception or error occured!'
|
53
|
+
|
54
|
+
attr_reader :retval, :message
|
55
|
+
attr_writer :logger
|
56
|
+
|
57
|
+
def initialize(opts = {})
|
58
|
+
@opts = opts
|
59
|
+
@retval = UNKNOWN
|
60
|
+
@logger = nil
|
61
|
+
@message = "#{UNKWN_MSG}"
|
62
|
+
@endpoint = "#{@opts.protocol.to_s}://#{@opts.hostname}:#{@opts.port.to_s}#{@opts.path}"
|
63
|
+
end
|
64
|
+
|
65
|
+
def check_crit
|
66
|
+
# overridden in child class
|
67
|
+
true
|
68
|
+
end
|
69
|
+
|
70
|
+
def check_warn
|
71
|
+
# overridden in child class
|
72
|
+
true
|
73
|
+
end
|
74
|
+
|
75
|
+
def crit?
|
76
|
+
return false unless check_crit
|
77
|
+
@retval = CRITICAL
|
78
|
+
@message = "CRITICAL: #{CRIT_MSG}"
|
79
|
+
true
|
80
|
+
end
|
81
|
+
|
82
|
+
def warn?
|
83
|
+
return false unless check_warn
|
84
|
+
@retval = WARNING
|
85
|
+
@message = "WARNING: #{WARN_MSG}"
|
86
|
+
true
|
87
|
+
end
|
88
|
+
|
89
|
+
def run
|
90
|
+
unless crit?
|
91
|
+
unless warn?
|
92
|
+
@retval = OK
|
93
|
+
@message = "#{OK_MSG}"
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
@@ -0,0 +1,174 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
###########################################################################
|
3
|
+
## Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
## you may not use this file except in compliance with the License.
|
5
|
+
## You may obtain a copy of the License at
|
6
|
+
##
|
7
|
+
## http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
##
|
9
|
+
## Unless required by applicable law or agreed to in writing, software
|
10
|
+
## distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
## See the License for the specific language governing permissions and
|
13
|
+
## limitations under the License.
|
14
|
+
###########################################################################
|
15
|
+
|
16
|
+
require 'optparse'
|
17
|
+
require 'ostruct'
|
18
|
+
|
19
|
+
# OptparseNagiosProbe - opennebula-nagios probes ARGV parser class.
|
20
|
+
|
21
|
+
class OptparseNagiosProbe
|
22
|
+
VERSION = 0.99
|
23
|
+
|
24
|
+
def self.parse(args)
|
25
|
+
options = OpenStruct.new
|
26
|
+
|
27
|
+
options.debuglevel = 0
|
28
|
+
|
29
|
+
options.hostname = 'localhost'
|
30
|
+
options.port = 2633
|
31
|
+
options.path = '/'
|
32
|
+
options.protocol = :http
|
33
|
+
options.username = 'oneadmin'
|
34
|
+
options.password = 'onepass'
|
35
|
+
|
36
|
+
options.service = :oned
|
37
|
+
options.occi = :occi
|
38
|
+
|
39
|
+
options.timeout = 60
|
40
|
+
|
41
|
+
options.user_cred = nil
|
42
|
+
options.voms = false
|
43
|
+
|
44
|
+
opts_ = OptionParser.new do |opts|
|
45
|
+
opts.banner = 'Usage: check_opennebula.rb [options]'
|
46
|
+
|
47
|
+
opts.separator ''
|
48
|
+
opts.separator 'Connection options:'
|
49
|
+
|
50
|
+
opts.on('--protocol [http|https]', [:http, :https], "Protocol to use, defaults to 'http'") do |protocol|
|
51
|
+
options.protocol = protocol
|
52
|
+
end
|
53
|
+
|
54
|
+
opts.on('--hostname [HOSTNAME]', String, "Host to be queried, defaults to 'localhost'") do |hostname|
|
55
|
+
options.hostname = hostname
|
56
|
+
end
|
57
|
+
|
58
|
+
opts.on('--port [PORT_NUMBER]', Integer, "Port to be queried, defaults to '2633'") do |port|
|
59
|
+
options.port = port
|
60
|
+
end
|
61
|
+
|
62
|
+
opts.on('--path [PATH]', String, 'Path to the service endpoint'\
|
63
|
+
+ "(the last part of the URI, should always start with a slash), defaults to '/'") do |path|
|
64
|
+
options.path = path
|
65
|
+
end
|
66
|
+
|
67
|
+
opts.on('--username [USERNAME]', String, 'Username for authentication purposes, '\
|
68
|
+
+ "defaults to 'oneadmin'") do |username|
|
69
|
+
options.username = username
|
70
|
+
end
|
71
|
+
|
72
|
+
opts.on('--password [PASSWORD]', String, 'Password for authentication purposes, '\
|
73
|
+
+ "defaults to 'onepass'") do |password|
|
74
|
+
options.password = password
|
75
|
+
end
|
76
|
+
|
77
|
+
opts.separator ''
|
78
|
+
opts.separator 'Session options:'
|
79
|
+
|
80
|
+
opts.on('--timeout [SECONDS]', Integer, "Timeout time in seconds, defaults to '60'") do |timeout|
|
81
|
+
options.timeout = timeout
|
82
|
+
end
|
83
|
+
|
84
|
+
opts.separator ''
|
85
|
+
opts.separator 'Service options:'
|
86
|
+
|
87
|
+
opts.on('--service [SERVICE_NAME]', [:oned, :occi, :econe, :rocci], 'Name of the cloud service'\
|
88
|
+
+ " to check [oned, occi, rocci, econe], defaults to 'oned'") do |service|
|
89
|
+
options.service = service
|
90
|
+
end
|
91
|
+
|
92
|
+
opts.on("--check-network [ID'S]", Array, 'Comma separated list of network IDs to check') do |network|
|
93
|
+
options.network = network
|
94
|
+
end
|
95
|
+
|
96
|
+
opts.on("--check-storage [ID'S]", Array, 'Comma separated list of storage IDs to check') do |storage|
|
97
|
+
options.storage = storage
|
98
|
+
end
|
99
|
+
|
100
|
+
opts.on("--check-compute [ID'S]", Array, 'Comma separated list of VM IDs to check') do |compute|
|
101
|
+
options.compute = compute
|
102
|
+
end
|
103
|
+
|
104
|
+
opts.on('--createvm [TEMPLATE_UUID]', String, 'rOCCI template uuid') do |tmpl|
|
105
|
+
options.template_uuid = tmpl
|
106
|
+
end
|
107
|
+
|
108
|
+
opts.on('--name [NAME]', String, 'Name for VM instantiated from template') do |vmname|
|
109
|
+
options.vmname = vmname
|
110
|
+
end
|
111
|
+
|
112
|
+
opts.separator ''
|
113
|
+
opts.separator 'X.509 options:'
|
114
|
+
|
115
|
+
opts.on('--user-cred [PATH]', String, "Path to user's X.509 credentials, defaults to ~/.globus/usercred.pem'")\
|
116
|
+
do |ucred|
|
117
|
+
options.user_cred = ucred
|
118
|
+
end
|
119
|
+
|
120
|
+
opts.on('--ca-file [PATH]', String, 'Path to CA certificates bundle in a file') do |cafile|
|
121
|
+
options.ca_file = cafile
|
122
|
+
end
|
123
|
+
|
124
|
+
opts.on('--ca-path [PATH]', String, 'Path to CA certificates directory, defaults to "/etc/grid-security/certificates"')\
|
125
|
+
do |capath|
|
126
|
+
options.ca_path = capath
|
127
|
+
end
|
128
|
+
|
129
|
+
opts.on('--voms', '--[no-]voms', 'Enable VOMS credentials; modifies behavior of the X.509 authN module')\
|
130
|
+
do |voms|
|
131
|
+
options.voms = voms
|
132
|
+
end
|
133
|
+
|
134
|
+
opts.separator ''
|
135
|
+
opts.separator 'Common options:'
|
136
|
+
|
137
|
+
opts.on('--debuglevel [NUMBER]', Integer, "Run with debugging mode on certain level, defaults to '0'") do |debug|
|
138
|
+
if !debug
|
139
|
+
options.debug_level = 1
|
140
|
+
else
|
141
|
+
options.debug_level = debug
|
142
|
+
end
|
143
|
+
|
144
|
+
# Param. correction - normalize debug level to max 2, minus sign interpreted as switch, no problem there
|
145
|
+
options.debug_level %= 3
|
146
|
+
end
|
147
|
+
|
148
|
+
opts.on_tail('-h', '--help', 'Show this message') do
|
149
|
+
puts opts
|
150
|
+
exit!
|
151
|
+
end
|
152
|
+
|
153
|
+
opts.on_tail('--version', 'Show version') do
|
154
|
+
puts VERSION
|
155
|
+
exit!
|
156
|
+
end
|
157
|
+
|
158
|
+
end
|
159
|
+
|
160
|
+
opts_.parse!(args)
|
161
|
+
|
162
|
+
# Emphasize required fields
|
163
|
+
mandatory = [:protocol, :hostname, :port, :path, :service, :password]
|
164
|
+
mandatory << :username unless options.user_cred
|
165
|
+
|
166
|
+
options_hash = options.marshal_dump
|
167
|
+
|
168
|
+
# Bug here, i am not sure the mandatory params working
|
169
|
+
missing = mandatory.select { |param| options_hash[param].nil? }
|
170
|
+
fail StandardError, "Missing required arguments #{missing.join(', ')}" unless missing.empty?
|
171
|
+
|
172
|
+
options
|
173
|
+
end
|
174
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
Gem::Specification.new do |gem|
|
4
|
+
gem.name = 'opennebula_nagios_probe'
|
5
|
+
gem.version = '1.0.0'
|
6
|
+
gem.authors = ['Boris Parak', 'Filip Hubik', 'Michal Kimle' ]
|
7
|
+
gem.email = ['parak@cesnet.cz', 'hubik@ics.muni.cz', 'kimle.michal@gmail.com']
|
8
|
+
gem.description = %q{This gem is collection of nagios probes (one, econe, occi, rocci) for OpenNebula cloud platform}
|
9
|
+
gem.summary = %q{OpenNebula nagios probes}
|
10
|
+
gem.homepage = 'https://github.com/arax/opennebula-nagios-probes'
|
11
|
+
gem.license = 'Apache License, Version 2.0'
|
12
|
+
|
13
|
+
gem.files = `git ls-files`.split("\n")
|
14
|
+
gem.test_files = `git ls-files -- {test,spec}/*`.split("\n")
|
15
|
+
gem.require_paths = ['lib']
|
16
|
+
gem.executables = ['check_opennebula']
|
17
|
+
|
18
|
+
gem.add_dependency 'nagios-probe', '~> 0.1'
|
19
|
+
gem.add_dependency 'log4r', '~> 1.1'
|
20
|
+
gem.add_dependency 'amazon-ec2', '~> 0.9'
|
21
|
+
gem.add_dependency 'occi-cli', '~> 4.2'
|
22
|
+
gem.add_dependency 'opennebula-oca', '~> 4.4'
|
23
|
+
gem.add_dependency 'occi-api', '~> 4.2'
|
24
|
+
|
25
|
+
gem.add_development_dependency 'rspec', '~> 2.14'
|
26
|
+
gem.add_development_dependency 'webmock', '~> 1.9'
|
27
|
+
gem.add_development_dependency 'vcr', '~> 2.8'
|
28
|
+
gem.add_development_dependency 'rake', '~> 10.1'
|
29
|
+
gem.add_development_dependency 'bundler', '~> 1.3'
|
30
|
+
|
31
|
+
gem.required_ruby_version = '>= 1.9.3'
|
32
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://localhost:2345/
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: AWSAccessKeyId=nagios-probes-test&Action=DescribeImages&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2013-04-18T11%3A44%3A03Z&Version=2010-08-31&Signature=yUyjdPgO3iXIfZrj%2FtbiO8lM2qrZ2ZOc%2FbjvfzJ5Jxo%3D
|
9
|
+
headers:
|
10
|
+
Accept:
|
11
|
+
- ! '*/*'
|
12
|
+
User-Agent:
|
13
|
+
- github-amazon-ec2-ruby-gem
|
14
|
+
Content-Type:
|
15
|
+
- application/x-www-form-urlencoded
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message: OK
|
20
|
+
headers:
|
21
|
+
Date:
|
22
|
+
- Thu, 18 Apr 2013 11:44:03 GMT
|
23
|
+
Server:
|
24
|
+
- thin 1.3.1 codename Triple Espresso
|
25
|
+
X-Frame-Options:
|
26
|
+
- sameorigin
|
27
|
+
X-Xss-Protection:
|
28
|
+
- 1; mode=block
|
29
|
+
Content-Type:
|
30
|
+
- application/xml
|
31
|
+
Content-Length:
|
32
|
+
- '880'
|
33
|
+
body:
|
34
|
+
encoding: US-ASCII
|
35
|
+
string: <?xml version="1.0"?><DescribeImagesResponse xmlns="http://ec2.amazonaws.com/doc/2010-08-31/"><requestId>783c292a-71db-4fa9-9028-4576aaf983d5</requestId><imagesSet><item><name>ttylinux
|
36
|
+
- kvm</name><description>ttylinux</description><imageId>ami-00000006</imageId><imageLocation>7ba83cabcea65882790fbe449d25e4ca</imageLocation><imageState>available</imageState><imageOwnerId>nagios-probes-test</imageOwnerId><isPublic>false</isPublic><architecture>i386</architecture><imageType>machine</imageType></item><item><name>ttylinux
|
37
|
+
- kvm2</name><description>ttylinux</description><imageId>ami-00000007</imageId><imageLocation>07193573e51336e1bce9aedc2492bbc6</imageLocation><imageState>available</imageState><imageOwnerId>nagios-probes-test</imageOwnerId><isPublic>false</isPublic><architecture>i386</architecture><imageType>machine</imageType></item></imagesSet></DescribeImagesResponse>
|
38
|
+
http_version:
|
39
|
+
recorded_at: Thu, 18 Apr 2013 11:44:03 GMT
|
40
|
+
- request:
|
41
|
+
method: post
|
42
|
+
uri: https://localhost:2345/
|
43
|
+
body:
|
44
|
+
encoding: US-ASCII
|
45
|
+
string: AWSAccessKeyId=nagios-probes-test&Action=DescribeInstances&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2013-04-18T11%3A44%3A03Z&Version=2010-08-31&Signature=pVdE33jTb1CpxwbzvB1%2F65LUc6eD6WFEfRx%2B0qXLIuw%3D
|
46
|
+
headers:
|
47
|
+
Accept:
|
48
|
+
- ! '*/*'
|
49
|
+
User-Agent:
|
50
|
+
- github-amazon-ec2-ruby-gem
|
51
|
+
Content-Type:
|
52
|
+
- application/x-www-form-urlencoded
|
53
|
+
response:
|
54
|
+
status:
|
55
|
+
code: 200
|
56
|
+
message: OK
|
57
|
+
headers:
|
58
|
+
Date:
|
59
|
+
- Thu, 18 Apr 2013 11:44:03 GMT
|
60
|
+
Server:
|
61
|
+
- thin 1.3.1 codename Triple Espresso
|
62
|
+
X-Frame-Options:
|
63
|
+
- sameorigin
|
64
|
+
X-Xss-Protection:
|
65
|
+
- 1; mode=block
|
66
|
+
Content-Type:
|
67
|
+
- application/xml
|
68
|
+
Content-Length:
|
69
|
+
- '1785'
|
70
|
+
body:
|
71
|
+
encoding: US-ASCII
|
72
|
+
string: <?xml version="1.0"?><DescribeInstancesResponse xmlns="http://ec2.amazonaws.com/doc/2010-08-31/"><requestId>a8784da1-e29c-4220-8602-ced606d12702</requestId><reservationSet><item><reservationId>default</reservationId><ownerId>nagios-probes-test</ownerId><groupSet><item><groupId>default</groupId></item></groupSet><instancesSet><item><instanceId>i-00000009</instanceId><imageId></imageId><instanceState><code>0</code><name>pending</name></instanceState><keyName>none</keyName><productCodes/><instanceType></instanceType><launchTime>2013-04-04T13:29:49+02:00</launchTime><placement><availabilityZone>default</availabilityZone></placement><amiLaunchIndex>9</amiLaunchIndex><kernelId>eki-EA801065</kernelId><ramdiskId>eri-1FEE1144</ramdiskId><monitoring><state>false</state></monitoring></item><item><instanceId>i-00000010</instanceId><imageId></imageId><instanceState><code>0</code><name>pending</name></instanceState><keyName>none</keyName><productCodes/><instanceType></instanceType><launchTime>2013-04-04T13:29:49+02:00</launchTime><placement><availabilityZone>default</availabilityZone></placement><amiLaunchIndex>10</amiLaunchIndex><kernelId>eki-EA801065</kernelId><ramdiskId>eri-1FEE1144</ramdiskId><monitoring><state>false</state></monitoring></item><item><instanceId>i-00000011</instanceId><imageId></imageId><instanceState><code>0</code><name>pending</name></instanceState><keyName>none</keyName><productCodes/><instanceType></instanceType><launchTime>2013-04-04T13:30:33+02:00</launchTime><placement><availabilityZone>default</availabilityZone></placement><amiLaunchIndex>11</amiLaunchIndex><kernelId>eki-EA801065</kernelId><ramdiskId>eri-1FEE1144</ramdiskId><monitoring><state>false</state></monitoring></item></instancesSet></item></reservationSet></DescribeInstancesResponse>
|
73
|
+
http_version:
|
74
|
+
recorded_at: Thu, 18 Apr 2013 11:44:03 GMT
|
75
|
+
recorded_with: VCR 2.4.0
|