poweriq_client 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. data/README.rdoc +68 -5
  2. data/bin/poweriq_client +50 -3
  3. data/lib/poweriq_client/compatibility.rb +20 -0
  4. data/lib/poweriq_client/configuration.rb +4 -3
  5. data/lib/poweriq_client/resource/aisle.rb +7 -0
  6. data/lib/poweriq_client/resource/asset_strip.rb +7 -0
  7. data/lib/poweriq_client/resource/circuit_breaker_reading.rb +7 -0
  8. data/lib/poweriq_client/resource/circuit_breaker_readings_rollup.rb +7 -0
  9. data/lib/poweriq_client/resource/data_center.rb +7 -0
  10. data/lib/poweriq_client/resource/device.rb +7 -0
  11. data/lib/poweriq_client/resource/event.rb +7 -0
  12. data/lib/poweriq_client/resource/floor.rb +7 -0
  13. data/lib/poweriq_client/resource/job.rb +7 -0
  14. data/lib/poweriq_client/resource/job_message.rb +7 -0
  15. data/lib/poweriq_client/resource/line_reading.rb +7 -0
  16. data/lib/poweriq_client/resource/line_readings_rollup.rb +7 -0
  17. data/lib/poweriq_client/resource/outlet.rb +1 -2
  18. data/lib/poweriq_client/resource/outlet_reading.rb +7 -0
  19. data/lib/poweriq_client/resource/outlet_readings_rollup.rb +7 -0
  20. data/lib/poweriq_client/resource/pdu.rb +7 -0
  21. data/lib/poweriq_client/resource/rack.rb +7 -0
  22. data/lib/poweriq_client/resource/rack_unit.rb +7 -0
  23. data/lib/poweriq_client/resource/room.rb +7 -0
  24. data/lib/poweriq_client/resource/row.rb +7 -0
  25. data/lib/poweriq_client/resource/sensor.rb +7 -0
  26. data/lib/poweriq_client/resource/sensor_reading.rb +7 -0
  27. data/lib/poweriq_client/resource/sensor_readings_rollup.rb +7 -0
  28. data/lib/poweriq_client/resource.rb +23 -1
  29. data/lib/poweriq_client/version.rb +2 -2
  30. data/lib/poweriq_client.rb +1 -0
  31. data/poweriq_client.gemspec +25 -2
  32. metadata +26 -3
data/README.rdoc CHANGED
@@ -1,8 +1,72 @@
1
- = poweriq_client
1
+ = Power IQ Client
2
2
 
