|
Moodle
2.2.1
http://www.collinsharper.com
|
00001 <?php 00026 require_once 'Zend/Service/Amazon/Ec2/Abstract.php'; 00027 00037 class Zend_Service_Amazon_Ec2_Instance_Reserved extends Zend_Service_Amazon_Ec2_Abstract 00038 { 00045 public function describeInstances($instanceId) 00046 { 00047 $params = array(); 00048 $params['Action'] = 'DescribeReservedInstances'; 00049 00050 if(is_array($instanceId) && !empty($instanceId)) { 00051 foreach($instanceId as $k=>$name) { 00052 $params['ReservedInstancesId.' . ($k+1)] = $name; 00053 } 00054 } elseif($instanceId) { 00055 $params['ReservedInstancesId.1'] = $instanceId; 00056 } 00057 00058 $response = $this->sendRequest($params); 00059 00060 $xpath = $response->getXPath(); 00061 $items = $xpath->query('//ec2:reservedInstancesSet/ec2:item'); 00062 00063 $return = array(); 00064 foreach($items as $item) { 00065 $i = array(); 00066 $i['reservedInstancesId'] = $xpath->evaluate('string(ec2:reservedInstancesId/text())', $item); 00067 $i['instanceType'] = $xpath->evaluate('string(ec2:instanceType/text())', $item); 00068 $i['availabilityZone'] = $xpath->evaluate('string(ec2:availabilityZone/text())', $item); 00069 $i['duration'] = $xpath->evaluate('string(ec2:duration/text())', $item); 00070 $i['fixedPrice'] = $xpath->evaluate('string(ec2:fixedPrice/text())', $item); 00071 $i['usagePrice'] = $xpath->evaluate('string(ec2:usagePrice/text())', $item); 00072 $i['productDescription'] = $xpath->evaluate('string(ec2:productDescription/text())', $item); 00073 $i['instanceCount'] = $xpath->evaluate('string(ec2:instanceCount/text())', $item); 00074 $i['state'] = $xpath->evaluate('string(ec2:state/text())', $item); 00075 00076 $return[] = $i; 00077 unset($i); 00078 } 00079 00080 return $return; 00081 } 00082 00091 public function describeOfferings() 00092 { 00093 $params = array(); 00094 $params['Action'] = 'DescribeReservedInstancesOfferings'; 00095 00096 $response = $this->sendRequest($params); 00097 00098 $xpath = $response->getXPath(); 00099 $items = $xpath->query('//ec2:reservedInstancesOfferingsSet/ec2:item'); 00100 00101 $return = array(); 00102 foreach($items as $item) { 00103 $i = array(); 00104 $i['reservedInstancesOfferingId'] = $xpath->evaluate('string(ec2:reservedInstancesOfferingId/text())', $item); 00105 $i['instanceType'] = $xpath->evaluate('string(ec2:instanceType/text())', $item); 00106 $i['availabilityZone'] = $xpath->evaluate('string(ec2:availabilityZone/text())', $item); 00107 $i['duration'] = $xpath->evaluate('string(ec2:duration/text())', $item); 00108 $i['fixedPrice'] = $xpath->evaluate('string(ec2:fixedPrice/text())', $item); 00109 $i['usagePrice'] = $xpath->evaluate('string(ec2:usagePrice/text())', $item); 00110 $i['productDescription'] = $xpath->evaluate('string(ec2:productDescription/text())', $item); 00111 00112 $return[] = $i; 00113 unset($i); 00114 } 00115 00116 return $return; 00117 } 00118 00129 public function purchaseOffering($offeringId, $intanceCount = 1) 00130 { 00131 $params = array(); 00132 $params['Action'] = 'PurchaseReservedInstancesOffering'; 00133 $params['OfferingId.1'] = $offeringId; 00134 $params['instanceCount.1'] = intval($intanceCount); 00135 00136 $response = $this->sendRequest($params); 00137 00138 $xpath = $response->getXPath(); 00139 $reservedInstancesId = $xpath->evaluate('string(//ec2:reservedInstancesId/text())'); 00140 00141 return $reservedInstancesId; 00142 } 00143 }