canzea 0.1.149 → 0.1.151
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/canzea/version.rb +1 -1
- data/lib/canzea.rb +37 -0
- data/lib/commands/push-config.rb +88 -12
- data/lib/commands/remote-run.rb +5 -0
- data/lib/commands/update-config.rb +14 -12
- data/lib/trace-component.rb +28 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 254a64dc073ab378b19653debbe60b4183d92c89
|
4
|
+
data.tar.gz: e520f2ac45c7569aa865f861b16a0514f5107967
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 95b298648522f79b86f3bc28c167db8333d4eaf4b054138c760c1545e877f09dcf7ef0afd83d86b98c3c7e5aab9325c55a83eb8d24c64e97eb942d706f0e6625
|
7
|
+
data.tar.gz: 9f232b09ddb3fa11d060e01d2ec9ccf5adf78c1d8f06df6e8d9c78d352f77e5c1c46f40e63a053d1858af8e296521beb20637dcb1010e48cfce463457bb7e309
|
data/lib/canzea/version.rb
CHANGED
data/lib/canzea.rb
CHANGED
@@ -6,6 +6,7 @@ require "canzea/config"
|
|
6
6
|
require "canzea/version"
|
7
7
|
require "canzea/environment"
|
8
8
|
require "helper-run-class"
|
9
|
+
require "trace-component"
|
9
10
|
require "plan-step-class"
|
10
11
|
require "ssh-base-cmd-class"
|
11
12
|
require "template-runner"
|
@@ -45,6 +46,7 @@ module Canzea
|
|
45
46
|
# flag nil, :run, 'Run a step'
|
46
47
|
# flag nil, :helper, 'Execute a helper'
|
47
48
|
flag nil, :remote, 'Remote execution'
|
49
|
+
flag nil, :remote_configure, 'Remote configuration'
|
48
50
|
flag nil, :remote_wire, 'Remote execution of a helper'
|
49
51
|
flag nil, :get, 'Get a file from the remote server'
|
50
52
|
flag nil, :put, 'Put a file onto the remote server'
|
@@ -137,6 +139,35 @@ module Canzea
|
|
137
139
|
RegisterMetadata.new.do(opts[:role], opts[:solution], test)
|
138
140
|
end
|
139
141
|
|
142
|
+
if (util == "analyze-command")
|
143
|
+
step = Integer(opts.fetch(:step, '0'))
|
144
|
+
|
145
|
+
list = []
|
146
|
+
args = JSON.parse(opts.fetch(:args, "{'phases'=>['install']}"))
|
147
|
+
phases = args['phases']
|
148
|
+
|
149
|
+
publicIp = File.read("#{Canzea::config[:pwd]}/vps-#{opts[:serverBase]}-#{opts[:serverNumber]}.json")
|
150
|
+
publicIp.strip!
|
151
|
+
|
152
|
+
phases.each { | phase |
|
153
|
+
basePath = "#{Pathname.new(Canzea::config[:catalog_location]).realpath}"
|
154
|
+
cmd = "#{basePath}/roles/#{opts[:role]}/#{opts[:solution]}/#{phase}.sh"
|
155
|
+
if File.exists? cmd
|
156
|
+
list += Worker.new.find (cmd)
|
157
|
+
end
|
158
|
+
}
|
159
|
+
|
160
|
+
list.each_with_index { | cmd, index |
|
161
|
+
if index >= step
|
162
|
+
puts "[#{index}] #{cmd}"
|
163
|
+
|
164
|
+
RemoteRun.new.doCommand publicIp, opts[:privateKey], cmd
|
165
|
+
else
|
166
|
+
puts "[#{index}] SKIP #{cmd}"
|
167
|
+
end
|
168
|
+
}
|
169
|
+
end
|
170
|
+
|
140
171
|
if (util == "gen-user")
|
141
172
|
GenUser.new.do(args[0])
|
142
173
|
end
|
@@ -241,6 +272,12 @@ module Canzea
|
|
241
272
|
RemoteRun.new.do publicIp, opts[:privateKey], opts[:role], opts[:solution]
|
242
273
|
end
|
243
274
|
|
275
|
+
if opts[:remote_configure]
|
276
|
+
publicIp = File.read("#{Canzea::config[:pwd]}/vps-#{opts[:serverBase]}-#{opts[:serverNumber]}.json")
|
277
|
+
publicIp.strip!
|
278
|
+
RemoteRun.new.doConfigure publicIp, opts[:privateKey], opts[:role], opts[:solution]
|
279
|
+
end
|
280
|
+
|
244
281
|
if opts[:remote_wire]
|
245
282
|
publicIp = File.read("#{Canzea::config[:pwd]}/vps-#{opts[:serverBase]}-#{opts[:serverNumber]}.json")
|
246
283
|
publicIp.strip!
|
data/lib/commands/push-config.rb
CHANGED
@@ -26,7 +26,7 @@ class PushConfig
|
|
26
26
|
def cp(filePath, destPath)
|
27
27
|
if File.directory?(filePath)
|
28
28
|
Dir.foreach(filePath) { |x|
|
29
|
-
if x == '.' or x == '..' or x.
|
29
|
+
if x == '.' or x == '..' or x.start_with?('.')
|
30
30
|
else
|
31
31
|
if File.directory?("#{filePath}/#{x}")
|
32
32
|
cp "#{filePath}/#{x}", "#{destPath}/#{x}"
|
@@ -40,20 +40,69 @@ class PushConfig
|
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
+
def backupAndRemove(filePath)
|
44
|
+
backup(filePath)
|
45
|
+
rm(filePath)
|
46
|
+
end
|
47
|
+
|
48
|
+
def backup(filePath)
|
49
|
+
path = "ecosystems/#{ENV['ECOSYSTEM']}/#{@relPath}#{filePath}"
|
50
|
+
|
51
|
+
folder = "sc"
|
52
|
+
if ENV.has_key? 'ECOSYSTEM_CONFIG_GIT'
|
53
|
+
folder = "_working"
|
54
|
+
end
|
55
|
+
|
56
|
+
if File.exists? folder
|
57
|
+
g = Git.init(folder)
|
58
|
+
else
|
59
|
+
if ENV.has_key? 'ECOSYSTEM_CONFIG_GIT'
|
60
|
+
g = Git.clone(ENV['ECOSYSTEM_CONFIG_GIT'], folder, :path => '.')
|
61
|
+
else
|
62
|
+
g = Git.init(folder)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
puts "Exists? #{folder}/#{path}"
|
67
|
+
if File.exists? "#{folder}/#{path}"
|
68
|
+
numb = 1
|
69
|
+
bkup = "#{folder}/#{path}.archived"
|
70
|
+
while File.exists? "#{bkup}#{numb}"
|
71
|
+
numb = numb + 1
|
72
|
+
end
|
73
|
+
puts "Backed up to #{bkup}#{numb}"
|
74
|
+
File.write "#{bkup}#{numb}", File.read("#{folder}/#{path}");
|
75
|
+
|
76
|
+
g.add("#{path}.archived#{numb}")
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
43
80
|
def write(filePath, contents)
|
44
81
|
|
45
82
|
path = "ecosystems/#{ENV['ECOSYSTEM']}/#{@relPath}#{filePath}"
|
46
83
|
|
47
84
|
begin
|
48
|
-
folder = "
|
85
|
+
folder = "sc"
|
86
|
+
if ENV.has_key? 'ECOSYSTEM_CONFIG_GIT'
|
87
|
+
folder = "_working"
|
88
|
+
end
|
89
|
+
|
49
90
|
|
50
91
|
if File.exists? folder
|
51
92
|
g = Git.init(folder)
|
52
93
|
else
|
53
|
-
|
94
|
+
if ENV.has_key? 'ECOSYSTEM_CONFIG_GIT'
|
95
|
+
g = Git.clone(ENV['ECOSYSTEM_CONFIG_GIT'], folder, :path => '.')
|
96
|
+
else
|
97
|
+
g = Git.init(folder)
|
98
|
+
end
|
54
99
|
end
|
55
100
|
FileUtils.mkdir_p File.dirname("#{folder}/#{path}")
|
56
101
|
|
102
|
+
pth = File.expand_path "#{folder}/#{path}"
|
103
|
+
|
104
|
+
@log.info "Writing to: #{pth}"
|
105
|
+
|
57
106
|
open("#{folder}/#{path}", 'w') { |f|
|
58
107
|
f.puts contents
|
59
108
|
}
|
@@ -73,17 +122,30 @@ class PushConfig
|
|
73
122
|
path = "ecosystems/#{ENV['ECOSYSTEM']}/#{@relPath}#{filePath}"
|
74
123
|
|
75
124
|
begin
|
76
|
-
folder = "
|
125
|
+
folder = "sc"
|
126
|
+
if ENV.has_key? 'ECOSYSTEM_CONFIG_GIT'
|
127
|
+
folder = "_working"
|
128
|
+
end
|
77
129
|
|
78
130
|
if File.exists? folder
|
79
131
|
g = Git.init(folder)
|
80
132
|
else
|
81
133
|
g = Git.clone(ENV['ECOSYSTEM_CONFIG_GIT'], folder, :path => '.')
|
82
134
|
end
|
83
|
-
FileUtils.rmdir_p File.dirname("#{folder}/#{path}")
|
84
135
|
|
85
|
-
|
136
|
+
if File.directory? "#{folder}/#{path}"
|
137
|
+
puts "DELETE DIRECTORY: #{folder}/#{path}"
|
138
|
+
FileUtils.rmdir_p File.dirname("#{folder}/#{path}")
|
86
139
|
|
140
|
+
g.add("#{path}")
|
141
|
+
|
142
|
+
else
|
143
|
+
if File.exists? "#{folder}/#{path}"
|
144
|
+
puts "DELETE FILE: #{folder}/#{path}"
|
145
|
+
FileUtils.rm_f "#{folder}/#{path}"
|
146
|
+
g.remove("#{path}")
|
147
|
+
end
|
148
|
+
end
|
87
149
|
rescue => exception
|
88
150
|
@log.error("PushConfig Failed")
|
89
151
|
@log.error(exception.to_s)
|
@@ -94,7 +156,12 @@ class PushConfig
|
|
94
156
|
end
|
95
157
|
|
96
158
|
def commit(comment)
|
97
|
-
folder = "
|
159
|
+
folder = "sc"
|
160
|
+
if ENV.has_key? 'ECOSYSTEM_CONFIG_GIT'
|
161
|
+
folder = "_working"
|
162
|
+
else
|
163
|
+
return
|
164
|
+
end
|
98
165
|
|
99
166
|
begin
|
100
167
|
count = 0
|
@@ -120,15 +187,21 @@ class PushConfig
|
|
120
187
|
log "#{count} changes committed."
|
121
188
|
g.commit(comment)
|
122
189
|
|
123
|
-
|
190
|
+
if ENV.has_key? 'ECOSYSTEM_CONFIG_GIT'
|
191
|
+
g.push
|
192
|
+
end
|
124
193
|
end
|
125
194
|
|
126
|
-
|
195
|
+
if ENV.has_key? 'ECOSYSTEM_CONFIG_GIT'
|
196
|
+
FileUtils.rm_rf(folder)
|
197
|
+
end
|
127
198
|
rescue => exception
|
128
|
-
|
199
|
+
if ENV.has_key? 'ECOSYSTEM_CONFIG_GIT'
|
200
|
+
FileUtils.rm_rf(folder)
|
201
|
+
end
|
129
202
|
@log.error("PushConfig Failed")
|
130
|
-
@log.error(exception.to_s)
|
131
203
|
@log.error(exception.backtrace)
|
204
|
+
@log.error(exception.to_s)
|
132
205
|
abort()
|
133
206
|
end
|
134
207
|
end
|
@@ -138,7 +211,10 @@ class PushConfig
|
|
138
211
|
|
139
212
|
# "git@#{ENV["GOGS_ADDRESS"]}:root/ecosystem.git"
|
140
213
|
|
141
|
-
folder = "
|
214
|
+
folder = "sc"
|
215
|
+
if ENV.has_key? 'ECOSYSTEM_CONFIG_GIT'
|
216
|
+
folder = "_working"
|
217
|
+
end
|
142
218
|
|
143
219
|
FileUtils.rm_rf(folder)
|
144
220
|
|
data/lib/commands/remote-run.rb
CHANGED
@@ -20,6 +20,11 @@ class RemoteRun
|
|
20
20
|
remote.exec publicIp, privateKey, "canzea --lifecycle=install --role=#{role} --solution=#{solution}", ref
|
21
21
|
end
|
22
22
|
|
23
|
+
def doConfigure(publicIp, privateKey, role, solution, ref="")
|
24
|
+
remote = RemoteCall.new
|
25
|
+
remote.exec publicIp, privateKey, "canzea --lifecycle=configure --role=#{role} --solution=#{solution}", ref
|
26
|
+
end
|
27
|
+
|
23
28
|
def doCommand(publicIp, privateKey, command, ref="")
|
24
29
|
remote = RemoteCall.new
|
25
30
|
remote.exec publicIp, privateKey, command, ref
|
@@ -6,19 +6,21 @@ class UpdateConfig
|
|
6
6
|
|
7
7
|
steps = {}
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
9
|
+
if File.directory? "#{gitRoot}"
|
10
|
+
# write to configure the registration of the service
|
11
|
+
if (File.exists?("#{gitRoot}/configure.json"))
|
12
|
+
steps = JSON.parse(File.read("#{gitRoot}/configure.json"))
|
13
|
+
else
|
14
|
+
steps["steps"] = []
|
15
|
+
end
|
15
16
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
17
|
+
conf = {
|
18
|
+
:role => role,
|
19
|
+
:solution => solution
|
20
|
+
}
|
21
|
+
steps["steps"].push(conf)
|
21
22
|
|
22
|
-
|
23
|
+
File.open("#{gitRoot}/configure.json", 'w') { |file| file.puts(JSON.generate(steps)) }
|
24
|
+
end
|
23
25
|
end
|
24
26
|
end
|
data/lib/trace-component.rb
CHANGED
@@ -33,6 +33,34 @@ class Worker
|
|
33
33
|
@test = t
|
34
34
|
end
|
35
35
|
|
36
|
+
def find(command, list = [])
|
37
|
+
audit = Audit.new false
|
38
|
+
|
39
|
+
@log.info(" FIND: " + command)
|
40
|
+
|
41
|
+
File.foreach(command) { |l|
|
42
|
+
if ( l.start_with?('## ') )
|
43
|
+
@log.info "#{lines + 1} Label: " + l
|
44
|
+
elsif ( l.start_with?('#') )
|
45
|
+
elsif ( /\S/ !~ l )
|
46
|
+
elsif ( l.chomp.end_with?(".sh") && !l.chomp.end_with?(".atomic.sh") && !l.include?("cp ") && !l.include?("chmod") )
|
47
|
+
@log.info(" [#{ref}] RECURSE: " + l)
|
48
|
+
|
49
|
+
workingDir = "#{Pathname.new(Canzea::config[:catalog_location]).realpath}"
|
50
|
+
|
51
|
+
Dir.chdir(workingDir) {
|
52
|
+
|
53
|
+
newCommand = "#{Pathname.new(l.chomp).realpath}"
|
54
|
+
|
55
|
+
lines = find newCommand, list
|
56
|
+
}
|
57
|
+
else
|
58
|
+
list.push l
|
59
|
+
end
|
60
|
+
}
|
61
|
+
return list
|
62
|
+
end
|
63
|
+
|
36
64
|
def run(command, start, lines, statusIndicator = false, ref = "" )
|
37
65
|
audit = Audit.new false
|
38
66
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: canzea
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.151
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Canzea Technologies
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-11-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|