houcho 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 +8 -8
- data/README.md +47 -84
- data/bin/houcho +114 -133
- data/lib/houcho.rb +41 -2
- data/lib/{CI.rb → houcho/ci.rb} +6 -2
- data/lib/houcho/cloudforecast.rb +59 -0
- data/lib/houcho/cloudforecast/host.rb +23 -0
- data/lib/houcho/cloudforecast/role.rb +24 -0
- data/lib/houcho/element.rb +74 -0
- data/lib/houcho/host.rb +22 -0
- data/lib/houcho/initialize.rb +15 -0
- data/lib/houcho/role.rb +121 -0
- data/lib/houcho/spec.rb +6 -0
- data/lib/houcho/spec/runner.rb +116 -0
- data/lib/houcho/version.rb +1 -1
- data/lib/houcho/yamlhandle.rb +27 -0
- data/templates/conf/houcho.conf +10 -0
- data/templates/conf/kk.rb +14 -0
- data/templates/conf/rspec.conf +1 -0
- data/templates/master +94 -0
- data/templates/role/cf_roles.yaml +0 -0
- data/templates/role/cloudforecast.yaml +0 -0
- data/templates/role/hosts.yaml +0 -0
- data/templates/role/hosts_ignored.yaml +0 -0
- data/templates/role/roles.yaml +0 -0
- data/templates/role/specs.yaml +0 -0
- data/templates/spec/sample_spec.rb +13 -0
- data/templates/spec/spec_helper.rb +29 -0
- metadata +25 -5
- data/lib/Conductor.rb +0 -619
- data/lib/RoleHandle.rb +0 -155
data/lib/RoleHandle.rb
DELETED
@@ -1,155 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
class RoleHandle
|
3
|
-
require 'yaml'
|
4
|
-
require 'tempfile'
|
5
|
-
require 'find'
|
6
|
-
end
|
7
|
-
|
8
|
-
class RoleHandle
|
9
|
-
class YamlLoader
|
10
|
-
attr_reader :data
|
11
|
-
|
12
|
-
def initialize(yaml_file)
|
13
|
-
@data = YAML.load_file(yaml_file)
|
14
|
-
@data ||= {}
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
class YamlEditor < YamlLoader
|
19
|
-
attr_accessor :data
|
20
|
-
|
21
|
-
def initialize(yaml_file)
|
22
|
-
super
|
23
|
-
@yaml_file = yaml_file
|
24
|
-
end
|
25
|
-
|
26
|
-
def save_to_file
|
27
|
-
open(@yaml_file, 'w') do |f|
|
28
|
-
YAML.dump(@data, f)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
class ElementHandler
|
34
|
-
def initialize(yaml)
|
35
|
-
@elements = YamlEditor.new(yaml)
|
36
|
-
end
|
37
|
-
|
38
|
-
def elements(index = nil)
|
39
|
-
if index
|
40
|
-
(@elements.data[index]||[]).uniq
|
41
|
-
else
|
42
|
-
@elements.data.values.flatten.uniq
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
def attach(index, element)
|
47
|
-
@elements.data[index] ||= []
|
48
|
-
@elements.data[index] << element
|
49
|
-
@elements.save_to_file
|
50
|
-
end
|
51
|
-
|
52
|
-
def detach(index, element)
|
53
|
-
@elements.data[index].delete(element)
|
54
|
-
@elements.save_to_file
|
55
|
-
end
|
56
|
-
|
57
|
-
def attached?(index, element)
|
58
|
-
return false if ! @elements.data.has_key?(index)
|
59
|
-
@elements.data[index].include?(element)
|
60
|
-
end
|
61
|
-
|
62
|
-
# roleを消そうとしているオブジェクトからの問い合わせ用
|
63
|
-
def has_data?(index)
|
64
|
-
return false if ! @elements.data.has_key?(index)
|
65
|
-
@elements.data[index].size != 0
|
66
|
-
end
|
67
|
-
|
68
|
-
def indexes(element)
|
69
|
-
return [] if ! @elements.data.values.flatten.include?(element)
|
70
|
-
@elements.data.select {|index, elems|elems.include?(element)}.keys
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
class RoleHandler
|
75
|
-
def initialize(yaml)
|
76
|
-
@roles = YamlEditor.new(yaml)
|
77
|
-
end
|
78
|
-
|
79
|
-
def create(role)
|
80
|
-
@roles.data[(@roles.data.keys.max||0) + 1] = role
|
81
|
-
@roles.save_to_file
|
82
|
-
end
|
83
|
-
|
84
|
-
def delete(id)
|
85
|
-
@roles.data.delete(id)
|
86
|
-
@roles.save_to_file
|
87
|
-
end
|
88
|
-
|
89
|
-
def rename(id, name)
|
90
|
-
@roles.data[id] = name
|
91
|
-
@roles.save_to_file
|
92
|
-
end
|
93
|
-
|
94
|
-
def index(role)
|
95
|
-
@roles.data.invert[role]
|
96
|
-
end
|
97
|
-
|
98
|
-
def indexes_regexp(role)
|
99
|
-
@roles.data.select {|index, rolename| rolename =~ role }.keys
|
100
|
-
end
|
101
|
-
|
102
|
-
def name(id)
|
103
|
-
@roles.data[id]
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
|
-
class CfLoader
|
108
|
-
attr_reader :role_hosts
|
109
|
-
|
110
|
-
def initialize(yaml_file)
|
111
|
-
@role_hosts = {}
|
112
|
-
elements = {}
|
113
|
-
group = []
|
114
|
-
File.open(yaml_file) do |f|
|
115
|
-
f.each do |l|
|
116
|
-
if l =~ /^---/
|
117
|
-
if l =~ /^---\s+#(.+)$/
|
118
|
-
group << $1.gsub(/\s/, '_')
|
119
|
-
else
|
120
|
-
group << 'NOGROUPNAME'
|
121
|
-
end
|
122
|
-
end
|
123
|
-
end
|
124
|
-
end
|
125
|
-
File.open(yaml_file) do |f|
|
126
|
-
i=0
|
127
|
-
YAML.load_documents(f) do |data|
|
128
|
-
elements[group[i]] ||= []
|
129
|
-
elements[group[i]].concat data['servers']
|
130
|
-
i+=1
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
|
-
elements.each do |groupname, data|
|
135
|
-
current_label = 'NOCATEGORYNAME'
|
136
|
-
|
137
|
-
data.each do |d|
|
138
|
-
if ! d['label'].nil?
|
139
|
-
label = d['label'].gsub(/\s/, '_')
|
140
|
-
current_label = label if current_label != label
|
141
|
-
end
|
142
|
-
|
143
|
-
d['hosts'].map! do |host|
|
144
|
-
host = host.split(' ')
|
145
|
-
host = host.size == 1 ? host[0] : host[1]
|
146
|
-
end
|
147
|
-
|
148
|
-
r = groupname + '::' + current_label + '::' + d['config'].sub(/\.yaml$/, '')
|
149
|
-
ary = (@role_hosts[r] || []) | d['hosts']
|
150
|
-
@role_hosts[r] = ary.uniq
|
151
|
-
end
|
152
|
-
end
|
153
|
-
end
|
154
|
-
end
|
155
|
-
end
|