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 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
@@ -0,0 +1,11 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ **/*.sw*
11
+ *.gem
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2.2
4
+ before_install: gem install bundler -v 1.11.2
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in dl-racktables.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,4 @@
1
+ dl-racktable
2
+ ============
3
+ This is a library to operatate objects which is manged by Racktables.
4
+ And this depends on Racktables v0.20.8.
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -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
@@ -0,0 +1,3 @@
1
+ module DlRacktables
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,9 @@
1
+ require "dl_racktables/version"
2
+ require "dl_racktables/http"
3
+ require "dl_racktables/config"
4
+ require "dl_racktables/system"
5
+ require "dl_racktables/output"
6
+
7
+ module DlRacktables
8
+ # Your code goes here...
9
+ 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: []