diff -r 5b37998e522e -r 162c1de6545a web/lib/Zend/Service/Amazon/Ec2/Instance/Reserved.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/Zend/Service/Amazon/Ec2/Instance/Reserved.php Fri Mar 11 15:05:35 2011 +0100 @@ -0,0 +1,143 @@ +$name) { + $params['ReservedInstancesId.' . ($k+1)] = $name; + } + } elseif($instanceId) { + $params['ReservedInstancesId.1'] = $instanceId; + } + + $response = $this->sendRequest($params); + + $xpath = $response->getXPath(); + $items = $xpath->query('//ec2:reservedInstancesSet/ec2:item'); + + $return = array(); + foreach($items as $item) { + $i = array(); + $i['reservedInstancesId'] = $xpath->evaluate('string(ec2:reservedInstancesId/text())', $item); + $i['instanceType'] = $xpath->evaluate('string(ec2:instanceType/text())', $item); + $i['availabilityZone'] = $xpath->evaluate('string(ec2:availabilityZone/text())', $item); + $i['duration'] = $xpath->evaluate('string(ec2:duration/text())', $item); + $i['fixedPrice'] = $xpath->evaluate('string(ec2:fixedPrice/text())', $item); + $i['usagePrice'] = $xpath->evaluate('string(ec2:usagePrice/text())', $item); + $i['productDescription'] = $xpath->evaluate('string(ec2:productDescription/text())', $item); + $i['instanceCount'] = $xpath->evaluate('string(ec2:instanceCount/text())', $item); + $i['state'] = $xpath->evaluate('string(ec2:state/text())', $item); + + $return[] = $i; + unset($i); + } + + return $return; + } + + /** + * Describes Reserved Instance offerings that are available for purchase. + * With Amazon EC2 Reserved Instances, you purchase the right to launch Amazon + * EC2 instances for a period of time (without getting insufficient capacity + * errors) and pay a lower usage rate for the actual time used. + * + * @return array + */ + public function describeOfferings() + { + $params = array(); + $params['Action'] = 'DescribeReservedInstancesOfferings'; + + $response = $this->sendRequest($params); + + $xpath = $response->getXPath(); + $items = $xpath->query('//ec2:reservedInstancesOfferingsSet/ec2:item'); + + $return = array(); + foreach($items as $item) { + $i = array(); + $i['reservedInstancesOfferingId'] = $xpath->evaluate('string(ec2:reservedInstancesOfferingId/text())', $item); + $i['instanceType'] = $xpath->evaluate('string(ec2:instanceType/text())', $item); + $i['availabilityZone'] = $xpath->evaluate('string(ec2:availabilityZone/text())', $item); + $i['duration'] = $xpath->evaluate('string(ec2:duration/text())', $item); + $i['fixedPrice'] = $xpath->evaluate('string(ec2:fixedPrice/text())', $item); + $i['usagePrice'] = $xpath->evaluate('string(ec2:usagePrice/text())', $item); + $i['productDescription'] = $xpath->evaluate('string(ec2:productDescription/text())', $item); + + $return[] = $i; + unset($i); + } + + return $return; + } + + /** + * Purchases a Reserved Instance for use with your account. With Amazon EC2 + * Reserved Instances, you purchase the right to launch Amazon EC2 instances + * for a period of time (without getting insufficient capacity errors) and + * pay a lower usage rate for the actual time used. + * + * @param string $offeringId The offering ID of the Reserved Instance to purchase + * @param integer $intanceCount The number of Reserved Instances to purchase. + * @return string The ID of the purchased Reserved Instances. + */ + public function purchaseOffering($offeringId, $intanceCount = 1) + { + $params = array(); + $params['Action'] = 'PurchaseReservedInstancesOffering'; + $params['OfferingId.1'] = $offeringId; + $params['instanceCount.1'] = intval($intanceCount); + + $response = $this->sendRequest($params); + + $xpath = $response->getXPath(); + $reservedInstancesId = $xpath->evaluate('string(//ec2:reservedInstancesId/text())'); + + return $reservedInstancesId; + } +}