houcho 0.0.12 → 0.0.13

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b2d8f35e74b7f3cd8939a62d0d5c35f29b5f5920
4
- data.tar.gz: 22d10e8bb0db16d9ca931c6192987a27b6d3bc3e
3
+ metadata.gz: faf0bd15776ab9a902d2770798e258d20c7cc4e0
4
+ data.tar.gz: 862315e86a7307b23f0cde6f2b2ae349fe95be06
5
5
  SHA512:
6
- metadata.gz: 9bde052dcc898119dbcdf5d44745e4251942ae0b3a3e90aad9d82fa67f3c402c683fc3a7f985d02f16daa60a7233ccf6e553f95fca9a3d668b5db8890917981f
7
- data.tar.gz: 329947f03908790e3af09a020238697b5c715ba46d00e4a2e3a028ed7399c0bed48ececcf88147123958099f01491f820e294e0dbf3c79313b3138425fc0b934
6
+ metadata.gz: cf01e0af237e984edc44bec9ffa7559e6395725f965a46217db8ed87878827ce569d6b8a9e145234791c830acc7799f062f4a7e9cb8c99b5121068bd1e634606
7
+ data.tar.gz: 2d6c8f6fc7f1d066c465dd8a2b08bba8c4d8240b9ca741d82846b814a9c43eb935c5e6818739c5864ec1b877ee676ad3ff407507eca4253420a709697090ce93
@@ -82,6 +82,7 @@ module Houcho
82
82
  desc 'exec [spec1 spec2..]', 'run spec'
83
83
  option :hosts, :type => :array, :desc => '--hosts host1 host2 host3...', :required => true
84
84
  option :dry_run, :type => :boolean, :default => false, :desc => 'show commands that may exexute'
85
+ option :attr, :type => :hash, :default => false, :desc => 'set attribute'
85
86
  def exec(*args)
86
87
  Houcho::CLI::Main.empty_args(self, shell, __method__) if args.empty?
87
88
  runner = Houcho::Spec::Runner.new
@@ -90,8 +91,9 @@ module Houcho
90
91
  exit! unless runner.execute_manually(
91
92
  options[:hosts],
92
93
  args,
93
- options[:dry_run],
94
- true #output to console
94
+ dryrun: options[:dry_run],
95
+ console_output: true,
96
+ attr: options[:attr]
95
97
  )
96
98
  rescue Houcho::SpecFileException => e
97
99
  puts e.message
@@ -12,6 +12,21 @@ module Houcho
12
12
  @type_id = 1
13
13
  end
14
14
 
15
+
16
+ def list(opt = {})
17
+ sql = "SELECT T1.name FROM outerrole T1, role_outerrole T2"
18
+ sql += " WHERE T1.data_source LIKE ?"
19
+ ds = opt[:data_source]
20
+
21
+ if opt[:role_id]
22
+ sql += " AND T1.id = T2.outerrole_id AND T2.role_id = ?"
23
+ return @db.execute(sql, ds ? ds : "%", opt[:role_id]).flatten
24
+ else
25
+ return @db.execute(sql, ds ? ds : "%").flatten
26
+ end
27
+ end
28
+
29
+
15
30
  def details(outer_role)
16
31
  outer_role = outer_role.is_a?(Array) ? outer_role : [outer_role]
17
32
  result = {}
@@ -26,6 +41,7 @@ module Houcho
26
41
  result
27
42
  end
28
43
 
44
+
29
45
  def hostlist(outer_role)
30
46
  outer_role = outer_role.is_a?(Array) ? outer_role : [outer_role]
31
47
  hosts = []
@@ -25,7 +25,7 @@ class OuterRole
25
25
 
26
26
 
27
27
  private
