/** * @test * @dataProvider provider */ public function testAppend($data, $result) { $list = new AvailabilityZoneFilterList(); foreach ($data as $d) { $list->append($d); } $this->assertEquals($result, $list->getQueryArrayBare('Filter')); }
/** * 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; }