invoracle 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +3 -0
- data/README.md +27 -13
- data/VERSION +1 -1
- data/lib/invoracle.rb +3 -2
- data/lib/invoracle/system.rb +17 -0
- data/lib/invoracle/systems_set.rb +126 -0
- metadata +21 -30
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 430f4ef1a790bb55a8b3732adb355af3fc2bb863
|
4
|
+
data.tar.gz: 99b6db6f1d85f0568874f052b1bde9506b1141bb
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 255dceda0c35ef7a1f3132da41a35d583f1059d07def38fb6c14ceec8a2bfb7ce0ac2588f0d6079e5ff20c5565940af50f5b989a1368c792d4cb42ff3b8c35aa
|
7
|
+
data.tar.gz: 519f0ce27cf247057644ed4bf5cd6b57a9b2feb4733702f34d307179706a3e2c572cb2352d763622b04dfc8f00926207a83914a4d774a5c8fa19c3a5d23b54fa
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -13,13 +13,16 @@ Primary use cases include use as a core document object that various parsers can
|
|
13
13
|
Installing
|
14
14
|
----------
|
15
15
|
|
16
|
-
To install
|
16
|
+
To install Invoracle, use the following command:
|
17
17
|
|
18
18
|
$ gem install invoracle
|
19
19
|
|
20
20
|
#Examples
|
21
21
|
---------
|
22
22
|
|
23
|
+
System
|
24
|
+
------
|
25
|
+
|
23
26
|
require 'invoracle'
|
24
27
|
|
25
28
|
system = Invoracle::System.new
|
@@ -32,6 +35,26 @@ To install SalesforceCache, use the following command:
|
|
32
35
|
system_hash = system.asHash
|
33
36
|
system_json = system.asJson
|
34
37
|
|
38
|
+
Systems Set
|
39
|
+
-----------
|
40
|
+
|
41
|
+
require 'invoracle'
|
42
|
+
|
43
|
+
systemsSet = Invoracle::SystemsSet.new
|
44
|
+
|
45
|
+
system = Invoracle::System.new
|
46
|
+
system.setAttr(:sSysUid,'foo.bar.com') # System UID
|
47
|
+
system.setAttr(:sCluUid,'foo-bar-cluster') # Cluster UID
|
48
|
+
|
49
|
+
systemsSet.addSystem( system )
|
50
|
+
|
51
|
+
clusterCount = systemsSet.getClusterCount
|
52
|
+
clusterUids = systemsSet.getClusterUids
|
53
|
+
systemCount = systemsSet.getSystemCount
|
54
|
+
|
55
|
+
system = systemsSet.getSystem( systemUid )
|
56
|
+
systems = systemsset.getSystemsForClusterUid( clusterUid )
|
57
|
+
|
35
58
|
#Documentation
|
36
59
|
--------------
|
37
60
|
|
@@ -49,16 +72,7 @@ Notes
|
|
49
72
|
|
50
73
|
2. Schema Property Formats
|
51
74
|
|
52
|
-
The default properties, which can be overridden, use a short form of "Hungarian CamelCase" where properties are prefixed with type abbreviations including ['a','d','f','i','j','s','x'] for:
|
53
|
-
|
54
|
-
a = array,
|
55
|
-
d = dictionary / hash,
|
56
|
-
f = float / number,
|
57
|
-
h = html / string,
|
58
|
-
i = integer / number,
|
59
|
-
j = JSON / string,
|
60
|
-
s = string,
|
61
|
-
x = XML / string
|
75
|
+
The default properties, which can be overridden, use a short form of "Hungarian CamelCase" where properties are prefixed with type abbreviations including ['a','d','f','i','j','s','x'] for: a = array, d = dictionary / hash, f = float / number, h = html / string, i = integer / number, j = JSON / string, s = string, x = XML / string
|
62
76
|
|
63
77
|
3. Subclassing
|
64
78
|
|
@@ -71,14 +85,14 @@ Notes
|
|
71
85
|
#Change Log
|
72
86
|
-----------
|
73
87
|
|
88
|
+
- **2014-03-08**: 0.0.4
|
89
|
+
- Add Invoracle::SystemsSet to manage sets of systems
|
74
90
|
- **2014-03-05**: 0.0.3
|
75
91
|
- Retreive Systems from Cluster via SysRoles
|
76
92
|
- Inflate System SysRoles
|
77
|
-
|
78
93
|
- **2014-02-15**: 0.0.2
|
79
94
|
- Invoracle::Cluster is now a JsonDoc subclass
|
80
95
|
- Inforacle::Infra::IostatParser added
|
81
|
-
|
82
96
|
- **2014-01-01**: 0.0.1
|
83
97
|
- Initial release
|
84
98
|
- JsonDoc subclass for Invoracle::System
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.4
|
data/lib/invoracle.rb
CHANGED
data/lib/invoracle/system.rb
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
require 'jsondoc'
|
2
2
|
|
3
3
|
module Invoracle
|
4
|
+
|
5
|
+
# The Invoracle::System object is a JsonDoc::Document subclass with a default schema
|
6
|
+
# included in the #getDefaultSchema method and some systems specific methods.
|
7
|
+
|
4
8
|
class System < JsonDoc::Document
|
5
9
|
attr_accessor :dSchema
|
6
10
|
def initialize(dSchema=nil,bDefaultifyDoc=true,bIsStrict=true)
|
@@ -18,6 +22,7 @@ module Invoracle
|
|
18
22
|
|
19
23
|
:sSysUid => { :default => '', :type => 'string', :description => 'System UID' },
|
20
24
|
:sSysFqdn => { :default => '', :type => 'string', :description => 'FQDN' },
|
25
|
+
:sSysHostFqdn => { :default => '', :type => 'string', :description => 'FQDN Host' },
|
21
26
|
:sSysIpAddress => { :default => '', :type => 'string', :description => 'IP' },
|
22
27
|
|
23
28
|
:aSysRoles => { :default => [], :type => 'array' , :description => 'Roles' },
|
@@ -79,6 +84,11 @@ module Invoracle
|
|
79
84
|
return dSchema
|
80
85
|
end
|
81
86
|
|
87
|
+
def inflate()
|
88
|
+
self.inflateFqdn
|
89
|
+
self.inflateSysRoles
|
90
|
+
end
|
91
|
+
|
82
92
|
def inflateSysRoles()
|
83
93
|
sSysRoles = self.getAttr(:sSysRoles)
|
84
94
|
aSysRoles = self.getAttr(:aSysRoles)
|
@@ -101,5 +111,12 @@ module Invoracle
|
|
101
111
|
end
|
102
112
|
return false
|
103
113
|
end
|
114
|
+
|
115
|
+
def inflateFqdn()
|
116
|
+
sVirHostFqdn = self.getAttr(:sVirHostFqdn)
|
117
|
+
sVirHostFqdn.strip!
|
118
|
+
sSysHostFqdn = sVirHostFqdn.length > 0 ? sVirHostFqdn : self.getAttr(:sSysFqdn)
|
119
|
+
self.setAttr(:sSysHostFqdn,sSysHostFqdn)
|
120
|
+
end
|
104
121
|
end
|
105
122
|
end
|
@@ -0,0 +1,126 @@
|
|
1
|
+
module Invoracle
|
2
|
+
|
3
|
+
# Invoracle::SystemsSet maintains a group of Invoracle::System objects and
|
4
|
+
# their associated cluster UIDs.
|
5
|
+
#
|
6
|
+
# Initial use case is to create sets of Invoracle::Systems and then retrieve
|
7
|
+
# them by Cluster UID.
|
8
|
+
#
|
9
|
+
# Examples
|
10
|
+
#
|
11
|
+
# systemsSet = Invoracle::SystemsSet.new
|
12
|
+
# systemsSet.addSystem( system )
|
13
|
+
# systemsSet.getSystem( systemUid )
|
14
|
+
# systemsSet.exists?( system )
|
15
|
+
#
|
16
|
+
# systemsSet.getClusterCount
|
17
|
+
# systemsSet.getSystemCount
|
18
|
+
#
|
19
|
+
# systemsSet.getClusterUids
|
20
|
+
#
|
21
|
+
# systemsSet.inflateSystems
|
22
|
+
#
|
23
|
+
# systemsSet.getSystemsForClusterUid( clusterUid )
|
24
|
+
|
25
|
+
class SystemsSet
|
26
|
+
attr_reader :dSystemsBySysUid
|
27
|
+
attr_reader :dSysUidsbyCluUid
|
28
|
+
def initialize()
|
29
|
+
@dSystemsBySysUid = {}
|
30
|
+
@dSysUidsbyCluUid = {}
|
31
|
+
end
|
32
|
+
|
33
|
+
def getClusterCount()
|
34
|
+
return @dSysUidsbyCluUid.keys.length
|
35
|
+
end
|
36
|
+
|
37
|
+
def getSystemCount()
|
38
|
+
return @dSystemsBySysUid.keys.length
|
39
|
+
end
|
40
|
+
|
41
|
+
def getClusterUids()
|
42
|
+
aClusterUids = @dSysUidsbyCluUid.keys
|
43
|
+
aClusterUids.sort!
|
44
|
+
return aClusterUids
|
45
|
+
end
|
46
|
+
|
47
|
+
# Given an Invoracle::System, returns true or false if the system is
|
48
|
+
# within the set
|
49
|
+
|
50
|
+
def exists?(oSystem=nil)
|
51
|
+
unless oSystem.is_a?(Invoracle::System)
|
52
|
+
raise ArgumentError, "E_BAD_SYSTEM_OBJECT #{oSystem.class}]"
|
53
|
+
end
|
54
|
+
|
55
|
+
sSysUid = oSystem.getAttr(:sSysUid)
|
56
|
+
unless sSysUid.kind_of?(String) && sSysUid.length > 0
|
57
|
+
raise ArgumentError, 'E_BAD_SYSTEM_UID'
|
58
|
+
end
|
59
|
+
|
60
|
+
bHasSys = @dSystemsBySysUid.has_key?(sSysUid) ? true : false
|
61
|
+
|
62
|
+
return bHasSys
|
63
|
+
end
|
64
|
+
|
65
|
+
def getSystem(sSysUid=nil)
|
66
|
+
unless sSysUid.kind_of?(String) && sSysUid.length > 0
|
67
|
+
raise ArgumentError, 'E_BAD_SYSTEM_UID'
|
68
|
+
end
|
69
|
+
|
70
|
+
oSystem = @dSystemsBySysUid.has_key( sSysUid ) \
|
71
|
+
? @dSystemsBySysUid[ sSysUid ] : nil
|
72
|
+
|
73
|
+
return oSystem
|
74
|
+
end
|
75
|
+
|
76
|
+
def setSystem(oSystem=nil)
|
77
|
+
unless oSystem.is_a?(Invoracle::System)
|
78
|
+
raise ArgumentError, 'E_BAD_SYSTEM_OBJECT'
|
79
|
+
end
|
80
|
+
|
81
|
+
sSysUid = oSystem.getAttr(:sSysUid)
|
82
|
+
unless sSysUid.kind_of?(String)
|
83
|
+
raise ArgumentError, 'E_BAD_SYSTEM_UID'
|
84
|
+
end
|
85
|
+
|
86
|
+
sSysUid.strip!
|
87
|
+
unless sSysUid.length > 0
|
88
|
+
raise ArgumentError, 'E_BAD_SYSTEM_UID'
|
89
|
+
end
|
90
|
+
|
91
|
+
@dSystemsBySysUid[ sSysUid ] = oSystem
|
92
|
+
|
93
|
+
sCluUid = oSystem.getAttr(:sCluUid)
|
94
|
+
if sCluUid.kind_of?(String) && sCluUid.length > 0
|
95
|
+
@dSysUidsbyCluUid[ sCluUid ] ||= {}
|
96
|
+
@dSysUidsbyCluUid[ sCluUid ][ sSysUid ] = 1
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
# Calls the #inflate method on each system in the set.
|
101
|
+
|
102
|
+
def inflateSystems()
|
103
|
+
@dSystemsBySysUid.keys.each do |sSysUid|
|
104
|
+
@dSystemsBySysUid[ sSysUid ].inflate
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
def getSystemsForClusterUid(sCluUid=nil)
|
109
|
+
unless sCluUid.kind_of?(String) && sCluUid.length > 0
|
110
|
+
raise ArgumentError, 'E_BAD_CLUSTER_UID'
|
111
|
+
end
|
112
|
+
|
113
|
+
aSystems = []
|
114
|
+
if @dSysUidsbyCluUid.has_key?( sCluUid )
|
115
|
+
@dSysUidsbyCluUid[ sCluUid ].keys.each do |sSysUid|
|
116
|
+
if @dSystemsBySysUid.has_key?( sSysUid )
|
117
|
+
oSystem = @dSystemsBySysUid[ sSysUid ]
|
118
|
+
aSystems.push( oSystem )
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
122
|
+
return aSystems
|
123
|
+
end
|
124
|
+
|
125
|
+
end
|
126
|
+
end
|
metadata
CHANGED
@@ -1,27 +1,21 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: invoracle
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
version: 0.0.3
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.4
|
6
5
|
platform: ruby
|
7
|
-
authors:
|
6
|
+
authors:
|
8
7
|
- John Wang
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
|
13
|
-
date: 2014-03-05 00:00:00 Z
|
11
|
+
date: 2014-03-08 00:00:00.000000000 Z
|
14
12
|
dependencies: []
|
15
|
-
|
16
13
|
description: A simple generic inventory system for managing computer systems.
|
17
14
|
email: john@johnwang.com
|
18
15
|
executables: []
|
19
|
-
|
20
16
|
extensions: []
|
21
|
-
|
22
17
|
extra_rdoc_files: []
|
23
|
-
|
24
|
-
files:
|
18
|
+
files:
|
25
19
|
- CHANGELOG.md
|
26
20
|
- LICENSE
|
27
21
|
- README.md
|
@@ -29,36 +23,33 @@ files:
|
|
29
23
|
- VERSION
|
30
24
|
- lib/invoracle.rb
|
31
25
|
- lib/invoracle/cluster.rb
|
32
|
-
- lib/invoracle/system.rb
|
33
26
|
- lib/invoracle/infra.rb
|
34
27
|
- lib/invoracle/infra/iostat_parser.rb
|
28
|
+
- lib/invoracle/system.rb
|
29
|
+
- lib/invoracle/systems_set.rb
|
35
30
|
- test/test_setup.rb
|
36
31
|
homepage: http://johnwang.com/
|
37
|
-
licenses:
|
32
|
+
licenses:
|
38
33
|
- MIT
|
34
|
+
metadata: {}
|
39
35
|
post_install_message:
|
40
36
|
rdoc_options: []
|
41
|
-
|
42
|
-
require_paths:
|
37
|
+
require_paths:
|
43
38
|
- lib
|
44
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
45
|
-
|
46
|
-
requirements:
|
39
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
47
41
|
- - ">="
|
48
|
-
- !ruby/object:Gem::Version
|
49
|
-
version:
|
50
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
51
|
-
|
52
|
-
requirements:
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
53
46
|
- - ">="
|
54
|
-
- !ruby/object:Gem::Version
|
55
|
-
version:
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
56
49
|
requirements: []
|
57
|
-
|
58
50
|
rubyforge_project:
|
59
|
-
rubygems_version:
|
51
|
+
rubygems_version: 2.2.1
|
60
52
|
signing_key:
|
61
|
-
specification_version:
|
53
|
+
specification_version: 4
|
62
54
|
summary: Inventory Oracle - inventory management system
|
63
55
|
test_files: []
|
64
|
-
|