vmc-tsuru 0.1.alpha → 0.2.alpha

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.
@@ -24,9 +24,11 @@ module VMC::Cli::Command
24
24
  return display "No Applications" if apps.nil? || apps.empty?
25
25
 
26
26
  apps_table = table do |t|
27
- t.headings = 'Application', '# ', 'Health', 'URLS', 'Services'
27
+ #t.headings = 'Application', '# ', 'Health', 'URLS', 'Services'
28
+ t.headings = 'Application', 'State'
28
29
  apps.each do |app|
29
- t << [app[:name], app[:instances], health(app), app[:uris].join(', '), app[:services].join(', ')]
30
+ #t << [app[:name], app[:instances], health(app), app[:uris].join(', '), app[:services].join(', ')]
31
+ t << [app[:Name], app[:State]]
30
32
  end
31
33
  end
32
34
  display apps_table
@@ -756,37 +758,37 @@ module VMC::Cli::Command
756
758
 
757
759
  def delete_app(appname, force)
758
760
  app = client.app_info(appname)
759
- services_to_delete = []
760
- app_services = app[:services]
761
- services_apps_hash = provisioned_services_apps_hash
762
- app_services.each { |service|
763
- del_service = force && no_prompt
764
- unless no_prompt || force
765
- del_service = ask(
766
- "Provisioned service [#{service}] detected, would you like to delete it?",
767
- :default => false
768
- )
769
-
770
- if del_service
771
- apps_using_service = services_apps_hash[service].reject!{ |app| app == appname}
772
- if apps_using_service.size > 0
773
- del_service = ask(
774
- "Provisioned service [#{service}] is also used by #{apps_using_service.size == 1 ? "app" : "apps"} #{apps_using_service.entries}, are you sure you want to delete it?",
775
- :default => false
776
- )
777
- end
778
- end
779
- end
780
- services_to_delete << service if del_service
781
- }
761
+ #services_to_delete = []
762
+ #app_services = app[:services]
763
+ #services_apps_hash = provisioned_services_apps_hash
764
+ # app_services.each { |service|
765
+ # del_service = force && no_prompt
766
+ # unless no_prompt || force
767
+ # del_service = ask(
768
+ # "Provisioned service [#{service}] detected, would you like to delete it?",
769
+ # :default => false
770
+ # )
771
+
772
+ # if del_service
773
+ # apps_using_service = services_apps_hash[service].reject!{ |app| app == appname}
774
+ # if apps_using_service.size > 0
775
+ # del_service = ask(
776
+ # "Provisioned service [#{service}] is also used by #{apps_using_service.size == 1 ? "app" : "apps"} #{apps_using_service.entries}, are you sure you want to delete it?",
777
+ # :default => false
778
+ # )
779
+ # end
780
+ # end
781
+ # end
782
+ # services_to_delete << service if del_service
783
+ # }
782
784
 
783
785
  display "Deleting application [#{appname}]: ", false
784
786
  client.delete_app(appname)
785
787
  display 'OK'.green
786
-
787
- services_to_delete.each do |s|
788
- delete_service_banner(s)
789
- end
788
+ #
789
+ # services_to_delete.each do |s|
790
+ # delete_service_banner(s)
791
+ # end
790
792
  end
791
793
 
792
794
  def do_start(appname, push=false)
@@ -20,40 +20,43 @@ module VMC::Cli::Command
20
20
  end
21
21
 
22
22
  def create_service(service=nil, name=nil, appname=nil)
23
- unless no_prompt || service
24
- services = client.services_info
25
- err 'No services available to provision' if services.empty?
26
- service = ask(
27
- "Which service would you like to provision?",
28
- { :indexed => true,
29
- :choices =>
30
- services.values.collect { |type|
31
- type.keys.collect(&:to_s)
32
- }.flatten
33
- }
34
- )
35
- end
23
+ # unless no_prompt || service
24
+ # # services = client.services_info
25
+ # err 'No services available to provision' if services.empty?
26
+ # service = ask(
27
+ # "Which service would you like to provision?",
28
+ # { :indexed => true,
29
+ # :choices =>
30
+ # services.values.collect { |type|
31
+ # type.keys.collect(&:to_s)
32
+ # }.flatten
33
+ # }
34
+ # )
35
+ # end
36
+
36
37
  name = @options[:name] unless name
37
38
  unless name
38
39
  name = random_service_name(service)
39
40
  picked_name = true
40
41
  end
42
+
41
43
  create_service_banner(service, name, picked_name)
42
44
  appname = @options[:bind] unless appname
43
45
  bind_service_banner(name, appname) if appname
44
46
  end
45
47
 
46
48
  def delete_service(service=nil)
47
- unless no_prompt || service
48
- user_services = client.services
49
- err 'No services available to delete' if user_services.empty?
50
- service = ask(
51
- "Which service would you like to delete?",
52
- { :indexed => true,
53
- :choices => user_services.collect { |s| s[:name] }
54
- }
55
- )
56
- end
49
+ # unless no_prompt || service
50
+ # user_services = client.services
51
+ # err 'No services available to delete' if user_services.empty?
52
+ # service = ask(
53
+ # "Which service would you like to delete?",
54
+ # { :indexed => true,
55
+ # :choices => user_services.collect { |s| s[:name] }
56
+ # }
57
+ # )
58
+ # end
59
+
57
60
  err "Service name required." unless service
58
61
  display "Deleting service [#{service}]: ", false
59
62
  client.delete_service(service)
@@ -9,12 +9,8 @@ module VMC::Cli
9
9
  return display "No system services available" if services.empty?
10
10
 
11
11
  displayed_services = []
12
- services.each do |service_type, value|
13
- value.each do |vendor, version|
14
- version.each do |version_str, service|
15
- displayed_services << [ vendor, version_str, service[:description] ]
16
- end
17
- end
12
+ services.each do |service|
13
+ displayed_services << [service[:Charm], "-", service[:Name]]
18
14
  end
19
15
  displayed_services.sort! { |a, b| a.first.to_s <=> b.first.to_s}
20
16
 
@@ -36,7 +32,7 @@ module VMC::Cli
36
32
  services_table = table do |t|
37
33
  t.headings = 'Name', 'Service'
38
34
  services.each do |service|
39
- t << [ service[:name], service[:vendor] ]
35
+ t << [ service[:Name], service[:Type][:Name] ]
40
36
  end
41
37
  end
42
38
  display services_table
data/lib/cli/version.rb CHANGED
@@ -2,6 +2,6 @@ module VMC
2
2
  module Cli
3
3
  # This version number is used as the RubyGem release version.
4
4
  # The internal VMC version number is VMC::VERSION.
5
- VERSION = '0.1.alpha'
5
+ VERSION = '0.2.alpha'
6
6
  end
7
7
  end
data/lib/vmc/client.rb CHANGED
@@ -59,8 +59,9 @@ class VMC::Client
59
59
 
60
60
  # Global listing of services that are available on the target system
61
61
  def services_info
62
- check_login_status
63
- json_get(path(VMC::GLOBAL_SERVICES_PATH))
62
+ #check_login_status
63
+ #json_get(path(VMC::GLOBAL_SERVICES_PATH))
64
+ json_get("http://tsuru.plataformas.glb.com:4000/services/types")
64
65
  end
65
66
 
66
67
  def runtimes_info
@@ -73,7 +74,7 @@ class VMC::Client
73
74
 
74
75
  def apps
75
76
  #check_login_status
76
- json_get(VMC::APPS_PATH)
77
+ json_get("http://tsuru.plataformas.glb.com:4000/apps")
77
78
  end
78
79
 
79
80
  def create_app(name, manifest={})
@@ -111,15 +112,17 @@ class VMC::Client
111
112
  end
112
113
 
113
114
  def delete_app(name)
114
- check_login_status
115
- http_delete(path(VMC::APPS_PATH, name))
115
+ #check_login_status
116
+ #http_delete(path(VMC::APPS_PATH, name))
117
+ http_get("http://tsuru.plataformas.glb.com:4000/apps/#{name}/delete")
116
118
  end
117
119
 
118
120
  def run(name, command)
119
- check_login_status
121
+ #check_login_status
120
122
  upload_data = {:_method => 'post'}
121
123
  upload_data[:command] = command
122
- status, body, headers = http_post(path(VMC::APPS_PATH, name, "run"), upload_data)
124
+ #status, body, headers = http_post(path(VMC::APPS_PATH, name, "run"), upload_data)
125
+ status, body, headers = http_post("http://tsuru.plataformas.glb.com:4000/apps/#{name}/run", upload_data)
123
126
  json_parse(body)
124
127
  end
125
128
 
@@ -135,7 +138,7 @@ class VMC::Client
135
138
  end
136
139
 
137
140
  def app_stats(name)
