Moodle  2.2.1
http://www.collinsharper.com
C:/xampp/htdocs/moodle/lib/zend/Zend/Service/Amazon/Ec2/Ebs.php
Go to the documentation of this file.
00001 <?php
00026 require_once 'Zend/Service/Amazon/Ec2/Abstract.php';
00027 
00038 class Zend_Service_Amazon_Ec2_Ebs extends Zend_Service_Amazon_Ec2_Abstract
00039 {
00050     public function createNewVolume($size, $availabilityZone)
00051     {
00052         $params = array();
00053         $params['Action'] = 'CreateVolume';
00054         $params['AvailabilityZone'] = $availabilityZone;
00055         $params['Size'] = $size;
00056 
00057         $response = $this->sendRequest($params);
00058         $xpath = $response->getXPath();
00059 
00060         $return = array();
00061         $return['volumeId']             = $xpath->evaluate('string(//ec2:volumeId/text())');
00062         $return['size']                 = $xpath->evaluate('string(//ec2:size/text())');
00063         $return['status']               = $xpath->evaluate('string(//ec2:status/text())');
00064         $return['createTime']           = $xpath->evaluate('string(//ec2:createTime/text())');
00065         $return['availabilityZone']     = $xpath->evaluate('string(//ec2:availabilityZone/text())');
00066 
00067         return $return;
00068     }
00069 
00080     public function createVolumeFromSnapshot($snapshotId, $availabilityZone)
00081     {
00082         $params = array();
00083         $params['Action'] = 'CreateVolume';
00084         $params['AvailabilityZone'] = $availabilityZone;
00085         $params['SnapshotId'] = $snapshotId;
00086 
00087         $response = $this->sendRequest($params);
00088         $xpath = $response->getXPath();
00089 
00090         $return = array();
00091         $return['volumeId']             = $xpath->evaluate('string(//ec2:volumeId/text())');
00092         $return['size']                 = $xpath->evaluate('string(//ec2:size/text())');
00093         $return['status']               = $xpath->evaluate('string(//ec2:status/text())');
00094         $return['createTime']           = $xpath->evaluate('string(//ec2:createTime/text())');
00095         $return['availabilityZone']     = $xpath->evaluate('string(//ec2:availabilityZone/text())');
00096         $return['snapshotId']           = $xpath->evaluate('string(//ec2:snapshotId/text())');
00097 
00098         return $return;
00099     }
00100 
00108     public function describeVolume($volumeId = null)
00109     {
00110         $params = array();
00111         $params['Action'] = 'DescribeVolumes';
00112 
00113         if(is_array($volumeId) && !empty($volumeId)) {
00114             foreach($volumeId as $k=>$name) {
00115                 $params['VolumeId.' . ($k+1)] = $name;
00116             }
00117         } elseif($volumeId) {
00118             $params['VolumeId.1'] = $volumeId;
00119         }
00120 
00121         $response = $this->sendRequest($params);
00122 
00123         $xpath  = $response->getXPath();
00124         $nodes = $xpath->query('//ec2:volumeSet/ec2:item', $response->getDocument());
00125 
00126         $return = array();
00127         foreach ($nodes as $node) {
00128             $item = array();
00129 
00130             $item['volumeId']   = $xpath->evaluate('string(ec2:volumeId/text())', $node);
00131             $item['size']       = $xpath->evaluate('string(ec2:size/text())', $node);
00132             $item['status']     = $xpath->evaluate('string(ec2:status/text())', $node);
00133             $item['createTime'] = $xpath->evaluate('string(ec2:createTime/text())', $node);
00134 
00135             $attachmentSet = $xpath->query('ec2:attachmentSet/ec2:item', $node);
00136             if($attachmentSet->length == 1) {
00137                 $_as = $attachmentSet->item(0);
00138                 $as = array();
00139                 $as['volumeId'] = $xpath->evaluate('string(ec2:volumeId/text())', $_as);
00140                 $as['instanceId'] = $xpath->evaluate('string(ec2:instanceId/text())', $_as);
00141                 $as['device'] = $xpath->evaluate('string(ec2:device/text())', $_as);
00142                 $as['status'] = $xpath->evaluate('string(ec2:status/text())', $_as);
00143                 $as['attachTime'] = $xpath->evaluate('string(ec2:attachTime/text())', $_as);
00144                 $item['attachmentSet'] = $as;
00145             }
00146 
00147             $return[] = $item;
00148             unset($item, $node);
00149         }
00150 
00151         return $return;
00152     }
00153 
00154     public function describeAttachedVolumes($instanceId)
00155     {
00156         $volumes = $this->describeVolume();
00157 
00158         $return = array();
00159         foreach($volumes as $vol) {
00160             if(isset($vol['attachmentSet']) && $vol['attachmentSet']['instanceId'] == $instanceId) {
00161                 $return[] = $vol;
00162             }
00163         }
00164 
00165         return $return;
00166     }
00167 
00176     public function attachVolume($volumeId, $instanceId, $device)
00177     {
00178         $params = array();
00179         $params['Action']       = 'AttachVolume';
00180         $params['VolumeId']     = $volumeId;
00181         $params['InstanceId']   = $instanceId;
00182         $params['Device']       = $device;
00183 
00184         $response = $this->sendRequest($params);
00185 
00186         $xpath = $response->getXPath();
00187 
00188         $return = array();
00189         $return['volumeId']     = $xpath->evaluate('string(//ec2:volumeId/text())');
00190         $return['instanceId']   = $xpath->evaluate('string(//ec2:instanceId/text())');
00191         $return['device']       = $xpath->evaluate('string(//ec2:device/text())');
00192         $return['status']       = $xpath->evaluate('string(//ec2:status/text())');
00193         $return['attachTime']   = $xpath->evaluate('string(//ec2:attachTime/text())');
00194 
00195         return $return;
00196     }
00197 
00212     public function detachVolume($volumeId, $instanceId = null, $device = null, $force = false)
00213     {
00214         $params = array();
00215         $params['Action']       = 'DetachVolume';
00216         $params['VolumeId']     = $volumeId;
00217         $params['InstanceId']   = strval($instanceId);
00218         $params['Device']       = strval($device);
00219         $params['Force']        = strval($force);
00220 
00221         $response = $this->sendRequest($params);
00222 
00223         $xpath = $response->getXPath();
00224 
00225         $return = array();
00226         $return['volumeId']     = $xpath->evaluate('string(//ec2:volumeId/text())');
00227         $return['instanceId']   = $xpath->evaluate('string(//ec2:instanceId/text())');
00228         $return['device']       = $xpath->evaluate('string(//ec2:device/text())');
00229         $return['status']       = $xpath->evaluate('string(//ec2:status/text())');
00230         $return['attachTime']   = $xpath->evaluate('string(//ec2:attachTime/text())');
00231 
00232         return $return;
00233     }
00234 
00241     public function deleteVolume($volumeId)
00242     {
00243         $params = array();
00244         $params['Action']       = 'DeleteVolume';
00245         $params['VolumeId']     = $volumeId;
00246 
00247         $response = $this->sendRequest($params);
00248         $xpath = $response->getXPath();
00249 
00250         $return = $xpath->evaluate('string(//ec2:return/text())');
00251 
00252         return ($return === "true");
00253     }
00254 
00262     public function createSnapshot($volumeId)
00263     {
00264         $params = array();
00265         $params['Action']       = 'CreateSnapshot';
00266         $params['VolumeId']     = $volumeId;
00267 
00268         $response = $this->sendRequest($params);
00269 
00270         $xpath = $response->getXPath();
00271 
00272         $return = array();
00273         $return['snapshotId']   = $xpath->evaluate('string(//ec2:snapshotId/text())');
00274         $return['volumeId']     = $xpath->evaluate('string(//ec2:volumeId/text())');
00275         $return['status']       = $xpath->evaluate('string(//ec2:status/text())');
00276         $return['startTime']    = $xpath->evaluate('string(//ec2:startTime/text())');
00277         $return['progress']     = $xpath->evaluate('string(//ec2:progress/text())');
00278 
00279         return $return;
00280     }
00281 
00288     public function describeSnapshot($snapshotId = null)
00289     {
00290         $params = array();
00291         $params['Action'] = 'DescribeSnapshots';
00292 
00293         if(is_array($snapshotId) && !empty($snapshotId)) {
00294             foreach($snapshotId as $k=>$name) {
00295                 $params['SnapshotId.' . ($k+1)] = $name;
00296             }
00297         } elseif($snapshotId) {
00298             $params['SnapshotId.1'] = $snapshotId;
00299         }
00300 
00301         $response = $this->sendRequest($params);
00302 
00303         $xpath  = $response->getXPath();
00304         $nodes = $xpath->query('//ec2:snapshotSet/ec2:item', $response->getDocument());
00305 
00306         $return = array();
00307         foreach ($nodes as $node) {
00308             $item = array();
00309 
00310             $item['snapshotId'] = $xpath->evaluate('string(ec2:snapshotId/text())', $node);
00311             $item['volumeId']   = $xpath->evaluate('string(ec2:volumeId/text())', $node);
00312             $item['status']     = $xpath->evaluate('string(ec2:status/text())', $node);
00313             $item['startTime']  = $xpath->evaluate('string(ec2:startTime/text())', $node);
00314             $item['progress']   = $xpath->evaluate('string(ec2:progress/text())', $node);
00315 
00316             $return[] = $item;
00317             unset($item, $node);
00318         }
00319 
00320         return $return;
00321     }
00322 
00329     public function deleteSnapshot($snapshotId)
00330     {
00331         $params = array();
00332         $params['Action']       = 'DeleteSnapshot';
00333         $params['SnapshotId']   = $snapshotId;
00334 
00335         $response = $this->sendRequest($params);
00336 
00337         $xpath = $response->getXPath();
00338         $return = $xpath->evaluate('string(//ec2:return/text())');
00339 
00340         return ($return === "true");
00341     }
00342 }
 All Data Structures Namespaces Files Functions Variables Enumerations