PageRenderTime 39ms CodeModel.GetById 12ms RepoModel.GetById 0ms app.codeStats 0ms

/scalr-2/tags/scalr-2.1.0/app/www/aws_ec2_spotrequest_add.php

http://scalr.googlecode.com/
PHP | 112 lines | 85 code | 23 blank | 4 comment | 11 complexity | f8866ae367e21a2df44ef290b25d8a8f MD5 | raw file
Possible License(s): LGPL-2.1, Apache-2.0, GPL-3.0
  1. <?php
  2. require("src/prepend.inc.php");
  3. if (!Scalr_Session::getInstance()->getAuthToken()->hasAccess(Scalr_AuthToken::ACCOUNT_USER))
  4. {
  5. $errmsg = _("You have no permissions for viewing requested page");
  6. UI::Redirect("index.php");
  7. }
  8. $display["title"] = _("Tools&nbsp;&raquo;&nbsp;Amazon Web Services&nbsp;&raquo;&nbsp;Amazon EC2&nbsp;&raquo;&nbsp;Spot requests&nbsp;&raquo;&nbsp;Configure spot request");
  9. $AmazonVPCClient = AmazonVPC::GetInstance(AWSRegions::GetAPIURL($_SESSION['aws_region']));
  10. $AmazonVPCClient->SetAuthKeys(
  11. Scalr_Session::getInstance()->getEnvironment()->getPlatformConfigValue(Modules_Platforms_Ec2::PRIVATE_KEY),
  12. Scalr_Session::getInstance()->getEnvironment()->getPlatformConfigValue(Modules_Platforms_Ec2::CERTIFICATE)
  13. );
  14. // Get Avail zones
  15. $AmazonEC2Client = Scalr_Service_Cloud_Aws::newEc2(
  16. $_SESSION['aws_region'],
  17. Scalr_Session::getInstance()->getEnvironment()->getPlatformConfigValue(Modules_Platforms_Ec2::PRIVATE_KEY),
  18. Scalr_Session::getInstance()->getEnvironment()->getPlatformConfigValue(Modules_Platforms_Ec2::CERTIFICATE)
  19. );
  20. $avail_zones_resp = $AmazonEC2Client->DescribeAvailabilityZones();
  21. $display["avail_zones"] = array();
  22. // Random assign zone
  23. array_push($display["avail_zones"], "");
  24. foreach ($avail_zones_resp->availabilityZoneInfo->item as $zone)
  25. {
  26. if (stristr($zone->zoneState,'available'))
  27. array_push($display["avail_zones"], (string)$zone->zoneName);
  28. }
  29. $display['amiId'] = $req_id;
  30. // depending on the ami's architecture we select it's type:
  31. if($req_arch == 'x86_64')
  32. {
  33. $r = new ReflectionClass("X86_64_TYPE");
  34. $display['instance_type'] = array_values($r->getConstants());
  35. }
  36. elseif($req_arch == 'i386')
  37. {
  38. $r = new ReflectionClass("I386_TYPE");
  39. $display['instance_type'] = array_values($r->getConstants());
  40. }
  41. else
  42. {
  43. $errmsg = "AMI architecture type is empty. Please select correct AMI";
  44. unset($r);
  45. UI::Redirect("aws_ec2_amis_view.php");
  46. }
  47. unset($r);
  48. if (!$req_id)
  49. {
  50. $errmsg = "Please select the ami first";
  51. UI::Redirect("aws_ec2_amis_view.php");
  52. }
  53. if($_POST)
  54. {
  55. try
  56. {
  57. if(!$req_spotPrice)
  58. {
  59. $errmsg = "Please enter correct max price";
  60. UI::Redirect("aws_ec2_spotrequest_add.php");
  61. }
  62. if (!$req_aws_instance_type)
  63. {
  64. $errmsg = "Please select instance type";
  65. UI::Redirect("aws_ec2_amis_view.php");
  66. }
  67. if(!$req_count)
  68. {
  69. $errmsg = "Please enter number of instances to request";
  70. UI::Redirect("aws_ec2_spotrequest_add.php");
  71. }
  72. $launchSpecification = new LaunchSpecificationType($req_id,null,null,null,null,$req_aws_instance_type,null);
  73. $launchGroup = null; // amazon doesnt' have full documentation and support for this functions
  74. //validFrom date format: "Y-m-d\TH:i:s.\Z";
  75. $requestSpotInstance = new RequestSpotInstancesType($req_spotPrice,$req_count,$req_isPersistanType,
  76. $req_validFrom,$req_validUntil,$launchGroup,
  77. $availabilityZoneGroup,$launchSpecification);
  78. $res = $AmazonEC2Client->RequestSpotInstances($requestSpotInstance);
  79. $okmsg = "Spot request created successfully.";
  80. UI::Redirect("aws_ec2_spotrequest_view.php");
  81. }
  82. catch(Exception $e)
  83. {
  84. $err[] = $e->getMessage(); //Cannot create spot request for this ami
  85. UI::Redirect("aws_ec2_amis_view.php");
  86. }
  87. }
  88. require("src/append.inc.php");
  89. ?>