28
- def http_get(host, port, path, params)
28
+ def http_get(host, port, path, params = {})
29
29
  Net::HTTP.get(
30
30
  host,
31
31
  "#{path}?".concat(
@@ -38,22 +38,11 @@ class OuterRole
38
38
  end
39
39
 
40
40
  def download_json(host, port)
41
- JSON.load(
42
- http_get(
43
- host, port, "/ybz/search.json",
44
- {
45
- andor: "AND",
46
- cond0: 0,
47
- field0: "os",
48
- value0: " ",
49
- status: "IN_SERVICE",
50
- ex_andor: "AND",
51
- ex_cond0: 0,
52
- ex_field0: "not_selected",
53
- ex_value0: nil,
54
- },
55
- )
41
+ metadata = JSON.load(
42
+ http_get( host, port, "/ybz/hosts/all.json" )
56
43
  )
44
+
45
+ metadata.select { |md| md["content"]["status"] == "IN_SERVICE" }
57
46
  end
58
47
 
59
48
  def create_yabitz_role(host, port)
@@ -92,7 +92,7 @@ module Houcho
92
92
  id.each do |i|
93
93
  hosts = hostobj.list(i)
94
94
  specs = specobj.list(i)
95
- outerroles = orobj.list(i)
95
+ outerroles = orobj.list(role_id: i)
96
96
  outerhosts = orobj.details(outerroles)
97
97
 
98
98
  tmp = {}
@@ -22,7 +22,7 @@ class Spec
22
22
  end
23
23
 
24
24
 
25
- def check(spec, host_count, dry_run = false, console_output = false) #dry_run for test
25
+ def check(spec, host_count, opt = {})
26
26
  spec = spec.is_a?(Array) ? spec : [spec]
27
27
  role = spec.map { |s| @spec.details(s)[s]["role"] }.flatten
28
28
  host = []
@@ -37,24 +37,28 @@ class Spec
37
37
  end
38
38
  end
39
39
 
40
- execute_manually(host.sample(host_count), spec, dry_run, console_output)
40
+ execute_manually(
41
+ host.sample(host_count), spec,
42
+ dryrun: opt[:dryrun], console_output: opt[:console_output])
43
+ # dry run for test
41
44
  end
42
45
 
43
46
 
44
- def execute_manually(host, spec, dryrun = false, console_output = false)
47
+ def execute_manually(host, spec, opt = {})
45
48
  host = host.is_a?(Array) ? host : [host]
46
49
  spec = spec.is_a?(Array) ? spec : [spec]
47
50
 
48
51
  run(
49
52
  { rand(36**50).to_s(36) => { "host" => host, "spec" => spec } },
50
- dryrun,
51
- false,
52
- console_output
53
+ opt[:dryrun],
54
+ false, # ci
55
+ opt[:console_output],
56
+ opt[:attr]
53
57
  )
54
58
  end
55
59
 
56
60
 
57
- def execute_role(role, ex_host = [], dryrun = false, console_output = false)
61
+ def execute_role(role, ex_host = [], dryrun = false, console_output = false, attr = nil)
58
62
  role = role.is_a?(Array) ? role : [role]
59
63
  ex_host = ex_host.is_a?(Array) ? ex_host : [ex_host]
60
64
 
@@ -80,12 +84,12 @@ class Spec
80
84
  role_valiables[rolename] = rv
81
85
  end
82
86
 
83
- run(role_valiables, dryrun, true, console_output)
87
+ run(role_valiables, dryrun, true, console_output, attr)
84
88
  end
85
89
 
86
90
 
87
91
  private
88
- def run(target, dryrun, ci = false, console_output = false)
92
+ def run(target, dryrun, ci = false, console_output = false, manually_attr = nil)
89
93
  messages = []
90
94
  failure = false
91
95
 
@@ -105,9 +109,13 @@ class Spec
105
109
  end
106
110
 
107
111
  Parallel.each(v["host"], :in_threads => Parallel.processor_count) do |host|
108
- if !defined_spec_attr.empty?
109
- attr = generate_attr(role, host)
110
- attr.delete_if { |name, value| !defined_spec_attr.include?(name.to_s) }
112
+ if manually_attr.is_a?(Hash)
113
+ attr = manually_attr
114
+ else
115
+ if !defined_spec_attr.empty?
116
+ attr = generate_attr(role, host)
117
+ attr.delete_if { |name, value| !defined_spec_attr.include?(name.to_s) }
118
+ end
111
119
  end
112
120
 
113
121
  result = systemu(
@@ -119,7 +127,7 @@ class Spec
119
127
  :cwd => File.join(@specdir, "..")
120
128
  )
121
129
 
122
- logmsg = attr.empty? ? "" : "attribute that has been set: #{attr}"
130
+ logmsg = attr ? "" : "attribute that has been set: #{attr}"
123
131
  if !result[1].empty?
124
132
  @logger.info(host) { logmsg } unless result[1].empty?
125
133
  @logger.info(host) { result[1] }
@@ -1,3 +1,3 @@
1
1
  module Houcho
2
- VERSION = '0.0.12'
2
+ VERSION = '0.0.13'
3
3
  end
@@ -381,7 +381,7 @@ YAML
381
381
  expect(@specrunner.execute_manually(
382
382
  ["test3.studio3104.com", "test4.studio3104.com"],
383
383
  "specA",
384
- true
384
+ dryrun: true
385
385
  )).to eq([
386
386
  "TARGET_HOST=test3.studio3104.com rspec --format documentation #{Houcho::Config::SPECDIR}/specA_spec.rb",
387
387
  "TARGET_HOST=test4.studio3104.com rspec --format documentation #{Houcho::Config::SPECDIR}/specA_spec.rb"
@@ -389,14 +389,14 @@ YAML
389
389
  end
390
390
 
391
391
  it "case of spec not exist" do
392
- expect { @specrunner.execute_manually("test5.studio3104.com", ["specA", "specX"], true) }.to(
392
+ expect { @specrunner.execute_manually("test5.studio3104.com", ["specA", "specX"], dryrun: true) }.to(
393
393
  raise_error Houcho::SpecFileException, "No such spec file - specX"
394
394
  )
395
395
  end
396
396
  end
397
397
 
398
398
  context "check spec" do
399
- it { expect(@specrunner.check("specA", 2, true).size).to be(2) }
399
+ it { expect(@specrunner.check("specA", 2, dryrun: true).size).to be(2) }
400
400
 
401
401
  it "case of spec not exist" do
402
402
  expect { @specrunner.check("specX", 2) }.to(
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: houcho
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.12
4
+ version: 0.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Satoshi SUZUKI
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-16 00:00:00.000000000 Z
11
+ date: 2013-08-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor