PageRenderTime 49ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 0ms

/branches/1.0/bin/aws_cleaner.php

http://scalr.googlecode.com/
PHP | 135 lines | 31 code | 8 blank | 96 comment | 4 complexity | a096520f29e9e2ec7dcf5bc74ce067db MD5 | raw file
Possible License(s): LGPL-2.1, Apache-2.0, GPL-3.0
  1. <?php
  2. require_once('../src/prepend.inc.php');
  3. set_time_limit(0);
  4. /*
  5. $clients = $db->GetAll("SELECT id FROM clients WHERE isactive='1'");
  6. foreach ($clients as $client)
  7. {
  8. $Client = Client::Load($client['id']);
  9. $client_instances = array();
  10. $farms = $db->GetAll("SELECT * FROM farms WHERE clientid=?", array($Client->ID));
  11. foreach ($farms as $farminfo)
  12. {
  13. if (!$client_instances[$farminfo['region']])
  14. {
  15. try
  16. {
  17. $AmazonEC2Client = AmazonEC2::GetInstance(AWSRegions::GetAPIURL($farminfo['region']));
  18. $AmazonEC2Client->SetAuthKeys($Client->AWSPrivateKey, $Client->AWSCertificate);
  19. $client_instances[$farminfo['region']] = $AmazonEC2Client->DescribeInstances();
  20. }
  21. catch(Exception $e)
  22. {
  23. continue;
  24. }
  25. }
  26. $instances = $client_instances[$farminfo['region']]->reservationSet->item;
  27. if (!is_array($instances))
  28. $instances = array($instances);
  29. foreach ($instances as $instance)
  30. {
  31. $key_name = $instance->instancesSet->item->keyName;
  32. $state = $instance->instancesSet->item->instanceState->name;
  33. if (stristr($key_name, "FARM-"))
  34. {
  35. $instance_id = $instance->instancesSet->item->instanceId;
  36. $farm_id = str_replace("FARM-", "", $key_name);
  37. if ($farm_id == $farminfo['id'])
  38. {
  39. $chk = $db->GetRow("SELECT * FROM farm_instances WHERE farmid=? AND instance_id=?", array($farm_id, $instance_id));
  40. if (!$chk && $state == 'running')
  41. {
  42. if (!$AmazonEC2Client)
  43. {
  44. $AmazonEC2Client = AmazonEC2::GetInstance(AWSRegions::GetAPIURL($farminfo['region']));
  45. $AmazonEC2Client->SetAuthKeys($Client->AWSPrivateKey, $Client->AWSCertificate);
  46. }
  47. $AmazonEC2Client->TerminateInstances(array($instance_id));
  48. print "FarmID: {$farm_id}, InstanceID: {$instance_id}\n";
  49. }
  50. }
  51. }
  52. }
  53. }
  54. }
  55. */
  56. $eips = $db->Execute("SELECT * FROM elastic_ips");
  57. while ($eip = $eips->FetchRow())
  58. {
  59. $farminfo = $db->GetRow("SELECT * FROM farms WHERE id=?", array($eip['farmid']));
  60. $client = Client::Load($farminfo['clientid']);
  61. if ($client->AWSCertificate && $client->AWSPrivateKey)
  62. {
  63. try
  64. {
  65. $AmazonEC2Client = AmazonEC2::GetInstance(AWSRegions::GetAPIURL($farminfo['region']));
  66. $AmazonEC2Client->SetAuthKeys($client->AWSPrivateKey, $client->AWSCertificate);
  67. $DescribeAddressType = new DescribeAddressesType();
  68. $DescribeAddressType->AddAddress($eip['ipaddress']);
  69. $info = $AmazonEC2Client->DescribeAddresses($DescribeAddressType);
  70. print "{$eip['ipaddress']}: OK\n";
  71. }
  72. catch(Exception $e)
  73. {
  74. print "{$eip['ipaddress']}: Error ({$e->getMessage()})\n";
  75. if (stristr($e->getMessage(), "not found"))
  76. {
  77. $db->Execute("DELETE FROM elastic_ips WHERE id=?", array($eip['id']));
  78. }
  79. continue;
  80. }
  81. }
  82. }
  83. /*s
  84. $ebss = $db->Execute("SELECT * FROM farm_ebs");
  85. while ($ebs = $ebss->FetchRow())
  86. {
  87. if ($ebs['farmid'])
  88. {
  89. $farminfo = $db->GetRow("SELECT * FROM farms WHERE id=?", array($ebs['farmid']));
  90. if ($farminfo)
  91. {
  92. try
  93. {
  94. $client = Client::Load($farminfo['clientid']);
  95. if ($client->AWSCertificate && $client->AWSPrivateKey)
  96. {
  97. $AmazonEC2Client = AmazonEC2::GetInstance(AWSRegions::GetAPIURL($farminfo['region']));
  98. $AmazonEC2Client->SetAuthKeys($client->AWSPrivateKey, $client->AWSCertificate);
  99. $info = $AmazonEC2Client->DescribeVolumes($ebs['volumeid']);
  100. print "{$ebs['volumeid']}: OK\n";
  101. }
  102. }
  103. catch(Exception $e)
  104. {
  105. print "{$ebs['volumeid']}: Error ({$e->getMessage()})\n";
  106. if (stristr($e->getMessage(), "does not exist") || stristr($e->getMessage(), " not found in database"))
  107. {
  108. $db->Execute("DELETE FROM farm_ebs WHERE id=?", array($ebs['id']));
  109. }
  110. continue;
  111. }
  112. }
  113. }
  114. }
  115. */
  116. ?>