f5-icontrol 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4143c0067275a825855e9ed7f643dbe436211b0c
4
- data.tar.gz: b57ff13717e9655439b77786c7624fe61a67bc40
3
+ metadata.gz: 629649284f385f3dce498418e2b46347ea3abc8b
4
+ data.tar.gz: 97608378edc825c3056da1f1dd15027af0aa9c6c
5
5
  SHA512:
6
- metadata.gz: 313308ef6ea173ec9dcff2e41cd80dfa167a64c9bec8582734d321ca041988137df14c15b3ec533c47f81486b608740d6ca5b8b28a2d7a9beccf57cc943ffdbb
7
- data.tar.gz: aa81593ad8b3d183ad2435afee36b5baaee34f12f6a2f9a04bf68ea008c6bd257b12298fa3568c2230b10e2ade1a57da017ce7feab50c1b42886985d0e5fd462
6
+ metadata.gz: 09366ecfcff0925f4507c79a4a30a5bad9bb6ee2b1f69267a609e73dae648b1b503397df6378989bb4106e297c0677331a41d07af5eeb06966c24f7808375dab
7
+ data.tar.gz: 74415bd966863d47ecd3c06bff9d1f0df59b62904544f386297cdb1ac8acaf3b90a5196c3077bcdcf4c621f8279b231e575bbf1d5955b503305f5e4473eca004
data/README.md CHANGED
@@ -13,7 +13,7 @@ I originally set out to improve the official one:
13
13
  * Support Ruby 2.0.0 and 2.1.0
14
14
  * Make the interface to the library more Ruby-esque
15
15
 
16
- But given the original one was pretty straightforward I decided to start over.
16
+ But given the original one was pretty bare-bones, I started over.
17
17
 
18
18
  ## Installation
19
19
 
@@ -31,7 +31,24 @@ Or install it yourself as:
31
31
 
32
32
  ## Usage
33
33
 
34
- See examples subdir.
34
+ First, configure the gem:
35
+
36
+ ```Ruby
37
+ F5::Icontrol.configure do |f|
38
+ f.host = "hostname.of.bigip"
39
+ f.username = "username"
40
+ f.password = "password"
41
+ end
42
+ ```
43
+
44
+ Then use it:
45
+
46
+ ```Ruby
47
+ api = F5::Icontrol::API.new
48
+ response = api.LocalLB.Pool.get_list
49
+ ```
50
+
51
+ See specs subdir for more examples, especially as it pertains to passing parameters.
35
52
 
36
53
  ## CLI
37
54
 
data/bin/f5 CHANGED
@@ -3,4 +3,12 @@
3
3
  require 'f5/cli/application'
4
4
  require 'f5/icontrol'
5
5
 
6
+ config ||= YAML.load_file("#{ENV['HOME']}/.f5.yml")
7
+
8
+ F5::Icontrol.configure do |f5|
9
+ f5.host = config['host']
10
+ f5.username = config['username']
11
+ f5.password = config['password']
12
+ end
13
+
6
14
  F5::Cli::Application.start(ARGV)
@@ -1,12 +1,13 @@
1
1
  require 'thor'
2
- require 'f5/cli/config'
3
2
 
4
3
  module F5
5
4
  module Cli
6
5
  class Pool < Thor
6
+
7
7
  desc "list", "Lists all the pools"
8
8
  def list
9
- response = F5::Cli::api(F5::Icontrol::LocalLB::Pool).get_list
9
+ response = client.LocalLB.Pool.get_list
10
+
10
11
  pools = Array(response[:item])
11
12
  if pools.empty?
12
13
  puts "No pools found"
@@ -18,7 +19,6 @@ module F5
18
19
  end
19
20
 
20
21
  desc "show POOL", "Shows a pool's status"
21
-
22
22
  def show(pool)
23
23
  members = pool_members(pool)
24
24
  if members.empty?
@@ -33,15 +33,14 @@ module F5
33
33
  desc "status POOL", "Shows the status of a pool"
34
34
  def status(pool)
35
35
  members = pool_members(pool)
