invoracle 0.0.3 → 0.0.4
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 +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
|
-
|