vagrant-node 0.0.2 → 1.0.0
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.
- data/README.md +39 -1
- data/lib/vagrant-node.rb +1 -0
- data/lib/vagrant-node/actions/.svn/entries +62 -0
- data/lib/vagrant-node/actions/.svn/text-base/snapshot.rb.svn-base +310 -0
- data/lib/vagrant-node/actions/snapshot.rb +57 -32
- data/lib/vagrant-node/api.rb +223 -42
- data/lib/vagrant-node/apidesc.rb +105 -1
- data/lib/vagrant-node/clientcontroller.rb +530 -291
- data/lib/vagrant-node/configmanager.rb +284 -0
- data/lib/vagrant-node/dbmanager.rb +120 -3
- data/lib/vagrant-node/exceptions.rb +87 -0
- data/lib/vagrant-node/nodeservercommand.rb +6 -0
- data/lib/vagrant-node/nodeserverpasswd.rb +75 -0
- data/lib/vagrant-node/nodeserverstart.rb +21 -11
- data/lib/vagrant-node/nodeserverstop.rb +23 -13
- data/lib/vagrant-node/pwmanager.rb +23 -0
- data/lib/vagrant-node/server.rb +39 -13
- data/lib/vagrant-node/version.rb +1 -1
- data/vagrant-node.gemspec +9 -3
- metadata +53 -13
data/lib/vagrant-node/api.rb
CHANGED
@@ -4,7 +4,9 @@ require 'json'
|
|
4
4
|
require 'rack'
|
5
5
|
require 'vagrant-node/clientcontroller'
|
6
6
|
require 'vagrant-node/apidesc'
|
7
|
+
require 'vagrant-node/exceptions'
|
7
8
|
|
9
|
+
require 'cgi'
|
8
10
|
|
9
11
|
require 'pp'
|
10
12
|
module Vagrant
|
@@ -12,10 +14,18 @@ module Vagrant
|
|
12
14
|
module ServerAPI
|
13
15
|
|
14
16
|
class API < Sinatra::Base
|
15
|
-
include RestRoutes
|
16
|
-
|
17
|
-
|
18
|
-
|
17
|
+
include RestRoutes
|
18
|
+
COOKIE_TOKEN_ID = "TOKEN"
|
19
|
+
COOKIE_EXPIRATION_TIME = 5
|
20
|
+
def initialize
|
21
|
+
super
|
22
|
+
@session_table=Hash.new
|
23
|
+
end
|
24
|
+
#use Rack::Session::Pool, :expire_after => 2592000
|
25
|
+
#enable :sessions
|
26
|
+
# before do
|
27
|
+
# content_type :json
|
28
|
+
# end
|
19
29
|
|
20
30
|
|
21
31
|
#UPLOAD A FILE
|
@@ -26,10 +36,47 @@ module Vagrant
|
|
26
36
|
# redirect '/'
|
27
37
|
#end
|
28
38
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
#
|
39
|
+
#before '^.*(^login).*' do
|
40
|
+
before %r{^(?!#{RouteManager.login_route}$)} do
|
41
|
+
content_type :json
|
42
|
+
#FIXME REMOVE
|
43
|
+
#puts "ENTRO BEFORE"
|
44
|
+
#pp request.env
|
45
|
+
token = ""
|
46
|
+
cookie = ""
|
47
|
+
|
48
|
+
#pp "TOKEN DESCAPADO = #{CGI::unescape(request.env['HTTP_CONTENT_MD5'])}"
|
49
|
+
|
50
|
+
|
51
|
+
cookie = request.cookies[COOKIE_TOKEN_ID]
|
52
|
+
token = CGI::unescape(request.env['HTTP_CONTENT_MD5']) if request.env['HTTP_CONTENT_MD5']!=nil
|
53
|
+
|
54
|
+
#FIXME REMOVE
|
55
|
+
# pp "COOKIES = #{cookie}"
|
56
|
+
# pp "TOKEN = #{token}"
|
57
|
+
#
|
58
|
+
# pp "TIENE COOKIE " if (@session_table.has_key?(cookie))
|
59
|
+
# pp "CONTIENE TOKEN " if (challenged?(token))
|
60
|
+
|
61
|
+
if (!@session_table.has_key?(cookie)||
|
62
|
+
!challenged?(token))
|
63
|
+
redirect to(RouteManager.login_route)
|
64
|
+
|
65
|
+
else
|
66
|
+
#raise RestException.new(401,"Not authorized") if !authorized?(cookie,token)
|
67
|
+
halt 401, "Not authorized\n" if !authorized?(cookie,token)
|
68
|
+
end
|
69
|
+
clear_session_table
|
70
|
+
end
|
71
|
+
|
72
|
+
after %r{^(?!#{RouteManager.login_route}$)} do
|
73
|
+
|
74
|
+
cookie=request.cookies[COOKIE_TOKEN_ID]
|
75
|
+
|
76
|
+
@session_table.delete(cookie) if cookie!=nil
|
77
|
+
#FIXME REMOVE
|
78
|
+
#pp "-------------------------------------------"
|
79
|
+
end
|
33
80
|
|
34
81
|
######### FIXME DELETE #####################
|
35
82
|
get '/' do
|
@@ -37,122 +84,256 @@ module Vagrant
|
|
37
84
|
end
|
38
85
|
|
39
86
|
###############################################
|
40
|
-
|
87
|
+
get RouteManager.login_route do
|
88
|
+
res = ClientController.send_challenge
|
89
|
+
#FIXME REMOVE
|
90
|
+
#puts "LOGIN"
|
91
|
+
|
92
|
+
|
93
|
+
#@session_table[res[:cookie]]={:expiration => Time::now.to_i,:challenge=>res[:challenge]}
|
94
|
+
#pp res[:cookie]
|
95
|
+
@session_table[res[:cookie]]={:expiration => Time::now.to_i+COOKIE_EXPIRATION_TIME,:challenge=>res[:challenge]}
|
96
|
+
#pp @session_table.inspect
|
97
|
+
|
98
|
+
response.set_cookie(COOKIE_TOKEN_ID, res[:cookie])
|
99
|
+
headers "Content_MD5" => res[:challenge]
|
100
|
+
status 200
|
101
|
+
|
102
|
+
#handle_response_result(ClientController.send_challenge)
|
103
|
+
end
|
104
|
+
|
41
105
|
get RouteManager.box_list_route do
|
42
|
-
ClientController.listboxes.to_json
|
106
|
+
#ClientController.listboxes.to_json
|
107
|
+
execute(:listboxes)
|
43
108
|
end
|
44
109
|
|
45
|
-
delete RouteManager.box_delete_route do
|
46
|
-
handle_response_result(ClientController.box_delete(params[:box],params[:provider]))
|
110
|
+
delete RouteManager.box_delete_route do
|
111
|
+
#handle_response_result(ClientController.box_delete("params[:box]",params[:provider]))
|
112
|
+
execute(:box_delete,true,params[:box],params[:provider])
|
47
113
|
end
|
48
114
|
|
49
|
-
post RouteManager.box_add_route do
|
50
|
-
|
115
|
+
post RouteManager.box_add_route do
|
116
|
+
execute_async(:box_add,params[:box],params[:url])
|
51
117
|
end
|
52
118
|
|
53
119
|
|
54
120
|
|
55
121
|
get RouteManager.vm_status_all_route do
|
56
|
-
handle_response_result(ClientController.vm_status(nil))
|
122
|
+
#handle_response_result(ClientController.vm_status(nil))
|
123
|
+
execute(:vm_status)
|
57
124
|
end
|
58
125
|
|
59
126
|
|
60
127
|
|
61
128
|
get RouteManager.vm_status_route do
|
62
|
-
handle_response_result(ClientController.vm_status(params[:vm]))
|
129
|
+
#handle_response_result(ClientController.vm_status(params[:vm]))
|
130
|
+
execute(:vm_status,true,params[:vm])
|
63
131
|
end
|
64
132
|
|
65
133
|
#accept :vmname as paramter. This parameter
|
66
134
|
#could be empty
|
67
|
-
post RouteManager.vm_up_route do
|
68
|
-
|
135
|
+
post RouteManager.vm_up_route do
|
136
|
+
execute_async(:vm_up,params[:vmname])
|
69
137
|
end
|
70
138
|
|
71
139
|
#accept :vmname and :force as paramters
|
72
140
|
post RouteManager.vm_halt_route do
|
73
|
-
handle_response_result(ClientController.vm_halt(params[:vmname],params[:force]))
|
141
|
+
#handle_response_result(ClientController.vm_halt(params[:vmname],params[:force]))
|
142
|
+
execute_async(:vm_halt,params[:vmname],params[:force])
|
74
143
|
end
|
75
144
|
|
76
145
|
#accept :vmname as paramter. This parameter
|
77
146
|
#could be empty
|
78
147
|
post RouteManager.vm_destroy_route do
|
79
|
-
handle_response_result(ClientController.vm_confirmed_destroy(params[:vmname]))
|
148
|
+
#handle_response_result(ClientController.vm_confirmed_destroy(params[:vmname]))
|
149
|
+
execute(:vm_confirmed_destroy,true,params[:vmname])
|
80
150
|
end
|
151
|
+
|
152
|
+
put RouteManager.vm_add_route do
|
153
|
+
execute(:vm_add,false,params[:file],params[:rename])
|
154
|
+
end
|
155
|
+
|
156
|
+
delete RouteManager.vm_delete_route do
|
157
|
+
execute(:vm_delete,false,params[:vm],params[:remove])
|
158
|
+
end
|
81
159
|
|
82
160
|
#accept :vmname as paramter. This parameter
|
83
161
|
#could be empty
|
84
|
-
post RouteManager.vm_suspend_route do
|
85
|
-
handle_response_result(ClientController.vm_suspend(params[:vmname]))
|
162
|
+
post RouteManager.vm_suspend_route do
|
163
|
+
#handle_response_result(ClientController.vm_suspend(params[:vmname]))
|
164
|
+
execute_async(:vm_suspend,params[:vmname])
|
86
165
|
end
|
87
166
|
|
88
167
|
#accept :vmname as paramter. This parameter
|
89
168
|
#could be empty
|
90
169
|
post RouteManager.vm_resume_route do
|
91
|
-
handle_response_result(ClientController.vm_resume(params[:vmname]))
|
170
|
+
#handle_response_result(ClientController.vm_resume(params[:vmname]))
|
171
|
+
execute_async(:vm_resume,params[:vmname])
|
92
172
|
end
|
93
173
|
|
94
174
|
post RouteManager.vm_provision_route do
|
95
|
-
handle_response_result(ClientController.vm_provision(params[:vmname]))
|
175
|
+
#handle_response_result(ClientController.vm_provision(params[:vmname]))
|
176
|
+
execute_async(:vm_provision,params[:vmname])
|
96
177
|
end
|
97
178
|
|
98
179
|
|
99
180
|
|
100
181
|
get RouteManager.vm_sshconfig_route do
|
101
|
-
handle_response_result(ClientController.vm_ssh_config(params[:vm]))
|
182
|
+
#handle_response_result(ClientController.vm_ssh_config(params[:vm]))
|
183
|
+
execute(:vm_ssh_config,true,params[:vm])
|
102
184
|
end
|
103
185
|
|
104
186
|
get RouteManager.snapshots_all_route do
|
105
|
-
handle_response_result(ClientController.vm_snapshots(nil))
|
187
|
+
#handle_response_result(ClientController.vm_snapshots(nil))
|
188
|
+
execute(:vm_snapshots,true)
|
106
189
|
end
|
107
190
|
|
108
191
|
|
109
192
|
|
110
193
|
get RouteManager.vm_snapshots_route do
|
111
|
-
handle_response_result(ClientController.vm_snapshots(params[:vm]))
|
194
|
+
#handle_response_result(ClientController.vm_snapshots(params[:vm]))
|
195
|
+
execute(:vm_snapshots,true,params[:vm])
|
112
196
|
end
|
113
197
|
|
114
198
|
get RouteManager.vm_snapshot_take_route do
|
115
|
-
result=ClientController.vm_snapshot_take_file(params[:vmname])
|
199
|
+
#result=ClientController.vm_snapshot_take_file(params[:vmname])
|
200
|
+
result=execute(:vm_snapshot_take_file,false,params[:vmname])
|
116
201
|
|
117
202
|
|
118
203
|
send_file "#{result[1]}", :filename => result[1],
|
119
|
-
:type => 'Application/octet-stream' if result[0]==200 && params[:download]
|
204
|
+
:type => 'Application/octet-stream' if result[0]==200 && params[:download]=="true"
|
120
205
|
|
121
206
|
status result[0]
|
122
207
|
|
123
208
|
end
|
124
209
|
|
125
210
|
|
126
|
-
post RouteManager.vm_snapshot_take_route do
|
127
|
-
handle_response_result(ClientController.vm_snapshot_take(params[:vmname],params[:name],params[:desc]))
|
211
|
+
post RouteManager.vm_snapshot_take_route do
|
212
|
+
#handle_response_result(ClientController.vm_snapshot_take(params[:vmname],params[:name],params[:desc]))
|
213
|
+
execute_async(:vm_snapshot_take,params[:vmname],params[:name],params[:desc])
|
128
214
|
end
|
129
215
|
|
130
216
|
|
131
217
|
post RouteManager.vm_snapshot_restore_route do
|
132
|
-
handle_response_result(ClientController.vm_snapshot_restore(params[:vmname],params[:snapid]))
|
218
|
+
#handle_response_result(ClientController.vm_snapshot_restore(params[:vmname],params[:snapid]))
|
219
|
+
execute_async(:vm_snapshot_restore,params[:vmname],params[:snapid])
|
133
220
|
end
|
134
221
|
|
222
|
+
delete RouteManager.vm_snapshot_delete_route do
|
223
|
+
execute(:vm_snapshot_delete,false,params[:vm],params[:snapid])
|
224
|
+
end
|
225
|
+
|
135
226
|
|
136
227
|
get RouteManager.vm_backup_log_route do
|
137
|
-
handle_response_result(ClientController.backup_log(params[:vm]))
|
228
|
+
#handle_response_result(ClientController.backup_log(params[:vm]))
|
229
|
+
execute(:backup_log,true,params[:vm])
|
138
230
|
end
|
139
231
|
|
140
232
|
|
141
233
|
|
142
234
|
get RouteManager.node_backup_log_route do
|
143
|
-
handle_response_result(ClientController.backup_log(nil))
|
235
|
+
#handle_response_result(ClientController.backup_log(nil))
|
236
|
+
execute(:backup_log,true)
|
237
|
+
end
|
238
|
+
|
239
|
+
|
240
|
+
get RouteManager.config_show_route do
|
241
|
+
result= execute(:config_show,false)
|
242
|
+
#result=ClientController.config_show
|
243
|
+
|
244
|
+
send_file(result, :disposition => 'attachment', :filename => result)
|
245
|
+
|
246
|
+
end
|
247
|
+
|
248
|
+
post RouteManager.node_password_change_route do
|
249
|
+
execute(:password_change,false,params[:password])
|
144
250
|
end
|
145
251
|
|
252
|
+
post RouteManager.config_upload_route do
|
253
|
+
execute(:config_upload,false,params[:file])
|
254
|
+
end
|
255
|
+
|
256
|
+
get RouteManager.node_queue_route do
|
257
|
+
execute(:operation_queued,true,params[:id])
|
258
|
+
end
|
259
|
+
|
260
|
+
get RouteManager.node_queue_last_route do
|
261
|
+
execute(:operation_queued_last,true)
|
262
|
+
end
|
263
|
+
|
264
|
+
|
146
265
|
|
147
266
|
private
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
267
|
+
def clear_session_table
|
268
|
+
@session_table.delete_if {|key,value| Time::now.to_i >= value[:expiration]}
|
269
|
+
end
|
270
|
+
|
271
|
+
#FIXME Factorizar estos dos métodos
|
272
|
+
def execute_async(method,*params)
|
273
|
+
begin
|
274
|
+
if params.empty?
|
275
|
+
result=ClientController.send method.to_sym
|
276
|
+
else
|
277
|
+
result=ClientController.send method.to_sym,*params
|
278
|
+
end
|
279
|
+
|
280
|
+
|
281
|
+
#pp result
|
282
|
+
status 202
|
283
|
+
body "Location: #{result}"
|
284
|
+
# body "Location: #{result}".to_json
|
285
|
+
|
286
|
+
rescue => e
|
287
|
+
#FIXME DELETE PUTS
|
288
|
+
#puts "EN EXCEPCION"
|
289
|
+
puts e.class
|
290
|
+
puts e.message
|
291
|
+
|
292
|
+
|
293
|
+
exception = ((e.class==RestException)? e:ExceptionMutator.new(e))
|
294
|
+
|
295
|
+
halt exception.code,exception.message
|
296
|
+
end
|
297
|
+
|
298
|
+
end
|
299
|
+
|
300
|
+
#def execute(method,params = {} ,to_json = true)
|
301
|
+
def execute(method,to_json = true,*params)
|
302
|
+
begin
|
303
|
+
if params.empty?
|
304
|
+
result=ClientController.send method.to_sym
|
305
|
+
else
|
306
|
+
result=ClientController.send method.to_sym,*params
|
307
|
+
end
|
308
|
+
#puts "TERMINADA LA OPERACION"
|
309
|
+
#puts "A JSON " if to_json
|
310
|
+
#puts "resultado #{result}"
|
311
|
+
return result.to_json if to_json
|
312
|
+
result
|
313
|
+
|
314
|
+
rescue => e
|
315
|
+
#puts "EN EXCEPCION"
|
316
|
+
puts e.class
|
317
|
+
puts e.message
|
318
|
+
|
319
|
+
|
320
|
+
exception = ((e.class==RestException)? e:ExceptionMutator.new(e))
|
321
|
+
|
322
|
+
halt exception.code,exception.message
|
323
|
+
end
|
324
|
+
|
325
|
+
end
|
326
|
+
|
327
|
+
|
328
|
+
|
329
|
+
def authorized?(id,token)
|
330
|
+
@session_table[id][:challenge]
|
331
|
+
ClientController.authorized?(token,@session_table[id][:challenge]) if @session_table.has_key?(id)
|
332
|
+
end
|
333
|
+
|
334
|
+
def challenged?(token)
|
335
|
+
(token!=nil && token.size==32)
|
336
|
+
end
|
156
337
|
|
157
338
|
end
|
158
339
|
end
|
data/lib/vagrant-node/apidesc.rb
CHANGED
@@ -36,6 +36,10 @@ module RestRoutes
|
|
36
36
|
VM_DESTROY_ROUTE
|
37
37
|
end
|
38
38
|
|
39
|
+
def self.vm_add_route
|
40
|
+
VM_ADD_ROUTE
|
41
|
+
end
|
42
|
+
|
39
43
|
def self.vm_status_route
|
40
44
|
VM_STATUS_ROUTE
|
41
45
|
end
|
@@ -64,6 +68,14 @@ module RestRoutes
|
|
64
68
|
VM_SNAPSHOT_TAKE_ROUTE
|
65
69
|
end
|
66
70
|
|
71
|
+
def self.vm_snapshot_delete_route
|
72
|
+
VM_SNAPSHOT_DELETE_ROUTE
|
73
|
+
end
|
74
|
+
|
75
|
+
def self.vm_delete_route
|
76
|
+
VM_DELETE_ROUTE
|
77
|
+
end
|
78
|
+
|
67
79
|
def self.vm_snapshot_restore_route
|
68
80
|
VM_SNAPSHOT_RESTORE_ROUTE
|
69
81
|
end
|
@@ -72,11 +84,42 @@ module RestRoutes
|
|
72
84
|
NODE_BACKUP_LOG_ROUTE
|
73
85
|
end
|
74
86
|
|
87
|
+
def self.node_password_change_route
|
88
|
+
NODE_PASSWORD_CHANGE
|
89
|
+
end
|
90
|
+
|
91
|
+
|
92
|
+
|
75
93
|
def self.vm_backup_log_route
|
76
94
|
VM_BACKUP_LOG_ROUTE
|
77
95
|
end
|
78
96
|
|
79
97
|
|
98
|
+
def self.config_show_route
|
99
|
+
NODE_CONFIG_SHOW_ROUTE
|
100
|
+
end
|
101
|
+
|
102
|
+
def self.config_upload_route
|
103
|
+
NODE_CONFIG_UPLOAD_ROUTE
|
104
|
+
end
|
105
|
+
|
106
|
+
|
107
|
+
def self.login_route
|
108
|
+
LOGIN_ROUTE
|
109
|
+
end
|
110
|
+
|
111
|
+
def self.node_queue_route
|
112
|
+
NODE_QUEUE_ROUTE
|
113
|
+
end
|
114
|
+
|
115
|
+
def self.node_queue_last_route
|
116
|
+
NODE_QUEUE_LAST_ROUTE
|
117
|
+
end
|
118
|
+
|
119
|
+
|
120
|
+
|
121
|
+
|
122
|
+
|
80
123
|
def self.box_list_url(host,port)
|
81
124
|
"http://#{host}:#{port}#{box_list_route}"
|
82
125
|
end
|
@@ -95,8 +138,20 @@ module RestRoutes
|
|
95
138
|
url
|
96
139
|
|
97
140
|
end
|
98
|
-
|
99
141
|
|
142
|
+
def self.node_queue_url(host,port,id)
|
143
|
+
url=String.new(node_queue_route)
|
144
|
+
url[":id"] = id
|
145
|
+
url="http://#{host}:#{port}#{url}"
|
146
|
+
end
|
147
|
+
|
148
|
+
def self.node_queue_last_url(host,port)
|
149
|
+
"http://#{host}:#{port}#{node_queue_last_route}"
|
150
|
+
end
|
151
|
+
|
152
|
+
def self.login_url(host,port)
|
153
|
+
"http://#{host}:#{port}#{login_route}"
|
154
|
+
end
|
100
155
|
|
101
156
|
def self.vm_up_url(host,port)
|
102
157
|
"http://#{host}:#{port}#{vm_up_route}"
|
@@ -110,6 +165,10 @@ module RestRoutes
|
|
110
165
|
"http://#{host}:#{port}#{vm_destroy_route}"
|
111
166
|
end
|
112
167
|
|
168
|
+
def self.vm_add_url(host,port)
|
169
|
+
"http://#{host}:#{port}#{vm_add_route}"
|
170
|
+
end
|
171
|
+
|
113
172
|
def self.vm_suspend_url(host,port)
|
114
173
|
"http://#{host}:#{port}#{vm_suspend_route}"
|
115
174
|
end
|
@@ -168,6 +227,16 @@ module RestRoutes
|
|
168
227
|
|
169
228
|
end
|
170
229
|
|
230
|
+
def self.vm_snapshot_delete_url(host,port,vmname,snapid)
|
231
|
+
url=String.new(vm_snapshot_delete_route)
|
232
|
+
url[":vm"]=vmname
|
233
|
+
url[":snapid"]=snapid
|
234
|
+
url="http://#{host}:#{port}#{url}"
|
235
|
+
|
236
|
+
url
|
237
|
+
|
238
|
+
end
|
239
|
+
|
171
240
|
def self.vm_snapshot_restore_url(host,port,vmname)
|
172
241
|
url=String.new(vm_snapshot_restore_route)
|
173
242
|
url[":vm"]=vmname
|
@@ -177,6 +246,17 @@ module RestRoutes
|
|
177
246
|
|
178
247
|
end
|
179
248
|
|
249
|
+
def self.vm_delete_url(host,port,vmname)
|
250
|
+
url=String.new(vm_delete_route)
|
251
|
+
url[":vm"]=vmname
|
252
|
+
url="http://#{host}:#{port}#{url}"
|
253
|
+
|
254
|
+
url
|
255
|
+
end
|
256
|
+
|
257
|
+
|
258
|
+
|
259
|
+
|
180
260
|
def self.backup_log_url(host,port,vmname=nil)
|
181
261
|
url="http://#{host}:#{port}#{node_backup_log_route}"
|
182
262
|
|
@@ -190,6 +270,17 @@ module RestRoutes
|
|
190
270
|
|
191
271
|
end
|
192
272
|
|
273
|
+
def self.config_show_url(host,port)
|
274
|
+
"http://#{host}:#{port}#{config_show_route}"
|
275
|
+
end
|
276
|
+
|
277
|
+
def self.node_password_change_url(host,port)
|
278
|
+
"http://#{host}:#{port}#{node_password_change_route}"
|
279
|
+
end
|
280
|
+
|
281
|
+
def self.config_upload_url(host,port)
|
282
|
+
"http://#{host}:#{port}#{config_upload_route}"
|
283
|
+
end
|
193
284
|
|
194
285
|
|
195
286
|
private
|
@@ -200,6 +291,8 @@ module RestRoutes
|
|
200
291
|
VM_UP_ROUTE = "/api/vm/up"
|
201
292
|
VM_HALT_ROUTE = "/api/vm/halt"
|
202
293
|
VM_DESTROY_ROUTE = "/api/vm/destroy"
|
294
|
+
VM_DELETE_ROUTE = "/api/vm/:vm/delete"
|
295
|
+
VM_ADD_ROUTE = "/api/vm/add"
|
203
296
|
VM_SUSPEND_ROUTE = "/api/vm/suspend"
|
204
297
|
VM_RESUME_ROUTE = "/api/vm/resume"
|
205
298
|
VM_PROVISION_ROUTE = "/api/vm/provision"
|
@@ -210,11 +303,22 @@ module RestRoutes
|
|
210
303
|
SNAPSHOTS_ALL_ROUTE = "/api/vm/snapshots"
|
211
304
|
VM_SNAPSHOTS_ROUTE = "/api/vm/:vm/snapshots"
|
212
305
|
VM_SNAPSHOT_TAKE_ROUTE = "/api/vm/:vm/take"
|
306
|
+
VM_SNAPSHOT_DELETE_ROUTE = "/api/vm/:vm/:snapid/delete"
|
213
307
|
VM_SNAPSHOT_RESTORE_ROUTE = "/api/vm/:vm/restore"
|
214
308
|
|
215
309
|
VM_BACKUP_LOG_ROUTE = "/api/vm/:vm/backuplog"
|
216
310
|
NODE_BACKUP_LOG_ROUTE = "/api/backuplog"
|
217
311
|
|
312
|
+
NODE_CONFIG_SHOW_ROUTE = "/api/config/show"
|
313
|
+
NODE_CONFIG_UPLOAD_ROUTE = "/api/config/upload"
|
314
|
+
|
315
|
+
NODE_PASSWORD_CHANGE = "/api/password/change"
|
316
|
+
|
317
|
+
NODE_QUEUE_ROUTE = "/api/queue/:id"
|
318
|
+
NODE_QUEUE_LAST_ROUTE = "/api/queuelast"
|
319
|
+
|
320
|
+
LOGIN_ROUTE = "/api/login"
|
321
|
+
|
218
322
|
end
|
219
323
|
|
220
324
|
end
|