/**
  * @test
  * @dataProvider provider
  */
 public function testAppend($data, $result)
 {
     $list = new AvailabilityZoneFilterList();
     foreach ($data as $d) {
         $list->append($d);
     }
     $this->assertEquals($result, $list->getQueryArrayBare('Filter'));
 }
Пример #2
0
 /**
  * DescribeAvailabilityZones action
  *
  * Describes one or more of the Availability Zones that are currently available to the account. The results
  * include zones only for the region you're currently using.
  *
  * Note! Availability Zones are not the same across accounts.The Availability Zone us-east-1a for account
  * A is not necessarily the same as us-east-1a for account B. Zone assignments are mapped
  * independently for each account.
  *
  * @param   Ec2ListDataType            $zoneName optional Zone Name List to filter.
  * @param   AvailabilityZoneFilterList $filter   optional Filter to apply.
  * @return  AvailabilityZoneList       Returns the list of Availability Zones
  * @throws  ClientException
  * @throws  Ec2Exception
  */
 public function describeAvailabilityZones(ListDataType $zoneName = null, AvailabilityZoneFilterList $filter = null)
 {
     $result = null;
     $isSoap = $this->client->getType() == Aws::CLIENT_SOAP;
     $options = array();
     if ($zoneName !== null) {
         if ($isSoap) {
             foreach ($zoneName as $v) {
                 $options['availabilityZoneSet']['item'][] = array('zoneName' => $v);
             }
         } else {
             $options = $zoneName->getQueryArrayBare('ZoneName');
         }
     }
     if ($filter !== null) {
         if ($isSoap) {
             foreach ($filter as $v) {
                 $vals = array();
                 foreach ($v->value as $vs) {
                     $vals[] = array('value' => $vs);
                 }
                 $t = array('name' => $v->name, 'valueSet' => array('item' => $vals));
                 $options['filterSet']['item'][] = $t;
             }
         } else {
             $options = array_merge($options, $filter->getQueryArrayBare('Filter'));
         }
     }
     $response = $this->client->call(ucfirst(__FUNCTION__), $options);
     if ($response->getError() === false) {
         //Success
         $sxml = simplexml_load_string($response->getRawContent());
         unset($response);
         if (!empty($sxml->availabilityZoneInfo->item)) {
             $result = new AvailabilityZoneList();
             $result->setEc2($this->ec2)->setRequestId((string) $sxml->requestId);
             foreach ($sxml->availabilityZoneInfo->item as $v) {
                 $zname = (string) $v->zoneName;
                 $item = $this->ec2->getEntityManagerEnabled() ? $this->ec2->availabilityZone->get($zname) : null;
                 if ($item === null) {
                     $item = new AvailabilityZoneData();
                     $item->setEc2($this->ec2);
                     $bAttach = true;
                 } else {
                     $bAttach = false;
                 }
                 $messageList = new AvailabilityZoneMessageList();
                 $messageList->setEc2($this->ec2);
                 if (!empty($v->messageSet->item)) {
                     foreach ($v->messageSet->item as $m) {
                         $message = new AvailabilityZoneMessageData();
                         $message->setEc2($this->ec2);
                         $message->message = (string) $m->message;
                         $messageList->append($message);
                         unset($message);
                     }
                 }
                 $item->zoneName = $zname;
                 $item->zoneState = (string) $v->zoneState;
                 $item->regionName = (string) $v->regionName;
                 $item->setMessageSet($messageList);
                 $result->append($item);
                 if ($bAttach && $this->ec2->getEntityManagerEnabled()) {
                     $this->getEntityManager()->attach($item);
                 }
                 unset($item);
             }
         }
     }
     return $result;
 }