pi 0.1.27 → 0.1.28

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.
@@ -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)