36
- response = F5::Cli::api(F5::Icontrol::LocalLB::Pool).get_member_object_status(
36
+ response = client.LocalLB.Pool.get_member_object_status(
37
37
  pool_names: { item: [ pool ] },
38
38
  members: { item: [ members ] }
39
39
  )
40
40
  statuses = Array(response[:item][:item])
41
41
  puts "%20s %25s %25s" % ["Address", "Availability", "Enabled"]
42
42
  statuses.each_with_index do |s, idx|
43
- #puts "%20s %25s %25s" % [ members[idx][:address], s[:availability_status].split(/_/).last, s[:enabled_status].split(/_/).last ]
44
- puts "%20s %25s %25s" % [ members[idx][:address], s[:availability_status], s[:enabled_status] ]
43
+ puts "%20s %25s %25s" % [ members[idx][:address], s[:availability_status].split(/_/).last, s[:enabled_status].split(/_/).last ]
45
44
  end
46
45
  end
47
46
 
@@ -51,7 +50,7 @@ module F5
51
50
  members.include? m[:address]
52
51
  end
53
52
 
54
- response = F5::Cli::api(F5::Icontrol::LocalLB::Pool).set_member_session_enabled_state(
53
+ response = client.LocalLB.Pool.set_member_session_enabled_state(
55
54
  pool_names: { item: [ pool ] },
56
55
  members: { item: [ set ] },
57
56
  session_states: { item: [ set.map { "STATE_ENABLED" } ] }
@@ -65,7 +64,7 @@ module F5
65
64
  members.include? m[:address]
66
65
  end
67
66
 
68
- response = F5::Cli::api(F5::Icontrol::LocalLB::Pool).set_member_session_enabled_state(
67
+ response = client.LocalLB.Pool.set_member_session_enabled_state(
69
68
  pool_names: { item: [ pool ] },
70
69
  members: { item: [ set ] },
71
70
  session_states: { item: [ set.map { "STATE_DISABLED" } ] }
@@ -75,11 +74,15 @@ module F5
75
74
  private
76
75
 
77
76
  def pool_members(pool)
78
- response = F5::Cli::api(F5::Icontrol::LocalLB::Pool).get_member_v2(pool_names: { item: [ pool ] } )
77
+ response = client.LocalLB.Pool.get_member_v2(pool_names: { item: [ pool ] } )
79
78
  members = Array(response[:item][:item])
80
79
  members.map { |m| { address: m[:address], port: m[:port] } }
81
80
  end
82
81
 
82
+ def client
83
+ @client || F5::Icontrol::API.new
84
+ end
85
+
83
86
  end
84
87
 
85
88
  class Application < Thor
@@ -93,10 +96,5 @@ module F5
93
96
  subcommand "pool", Pool
94
97
 
95
98
  end
96
-
97
-
98
- def self.api(klass)
99
- klass.new(F5::Cli::Config.host, F5::Cli::Config.username, F5::Cli::Config.password)
100
- end
101
99
  end
102
100
  end
data/lib/f5/icontrol.rb CHANGED
@@ -1,40 +1,28 @@
1
1
  require "f5/icontrol/version"
2
- require "f5/icontrol/system/system_info"
3
- require "f5/icontrol/local_lb/pool"
4
- require "f5/icontrol/local_lb/node_address_v2"
2
+ require "f5/icontrol/api"
5
3
  require "openssl"
6
4
  require "savon"
7
5
 
8
6
  module F5
9
- class Icontrol
10
- def initialize(host, username, password)
11
- @hostname = host
12
- @username = username
13
- @password = password
14
- @client_cache = {}
7
+ module Icontrol
8
+ class << self
9
+ attr_accessor :configuration
15
10
  end
16
11
 
17
- private
18
-
19
- def wsdl_path
20
- File.dirname(__FILE__).gsub /(f5-icontrol[^\/]*\/lib)\/.*/, "\\1/wsdl/"
12
+ def self.configure
13
+ self.configuration ||= Configuration.new
14
+ yield configuration
21
15
  end
22
16
 
23
- def client(api_group)
24
- api_namespace = api_group.gsub /\./, '/'
25
- endpoint = '/iControl/iControlPortal.cgi'
26
- @client_cache[api_group] ||=
27
- Savon.client(wsdl: "#{wsdl_path}#{api_group}.wsdl",
28
- endpoint: "https://#{@hostname}#{endpoint}",
29
- ssl_verify_mode: :none,
30
- basic_auth: [@username, @password],
31
- #log: true,
32
- #logger: Logger.new(STDOUT),
33
- #pretty_print_xml: true,
34
- #log_level: :debug,
35
- namespace: "urn:iControl:#{api_namespace}",
36
- convert_request_keys_to: :none
37
- )
17
+ class Configuration
18
+ attr_accessor :host, :username, :password
19
+
20
+ def initialize
21
+ @host = "set_me_in_configure_block"
22
+ @username = ""
23
+ @password = ""
24
+ end
38
25
  end
26
+
39
27
  end
40
28
  end
@@ -0,0 +1,79 @@
1
+ module F5
2
+ module Icontrol
3
+ class API
4
+ attr_accessor :api_path
5
+
6
+ def initialize(api_path = nil)
7
+ @username="a"
8
+ @password="b"
9
+ @hostname="xxx"
10
+ @client_cache = {}
11
+ @api_path = api_path
12
+ end
13
+
14
+ def method_missing(method, args = nil, &block)
15
+ if terminal_node?
16
+ if supported_method?(method)
17
+ response_key = "#{method.to_s}_response".to_sym
18
+
19
+ response = client.call(method) do
20
+ if args
21
+ message args
22
+ end
23
+ end
24
+
25
+ response.to_hash[response_key][:return]
26
+
27
+ else
28
+ raise NameError, "#{@api_path} does not support #{method}"
29
+ end
30
+ else
31
+ if supported_path? append_path(method)
32
+ self.class.new append_path(method)
33
+ else
34
+ raise NameError, "#{append_path(method)} is not supported"
35
+ end
36
+ end
37
+ end
38
+
39
+ private
40
+
41
+ def terminal_node?
42
+ ::File.exists? "#{wsdl_path}/#{@api_path}.wsdl"
43
+ end
44
+
45
+ def supported_method?(method)
46
+ client.operations.include?(method)
47
+ end
48
+
49
+ def supported_path?(path)
50
+ ! Dir.glob("#{wsdl_path}/#{path}.*wsdl").empty?
51
+ end
52
+
53
+ def append_path(item)
54
+ @api_path ? "#{@api_path}.#{item}" : item.to_s
55
+ end
56
+
57
+ def wsdl_path
58
+ File.dirname(__FILE__).gsub /(f5-icontrol[^\/]*\/lib)\/.*/, "\\1/wsdl/"
59
+ end
60
+
61
+ def client
62
+ api_namespace = @api_path.gsub /\./, '/'
63
+ endpoint = '/iControl/iControlPortal.cgi'
64
+ @client_cache[@api_path] ||=
65
+ Savon.client(wsdl: "#{wsdl_path}#{@api_path}.wsdl",
66
+ endpoint: "https://#{F5::Icontrol.configuration.host}#{endpoint}",
67
+ ssl_verify_mode: :none,
68
+ basic_auth: [F5::Icontrol.configuration.username, F5::Icontrol.configuration.password],
69
+ #log: true,
70
+ #logger: Logger.new(STDOUT),
71
+ #pretty_print_xml: true,
72
+ #log_level: :debug,
73
+ namespace: "urn:iControl:#{api_namespace}",
74
+ convert_request_keys_to: :none
75
+ )
76
+ end
77
+ end
78
+ end
79
+ end
@@ -1,5 +1,5 @@
1
1
  module F5
2
- class Icontrol
3
- VERSION = "0.1.0"
2
+ module Icontrol
3
+ VERSION = "0.1.1"
4
4
  end
5
5
  end
@@ -0,0 +1,54 @@
1
+ require 'spec_helper'
2
+
3
+ describe F5::Icontrol::API do
4
+ before do
5
+ F5::Icontrol.configure do
6
+ end
7
+ end
8
+
9
+ describe '#initialize' do
10
+ end
11
+
12
+ describe 'a non terminal object' do
13
+ it "returns another version of itself" do
14
+ expect(subject.LocalLB.class).to eq described_class
15
+ end
16
+
17
+ it "stores the path" do
18
+ expect(subject.LocalLB.api_path).to eq "LocalLB"
19
+ end
20
+ end
21
+
22
+ describe 'a terminal object' do
23
+ it "returns another version of itself" do
24
+ expect(subject.LocalLB.Pool.class).to eq described_class
25
+ end
26
+
27
+ it "stores the path" do
28
+ expect(subject.LocalLB.Pool.api_path).to eq "LocalLB.Pool"
29
+ end
30
+ end
31
+
32
+ describe 'a terminal object with a method' do
33
+ let(:client) { double('SavonClient', operations: [ :get_list ]) }
34
+
35
+ before do
36
+ expect(Savon).to receive(:client).and_return(client)
37
+ expect(client).to receive(:call).with(:get_list).and_return({get_list_response: { return: "foo" }})
38
+ end
39
+
40
+ it "calls the method" do
41
+ subject.LocalLB.Pool.get_list
42
+ end
43
+ end
44
+
45
+ describe 'a non existent method' do
46
+ it "raises on non terminal method" do
47
+ expect { subject.foo }.to raise_error(NameError)
48
+ end
49
+
50
+ it "raises on terminal method" do
51
+ expect { subject.LocalLB.Pool.foo }.to raise_error(NameError)
52
+ end
53
+ end
54
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: f5-icontrol
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Walberg
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-08 00:00:00.000000000 Z
11
+ date: 2014-10-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: savon
@@ -140,11 +140,8 @@ files:
140
140
  - bin/f5
141
141
  - f5-icontrol.gemspec
142
142
  - lib/f5/cli/application.rb
143
- - lib/f5/cli/config.rb
144
143
  - lib/f5/icontrol.rb
145
- - lib/f5/icontrol/local_lb/node_address_v2.rb
146
- - lib/f5/icontrol/local_lb/pool.rb
147
- - lib/f5/icontrol/system/system_info.rb
144
+ - lib/f5/icontrol/api.rb
148
145
  - lib/f5/icontrol/version.rb
149
146
  - lib/wsdl/ASM.LoggingProfile.wsdl
150
147
  - lib/wsdl/ASM.ObjectParams.wsdl
@@ -378,8 +375,7 @@ files:
378
375
  - spec/cassettes/F5_Icontrol_System_SystemInfo/retrieves_something_with_a_complex_return_type_and_input.yml
379
376
  - spec/cassettes/F5_Icontrol_System_SystemInfo/retrieves_the_uptime.yml
380
377
  - spec/cassettes/F5_Icontrol_System_SystemInfo/retrieves_the_version.yml
381
- - spec/models/local_lb/pool_spec.rb
382
- - spec/models/system/system_info_spec.rb
378
+ - spec/models/api_spec.rb
383
379
  - spec/spec_helper.rb
384
380
  homepage: https://github.com/swalberg/f5-icontrol
385
381
  licenses:
@@ -410,6 +406,5 @@ test_files:
410
406
  - spec/cassettes/F5_Icontrol_System_SystemInfo/retrieves_something_with_a_complex_return_type_and_input.yml
411
407
  - spec/cassettes/F5_Icontrol_System_SystemInfo/retrieves_the_uptime.yml
412
408
  - spec/cassettes/F5_Icontrol_System_SystemInfo/retrieves_the_version.yml
413
- - spec/models/local_lb/pool_spec.rb
414
- - spec/models/system/system_info_spec.rb
409
+ - spec/models/api_spec.rb
415
410
  - spec/spec_helper.rb
data/lib/f5/cli/config.rb DELETED
@@ -1,21 +0,0 @@
1
- module F5
2
- module Cli
3
- class Config
4
- def self.host
5
- config["host"]
6
- end
7
-
8
- def self.username
9
- config["username"]
10
- end
11
-
12
- def self.password
13
- config["password"]
14
- end
15
-
16
- def self.config
17
- @@config ||= YAML.load_file("#{ENV['HOME']}/.f5.yml")
18
- end
19
- end
20
- end
21
- end
@@ -1,27 +0,0 @@
1
- require "savon"
2
- module F5
3
- class Icontrol
4
- class LocalLB
5
- class NodeAddressV2 < F5::Icontrol
6
- def method_missing(method, args = nil, &block)
7
- if respond_to? method
8
- response_key = "#{method.to_s}_response".to_sym
9
-
10
- response = client("LocalLB.NodeAddressV2").call(method) do
11
- if args
12
- message args
13
- end
14
- end
15
-
16
- response.to_hash[response_key][:return]
17
- end
18
- end
19
-
20
- def respond_to?(method)
21
- client("LocalLB.NodeAddressV2").operations.include? method
22
- end
23
-
24
- end
25
- end
26
- end
27
- end
@@ -1,27 +0,0 @@
1
- require "savon"
2
- module F5
3
- class Icontrol
4
- class LocalLB
5
- class Pool < F5::Icontrol
6
- def method_missing(method, args = nil, &block)
7
- if respond_to? method
8
- response_key = "#{method.to_s}_response".to_sym
9
-
10
- response = client("LocalLB.Pool").call(method) do
11
- if args
12
- message args
13
- end
14
- end
15
-
16
- response.to_hash[response_key][:return]
17
- end
18
- end
19
-
20
- def respond_to?(method)
21
- client("LocalLB.Pool").operations.include? method
22
- end
23
-
24
- end
25
- end
26
- end
27
- end
@@ -1,27 +0,0 @@
1
- require "savon"
2
- module F5
3
- class Icontrol
4
- class System
5
- class SystemInfo < F5::Icontrol
6
- def method_missing(method, args = nil, &block)
7
- if respond_to? method
8
- response_key = "#{method.to_s}_response".to_sym
9
-
10
- response = client("System.SystemInfo").call(method) do
11
- if args
12
- message args
13
- end
14
- end
15
-
16
- response.to_hash[response_key][:return]
17
- end
18
- end
19
-
20
- def respond_to?(method)
21
- client("System.SystemInfo").operations.include? method
22
- end
23
-
24
- end
25
- end
26
- end
27
- end
@@ -1,26 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe F5::Icontrol::LocalLB::Pool, :vcr do
4
- subject { described_class.new("10.198.4.135", "admin", "admin") }
5
-
6
- describe "#respond_to?" do
7
- it "supports create_v2" do
8
- expect(subject.respond_to? :create_v2).to be_truthy
9
- end
10
-
11
- it "does not support buy cisco" do
12
- expect(subject.respond_to? :buy_cisco).to be_falsey
13
- end
14
- end
15
-
16
- it "creates a pool" do
17
- #<hosts s:type="A:Array" A:arrayType="iControl:System.CPUUsageExtended[0]"/>
18
- # Common.AddressPortSequenceSequence"
19
-
20
- expect(subject.create_v2(pool_names: {item: ['test_pool']},
21
- lb_methods: {item: ["LB_METHOD_OBSERVED_MEMBER"] },
22
- members: [ { address: "10.1.1.1", port: "80" } ]
23
- )
24
- ).to be_nil
25
- end
26
- end
@@ -1,31 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe F5::Icontrol::System::SystemInfo, :vcr do
4
- subject { described_class.new("10.198.4.135", "admin", "admin") }
5
-
6
- describe "#respond_to?" do
7
- it "supports get_version" do
8
- expect(subject.respond_to? :get_version).to be_truthy
9
- end
10
-
11
- it "supports get_uptime" do
12
- expect(subject.respond_to? :get_uptime).to be_truthy
13
- end
14
-
15
- it "does not support buy cisco" do
16
- expect(subject.respond_to? :buy_cisco).to be_falsey
17
- end
18
- end
19
-
20
- it "retrieves the version" do
21
- expect(subject.get_version).to eq "BIG-IP_v11.3.0"
22
- end
23
-
24
- it "retrieves the uptime" do
25
- expect(subject.get_uptime).to eq "425782"
26
- end
27
-
28
- it "retrieves something with a complex return type and input" do
29
- expect(subject.get_cpu_usage_extended_information(host_ids: { item: ["0-50-56-94-10-19.example.com"] } )).to eq(:"@s:type" => "iControl:System.CPUUsageExtendedInformation", :hosts => {:item=>{:host_id=>"0-50-56-94-10-19.example.com", :statistics=>{:item=>{:item=>[{:type=>"STATISTIC_CPU_INFO_CPU_ID", :value=>{:high=>"0", :low=>"0", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_USER", :value=>{:high=>"0", :low=>"720687", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_NICED", :value=>{:high=>"0", :low=>"304036", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_SYSTEM", :value=>{:high=>"0", :low=>"200072", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_IDLE", :value=>{:high=>"0", :low=>"42375955", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_IRQ", :value=>{:high=>"0", :low=>"2153", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_SOFTIRQ", :value=>{:high=>"0", :low=>"3636", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_IOWAIT", :value=>{:high=>"0", :low=>"23673", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_STOLEN", :value=>{:high=>"0", :low=>"0", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_USAGE_RATIO", :value=>{:high=>"0", :low=>"2", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_FIVE_SEC_AVG_USER", :value=>{:high=>"0", :low=>"2", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_FIVE_SEC_AVG_NICED", :value=>{:high=>"0", :low=>"1", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_FIVE_SEC_AVG_SYSTEM", :value=>{:high=>"0", :low=>"0", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_FIVE_SEC_AVG_IDLE", :value=>{:high=>"0", :low=>"97", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_FIVE_SEC_AVG_IRQ", :value=>{:high=>"0", :low=>"0", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_FIVE_SEC_AVG_SOFTIRQ", :value=>{:high=>"0", :low=>"0", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_FIVE_SEC_AVG_IOWAIT", :value=>{:high=>"0", :low=>"0", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_FIVE_SEC_AVG_STOLEN", :value=>{:high=>"0", :low=>"0", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_FIVE_SEC_AVG_USAGE_RATIO", :value=>{:high=>"0", :low=>"2", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_ONE_MIN_AVG_USER", :value=>{:high=>"0", :low=>"2", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_ONE_MIN_AVG_NICED", :value=>{:high=>"0", :low=>"1", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_ONE_MIN_AVG_SYSTEM", :value=>{:high=>"0", :low=>"0", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_ONE_MIN_AVG_IDLE", :value=>{:high=>"0", :low=>"97", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_ONE_MIN_AVG_IRQ", :value=>{:high=>"0", :low=>"0", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_ONE_MIN_AVG_SOFTIRQ", :value=>{:high=>"0", :low=>"0", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_ONE_MIN_AVG_IOWAIT", :value=>{:high=>"0", :low=>"0", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_ONE_MIN_AVG_STOLEN", :value=>{:high=>"0", :low=>"0", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_ONE_MIN_AVG_USAGE_RATIO", :value=>{:high=>"0", :low=>"3", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_FIVE_MIN_AVG_USER", :value=>{:high=>"0", :low=>"2", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_FIVE_MIN_AVG_NICED", :value=>{:high=>"0", :low=>"1", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_FIVE_MIN_AVG_SYSTEM", :value=>{:high=>"0", :low=>"1", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_FIVE_MIN_AVG_IDLE", :value=>{:high=>"0", :low=>"97", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_FIVE_MIN_AVG_IRQ", :value=>{:high=>"0", :low=>"0", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_FIVE_MIN_AVG_SOFTIRQ", :value=>{:high=>"0", :low=>"0", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_FIVE_MIN_AVG_IOWAIT", :value=>{:high=>"0", :low=>"0", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_FIVE_MIN_AVG_STOLEN", :value=>{:high=>"0", :low=>"0", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}, {:type=>"STATISTIC_CPU_INFO_FIVE_MIN_AVG_USAGE_RATIO", :value=>{:high=>"0", :low=>"3", :"@s:type"=>"iControl:Common.ULong64"}, :time_stamp=>"0"}], :"@a:array_type"=>"iControl:Common.Statistic[37]"}, :"@s:type"=>"A:Array", :"@a:array_type"=>"iControl:Common.Statistic[][1]"}}, :"@s:type"=>"A:Array", :"@a:array_type"=>"iControl:System.CPUUsageExtended[1]"}, :time_stamp => {:year=>"2014", :month=>"4", :day=>"9", :hour=>"18", :minute=>"38", :second=>"39", :"@s:type"=>"iControl:Common.TimeStamp"})
30
- end
31
- end