dl_racktables 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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: []