resource_in 0.0.2 → 0.0.3
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 +4 -4
- data/build.mk +20 -0
- data/lib/resource_in/authorization.rb +25 -0
- data/lib/resource_in/command.rb +27 -10
- data/lib/resource_in/config.rb +26 -0
- data/lib/resource_in/driver.rb +6 -1
- data/lib/resource_in/{racktables_driver.rb → driver_racktables.rb} +2 -0
- data/lib/resource_in/{ucs_driver.rb → driver_ucs.rb} +0 -0
- data/lib/resource_in/{vmware_driver.rb → driver_vmware.rb} +3 -1
- data/lib/resource_in/exception.rb +5 -0
- data/lib/resource_in/version.rb +1 -1
- data/lib/resource_in.rb +4 -1
- metadata +23 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 50c53656ed2eb245432807330e68350588076db3
|
4
|
+
data.tar.gz: fbe5aa998daff838fbb1dbeded3ef37a427a0bf8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 85ad60cfc628cac8a5ca8f5c581896988d1cbc2c4cbeaa3867f88b7a8c81bec827c4c1e4ee5d2baf1731c4eaba24455e0d9df9369c8dd3e2d8c3b69f1ff1e75b
|
7
|
+
data.tar.gz: 27364307f50be33cdd2ec8fe2a58c4719ff45a286b97ad56ff6b96461b584a19a9e6685aca79aac9a449d0c848bbf1883c239b8d78561df369481e0124092840
|
data/build.mk
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
## This makes CiscoUCS SDK and VMware SDK development environment
|
2
|
+
|
3
|
+
all: clean init ucs-build vmware-build
|
4
|
+
|
5
|
+
init:
|
6
|
+
[ -d ./build ] || mkdir build
|
7
|
+
|
8
|
+
clean:
|
9
|
+
[ -d ./build ] && sudo rm -fR ./build || true
|
10
|
+
|
11
|
+
ucs-build:
|
12
|
+
sudo apt-get install python2.7
|
13
|
+
wget https://communities.cisco.com/servlet/JiveServlet/download/36899-13-76835/UcsSdk-0.8.3.tar.gz -O build/UcsSdk-0.8.3.tar.gz
|
14
|
+
tar xzf build/UcsSdk-0.8.3.tar.gz -C build
|
15
|
+
cd build/UcsSdk-0.8.3/; /usr/bin/python setup.py build && sudo /usr/bin/python setup.py install
|
16
|
+
|
17
|
+
vmware-build:
|
18
|
+
sudo apt-get install python3 python3-pip git
|
19
|
+
git clone https://github.com/vmware/pyvmomi.git build/pyvmomi
|
20
|
+
cd build/pyvmomi/; /usr/bin/python3 setup.py build && sudo bash -lc "/usr/bin/python3 setup.py install"
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module ResourceIn
|
2
|
+
class Authorization
|
3
|
+
MSG_PERMISSION_ERROR = 'Permission denied for this operation'
|
4
|
+
|
5
|
+
CMD_WBINFO='/usr/bin/wbinfo'
|
6
|
+
|
7
|
+
class << self
|
8
|
+
def is_viewer?
|
9
|
+
self.is_user? or Process.groups.any? {|x| x == self._get_gid('resourcein viewer')}
|
10
|
+
end
|
11
|
+
def is_user?
|
12
|
+
self.is_admin? or Process.groups.any? {|x| x == self._get_gid('resourcein user')}
|
13
|
+
end
|
14
|
+
def is_admin?
|
15
|
+
Process.groups.any? {|x| x == self._get_gid('resourcein admin')}
|
16
|
+
end
|
17
|
+
|
18
|
+
# XXX: Now using 'wbinfo' command to get group information from krb5 cache.
|
19
|
+
# It's preferred to get it directly from winbind without 'wbinfo' command.
|
20
|
+
def _get_gid(name)
|
21
|
+
`#{CMD_WBINFO} --group-info='#{name}'`.split(':')[2].to_i
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/resource_in/command.rb
CHANGED
@@ -1,11 +1,16 @@
|
|
1
|
-
require_relative '
|
2
|
-
require_relative '
|
1
|
+
require_relative 'driver_ucs'
|
2
|
+
require_relative 'driver_vmware'
|
3
3
|
|
4
4
|
require 'terminal-table/import'
|
5
5
|
|
6
6
|
module ResourceIn
|
7
7
|
class Command
|
8
8
|
def self.list(opts, argv)
|
9
|
+
unless Authorization.is_viewer?
|
10
|
+
puts "[Warning] User '#{ENV['USER']}' needs 'Viewer' permission to execute command 'list'"
|
11
|
+
return
|
12
|
+
end
|
13
|
+
|
9
14
|
resource_kls = case opts[:type]
|
10
15
|
when 'all'
|
11
16
|
Machine
|
@@ -17,18 +22,30 @@ module ResourceIn
|
|
17
22
|
|
18
23
|
resource = resource_kls.new
|
19
24
|
|
20
|
-
|
25
|
+
begin
|
26
|
+
resource.output(resource.filter(argv.first, resource.list))
|
27
|
+
rescue InvalidArgument => e
|
28
|
+
puts "[warning] #{e.message}"
|
29
|
+
end
|
21
30
|
end
|
22
31
|
def self.get(opts, argv)
|
23
|
-
|
32
|
+
unless Authorization.is_user?
|
33
|
+
puts "[Warning] User '#{ENV['USER']}' needs 'User' permission to execute command 'get'"
|
34
|
+
return
|
35
|
+
end
|
24
36
|
|
25
|
-
|
37
|
+
machine = Machine.new
|
26
38
|
|
27
|
-
|
28
|
-
machine.
|
29
|
-
|
30
|
-
|
31
|
-
|
39
|
+
begin
|
40
|
+
data = machine.get(argv.first)
|
41
|
+
if data != [nil]
|
42
|
+
machine.output_detail(data)
|
43
|
+
else
|
44
|
+
puts "warning: no such resource '#{argv.first}' in this environment."
|
45
|
+
exit 1
|
46
|
+
end
|
47
|
+
rescue InvalidArgument => e
|
48
|
+
puts "[warning] #{e.message}"
|
32
49
|
end
|
33
50
|
end
|
34
51
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
3
|
+
module ResourceIn
|
4
|
+
class Config
|
5
|
+
CONFIG_PATH = '/usr/local/etc/rin.yml'
|
6
|
+
|
7
|
+
class << self
|
8
|
+
def [](param)
|
9
|
+
(@config_data ||= load_config)['resource-in'][param]
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
def load_config
|
14
|
+
unless FileTest.exists?(config_path)
|
15
|
+
raise RuntimeError "invalid configuration file (#{config_path})"
|
16
|
+
end
|
17
|
+
|
18
|
+
YAML.load_file(config_path)
|
19
|
+
end
|
20
|
+
|
21
|
+
def config_path
|
22
|
+
ENV['RIN_CONFIG'] == nil ? CONFIG_PATH : ENV['RIN_CONFIG']
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/resource_in/driver.rb
CHANGED
@@ -4,12 +4,17 @@ module ResourceIn
|
|
4
4
|
class Driver
|
5
5
|
FORMAT = ['name', 'address', 'status', 'location', 'boottime', 'created_by']
|
6
6
|
DETAIL_FORMAT = ['name', 'address', 'status', 'location', 'boottime', 'created_by', 'cores', 'RAM', 'OS', 'Alarm']
|
7
|
+
VALID_PATTERN = /^[0-9A-Za-z[:space:]_\-\.]+$/
|
8
|
+
|
9
|
+
def validate_condition(argument)
|
10
|
+
raise InvalidArgument.new("Invalid Argument: #{argument}") unless !!(argument =~ VALID_PATTERN)
|
11
|
+
end
|
7
12
|
|
8
13
|
def invoke(command, cachepath = '/dev/null')
|
9
14
|
cachepath.gsub!(' ', '_')
|
10
15
|
|
11
16
|
if !!cachepath and FileTest.exists?(cachepath) and not FileTest.zero?(cachepath)
|
12
|
-
JSON.parse(File.read(cachepath))
|
17
|
+
JSON.parse(File.read(cachepath)) unless FileTest.zero? cachepath
|
13
18
|
else
|
14
19
|
JSON.parse(`#{command} 2> /dev/null | tee #{cachepath}`)
|
15
20
|
end
|
File without changes
|
@@ -1,5 +1,5 @@
|
|
1
1
|
require_relative "driver"
|
2
|
-
require_relative "
|
2
|
+
require_relative "driver_racktables"
|
3
3
|
|
4
4
|
module ResourceIn
|
5
5
|
class VMwareDriver < Driver
|
@@ -15,6 +15,8 @@ module ResourceIn
|
|
15
15
|
end
|
16
16
|
end
|
17
17
|
def get(condition)
|
18
|
+
validate_condition(condition)
|
19
|
+
|
18
20
|
invoke("#{@cmd_get} #{condition}")
|
19
21
|
end
|
20
22
|
end
|
data/lib/resource_in/version.rb
CHANGED
data/lib/resource_in.rb
CHANGED
@@ -3,8 +3,11 @@ require "resource_in/command"
|
|
3
3
|
require "resource_in/machine"
|
4
4
|
require "resource_in/resource"
|
5
5
|
require "resource_in/version"
|
6
|
+
require "resource_in/authorization"
|
7
|
+
require "resource_in/exception"
|
8
|
+
require "resource_in/config"
|
6
9
|
|
7
|
-
module
|
10
|
+
module ResourceIn
|
8
11
|
def self.version
|
9
12
|
VERSION
|
10
13
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: resource_in
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hiroyasu OHYAMA
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-04-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: terminal-table
|
@@ -42,56 +42,56 @@ dependencies:
|
|
42
42
|
name: dl_racktables
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - ~>
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 0.0.1
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - ~>
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 0.0.1
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: bundler
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - ~>
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '1.11'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - ~>
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '1.11'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rake
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - ~>
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '10.0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - ~>
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '10.0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: rspec
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - ~>
|
87
|
+
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '3.0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - ~>
|
94
|
+
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '3.0'
|
97
97
|
description: ''
|
@@ -102,23 +102,27 @@ executables:
|
|
102
102
|
extensions: []
|
103
103
|
extra_rdoc_files: []
|
104
104
|
files:
|
105
|
-
- .gitignore
|
106
|
-
- .rspec
|
107
|
-
- .travis.yml
|
105
|
+
- ".gitignore"
|
106
|
+
- ".rspec"
|
107
|
+
- ".travis.yml"
|
108
108
|
- Gemfile
|
109
109
|
- README.md
|
110
110
|
- Rakefile
|
111
111
|
- bin/r-in
|
112
|
+
- build.mk
|
112
113
|
- lib/resource_in.rb
|
114
|
+
- lib/resource_in/authorization.rb
|
113
115
|
- lib/resource_in/command.rb
|
116
|
+
- lib/resource_in/config.rb
|
114
117
|
- lib/resource_in/driver.rb
|
118
|
+
- lib/resource_in/driver_racktables.rb
|
119
|
+
- lib/resource_in/driver_ucs.rb
|
120
|
+
- lib/resource_in/driver_vmware.rb
|
121
|
+
- lib/resource_in/exception.rb
|
115
122
|
- lib/resource_in/machine.rb
|
116
123
|
- lib/resource_in/machine_impl.rb
|
117
|
-
- lib/resource_in/racktables_driver.rb
|
118
124
|
- lib/resource_in/resource.rb
|
119
|
-
- lib/resource_in/ucs_driver.rb
|
120
125
|
- lib/resource_in/version.rb
|
121
|
-
- lib/resource_in/vmware_driver.rb
|
122
126
|
- resource-in.gemspec
|
123
127
|
homepage: https://github.com/userlocalhost2000/resource-in
|
124
128
|
licenses: []
|
@@ -129,19 +133,18 @@ require_paths:
|
|
129
133
|
- lib
|
130
134
|
required_ruby_version: !ruby/object:Gem::Requirement
|
131
135
|
requirements:
|
132
|
-
- -
|
136
|
+
- - ">="
|
133
137
|
- !ruby/object:Gem::Version
|
134
138
|
version: '0'
|
135
139
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
136
140
|
requirements:
|
137
|
-
- -
|
141
|
+
- - ">="
|
138
142
|
- !ruby/object:Gem::Version
|
139
143
|
version: '0'
|
140
144
|
requirements: []
|
141
145
|
rubyforge_project:
|
142
|
-
rubygems_version: 2.
|
146
|
+
rubygems_version: 2.4.5
|
143
147
|
signing_key:
|
144
148
|
specification_version: 4
|
145
149
|
summary: This integrates IT resources.
|
146
150
|
test_files: []
|
147
|
-
has_rdoc:
|