138
- check_login_status
141
+ #check_login_status
139
142
  stats_raw = json_get(path(VMC::APPS_PATH, name, "stats"))
140
143
  stats = []
141
144
  stats_raw.each_pair do |k, entry|
@@ -174,61 +177,66 @@ class VMC::Client
174
177
 
175
178
  # listing of services that are available in the system
176
179
  def services
177
- check_login_status
178
- json_get(VMC::SERVICES_PATH)
180
+ #check_login_status
181
+ #json_get(VMC::SERVICES_PATH)
182
+ json_get("http://tsuru.plataformas.glb.com:4000/services")
179
183
  end
180
184
 
181
185
  def create_service(service, name)
182
- check_login_status
183
- services = services_info
184
- services ||= []
186
+ #check_login_status
187
+ #services = services_info
188
+ #services ||= []
185
189
  service_hash = nil
186
190
 
187
- service = service.to_s
188
191
 
189
- # FIXME!
190
- services.each do |service_type, value|
191
- value.each do |vendor, version|
192
- version.each do |version_str, service_descr|
193
- if service == service_descr[:vendor]
194
- service_hash = {
195
- :type => service_descr[:type], :tier => 'free',
196
- :vendor => service, :version => version_str
197
- }
198
- break
199
- end
200
- end
201
- end
192
+ services = [{mysql: {type: "mysql"}}]
193
+
194
+ if service == services[0][:mysql][:type]
195
+ service_hash = {
196
+ type: services[0][:mysql][:type],
197
+ name: name
198
+ }
202
199
  end
203
200
 
201
+ service = service.to_s
202
+
204
203
  raise TargetError, "Service [#{service}] is not a valid service choice" unless service_hash
205
- service_hash[:name] = name
206
- json_post(path(VMC::SERVICES_PATH), service_hash)
204
+ json_post("http://tsuru.plataformas.glb.com:4000/services", service_hash)
207
205
  end
208
206
 
209
207
  def delete_service(name)
210
- check_login_status
211
- svcs = services || []
212
- names = svcs.collect { |s| s[:name] }
213
- raise TargetError, "Service [#{name}] not a valid service" unless names.include? name
214
- http_delete(path(VMC::SERVICES_PATH, name))
208
+ # check_login_status
209
+ #svcs = services || []
210
+ # names = svcs.collect { |s| s[:name] }
211
+ # raise TargetError, "Service [#{name}] not a valid service" unless names.include? name
212
+ http_get("http://tsuru.plataformas.glb.com:4000/services/#{name}")
215
213
  end
216
214
 
217
215
  def bind_service(service, appname)
218
- check_login_status
219
- app = app_info(appname)
220
- services = app[:services] || []
221
- app[:services] = services << service
222
- update_app(appname, app)
216
+ # check_login_status
217
+ #app = app_info(appname)
218
+ #services = app[:services] || []
219
+ #app[:services] = services << service
220
+ #update_app(appname, app)
221
+ bind_hash = {
222
+ service: service,
223
+ app: appname
224
+ }
225
+ json_post("http://tsuru.plataformas.glb.com:4000/services/bind", bind_hash)
223
226
  end
224
227
 
225
228
  def unbind_service(service, appname)
226
- check_login_status
227
- app = app_info(appname)
228
- services = app[:services] || []
229
- services.delete(service)
230
- app[:services] = services
231
- update_app(appname, app)
229
+ # check_login_status
230
+ # app = app_info(appname)
231
+ # services = app[:services] || []
232
+ # services.delete(service)
233
+ # app[:services] = services
234
+ # update_app(appname, app)
235
+ bind_hash = {
236
+ service: service,
237
+ app: appname
238
+ }
239
+ json_post("http://tsuru.plataformas.glb.com:4000/services/bind", bind_hash)
232
240
  end
233
241
 
234
242
  ######################################################
@@ -398,8 +406,6 @@ class VMC::Client
398
406
  :timeout => 60 * 60 * 24 * 1000,
399
407
  :open_timeout => 60 * 60 * 24 * 1000
400
408
  }
401
- puts "path #{path}"
402
- puts "req #{req}"
403
409
  status, body, response_headers = perform_http_request(req)
404
410
 
405
411
  if request_failed?(status)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vmc-tsuru
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.alpha
4
+ version: 0.2.alpha
5
5
  prerelease: 4
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-22 00:00:00.000000000Z
12
+ date: 2012-03-23 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json_pure