dl_racktables 0.0.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 +7 -0
- data/.gitignore +11 -0
- data/.rspec +2 -0
- data/.travis.yml +4 -0
- data/Gemfile +4 -0
- data/README.md +4 -0
- data/Rakefile +6 -0
- data/bin/get_vm_lastupdate +16 -0
- data/dl-racktables.gemspec +25 -0
- data/lib/dl_racktables/config.rb +26 -0
- data/lib/dl_racktables/http.rb +41 -0
- data/lib/dl_racktables/output.rb +17 -0
- data/lib/dl_racktables/system.rb +27 -0
- data/lib/dl_racktables/version.rb +3 -0
- data/lib/dl_racktables.rb +9 -0
- metadata +114 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 8c05c608270f27a0838aa410ffd542df82453361
|
4
|
+
data.tar.gz: ec798f3095ef3c3ca96437222cc63e4f1e812563
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 6af23a87fc529108cc1a052360524b6f625e8c201b6abb5adf6d6c6b1244da3e9cd1afdbffef69167469e2d1290c40d96650aa9cc3c48f2259346da09649b16f
|
7
|
+
data.tar.gz: 168b757bc5eb100a3f8211bf6110229c23301e1ddebd5efbe5ea7947b4d6c725402ef241901bbac1c06b3c53184a8b66a6c660d7430d8172cb0b8e8329fd8c38
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'dl_racktables'
|
4
|
+
|
5
|
+
sys = DLRacktables::System.new
|
6
|
+
|
7
|
+
unless target = ARGV.first
|
8
|
+
DlRacktables::Output.error('invalid parameter')
|
9
|
+
exit 1
|
10
|
+
end
|
11
|
+
|
12
|
+
if ret = sys.who_operate_vm_lastly(target)
|
13
|
+
DlRacktables::Output.success(ret)
|
14
|
+
else
|
15
|
+
DlRacktables::Output.error("failed to find target VM (#{target})")
|
16
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'dl_racktables/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "dl_racktables"
|
8
|
+
spec.version = DlRacktables::VERSION
|
9
|
+
spec.authors = ["Hiroyasu OHYAMA"]
|
10
|
+
spec.email = ["user.localhost2000@gmail.com"]
|
11
|
+
|
12
|
+
spec.summary = %q{helper library to operate racktables}
|
13
|
+
spec.description = %q{This is a library to operatate objects which is manged by Racktables}
|
14
|
+
spec.homepage = ""
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
17
|
+
spec.bindir = "bin"
|
18
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.11"
|
22
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
23
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
24
|
+
spec.add_development_dependency "nokogiri"
|
25
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
3
|
+
module DLRacktables
|
4
|
+
class Config
|
5
|
+
CONFIG_PATH = '/usr/local/etc/dl_racktables.yml'
|
6
|
+
|
7
|
+
class << self
|
8
|
+
def [](param)
|
9
|
+
(@config_data ||= load_config)[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['DL_RACKTABLES_CONFIG_PATH'] == nil ? CONFIG_PATH : ENV['DL_RACKTABLES_CONFIG_PATH']
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require 'uri'
|
3
|
+
|
4
|
+
module DLRacktables
|
5
|
+
class HTTP
|
6
|
+
PREFIX = '/racktables/'
|
7
|
+
|
8
|
+
def self.get(get_params)
|
9
|
+
Net::HTTP.start(Config['server']) do |http|
|
10
|
+
req = Net::HTTP::Get.new(PREFIX + get_params)
|
11
|
+
req.basic_auth Config['userid'], Config['passwd']
|
12
|
+
|
13
|
+
send_request(http, req)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.post(get_params, post_params)
|
18
|
+
Net::HTTP.start(Config['server']) do |http|
|
19
|
+
req = Net::HTTP::Post.new(PREFIX + get_params)
|
20
|
+
req.basic_auth Config['userid'], Config['passwd']
|
21
|
+
req.set_form_data(post_params)
|
22
|
+
|
23
|
+
send_request(http, req)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
def self.send_request(http, req)
|
29
|
+
response = http.request(req)
|
30
|
+
case response
|
31
|
+
when Net::HTTPSuccess
|
32
|
+
response
|
33
|
+
when Net::HTTPRedirection
|
34
|
+
get(response['location'])
|
35
|
+
else
|
36
|
+
puts response
|
37
|
+
response.error!
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
module DlRacktables
|
4
|
+
class Output
|
5
|
+
def self.success(opts)
|
6
|
+
puts JSON.dump(opts.merge({
|
7
|
+
'status': 'success',
|
8
|
+
}))
|
9
|
+
end
|
10
|
+
def self.error(msg)
|
11
|
+
puts JSON.dump({
|
12
|
+
'status': 'error',
|
13
|
+
'msg': msg,
|
14
|
+
})
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'nokogiri'
|
2
|
+
|
3
|
+
module DLRacktables
|
4
|
+
class System
|
5
|
+
def who_operate_vm_lastly(vmid)
|
6
|
+
resp = HTTP.get("index.php?page=search&last_page=object&last_tab=edit&q=#{vmid}")
|
7
|
+
|
8
|
+
doc = Nokogiri::HTML(resp.body)
|
9
|
+
|
10
|
+
if doc.title =~ /search results for/
|
11
|
+
# meaning invalid vmid is specified
|
12
|
+
return false
|
13
|
+
end
|
14
|
+
|
15
|
+
# get responsible team if it's specified
|
16
|
+
team = ''
|
17
|
+
if responsible_team = doc.xpath("//div[@class='portlet']//tr").find {|x| x.text =~ /b-10/}
|
18
|
+
team = responsible_team.xpath("td//select//option[@selected]").text
|
19
|
+
end
|
20
|
+
|
21
|
+
# get person who update this object lastly
|
22
|
+
person = doc.xpath("//table[@class='cooltable']//tr").map {|x| x.children[1].text}.last
|
23
|
+
|
24
|
+
{team: team, person: person}
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
metadata
ADDED
@@ -0,0 +1,114 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dl_racktables
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Hiroyasu OHYAMA
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-03-03 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.11'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.11'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: nokogiri
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
description: This is a library to operatate objects which is manged by Racktables
|
70
|
+
email:
|
71
|
+
- user.localhost2000@gmail.com
|
72
|
+
executables:
|
73
|
+
- get_vm_lastupdate
|
74
|
+
extensions: []
|
75
|
+
extra_rdoc_files: []
|
76
|
+
files:
|
77
|
+
- ".gitignore"
|
78
|
+
- ".rspec"
|
79
|
+
- ".travis.yml"
|
80
|
+
- Gemfile
|
81
|
+
- README.md
|
82
|
+
- Rakefile
|
83
|
+
- bin/get_vm_lastupdate
|
84
|
+
- dl-racktables.gemspec
|
85
|
+
- lib/dl_racktables.rb
|
86
|
+
- lib/dl_racktables/config.rb
|
87
|
+
- lib/dl_racktables/http.rb
|
88
|
+
- lib/dl_racktables/output.rb
|
89
|
+
- lib/dl_racktables/system.rb
|
90
|
+
- lib/dl_racktables/version.rb
|
91
|
+
homepage: ''
|
92
|
+
licenses: []
|
93
|
+
metadata: {}
|
94
|
+
post_install_message:
|
95
|
+
rdoc_options: []
|
96
|
+
require_paths:
|
97
|
+
- lib
|
98
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0'
|
103
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
104
|
+
requirements:
|
105
|
+
- - ">="
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
version: '0'
|
108
|
+
requirements: []
|
109
|
+
rubyforge_project:
|
110
|
+
rubygems_version: 2.4.5
|
111
|
+
signing_key:
|
112
|
+
specification_version: 4
|
113
|
+
summary: helper library to operate racktables
|
114
|
+
test_files: []
|