pi 0.1.27 → 0.1.28

Sign up to get free protection for your applications and to get access to all the features.
@@ -88,7 +88,7 @@ module PI::Cli
88
88
  if appid_or_appname =~ /^[1-9]\d*$/
89
89
  appid = appid_or_appname
90
90
  app = client.app_get_byid(appid)
91
- err"The application is not found!" if app[:id] == 0
91
+ err"The application is not found!" if app.nil?
92
92
  return target_not_all, app, appid
93
93
  elsif appid_or_appname == nil
94
94
  if target.nil?
@@ -101,8 +101,11 @@ module PI::Cli
101
101
  appname = appid_or_appname
102
102
  err "Not enough arguments" if target == nil
103
103
  if target != "all"
104
+ # targets = client.targets
105
+ # targets = targets.collect { |t| t[:name] }
106
+ # err "Invalid target" unless targets.include?(target)
104
107
  app = client.app_search(target, appname)
105
- err "The application '#{appname}' is not found!" if app[:id] == 0
108
+ err "The application '#{appname}' is not found!" if app.nil?
106
109
  return target_not_all, app, appid
107
110
  else
108
111
  apps = client.app_search_target_is_all(appname)
@@ -119,7 +122,7 @@ module PI::Cli
119
122
  if appid_or_appname =~ /^[1-9]\d*$/
120
123
  appid = appid_or_appname
121
124
  app = client.app_get_byid(appid)
122
- err"The application is not found!" if app[:id] == 0
125
+ err"The application is not found!" if app.nil?
123
126
  return app, appid
124
127
  elsif appid_or_appname == nil
125
128
  if target.nil?
@@ -131,8 +134,11 @@ module PI::Cli
131
134
  else
132
135
  appname = appid_or_appname
133
136
  err "Not enough arguments" if target == nil
137
+ # targets = client.targets
138
+ # targets = targets.collect { |t| t[:name] }
139
+ # err "Invalid target" unless targets.include?(target)
134
140
  app = client.app_search(target, appname)
135
- err "The application '#{appname}' is not found!" if app[:id] == 0
141
+ err "The application '#{appname}' is not found!" if app.nil?
136
142
  return app, appid
137
143
  end
138
144
  end
@@ -169,22 +175,7 @@ module PI::Cli
169
175
 
170
176
  def get_graceful(app)
171
177
  graceful = @options[:graceful]
172
- if app[:action_for_change] == "restart"
173
- graceful = ask "Need graceful?", :default => DEFAULTS["graceful"] unless graceful
174
- else
175
- graceful = false
176
- end
177
- graceful = (graceful == true ? "true" : "false")
178
- end
179
-
180
- def get_lazy(app)
181
- lazy = @options[:lazy]
182
- if app[:action_for_change] == "restart"
183
- lazy = ask "Need lazy?", :default => DEFAULTS["lazy"] unless lazy
184
- else
185
- lazy = false
186
- end
187
- lazy = (lazy == true ? "true" : "false")
178
+ graceful = ask "Need graceful?", :default => DEFAULTS["graceful"] unless graceful
188
179
  end
189
180
 
190
181
  # def check_status(uuid)
@@ -215,19 +206,23 @@ module PI::Cli
215
206
  def check_envname_valid?(name)
216
207
  #(name =~ /\b(?!vcap_|vmc_|VCAP_|VMC_)\D+\b/ && name.size <= 18) ? true : false
217
208
  if name =~ /[0-9]/
218
- display "Digital cannot be included in Env name"
209
+ display "Digital cannot be included in Env name".red
219
210
  return false
220
211
  end
221
212
  if name =~ /^vcap_/i
222
- display "Env name cannot be started with \"vcap_\" or \"VCAP_\""
213
+ display "Env name cannot be started with \"vcap_\" or \"VCAP_\"".red
223
214
  return false
224
215
  end
225
216
  if name =~ /^vmc_/i
226
- display "Env name cannot be started with \"vmc_\" or \"VMC_\""
217
+ display "Env name cannot be started with \"vmc_\" or \"VMC_\"".red
227
218
  return false
228
219
  end