3
- Power IQ Rest API client for Power IQ 3.1
3
+ Power IQ Rest API client for Power IQ 3.1. For a complete list of resources, routes, and methods available
4
+ see the online Power IQ documentation (http://www.raritan.com/support/power-iq).
4
5
 
5
- == Contributing to poweriq_client
6
+ == Installation
7
+
8
+ % gem install poweriq_client
9
+
10
+ == Console
11
+
12
+ The Power IQ client comes with a interactive console. To run the console:
13
+
14
+ % poweriq_client
15
+
16
+ ==== Console Options
17
+
18
+ Usage: poweriq_client [options]
19
+ -l, --less-typing Put resource objects in global namespace
20
+ (ie PowerIQ::Resource::Outlet becomes Outlet)
21
+ -c, --check-compatibility Check client compatibility with server
22
+ -u, --user [USER] User name for authentication
23
+ -p, --password [PASSWORD] Password for authentication
24
+ -s, --server [HOST] Host name or IP of Power IQ
25
+
26
+ ==== Console Configuration
27
+
28
+ Create a file named .poweriq_client in your home directory. The contents of the file
29
+ should look similiar to below, adjusted to your Power IQ server:
30
+
31
+ default:
32
+ host: vm163
33
+ user: admin
34
+ password: raritan
35
+
36
+ If you do not use a configuration file, or through the command line options above, you'll
37
+ need to provide the configuration manually:
38
+
39
+ % poweriq_client
40
+ >> PowerIQ::Configuration.configure("user"=>"foo","password"=>"bar","host"=>"vm150")
41
+
42
+ ==== Console Examples
43
+
44
+ Retrieve all outlets:
45
+ >> outlets_resource = PowerIQ::Resource::Outlet.new
46
+ https://vm163/api/v2/outlets
47
+ >> outlets_resource.get
48
+
49
+ Retrieve one outlet:
50
+ >> outlet_resource = PowerIQ::Resource::Outlet.new('/381')
51
+ https://vm163/api/v2/outlets/381
52
+ >> outlet = outlet_resource.get
53
+
54
+ Update an outlet:
55
+ >> outlet_resource = PowerIQ::Resource::Outlet.new('/381')
56
+ https://vm163/api/v2/outlets/381
57
+ >> outlet = outlet_resource.get
58
+ >> outlet['outlet']['outlet_name'] = "New Name"
59
+ >> outlet_resource.put outlet.to_json
60
+
61
+ == Development
62
+
63
+ The Power IQ rest client uses the rest-client gem, with some
64
+ modifications to make it easier to query Power IQ resources.
65
+ For now you'll need to view the source code for more details,
66
+ however the usage is essentially the same as you see in the
67
+ interactive console examples above.
68
+
69
+ == Contributing to Power IQ Client
6
70
 
7
71
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
8
72
  * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
@@ -14,6 +78,5 @@ Power IQ Rest API client for Power IQ 3.1
14
78
 
15
79
  == Copyright
16
80
 
17
- Copyright (c) 2011 Ratian, INC. See LICENSE.txt for
81
+ Copyright (c) 2011 Raritan, INC. See LICENSE.txt for
18
82
  further details.
19
-
data/bin/poweriq_client CHANGED
@@ -3,18 +3,65 @@
3
3
  $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
4
4
 
5
5
  require 'rubygems'
6
+ require 'optparse'
6
7
  require 'poweriq_client'
7
8
  require 'irb'
8
9
  require 'irb/completion'
9
10
 
11
+ options = {}
12
+ OptionParser.new do |opts|
13
+ opts.banner = "Usage: poweriq_client [options]"
14
+ opts.on("-l", "--less-typing", "Put resource objects in global namespace","(ie PowerIQ::Resource::Outlet becomes Outlet)") do |l|
15
+ options[:less_typing] = l
16
+ end
17
+ opts.on("-c", "--check-compatibility", "Check client compatibility with server") do |c|
18
+ options[:check_compatability] = c
19
+ end
20
+ opts.on("-u", "--user [USER]", "User name for authentication") do |u|
21
+ options[:user] = u
22
+ end
23
+ opts.on("-p", "--password [PASSWORD]", "Password for authentication") do |p|
24
+ options[:password] = p
25
+ end
26
+ opts.on("-s", "--server [HOST]", "Host name or IP of Power IQ") do |h|
27
+ options[:host] = h
28
+ end
29
+ end.parse!
30
+
10
31
  if File.exists? ".irbrc"
11
32
  ENV['IRBRC'] = ".irbrc"
12
33
  end
13
- begin
14
- PowerIQ::Configuration.load_configuration("default")
15
- rescue
34
+ unless(options[:user] || options[:password] || options[:host])
35
+ begin
36
+ PowerIQ::Configuration.load_configuration("default")
37
+ rescue
38
+ end
39
+ else
40
+ PowerIQ::Configuration.configure(options)
41
+ end
42
+
43
+ def less_typing
44
+ resources = Dir.entries(File.join(File.dirname(__FILE__), '..', 'lib','poweriq_client','resource')).select { |x| x=~%r{\.rb$} }
45
+ resources.each { |r| load File.join(File.dirname(__FILE__), '..', 'lib','poweriq_client','resource',r) }
46
+ classes = ObjectSpace.each_object(Class).map { |x| x.to_s}.select { |x| x=~/PowerIQ::Resource/ }.reject { |x| x=~/Base$/ }
47
+ classes.each { |c|
48
+ Object.const_set(c.demodulize,c.constantize)
49
+ }
50
+ end
51
+
52
+ def check_compatability
53
+ client_version = PowerIQ::Compatibility.client_version
54
+ server_version = PowerIQ::Compatibility.server_version
55
+ unless(PowerIQ::Compatibility.compatible?)
56
+ raise Error.new("This client (#{client_version}) is not supported by your version of Power IQ (#{server_version})")
57
+ else
58
+ puts "This client (#{client_version}) is supported by your version of Power IQ (#{server_version})"
59
+ end
16
60
  end
17
61
 
62
+ check_compatability if(options[:check_compatability])
63
+ less_typing if(options[:less_typing])
64
+
18
65
  ARGV.clear
19
66
  IRB.start
20
67
 
@@ -0,0 +1,20 @@
1
+ module PowerIQ
2
+ module Compatibility
3
+ API_COMPATIBILITY = %r{^3.1.*?}
4
+ @@system_info = nil
5
+ class << self
6
+ def compatible?
7
+ !!self.system_info['system_info']['poweriq_version'].match(API_COMPATIBILITY)
8
+ end
9
+ def server_version
10
+ self.system_info['system_info']['poweriq_version']
11
+ end
12
+ def client_version
13
+ PowerIQ::Version::STRING
14
+ end
15
+ def system_info
16
+ @@system_info ||= PowerIQ::Resource::SystemInfo.new.get
17
+ end
18
+ end
19
+ end
20
+ end
@@ -10,9 +10,10 @@ module PowerIQ
10
10
  end
11
11
  def configure(options=nil,&block)
12
12
  unless(options.nil?)
13
- self.user = options["user"]
14
- self.password = options["password"]
15
- self.host = options["host"]
13
+ options.symbolize_keys!
14
+ self.user = options[:user]
15
+ self.password = options[:password]
16
+ self.host = options[:host]
16
17
  end
17
18
  if(block_given?)
18
19
  yield self
@@ -0,0 +1,7 @@
1
+ module PowerIQ
2
+ module Resource
3
+ class Aisle < PowerIQ::Resource::Base; end
4
+ end
5
+ end
6
+
7
+
@@ -0,0 +1,7 @@
1
+ module PowerIQ
2
+ module Resource
3
+ class AssetStrip < PowerIQ::Resource::Base; end
4
+ end
5
+ end
6
+
7
+
@@ -0,0 +1,7 @@
1
+ module PowerIQ
2
+ module Resource
3
+ class CircuitBreakerReading < PowerIQ::Resource::Base; end
4
+ end
5
+ end
6
+
7
+
@@ -0,0 +1,7 @@
1
+ module PowerIQ
2
+ module Resource
3
+ class CircuitBreakerReadingsRollup < PowerIQ::Resource::Base; end
4
+ end
5
+ end
6
+
7
+
@@ -0,0 +1,7 @@
1
+ module PowerIQ
2
+ module Resource
3
+ class DataCenter < PowerIQ::Resource::Base; end
4
+ end
5
+ end
6
+
7
+
@@ -0,0 +1,7 @@
1
+ module PowerIQ
2
+ module Resource
3
+ class Device < PowerIQ::Resource::Base; end
4
+ end
5
+ end
6
+
7
+
@@ -0,0 +1,7 @@
1
+ module PowerIQ
2
+ module Resource
3
+ class Event < PowerIQ::Resource::Base; end
4
+ end
5
+ end
6
+
7
+
@@ -0,0 +1,7 @@
1
+ module PowerIQ
2
+ module Resource
3
+ class Floor < PowerIQ::Resource::Base; end
4
+ end
5
+ end
6
+
7
+
@@ -0,0 +1,7 @@
1
+ module PowerIQ
2
+ module Resource
3
+ class Job < PowerIQ::Resource::Base; end
4
+ end
5
+ end
6
+
7
+
@@ -0,0 +1,7 @@
1
+ module PowerIQ
2
+ module Resource
3
+ class JobMessage < PowerIQ::Resource::Base; end
4
+ end
5
+ end
6
+
7
+
@@ -0,0 +1,7 @@
1
+ module PowerIQ
2
+ module Resource
3
+ class LineReading < PowerIQ::Resource::Base; end
4
+ end
5
+ end
6
+
7
+
@@ -0,0 +1,7 @@
1
+ module PowerIQ
2
+ module Resource
3
+ class LineReadingsRollup < PowerIQ::Resource::Base; end
4
+ end
5
+ end
6
+
7
+
@@ -1,6 +1,5 @@
1
1
  module PowerIQ
2
2
  module Resource
3
- class Outlet < PowerIQ::Resource::Base
4
- end
3
+ class Outlet < PowerIQ::Resource::Base; end
5
4
  end
6
5
  end
@@ -0,0 +1,7 @@
1
+ module PowerIQ
2
+ module Resource
3
+ class OutletReading < PowerIQ::Resource::Base; end
4
+ end
5
+ end
6
+
7
+
@@ -0,0 +1,7 @@
1
+ module PowerIQ
2
+ module Resource
3
+ class OutletReadingsRollup < PowerIQ::Resource::Base; end
4
+ end
5
+ end
6
+
7
+
@@ -0,0 +1,7 @@
1
+ module PowerIQ
2
+ module Resource
3
+ class Pdu < PowerIQ::Resource::Base; end
4
+ end
5
+ end
6
+
7
+
@@ -0,0 +1,7 @@
1
+ module PowerIQ
2
+ module Resource
3
+ class Rack < PowerIQ::Resource::Base; end
4
+ end
5
+ end
6
+
7
+
@@ -0,0 +1,7 @@
1
+ module PowerIQ
2
+ module Resource
3
+ class RackUnit < PowerIQ::Resource::Base; end
4
+ end
5
+ end
6
+
7
+
@@ -0,0 +1,7 @@
1
+ module PowerIQ
2
+ module Resource
3
+ class Room < PowerIQ::Resource::Base; end
4
+ end
5
+ end
6
+
7
+
@@ -0,0 +1,7 @@
1
+ module PowerIQ
2
+ module Resource
3
+ class Sensor < PowerIQ::Resource::Base; end
4
+ end
5
+ end
6
+
7
+
@@ -0,0 +1,7 @@
1
+ module PowerIQ
2
+ module Resource
3
+ class Pdu < PowerIQ::Resource::Base; end
4
+ end
5
+ end
6
+
7
+
@@ -0,0 +1,7 @@
1
+ module PowerIQ
2
+ module Resource
3
+ class SensorReading < PowerIQ::Resource::Base; end
4
+ end
5
+ end
6
+
7
+
@@ -0,0 +1,7 @@
1
+ module PowerIQ
2
+ module Resource
3
+ class SensorReadingsRollup < PowerIQ::Resource::Base; end
4
+ end
5
+ end
6
+
7
+
@@ -1,7 +1,29 @@
1
1
  module PowerIQ
2
2
  module Resource
3
3
  autoload :Base, 'poweriq_client/resource/base'
4
- autoload :SystemInfo, 'poweriq_client/resource/system_info'
4
+ autoload :Aisle, 'poweriq_client/resource/aisle'
5
+ autoload :AssetStrip, 'poweriq_client/resource/asset_strip'
6
+ autoload :CircuitBreakerReading, 'poweriq_client/resource/circuit_breaker_reading'
7
+ autoload :CircuitBreakerReadingsRollup, 'poweriq_client/resource/circuit_breaker_readings_rollup'
8
+ autoload :DataCenter, 'poweriq_client/resource/data_center'
9
+ autoload :Device, 'poweriq_client/resource/device'
10
+ autoload :Event, 'poweriq_client/resource/event'
11
+ autoload :Floor, 'poweriq_client/resource/floor'
12
+ autoload :Job, 'poweriq_client/resource/job'
13
+ autoload :JobMessage, 'poweriq_client/resource/job_message'
14
+ autoload :LineReading, 'poweriq_client/resource/line_reading'
15
+ autoload :LineReadingsRollup, 'poweriq_client/resource/line_readings_rollup'
5
16
  autoload :Outlet, 'poweriq_client/resource/outlet'
17
+ autoload :OutletReading, 'poweriq_client/resource/outlet_reading'
18
+ autoload :OutletReadingsRollup, 'poweriq_client/resource/outlet_readings_rollup'
19
+ autoload :Pdu, 'poweriq_client/resource/pdu'
20
+ autoload :Rack, 'poweriq_client/resource/rack'
21
+ autoload :RackUnit, 'poweriq_client/resource/rack_unit'
22
+ autoload :Room, 'poweriq_client/resource/room'
23
+ autoload :Row, 'poweriq_client/resource/row'
24
+ autoload :Sensor, 'poweriq_client/resource/sensor'
25
+ autoload :SensorReading, 'poweriq_client/resource/sensor_reading'
26
+ autoload :SensorReadingsRollup, 'poweriq_client/resource/sensor_readings_rollup'
27
+ autoload :SystemInfo, 'poweriq_client/resource/system_info'
6
28
  end
7
29
  end
@@ -1,8 +1,8 @@
1
1
  module PowerIQ
2
2
  module Version
3
3
  MAJOR = 0
4
- MINOR = 1
5
- PATCH = 1
4
+ MINOR = 2
5
+ PATCH = 0
6
6
 
7
7
  STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
8
  end
@@ -3,6 +3,7 @@ require 'active_support/core_ext'
3
3
 
4
4
  module PowerIQ
5
5
  autoload :Version, "poweriq_client/version"
6
+ autoload :Compatibility, "poweriq_client/compatibility"
6
7
  autoload :Resource, "poweriq_client/resource"
7
8
  autoload :Configuration, "poweriq_client/configuration"
8
9
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{poweriq_client}
8
- s.version = "0.1.1"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = [%q{Trent Albright}]
12
- s.date = %q{2011-11-02}
12
+ s.date = %q{2011-11-03}
13
13
  s.description = %q{Power IQ Rest API client for Power IQ 3.1}
14
14
  s.email = %q{trent.albright@raritan.com}
15
15
  s.executables = [%q{poweriq_client}]
@@ -28,10 +28,33 @@ Gem::Specification.new do |s|
28
28
  "Rakefile",
29
29
  "bin/poweriq_client",
30
30
  "lib/poweriq_client.rb",
31
+ "lib/poweriq_client/compatibility.rb",
31
32
  "lib/poweriq_client/configuration.rb",
32
33
  "lib/poweriq_client/resource.rb",
34
+ "lib/poweriq_client/resource/aisle.rb",
35
+ "lib/poweriq_client/resource/asset_strip.rb",
33
36
  "lib/poweriq_client/resource/base.rb",
37
+ "lib/poweriq_client/resource/circuit_breaker_reading.rb",
38
+ "lib/poweriq_client/resource/circuit_breaker_readings_rollup.rb",
39
+ "lib/poweriq_client/resource/data_center.rb",
40
+ "lib/poweriq_client/resource/device.rb",
41
+ "lib/poweriq_client/resource/event.rb",
42
+ "lib/poweriq_client/resource/floor.rb",
43
+ "lib/poweriq_client/resource/job.rb",
44
+ "lib/poweriq_client/resource/job_message.rb",
45
+ "lib/poweriq_client/resource/line_reading.rb",
46
+ "lib/poweriq_client/resource/line_readings_rollup.rb",
34
47
  "lib/poweriq_client/resource/outlet.rb",
48
+ "lib/poweriq_client/resource/outlet_reading.rb",
49
+ "lib/poweriq_client/resource/outlet_readings_rollup.rb",
50
+ "lib/poweriq_client/resource/pdu.rb",
51
+ "lib/poweriq_client/resource/rack.rb",
52
+ "lib/poweriq_client/resource/rack_unit.rb",
53
+ "lib/poweriq_client/resource/room.rb",
54
+ "lib/poweriq_client/resource/row.rb",
55
+ "lib/poweriq_client/resource/sensor.rb",
56
+ "lib/poweriq_client/resource/sensor_reading.rb",
57
+ "lib/poweriq_client/resource/sensor_readings_rollup.rb",
35
58
  "lib/poweriq_client/resource/system_info.rb",
36
59
  "lib/poweriq_client/version.rb",
37
60
  "poweriq_client.gemspec",
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: poweriq_client
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.1
5
+ version: 0.2.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Trent Albright
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-11-02 00:00:00 Z
13
+ date: 2011-11-03 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rest-client
@@ -120,10 +120,33 @@ files:
120
120
  - Rakefile
121
121
  - bin/poweriq_client
122
122
  - lib/poweriq_client.rb
123
+ - lib/poweriq_client/compatibility.rb
123
124
  - lib/poweriq_client/configuration.rb
124
125
  - lib/poweriq_client/resource.rb
126
+ - lib/poweriq_client/resource/aisle.rb
127
+ - lib/poweriq_client/resource/asset_strip.rb
125
128
  - lib/poweriq_client/resource/base.rb
129
+ - lib/poweriq_client/resource/circuit_breaker_reading.rb
130
+ - lib/poweriq_client/resource/circuit_breaker_readings_rollup.rb
131
+ - lib/poweriq_client/resource/data_center.rb
132
+ - lib/poweriq_client/resource/device.rb
133
+ - lib/poweriq_client/resource/event.rb
134
+ - lib/poweriq_client/resource/floor.rb
135
+ - lib/poweriq_client/resource/job.rb
136
+ - lib/poweriq_client/resource/job_message.rb
137
+ - lib/poweriq_client/resource/line_reading.rb
138
+ - lib/poweriq_client/resource/line_readings_rollup.rb
126
139
  - lib/poweriq_client/resource/outlet.rb
140
+ - lib/poweriq_client/resource/outlet_reading.rb
141
+ - lib/poweriq_client/resource/outlet_readings_rollup.rb
142
+ - lib/poweriq_client/resource/pdu.rb
143
+ - lib/poweriq_client/resource/rack.rb
144
+ - lib/poweriq_client/resource/rack_unit.rb
145
+ - lib/poweriq_client/resource/room.rb
146
+ - lib/poweriq_client/resource/row.rb
147
+ - lib/poweriq_client/resource/sensor.rb
148
+ - lib/poweriq_client/resource/sensor_reading.rb
149
+ - lib/poweriq_client/resource/sensor_readings_rollup.rb
127
150
  - lib/poweriq_client/resource/system_info.rb
128
151
  - lib/poweriq_client/version.rb
129
152
  - poweriq_client.gemspec
@@ -142,7 +165,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
142
165
  requirements:
143
166
  - - ">="
144
167
  - !ruby/object:Gem::Version
145
- hash: -4361364567050479065
168
+ hash: -4058341116595240085
146
169
  segments:
147
170
  - 0
148
171
  version: "0"