root / src / com / rackspace / cloud / android / ViewServerActivity.java @ 7dbfc514
History | View | Annotate | Download (25.2 kB)
1 |
/**
|
---|---|
2 |
*
|
3 |
*/
|
4 |
package com.rackspace.cloud.android; |
5 |
|
6 |
import java.util.Arrays; |
7 |
import java.util.Iterator; |
8 |
|
9 |
import org.apache.http.HttpResponse; |
10 |
|
11 |
import android.app.Activity; |
12 |
import android.app.AlertDialog; |
13 |
import android.app.Dialog; |
14 |
import android.content.DialogInterface; |
15 |
import android.content.Intent; |
16 |
import android.graphics.Color; |
17 |
import android.os.AsyncTask; |
18 |
import android.os.Bundle; |
19 |
import android.view.Menu; |
20 |
import android.view.MenuInflater; |
21 |
import android.view.MenuItem; |
22 |
import android.view.View; |
23 |
import android.view.View.OnClickListener; |
24 |
import android.widget.Button; |
25 |
import android.widget.EditText; |
26 |
import android.widget.LinearLayout; |
27 |
import android.widget.TextView; |
28 |
|
29 |
import com.rackspace.cloud.android.R; |
30 |
import com.rackspace.cloud.servers.api.client.CloudServersException; |
31 |
import com.rackspace.cloud.servers.api.client.Flavor; |
32 |
import com.rackspace.cloud.servers.api.client.Image; |
33 |
import com.rackspace.cloud.servers.api.client.ImageManager; |
34 |
import com.rackspace.cloud.servers.api.client.Server; |
35 |
import com.rackspace.cloud.servers.api.client.ServerManager; |
36 |
import com.rackspace.cloud.servers.api.client.http.HttpBundle; |
37 |
|
38 |
/**
|
39 |
* @author Mike Mayo - mike.mayo@rackspace.com - twitter.com/greenisus
|
40 |
*
|
41 |
*/
|
42 |
public class ViewServerActivity extends CloudActivity { |
43 |
|
44 |
private Server server;
|
45 |
private boolean ipAddressesLoaded; // to prevent polling from loading tons |
46 |
// of duplicates
|
47 |
private Flavor[] flavors; |
48 |
private String[] flavorNames; |
49 |
private String selectedFlavorId; |
50 |
private String modifiedServerName; |
51 |
private Image[] images; |
52 |
private String[] imageNames; |
53 |
private String selectedImageId; |
54 |
private boolean isPolling; |
55 |
private PollServerTask pollServerTask;
|
56 |
private boolean canPoll; |
57 |
private boolean noAskForConfirm; |
58 |
private Image image; |
59 |
|
60 |
/** Called when the activity is first created. */
|
61 |
@Override
|
62 |
public void onCreate(Bundle savedInstanceState) { |
63 |
super.onCreate(savedInstanceState);
|
64 |
trackPageView(GoogleAnalytics.PAGE_SERVER); |
65 |
server = (Server) this.getIntent().getExtras().get("server"); |
66 |
//if an old image it wont be on the image list
|
67 |
//so you have to fetch it manually
|
68 |
if(server.getImage().getName() == null){ |
69 |
GetImageTask getImageTask = new GetImageTask();
|
70 |
getImageTask.execute((Void[]) null); |
71 |
} |
72 |
setContentView(R.layout.viewserver); |
73 |
restoreState(savedInstanceState); |
74 |
} |
75 |
|
76 |
@Override
|
77 |
protected void onSaveInstanceState(Bundle outState) { |
78 |
super.onSaveInstanceState(outState);
|
79 |
outState.putSerializable("server", server);
|
80 |
outState.putBoolean("noAskForConfirm", noAskForConfirm);
|
81 |
if (pollServerTask != null && isPolling) { |
82 |
pollServerTask.cancel(true);
|
83 |
} |
84 |
outState.putBoolean("wasPolling", isPolling);
|
85 |
} |
86 |
|
87 |
protected void restoreState(Bundle state) { |
88 |
super.restoreState(state);
|
89 |
if(state != null && state.containsKey("noAskForConfirm")){ |
90 |
noAskForConfirm = state.getBoolean("noAskForConfirm");
|
91 |
} |
92 |
if (state != null && state.containsKey("wasPolling") |
93 |
&& state.getBoolean("wasPolling") == true) { |
94 |
pollServerTask = new PollServerTask();
|
95 |
pollServerTask.execute((Void[]) null); |
96 |
} |
97 |
if (server == null && state != null && state.containsKey("server")) { |
98 |
server = (Server) state.getSerializable("server");
|
99 |
// imageLoaded = state.getBoolean("imageLoaded");
|
100 |
} |
101 |
canPoll = true;
|
102 |
loadServerData(); |
103 |
setupButtons(); |
104 |
loadFlavors(); |
105 |
loadImages(); |
106 |
} |
107 |
|
108 |
/*
|
109 |
* private void loadImage() { // hate to do this, but devices run out of
|
110 |
* memory after a few rotations // because the background images are so
|
111 |
* large if (!imageLoaded) { ImageView osLogo = (ImageView)
|
112 |
* findViewById(R.id.view_server_os_logo); osLogo.setAlpha(100);
|
113 |
* osLogo.setImageResource(server.getImage().logoResourceId()); imageLoaded
|
114 |
* = true; }
|
115 |
*
|
116 |
* }
|
117 |
*/
|
118 |
|
119 |
/*
|
120 |
* need to manage the polling task
|
121 |
* if the activity is stopped
|
122 |
*/
|
123 |
@Override
|
124 |
public void onStop() { |
125 |
super.onStop();
|
126 |
if (pollServerTask != null && isPolling) { |
127 |
pollServerTask.cancel(true);
|
128 |
isPolling = true;
|
129 |
} |
130 |
canPoll = false;
|
131 |
|
132 |
} |
133 |
|
134 |
/*
|
135 |
* restart the pollingtask if it was running before
|
136 |
*/
|
137 |
@Override
|
138 |
public void onStart() { |
139 |
super.onStart();
|
140 |
if (isPolling) {
|
141 |
pollServerTask = new PollServerTask();
|
142 |
pollServerTask.execute((Void[]) null); |
143 |
} |
144 |
canPoll = true;
|
145 |
|
146 |
} |
147 |
|
148 |
private void loadServerData() { |
149 |
if(server != null){ |
150 |
|
151 |
TextView name = (TextView) findViewById(R.id.view_server_name); |
152 |
name.setText(server.getName()); |
153 |
|
154 |
TextView os = (TextView) findViewById(R.id.view_server_os); |
155 |
if(server.getImage().getName() == null){ |
156 |
if(image != null){ |
157 |
os.setText(image.getName()); |
158 |
} |
159 |
} else {
|
160 |
os.setText(server.getImage().getName()); |
161 |
} |
162 |
|
163 |
TextView memory = (TextView) findViewById(R.id.view_server_memory); |
164 |
memory.setText(server.getFlavor().getRam() + " MB");
|
165 |
|
166 |
TextView disk = (TextView) findViewById(R.id.view_server_disk); |
167 |
disk.setText(server.getFlavor().getDisk() + " GB");
|
168 |
|
169 |
TextView status = (TextView) findViewById(R.id.view_server_status); |
170 |
|
171 |
if (noAskForConfirm == false) { |
172 |
if (status.getText().toString().contains("VERIFY_RESIZE")) { |
173 |
// show the confimresizeactivity
|
174 |
noAskForConfirm = true;
|
175 |
Intent viewIntent = new Intent(getApplicationContext(),
|
176 |
ConfirmResizeActivity.class); |
177 |
viewIntent.putExtra("server", server);
|
178 |
startActivity(viewIntent); |
179 |
} |
180 |
} |
181 |
|
182 |
// show status and possibly the progress, with polling
|
183 |
if (!"ACTIVE".equals(server.getStatus())) { |
184 |
status.setText(server.getStatus() + " - "
|
185 |
+ server.getProgress() + "%");
|
186 |
pollServerTask = new PollServerTask();
|
187 |
pollServerTask.execute((Void[]) null); |
188 |
} else {
|
189 |
status.setText(server.getStatus()); |
190 |
} |
191 |
|
192 |
if (!ipAddressesLoaded) {
|
193 |
// public IPs
|
194 |
int layoutIndex = 12; // public IPs start here |
195 |
LinearLayout layout = (LinearLayout) this
|
196 |
.findViewById(R.id.view_server_layout); |
197 |
String publicIps[] = server.getPublicIpAddresses(); |
198 |
for (int i = 0; i < publicIps.length; i++) { |
199 |
TextView tv = new TextView(this.getBaseContext()); |
200 |
tv.setLayoutParams(os.getLayoutParams()); // easy quick
|
201 |
// styling! :)
|
202 |
tv.setTypeface(tv.getTypeface(), 1); // 1 == bold |
203 |
tv.setTextSize(os.getTextSize()); |
204 |
tv.setGravity(os.getGravity()); |
205 |
tv.setTextColor(Color.WHITE);
|
206 |
tv.setText(publicIps[i]); |
207 |
layout.addView(tv, layoutIndex++); |
208 |
} |
209 |
|
210 |
// private IPs
|
211 |
layoutIndex++; // skip over the Private IPs label
|
212 |
String privateIps[] = server.getPrivateIpAddresses(); |
213 |
for (int i = 0; i < privateIps.length; i++) { |
214 |
TextView tv = new TextView(this.getBaseContext()); |
215 |
tv.setLayoutParams(os.getLayoutParams()); // easy quick
|
216 |
// styling! :)
|
217 |
tv.setTypeface(tv.getTypeface(), 1); // 1 == bold |
218 |
tv.setTextSize(os.getTextSize()); |
219 |
tv.setGravity(os.getGravity()); |
220 |
tv.setTextColor(Color.WHITE);
|
221 |
tv.setText(privateIps[i]); |
222 |
layout.addView(tv, layoutIndex++); |
223 |
} |
224 |
ipAddressesLoaded = true;
|
225 |
} |
226 |
} |
227 |
|
228 |
// loadImage();
|
229 |
} |
230 |
|
231 |
private void loadFlavors() { |
232 |
flavorNames = new String[Flavor.getFlavors().size()]; |
233 |
flavors = new Flavor[Flavor.getFlavors().size()];
|
234 |
|
235 |
Iterator<Flavor> iter = Flavor.getFlavors().values().iterator();
|
236 |
int i = 0; |
237 |
while (iter.hasNext()) {
|
238 |
Flavor flavor = iter.next(); |
239 |
flavors[i] = flavor; |
240 |
flavorNames[i] = flavor.getName() + ", " + flavor.getDisk()
|
241 |
+ " GB disk";
|
242 |
i++; |
243 |
} |
244 |
selectedFlavorId = flavors[0].getId();
|
245 |
} |
246 |
|
247 |
private void loadImages() { |
248 |
imageNames = new String[Image.getImages().size()]; |
249 |
images = new Image[Image.getImages().size()]; |
250 |
|
251 |
Iterator<Image> iter = Image.getImages().values().iterator(); |
252 |
int i = 0; |
253 |
while (iter.hasNext()) {
|
254 |
Image image = iter.next();
|
255 |
images[i] = image; |
256 |
imageNames[i] = image.getName(); |
257 |
i++; |
258 |
} |
259 |
// sort arrays so they display nicely in the spinner
|
260 |
Arrays.sort(images);
|
261 |
Arrays.sort(imageNames);
|
262 |
selectedImageId = images[0].getId();
|
263 |
|
264 |
} |
265 |
|
266 |
private void setupButton(int resourceId, OnClickListener onClickListener) { |
267 |
Button button = (Button) findViewById(resourceId); |
268 |
button.setOnClickListener(onClickListener); |
269 |
} |
270 |
|
271 |
private void setupButtons() { |
272 |
setupButton(R.id.view_server_soft_reboot_button, new OnClickListener() {
|
273 |
public void onClick(View v) { |
274 |
showDialog(R.id.view_server_soft_reboot_button); |
275 |
} |
276 |
}); |
277 |
|
278 |
setupButton(R.id.view_server_hard_reboot_button, new OnClickListener() {
|
279 |
public void onClick(View v) { |
280 |
showDialog(R.id.view_server_hard_reboot_button); |
281 |
} |
282 |
}); |
283 |
|
284 |
setupButton(R.id.view_server_resize_button, new OnClickListener() {
|
285 |
public void onClick(View v) { |
286 |
showDialog(R.id.view_server_resize_button); |
287 |
} |
288 |
}); |
289 |
|
290 |
setupButton(R.id.view_server_delete_button, new OnClickListener() {
|
291 |
public void onClick(View v) { |
292 |
showDialog(R.id.view_server_delete_button); |
293 |
} |
294 |
}); |
295 |
|
296 |
setupButton(R.id.view_server_rename_button, new OnClickListener() {
|
297 |
public void onClick(View v) { |
298 |
showDialog(R.id.view_server_rename_button); |
299 |
} |
300 |
}); |
301 |
|
302 |
setupButton(R.id.view_server_rebuild_button, new OnClickListener() {
|
303 |
public void onClick(View v) { |
304 |
showDialog(R.id.view_server_rebuild_button); |
305 |
} |
306 |
}); |
307 |
|
308 |
setupButton(R.id.view_server_backup_button, new OnClickListener() {
|
309 |
public void onClick(View v) { |
310 |
Intent viewIntent = new Intent(v.getContext(),
|
311 |
BackupServerActivity.class); |
312 |
viewIntent.putExtra("server", server);
|
313 |
startActivity(viewIntent); |
314 |
} |
315 |
}); |
316 |
|
317 |
setupButton(R.id.view_server_password_button, new OnClickListener() {
|
318 |
public void onClick(View v) { |
319 |
Intent viewIntent = new Intent(v.getContext(),
|
320 |
PasswordServerActivity.class); |
321 |
viewIntent.putExtra("server", server);
|
322 |
startActivity(viewIntent); |
323 |
} |
324 |
}); |
325 |
|
326 |
setupButton(R.id.view_server_ping_button, new OnClickListener() {
|
327 |
public void onClick(View v) { |
328 |
trackEvent(GoogleAnalytics.CATEGORY_SERVER, GoogleAnalytics.EVENT_PING, "", -1); |
329 |
|
330 |
// ping the first public ip
|
331 |
Intent viewIntent = new Intent(v.getContext(),
|
332 |
PingServerActivity.class); |
333 |
viewIntent.putExtra("ipAddress",
|
334 |
server.getPublicIpAddresses()[0]);
|
335 |
startActivity(viewIntent); |
336 |
|
337 |
} |
338 |
}); |
339 |
|
340 |
} |
341 |
|
342 |
/**
|
343 |
* @return the server
|
344 |
*/
|
345 |
public Server getServer() {
|
346 |
return server;
|
347 |
} |
348 |
|
349 |
/**
|
350 |
* @param server
|
351 |
* the server to set
|
352 |
*/
|
353 |
public void setServer(Server server) { |
354 |
this.server = server;
|
355 |
} |
356 |
|
357 |
// setup menu for when menu button is pressed
|
358 |
public boolean onCreateOptionsMenu(Menu menu) { |
359 |
super.onCreateOptionsMenu(menu);
|
360 |
MenuInflater inflater = getMenuInflater(); |
361 |
inflater.inflate(R.menu.view_server_activity_menu, menu); |
362 |
return true; |
363 |
} |
364 |
|
365 |
@Override
|
366 |
// in options menu, when add account is selected go to add account activity
|
367 |
public boolean onOptionsItemSelected(MenuItem item) { |
368 |
switch (item.getItemId()) {
|
369 |
case R.id.refresh_server:
|
370 |
loadServerData(); |
371 |
return true; |
372 |
} |
373 |
return false; |
374 |
} |
375 |
|
376 |
@Override
|
377 |
protected Dialog onCreateDialog(int id) { |
378 |
if (server == null) { |
379 |
return new AlertDialog.Builder(ViewServerActivity.this) |
380 |
.setIcon(R.drawable.alert_dialog_icon) |
381 |
.setTitle("Error")
|
382 |
.setMessage("Server is Busy")
|
383 |
.setNegativeButton("Cancel",
|
384 |
new DialogInterface.OnClickListener() {
|
385 |
public void onClick(DialogInterface dialog, |
386 |
int whichButton) {
|
387 |
// User clicked Cancel so do some stuff
|
388 |
} |
389 |
}).create(); |
390 |
} else {
|
391 |
switch (id) {
|
392 |
case R.id.view_server_soft_reboot_button:
|
393 |
return new AlertDialog.Builder(ViewServerActivity.this) |
394 |
.setIcon(R.drawable.alert_dialog_icon) |
395 |
.setTitle("Soft Reboot")
|
396 |
.setMessage("Are you sure you want to perform a soft reboot?")
|
397 |
.setPositiveButton("Reboot Server", new DialogInterface.OnClickListener() { |
398 |
public void onClick(DialogInterface dialog, int whichButton) { |
399 |
trackEvent(GoogleAnalytics.CATEGORY_SERVER, GoogleAnalytics.EVENT_REBOOT, "", -1); |
400 |
new SoftRebootServerTask().execute((Void[]) null); |
401 |
} |
402 |
}) |
403 |
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { |
404 |
public void onClick(DialogInterface dialog, int whichButton) { |
405 |
// User clicked Cancel so do some stuff
|
406 |
} |
407 |
}) |
408 |
.create(); |
409 |
case R.id.view_server_hard_reboot_button:
|
410 |
return new AlertDialog.Builder(ViewServerActivity.this) |
411 |
.setIcon(R.drawable.alert_dialog_icon) |
412 |
.setTitle("Hard Reboot")
|
413 |
.setMessage("Are you sure you want to perform a hard reboot?")
|
414 |
.setPositiveButton("Reboot Server", new DialogInterface.OnClickListener() { |
415 |
public void onClick(DialogInterface dialog, int whichButton) { |
416 |
trackEvent(GoogleAnalytics.CATEGORY_SERVER, GoogleAnalytics.EVENT_REBOOT, "", -1); |
417 |
new HardRebootServerTask().execute((Void[]) null); |
418 |
} |
419 |
}) |
420 |
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { |
421 |
public void onClick(DialogInterface dialog, int whichButton) { |
422 |
// User clicked Cancel so do some stuff
|
423 |
} |
424 |
}) |
425 |
.create(); |
426 |
case R.id.view_server_resize_button:
|
427 |
return new AlertDialog.Builder(ViewServerActivity.this) |
428 |
.setItems(flavorNames, new ResizeClickListener())
|
429 |
.setIcon(R.drawable.alert_dialog_icon) |
430 |
.setTitle("Resize Server")
|
431 |
.setNegativeButton("Cancel",
|
432 |
new DialogInterface.OnClickListener() {
|
433 |
public void onClick(DialogInterface dialog, |
434 |
int whichButton) {
|
435 |
// User clicked Cancel so do some stuff
|
436 |
} |
437 |
}).create(); |
438 |
case R.id.view_server_delete_button:
|
439 |
return new AlertDialog.Builder(ViewServerActivity.this) |
440 |
.setIcon(R.drawable.alert_dialog_icon) |
441 |
.setTitle("Delete Server")
|
442 |
.setMessage("Are you sure you want to delete this server? This operation cannot be undone and all backups will be deleted.")
|
443 |
.setPositiveButton("Delete Server", new DialogInterface.OnClickListener() { |
444 |
public void onClick(DialogInterface dialog, int whichButton) { |
445 |
trackEvent(GoogleAnalytics.CATEGORY_SERVER, GoogleAnalytics.EVENT_DELETE, "", -1); |
446 |
new DeleteServerTask().execute((Void[]) null); |
447 |
} |
448 |
}) |
449 |
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { |
450 |
public void onClick(DialogInterface dialog, int whichButton) { |
451 |
// User clicked Cancel so do some stuff
|
452 |
} |
453 |
}) |
454 |
.create(); |
455 |
case R.id.view_server_rename_button:
|
456 |
final EditText input = new EditText(this); |
457 |
input.setText(server.getName()); |
458 |
return new AlertDialog.Builder(ViewServerActivity.this) |
459 |
.setIcon(R.drawable.alert_dialog_icon) |
460 |
.setView(input) |
461 |
.setTitle("Rename")
|
462 |
.setMessage("Enter new name for server: ")
|
463 |
.setPositiveButton("Rename", new DialogInterface.OnClickListener() { |
464 |
public void onClick(DialogInterface dialog, int whichButton) { |
465 |
trackEvent(GoogleAnalytics.CATEGORY_SERVER, GoogleAnalytics.EVENT_RENAME, "", -1); |
466 |
modifiedServerName = input.getText().toString(); |
467 |
new RenameServerTask().execute((Void[]) null); |
468 |
} |
469 |
}) |
470 |
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { |
471 |
public void onClick(DialogInterface dialog, int whichButton) { |
472 |
// User clicked Cancel so do some stuff
|
473 |
} |
474 |
}) |
475 |
.create(); |
476 |
case R.id.view_server_rebuild_button:
|
477 |
return new AlertDialog.Builder(ViewServerActivity.this) |
478 |
.setItems(imageNames, new RebuildClickListener())
|
479 |
.setIcon(R.drawable.alert_dialog_icon) |
480 |
.setTitle("Rebuild Server")
|
481 |
.setNegativeButton("Cancel",
|
482 |
new DialogInterface.OnClickListener() {
|
483 |
public void onClick(DialogInterface dialog, |
484 |
int whichButton) {
|
485 |
// User clicked Cancel so do some stuff
|
486 |
} |
487 |
}).create(); |
488 |
} |
489 |
} |
490 |
return new AlertDialog.Builder(ViewServerActivity.this) |
491 |
.setIcon(R.drawable.alert_dialog_icon) |
492 |
.setTitle("Error")
|
493 |
.setMessage("Server is Busy")
|
494 |
.setNegativeButton("Cancel",
|
495 |
new DialogInterface.OnClickListener() {
|
496 |
public void onClick(DialogInterface dialog, |
497 |
int whichButton) {
|
498 |
// User clicked Cancel so do some stuff
|
499 |
} |
500 |
}).create(); |
501 |
} |
502 |
|
503 |
private class ResizeClickListener implements |
504 |
android.content.DialogInterface.OnClickListener { |
505 |
|
506 |
public void onClick(DialogInterface dialog, int which) { |
507 |
trackEvent(GoogleAnalytics.CATEGORY_SERVER, GoogleAnalytics.EVENT_RESIZE, "", -1); |
508 |
selectedFlavorId = which + 1 + ""; |
509 |
new ResizeServerTask().execute((Void[]) null); |
510 |
} |
511 |
|
512 |
} |
513 |
|
514 |
private class RebuildClickListener implements |
515 |
android.content.DialogInterface.OnClickListener { |
516 |
|
517 |
public void onClick(DialogInterface dialog, int which) { |
518 |
trackEvent(GoogleAnalytics.CATEGORY_SERVER, GoogleAnalytics.EVENT_REBUILD, "", -1); |
519 |
selectedImageId = images[which].getId() + "";
|
520 |
new RebuildServerTask().execute((Void[]) null); |
521 |
} |
522 |
|
523 |
} |
524 |
|
525 |
// HTTP request tasks
|
526 |
|
527 |
private class PollServerTask extends AsyncTask<Void, Void, Server> { |
528 |
|
529 |
private Server tempServer;
|
530 |
|
531 |
@Override
|
532 |
protected void onPreExecute() { |
533 |
isPolling = true;
|
534 |
} |
535 |
|
536 |
@Override
|
537 |
protected Server doInBackground(Void... arg0) { |
538 |
if (isCancelled() || !canPoll) {
|
539 |
return null; |
540 |
} |
541 |
try {
|
542 |
tempServer = (new ServerManager()).find(Integer.parseInt(server.getId()), getContext()); |
543 |
} catch (NumberFormatException e) { |
544 |
// we're polling, so need to show exceptions
|
545 |
} catch (CloudServersException e) {
|
546 |
// we're polling, so need to show exceptions
|
547 |
} |
548 |
return tempServer;
|
549 |
} |
550 |
|
551 |
@Override
|
552 |
protected void onPostExecute(Server result) { |
553 |
server = result; |
554 |
if (server != null) { |
555 |
loadServerData(); |
556 |
} |
557 |
isPolling = false;
|
558 |
} |
559 |
|
560 |
@Override
|
561 |
protected void onCancelled() { |
562 |
isPolling = false;
|
563 |
} |
564 |
|
565 |
} |
566 |
|
567 |
private class GetImageTask extends AsyncTask<Void, Void, Image> { |
568 |
|
569 |
private Image tempImage; |
570 |
|
571 |
@Override
|
572 |
protected Image doInBackground(Void... arg0) { |
573 |
try {
|
574 |
tempImage = (new ImageManager()).getImageDetails(Integer.parseInt(server.getImageId()), getContext()); |
575 |
} catch (NumberFormatException e) { |
576 |
|
577 |
} |
578 |
return tempImage;
|
579 |
} |
580 |
|
581 |
@Override
|
582 |
protected void onPostExecute(Image result) { |
583 |
image = result; |
584 |
loadServerData(); |
585 |
} |
586 |
|
587 |
} |
588 |
|
589 |
private class SoftRebootServerTask extends AsyncTask<Void, Void, HttpBundle> { |
590 |
|
591 |
private CloudServersException exception;
|
592 |
|
593 |
@Override
|
594 |
// let user know their process has started
|
595 |
protected void onPreExecute() { |
596 |
showToast("Reboot process has begun");
|
597 |
} |
598 |
|
599 |
@Override
|
600 |
protected HttpBundle doInBackground(Void... arg0) { |
601 |
HttpBundle bundle = null;
|
602 |
try {
|
603 |
bundle = (new ServerManager()).reboot(server, ServerManager.SOFT_REBOOT, getContext());
|
604 |
} catch (CloudServersException e) {
|
605 |
exception = e; |
606 |
} |
607 |
return bundle;
|
608 |
} |
609 |
|
610 |
@Override
|
611 |
protected void onPostExecute(HttpBundle bundle) { |
612 |
HttpResponse response = bundle.getResponse(); |
613 |
if (response != null) { |
614 |
int statusCode = response.getStatusLine().getStatusCode();
|
615 |
if (statusCode == 202) { |
616 |
showToast("Reboot successful");
|
617 |
} |
618 |
if (statusCode != 202) { |
619 |
CloudServersException cse = parseCloudServersException(response); |
620 |
if ("".equals(cse.getMessage())) { |
621 |
showError("There was a problem rebooting your server.", bundle);
|
622 |
} else {
|
623 |
showError("There was a problem rebooting your server: " + cse.getMessage(), bundle);
|
624 |
} |
625 |
} |
626 |
} else if (exception != null) { |
627 |
showError("There was a problem rebooting your server: " + exception.getMessage(), bundle);
|
628 |
|
629 |
} |
630 |
} |
631 |
} |
632 |
|
633 |
private class HardRebootServerTask extends |
634 |
AsyncTask<Void, Void, HttpBundle> { |
635 |
|
636 |
private CloudServersException exception;
|
637 |
|
638 |
@Override
|
639 |
// let user know their process has started
|
640 |
protected void onPreExecute() { |
641 |
showToast("Reboot process has begun");
|
642 |
} |
643 |
|
644 |
@Override
|
645 |
protected HttpBundle doInBackground(Void... arg0) { |
646 |
HttpBundle bundle = null;
|
647 |
try {
|
648 |
bundle = (new ServerManager()).reboot(server, ServerManager.HARD_REBOOT, getContext());
|
649 |
} catch (CloudServersException e) {
|
650 |
exception = e; |
651 |
} |
652 |
return bundle;
|
653 |
} |
654 |
|
655 |
@Override
|
656 |
protected void onPostExecute(HttpBundle bundle) { |
657 |
HttpResponse response = bundle.getResponse(); |
658 |
if (response != null) { |
659 |
int statusCode = response.getStatusLine().getStatusCode();
|
660 |
if (statusCode == 202) { |
661 |
showToast("Reboot successful");
|
662 |
} |
663 |
if (statusCode != 202) { |
664 |
CloudServersException cse = parseCloudServersException(response); |
665 |
if ("".equals(cse.getMessage())) { |
666 |
showError("There was a problem rebooting your server.", bundle);
|
667 |
} else {
|
668 |
showError("There was a problem rebooting your server: " + cse.getMessage(), bundle);
|
669 |
} |
670 |
} |
671 |
} else if (exception != null) { |
672 |
showError("There was a problem rebooting your server: " + exception.getMessage(), bundle);
|
673 |
|
674 |
} |
675 |
} |
676 |
} |
677 |
|
678 |
private class ResizeServerTask extends AsyncTask<Void, Void, HttpBundle> { |
679 |
|
680 |
private CloudServersException exception;
|
681 |
|
682 |
@Override
|
683 |
protected void onPreExecute() { |
684 |
showToast("Resize process has begun, please confirm your resize after process finishes.");
|
685 |
} |
686 |
|
687 |
@Override
|
688 |
protected HttpBundle doInBackground(Void... arg0) { |
689 |
HttpBundle bundle = null;
|
690 |
try {
|
691 |
bundle = (new ServerManager()).resize(server, Integer.parseInt(selectedFlavorId), getContext()); |
692 |
} catch (CloudServersException e) {
|
693 |
exception = e; |
694 |
} |
695 |
return bundle;
|
696 |
} |
697 |
|
698 |
@Override
|
699 |
protected void onPostExecute(HttpBundle bundle) { |
700 |
HttpResponse response = bundle.getResponse(); |
701 |
if (response != null) { |
702 |
int statusCode = response.getStatusLine().getStatusCode();
|
703 |
if (statusCode == 202) { |
704 |
pollServerTask = new PollServerTask();
|
705 |
pollServerTask.execute((Void[]) null); |
706 |
} else {
|
707 |
CloudServersException cse = parseCloudServersException(response); |
708 |
if ("".equals(cse.getMessage())) { |
709 |
showError("There was a problem resizing your server.", bundle);
|
710 |
} else {
|
711 |
showError("There was a problem resizing your server: " + cse.getMessage(), bundle);
|
712 |
} |
713 |
} |
714 |
} else if (exception != null) { |
715 |
showError("There was a problem resizing your server: " + exception.getMessage(), bundle);
|
716 |
|
717 |
} |
718 |
|
719 |
} |
720 |
} |
721 |
|
722 |
public class DeleteServerTask extends AsyncTask<Void, Void, HttpBundle> { |
723 |
|
724 |
private CloudServersException exception;
|
725 |
|
726 |
@Override
|
727 |
// let user know their process has started
|
728 |
protected void onPreExecute() { |
729 |
showToast("Delete process has begun");
|
730 |
} |
731 |
|
732 |
@Override
|
733 |
protected HttpBundle doInBackground(Void... arg0) { |
734 |
HttpBundle bundle = null;
|
735 |
try {
|
736 |
bundle = (new ServerManager()).delete(server, getContext());
|
737 |
} catch (CloudServersException e) {
|
738 |
exception = e; |
739 |
} |
740 |
return bundle;
|
741 |
} |
742 |
|
743 |
@Override
|
744 |
protected void onPostExecute(HttpBundle bundle) { |
745 |
HttpResponse response = bundle.getResponse(); |
746 |
if (response != null) { |
747 |
int statusCode = response.getStatusLine().getStatusCode();
|
748 |
if (statusCode == 202) { |
749 |
showToast("Delete successful");
|
750 |
setResult(Activity.RESULT_OK); |
751 |
finish(); |
752 |
} else {
|
753 |
CloudServersException cse = parseCloudServersException(response); |
754 |
if ("".equals(cse.getMessage())) { |
755 |
showError("There was a problem deleting your server.", bundle);
|
756 |
} else {
|
757 |
showError("There was a problem deleting your server: " + cse.getMessage(), bundle);
|
758 |
} |
759 |
} |
760 |
} else if (exception != null) { |
761 |
showError("There was a problem deleting your server: " + exception.getMessage(), bundle);
|
762 |
} |
763 |
} |
764 |
} |
765 |
|
766 |
private class RenameServerTask extends AsyncTask<Void, Void, HttpBundle> { |
767 |
|
768 |
private CloudServersException exception;
|
769 |
|
770 |
@Override
|
771 |
// let user know their process has started
|
772 |
protected void onPreExecute() { |
773 |
showToast("Rename process has begun.");
|
774 |
} |
775 |
|
776 |
@Override
|
777 |
protected HttpBundle doInBackground(Void... arg0) { |
778 |
HttpBundle bundle = null;
|
779 |
try {
|
780 |
bundle = (new ServerManager()).rename(server, modifiedServerName, getContext());
|
781 |
} catch (CloudServersException e) {
|
782 |
exception = e; |
783 |
} |
784 |
return bundle;
|
785 |
} |
786 |
|
787 |
@Override
|
788 |
protected void onPostExecute(HttpBundle bundle) { |
789 |
HttpResponse response = bundle.getResponse(); |
790 |
if (response != null) { |
791 |
int statusCode = response.getStatusLine().getStatusCode();
|
792 |
if (statusCode == 204) { |
793 |
showToast("Rename successful");
|
794 |
pollServerTask = new PollServerTask();
|
795 |
pollServerTask.execute((Void[]) null); |
796 |
} else {
|
797 |
CloudServersException cse = parseCloudServersException(response); |
798 |
if ("".equals(cse.getMessage())) { |
799 |
showError("There was a problem renaming your server.", bundle);
|
800 |
} else {
|
801 |
showError("There was a problem renaming your server: " + cse.getMessage(), bundle);
|
802 |
} |
803 |
} |
804 |
} |
805 |
else if (exception != null) { |
806 |
showError("There was a problem renaming your server: " + exception.getMessage(), bundle);
|
807 |
} |
808 |
} |
809 |
|
810 |
} |
811 |
|
812 |
private class RebuildServerTask extends AsyncTask<Void, Void, HttpBundle> { |
813 |
|
814 |
private CloudServersException exception;
|
815 |
|
816 |
@Override
|
817 |
protected void onPreExecute() { |
818 |
showToast("Rebuild process has begun");
|
819 |
} |
820 |
|
821 |
@Override
|
822 |
protected HttpBundle doInBackground(Void... arg0) { |
823 |
HttpBundle bundle = null;
|
824 |
try {
|
825 |
bundle = (new ServerManager()).rebuild(server, Integer.parseInt(selectedImageId), getContext()); |
826 |
} catch (CloudServersException e) {
|
827 |
exception = e; |
828 |
} |
829 |
return bundle;
|
830 |
} |
831 |
|
832 |
@Override
|
833 |
protected void onPostExecute(HttpBundle bundle) { |
834 |
HttpResponse response = bundle.getResponse(); |
835 |
if (response != null) { |
836 |
int statusCode = response.getStatusLine().getStatusCode();
|
837 |
if (statusCode == 202) { |
838 |
pollServerTask = new PollServerTask();
|
839 |
pollServerTask.execute((Void[]) null); |
840 |
} else {
|
841 |
CloudServersException cse = parseCloudServersException(response); |
842 |
if ("".equals(cse.getMessage())) { |
843 |
showError("There was a problem rebuilding your server.", bundle);
|
844 |
} else {
|
845 |
showError("There was a problem rebuilding your server: " + cse.getMessage(), bundle);
|
846 |
} |
847 |
} |
848 |
} else if (exception != null) { |
849 |
showError("There was a problem rebuilding your server: " + exception.getMessage(), bundle);
|
850 |
} |
851 |
|
852 |
} |
853 |
} |
854 |
|
855 |
} |