229
- if not name =~ /^[a-zA-Z\`\~\!\@\#\$\%\^\&\*\(\)\_\+\-\{\}]{0,18}$/
230
- display "the input is illegal!"
220
+ # if not name =~ /^[a-zA-Z\`\~\!\@\#\$\%\^\&\*\(\)\_\+\-\{\}]{0,18}$/
221
+ # display "the input is illegal!".red
222
+ # return false
223
+ # end
224
+ if name.size > 18
225
+ display "Invalid name length. The max length of name is 18"
231
226
  return false
232
227
  end
233
228
  return true
@@ -31,7 +31,7 @@ module PI::Cli::Command
31
31
  loop{
32
32
  numPerPage = ask "Number per page"
33
33
  if not numPerPage =~ /^[1-9]\d*$/
34
- display "Invalid Number! Please input number from 1 to #{total_app}"
34
+ display "Invalid Number! Please input number from 1 to #{total_app}".red
35
35
  numPerPage =nil
36
36
  next
37
37
  else
@@ -43,7 +43,7 @@ module PI::Cli::Command
43
43
  loop{
44
44
  pageNum = ask "Page number"
45
45
  if not pageNum =~ /^[1-9]\d*$/
46
- display "Invalid Number! Please input number from 1 to #{maxpage}"
46
+ display "Invalid Number! Please input number from 1 to #{maxpage}".red
47
47
  pageNum =nil
48
48
  next
49
49
  else
@@ -86,11 +86,11 @@ module PI::Cli::Command
86
86
  loop{
87
87
  appname = ask "Application Name" unless appname
88
88
  if not check_name_valid?(appname)
89
- display "Invalid application name '#{appname}'."
89
+ display "Invalid application name '#{appname}'.".red
90
90
  appname =nil
91
91
  next
92
92
  else if app_exists?(target, appname)
93
- display "Application '#{appname}' already exists."
93
+ display "Application '#{appname}' already exists.".red
94
94
  appname =nil
95
95
  next
96
96
  else
@@ -148,11 +148,11 @@ module PI::Cli::Command
148
148
  loop{
149
149
  instances = ask "How many instances(from 1 to #{max_instance})?", :default => DEFAULTS["instances"]
150
150
  if not instances.to_s =~ /^[1-9]\d*$/
151
- display "Invalid Number!"
151
+ display "Invalid Number!".red
152
152
  instances =nil
153
153
  next
154
154
  else if instances < 1 || instances > max_instance
155
- display "Invalid Number! Please input number from 1 to #{max_instance}"
155
+ display "Invalid Number! Please input number from 1 to #{max_instance}".red
156
156
  instances =nil
157
157
  next
158
158
  else
@@ -163,16 +163,8 @@ module PI::Cli::Command
163
163
  isDebug = false
164
164
  isDebug = ask "Need debug?", :default => DEFAULTS["isDebug"] if deployType == "binary"
165
165
  isDebug = (isDebug == false ? "no" : "yes")
166
- graceful = false
167
- lazy = false
168
166
  choices = ["restart", "notify"]
169
167
  action_for_change = ask"Reaction when service changed", :default => DEFAULTS["action_for_change"], :choices => choices, :indexed => true
170
- if action_for_change == "restart"
171
- graceful = ask "Need graceful?", :default => DEFAULTS["graceful"]
172
- lazy = ask "Need lazy?", :default => DEFAULTS["lazy"]
173
- end
174
- graceful = (graceful == false ? "false" : "true")
175
- lazy = (lazy == false ? "false" : "true")
176
168
  needMonitor = ask "Need monitor?", :default => DEFAULTS["needMonitor"]
177
169
  needMonitor = (needMonitor == false ? "no" : "yes")
178
170
 
@@ -189,8 +181,6 @@ module PI::Cli::Command
189
181
  :tag => tag,
190
182
  :isDebug => isDebug,
191
183
  :action_for_change => action_for_change,
192
- :graceful => graceful,
193
- :lazy => lazy,
194
184
  :needMonitor => needMonitor
195
185
  }
196
186
 
@@ -250,7 +240,7 @@ module PI::Cli::Command
250
240
  target_not_all, app, appid = choose_app_help(appid_or_appname)
251
241
  if target_not_all
252
242
  appid = (appid == nil ? app[:id] : appid)
253
- return display "The application '#{app[:name]}'(target:#{app[:targetName]}) has already stopped.".yellow if app[:status] == "STOPPED"
243
+ # return display "The application '#{app[:name]}'(target:#{app[:targetName]}) has already stopped.".yellow if app[:status] == "STOPPED"
254
244
  do_stop_app(app, appid)
255
245
  else
256
246
  app.each do |a|
@@ -275,7 +265,7 @@ module PI::Cli::Command
275
265
 
276
266
  def scale_app(appid_or_appname=nil)
277
267
  client.check_login_status
278
- instance = @options[:instance]
268
+ instance = @options[:instance]
279
269
  app, appid = choose_app_help_target_not_all(appid_or_appname)
280
270
  appid = (appid == nil ? app[:id] : appid)
281
271
  target_memory = client.target_memory(app[:targetName])
@@ -285,11 +275,11 @@ module PI::Cli::Command
285
275
  loop{
286
276
  instance = ask "Current instance: #{app[:instances]}, Instance number" unless instance
287
277
  if not instance.to_s =~ /^[1-9]\d*$/
288
- display "Invalid Number!"
278
+ display "Invalid Number!".red
289
279
  instance =nil
290
280
  next
291
281
  else if instance.to_i < 1 || instance.to_i > max_instance
292
- display "Invalid Number! Please input number from 1 to #{max_instance}"
282
+ display "Invalid Number! Please input number from 1 to #{max_instance}".red
293
283
  instance =nil
294
284
  next
295
285
  else
@@ -297,8 +287,8 @@ module PI::Cli::Command
297
287
  end
298
288
  end
299
289
  }
300
- err "Don't need scale application" if instance == app[:instances].to_s
301
- graceful = get_graceful(app)
290
+ err "Don't need scale application" if instance.to_s == app[:instances].to_s
291
+ # graceful = get_graceful(app)
302
292
  display "Scaling application: ",false
303
293
 
304
294
  t = Thread.new do
@@ -309,7 +299,7 @@ module PI::Cli::Command
309
299
  end
310
300
  end
311
301
 
312
- tmp = client.scale_app(appid, instance, graceful)
302
+ tmp = client.scale_app(appid, instance)
313
303
  uuid = tmp[1]
314
304
  result = check_status(uuid)
315
305
  Thread.kill(t)
@@ -323,18 +313,25 @@ module PI::Cli::Command
323
313
  if app[:deployType] == "git"
324
314
  tags = client.project_tags(app[:projectId])
325
315
  err "No tags!" if tags.nil? || tags.empty?
326
- tag = ask "Select Tag", :choices => tags, :indexed => true unless tag
316
+ if tag
317
+ err "Invalid tag" unless tags.include?(tag)
318
+ else
319
+ tag = ask "Select Tag", :choices => tags, :indexed => true
320
+ end
327
321
  err "Don't need update application!" if tag == app[:tag]
328
- display "Selected tag: ",false
329
- display "#{tag}"
330
322
  else
331
323
  tags = client.project_binary(app[:projectId])
332
324
  err "No version!" if tags.nil? || tags.empty?
333
- tag = ask "Select Version", :choices => tags.collect { |b| b[:versionName] }, :indexed => true unless tag
325
+ if tag
326
+ tags = tags.collect { |b| b[:versionName] }
327
+ err "Invalid version" unless tags.include?(tag)
328
+ else
329
+ tag = ask "Select Version", :choices => tags.collect { |b| b[:versionName] }, :indexed => true
330
+ end
334
331
  err "Don't need update application!" if tag == app[:tag]
335
332
  end
336
333
  graceful = get_graceful(app)
337
- lazy = get_lazy(app)
334
+ # lazy = get_lazy(app)
338
335
  display "Updating application: ",false
339
336
 
340
337
  t = Thread.new do
@@ -345,7 +342,7 @@ module PI::Cli::Command
345
342
  end
346
343
  end
347
344
 
348
- tmp = client.update_app(appid,tag,graceful,lazy)
345
+ tmp = client.update_app(appid,tag,graceful)
349
346
  uuid = tmp[1]
350
347
  result = check_status(uuid)
351
348
  Thread.kill(t)
@@ -394,11 +391,10 @@ module PI::Cli::Command
394
391
  loop{
395
392
  name = ask "Environment Name" unless name
396
393
  if not check_envname_valid?(name)
397
- #display "Invalid environment name '#{name}'."
398
394
  name =nil
399
395
  next
400
396
  else if env_exists?(appid,name)
401
- display "Environment '#{name}' already exists."
397
+ display "Environment '#{name}' already exists.".red
402
398
  name =nil
403
399
  next
404
400
  else
@@ -409,7 +405,7 @@ module PI::Cli::Command
409
405
  loop{
410
406
  value = ask "Environment Value" unless value
411
407
  if not check_envvalue_valid?(value)
412
- display "Invalid environment value '#{value}'."
408
+ display "Invalid environment value '#{value}'.".red
413
409
  value =nil
414
410
  next
415
411
  else
@@ -501,7 +497,7 @@ module PI::Cli::Command
501
497
 
502
498
  def app_exists?(target, appname)
503
499
  app = client.app_search(target,appname)
504
- app[:id] != 0 ? true : false
500
+ app.nil? ? false : true
505
501
  end
506
502
 
507
503
  def env_exists?(appid, envname)
@@ -533,7 +529,7 @@ module PI::Cli::Command
533
529
 
534
530
  def do_restart_app(app, appid)
535
531
  graceful = get_graceful(app)
536
- lazy = get_lazy(app)
532
+ # lazy = get_lazy(app)
537
533
  display "Restart application '#{app[:name]}'(target:#{app[:targetName]}): ",false
538
534
  t = Thread.new do
539
535
  loop do
@@ -542,7 +538,7 @@ module PI::Cli::Command
542
538
  break unless t.alive?
543
539
  end
544
540
  end
545
- tmp = client.restart_app(appid, graceful,lazy)
541
+ tmp = client.restart_app(appid, graceful)
546
542
  uuid = tmp[1]
547
543
  result = check_status(uuid)
548
544
  Thread.kill(t)
@@ -27,13 +27,18 @@ module PI::Cli::Command
27
27
  def map_dns(appid_or_appname=nil)
28
28
  client.check_login_status
29
29
  dnsname = @options[:dns]
30
+ if dnsname
31
+ dns_list = client.dns
32
+ dnsnames = dns_list.collect { |d| d[:name] }
33
+ err "Invalid dns name" unless dnsnames.include?(dnsname)
34
+ end
30
35
  app, appid = choose_app_help_target_not_all(appid_or_appname)
31
36
  appid = (appid == nil ? app[:id] : appid)
32
37
  dns = client.usable_dns(appid)
33
38
  err "No usable dns!" if dns.nil? || dns.empty?
34
- if dnsname
35
- dnsnames = dns.collect { |d| d[:name] }
36
- err "Invalid dns name" unless dnsnames.include?(dnsname)
39
+ if dnsname
40
+ usable_dnsnames = dns.collect { |d| d[:name] }
41
+ err "Invalid dns name" unless usable_dnsnames.include?(dnsname)
37
42
  tmp = dnsname.split(",")
38
43
  manifest = Array.new
39
44
  tmp.each do |t|
@@ -183,7 +188,15 @@ module PI::Cli::Command
183
188
  client.check_login_status
184
189
  target = @options[:target]
185
190
  continent = @options[:continent]
191
+ if continent
192
+ continents = client.dns_continents
193
+ err "Invalid continent" unless continents.has_key?(continent.to_sym)
194
+ end
186
195
  country = @options[:country]
196
+ if country && continent
197
+ countries = client.dns_country(continent)
198
+ err "Invalid country" unless countries.has_key?(country.to_sym)
199
+ end
187
200
  unless dnsid
188
201
  dnsid = choose_dnsid
189
202
  end
@@ -193,24 +206,35 @@ module PI::Cli::Command
193
206
  end
194
207
  unless continent
195
208
  continents = client.dns_continents
209
+ err "No continents" if continents.nil? || continents.empty?
196
210
  tmp = continents.values
197
211
  tmp.sort! {|a, b| a <=> b }
198
212
  continent = ask"Select continent", :choices => tmp.collect { |t| t }, :indexed => true
199
213
  display "Select continent: #{continent}"
200
214
  continent = continents.invert["#{continent}"]
201
215
  end
202
- unless country
203
- countries = client.dns_country(continent)
204
- tmp = countries.values
205
- tmp.sort! {|a, b| a <=> b }
206
- country = ask"Select country", :choices => tmp.collect { |t| t }, :indexed => true
207
- display "Select country: #{country}"
208
- country = countries.invert["#{country}"]
209
- end
210
- manifest = {
211
- :continentName => continent,
216
+ if continent.to_s == "DEFAULT"
217
+ manifest = {
218
+ # :continentName => continent,
219
+ :continentCode => continent,
220
+ :countryCode => "DEFAULT"
221
+ }
222
+ else
223
+ unless country
224
+ countries = client.dns_country(continent)
225
+ err "No countries" if countries.nil? || countries.empty?
226
+ tmp = countries.values
227
+ tmp.sort! {|a, b| a <=> b }
228
+ country = ask"Select country", :choices => tmp.collect { |t| t }, :indexed => true
229
+ display "Select country: #{country}"
230
+ country = countries.invert["#{country}"]
231
+ end
232
+ manifest = {
233
+ # :continentName => continent,
234
+ :continentCode => continent,
212
235
  :countryCode => country
213
236
  }
237
+ end
214
238
  client.register_dns(dnsid, target, manifest)
215
239
  display "OK".green
216
240
  end
@@ -95,7 +95,7 @@ module PI::Cli::Command
95
95
 
96
96
  github_info = client.github_info
97
97
 
98
- if github_info[:name].empty?
98
+ if github_info.nil?
99
99
  manifest = {
100
100
  :name => "#{project}",
101
101
  :runtime => "#{runtime}",
@@ -327,7 +327,7 @@ module PI::Cli::Command
327
327
 
328
328
  def project_exists?(projectname)
329
329
  project = client.project_search(projectname)
330
- project[:id] != 0 ? true : false
330
+ project.nil? ? false : true
331
331
  end
332
332
 
333
333
 
@@ -39,8 +39,8 @@ module PI::Cli::Command
39
39
  else
40
40
  manifest = asks "Select services, indexed list?", :choices => services.collect { |s| s[:name] }, :indexed => true
41
41
  end
42
- graceful = get_graceful(app)
43
- lazy = get_lazy(app)
42
+ # graceful = get_graceful(app)
43
+ # lazy = get_lazy(app)
44
44
  display "Binding service: ",false
45
45
 
46
46
  t = Thread.new do
@@ -51,7 +51,7 @@ module PI::Cli::Command
51
51
  end
52
52
  end
53
53
 
54
- tmp = client.bind_service(appid, graceful, lazy, manifest)
54
+ tmp = client.bind_service(appid, manifest)
55
55
  uuid = tmp[1]
56
56
  result = check_status(uuid)
57
57
  Thread.kill(t)
@@ -69,10 +69,10 @@ module PI::Cli::Command
69
69
  else
70
70
  services = asks "Select Service", :choices => services.collect { |s| s[:name] }, :indexed => true
71
71
  end
72
- graceful = get_graceful(app)
73
- lazy = get_lazy(app)
72
+ # graceful = get_graceful(app)
73
+ # lazy = get_lazy(app)
74
74
  services.each do |service|
75
- do_unbind_service(app, service, graceful, lazy)
75
+ do_unbind_service(app, service)
76
76
  end
77
77
  end
78
78
 
@@ -213,7 +213,7 @@ module PI::Cli::Command
213
213
 
214
214
  private
215
215
 
216
- def do_unbind_service(app, service, graceful, lazy)
216
+ def do_unbind_service(app, service)
217
217
  display "Unbinding service '#{service}': ",false
218
218
  t = Thread.new do
219
219
  loop do
@@ -222,7 +222,7 @@ module PI::Cli::Command
222
222
  break unless t.alive?
223
223
  end
224
224
  end
225
- tmp = client.unbind_service(app[:id], service, graceful, lazy)
225
+ tmp = client.unbind_service(app[:id], service)
226
226
  uuid = tmp[1]
227
227
  result = check_status(uuid)
228
228
  Thread.kill(t)