/**
  * @test
  */
 public function testConstruction()
 {
     $r = new RunInstancesRequestData('image-id', 1, 3);
     $r->clientToken = 'client-token';
     $r->disableApiTermination = true;
     $r->instanceInitiatedShutdownBehavior = 'stop';
     $r->setInstanceType('t1.micro');
     $r->kernelId = 'kernel-id';
     $r->keyName = 'key-name';
     $r->privateIpAddress = 'private-ip-address-ex';
     $r->ramdiskId = 'ramdisk-id';
     $r->subnetId = 'subnet-id';
     $r->userData = 'user-data';
     $ebs = new EbsBlockDeviceData();
     $ebs->deleteOnTermination = false;
     $ebs->iops = 12;
     $ebs->snapshotId = 'snapshot-id';
     $ebs->volumeSize = 10;
     $ebs->volumeType = 'standard';
     $bdm = new BlockDeviceMappingData();
     $bdm->deviceName = 'device-name-1';
     $bdm->ebs = $ebs;
     $bdm->noDevice = '';
     $bdm->setVirtualName('virtual-name');
     $r->setBlockDeviceMapping($bdm);
     $r->setIamInstanceProfile(new IamInstanceProfileRequestData('arn', 'name'));
     $r->setMonitoring(new MonitoringInstanceData(true));
     $ni = new InstanceNetworkInterfaceSetRequestData();
     $ni->deleteOnTermination = true;
     $ni->description = 'description-1';
     $ni->deviceIndex = 1;
     $ni->networkInterfaceId = 'network-interface-id';
     $ni->privateIpAddress = 'private-ip-address';
     $ni->privateIpAddresses = array(array('primary' => false, 'privateIpAddress' => '10.10.0.1'), array('primary' => true, 'privateIpAddress' => '10.10.0.2'));
     $ni->securityGroupId = array(array('groupId' => 'security-group-id-1'), array('groupId' => 'security-group-id-2'));
     $ni->secondaryPrivateIpAddressCount = 2;
     $ni2 = clone $ni;
     $ni2->description = 'description-2';
     $ni2->deviceIndex = 2;
     $r->setNetworkInterface(array($ni, $ni2));
     $r->setSecurityGroup(array('security-group-name-1', 'security-group-name-2'));
     $r->setSecurityGroupId(array('security-group-id-1', 'security-group-id-2'));
     $r->setPlacement(new PlacementResponseData('availability-zone', 'group-name', 'tenancy'));
     $this->assertEquals('image-id', $r->imageId);
     $this->assertEquals($r->imageId, $r->getImageId());
     $this->assertEquals(1, $r->minCount);
     $this->assertEquals($r->minCount, $r->getMinCount());
     $this->assertEquals(3, $r->maxCount);
     $this->assertEquals($r->maxCount, $r->getMaxCount());
     $fxtr = array('ImageId' => 'image-id', 'MinCount' => '1', 'MaxCount' => '3', 'KeyName' => 'key-name', 'UserData' => 'user-data', 'InstanceType' => 't1.micro', 'KernelId' => 'kernel-id', 'RamdiskId' => 'ramdisk-id', 'SubnetId' => 'subnet-id', 'DisableApiTermination' => 'true', 'InstanceInitiatedShutdownBehavior' => 'stop', 'PrivateIpAddress' => 'private-ip-address-ex', 'ClientToken' => 'client-token', 'SecurityGroupId.1' => 'security-group-id-1', 'SecurityGroupId.2' => 'security-group-id-2', 'SecurityGroup.1' => 'security-group-name-1', 'SecurityGroup.2' => 'security-group-name-2', 'Placement.AvailabilityZone' => 'availability-zone', 'Placement.GroupName' => 'group-name', 'Placement.Tenancy' => 'tenancy', 'BlockDeviceMapping.1.DeviceName' => 'device-name-1', 'BlockDeviceMapping.1.VirtualName' => 'virtual-name', 'BlockDeviceMapping.1.NoDevice' => '', 'BlockDeviceMapping.1.Ebs.SnapshotId' => 'snapshot-id', 'BlockDeviceMapping.1.Ebs.VolumeSize' => '10', 'BlockDeviceMapping.1.Ebs.DeleteOnTermination' => 'false', 'BlockDeviceMapping.1.Ebs.VolumeType' => 'standard', 'BlockDeviceMapping.1.Ebs.Iops' => '12', 'Monitoring.Enabled' => 'true', 'NetworkInterface.1.NetworkInterfaceId' => 'network-interface-id', 'NetworkInterface.1.DeviceIndex' => '1', 'NetworkInterface.1.Description' => 'description-1', 'NetworkInterface.1.PrivateIpAddress' => 'private-ip-address', 'NetworkInterface.1.SecurityGroupId.1' => 'security-group-id-1', 'NetworkInterface.1.SecurityGroupId.2' => 'security-group-id-2', 'NetworkInterface.1.DeleteOnTermination' => 'true', 'NetworkInterface.1.PrivateIpAddresses.1.Primary' => 'false', 'NetworkInterface.1.PrivateIpAddresses.1.PrivateIpAddress' => '10.10.0.1', 'NetworkInterface.1.PrivateIpAddresses.2.Primary' => 'true', 'NetworkInterface.1.PrivateIpAddresses.2.PrivateIpAddress' => '10.10.0.2', 'NetworkInterface.1.SecondaryPrivateIpAddressCount' => '2', 'NetworkInterface.2.NetworkInterfaceId' => 'network-interface-id', 'NetworkInterface.2.DeviceIndex' => '2', 'NetworkInterface.2.Description' => 'description-2', 'NetworkInterface.2.PrivateIpAddress' => 'private-ip-address', 'NetworkInterface.2.SecurityGroupId.1' => 'security-group-id-1', 'NetworkInterface.2.SecurityGroupId.2' => 'security-group-id-2', 'NetworkInterface.2.DeleteOnTermination' => 'true', 'NetworkInterface.2.PrivateIpAddresses.1.Primary' => 'false', 'NetworkInterface.2.PrivateIpAddresses.1.PrivateIpAddress' => '10.10.0.1', 'NetworkInterface.2.PrivateIpAddresses.2.Primary' => 'true', 'NetworkInterface.2.PrivateIpAddresses.2.PrivateIpAddress' => '10.10.0.2', 'NetworkInterface.2.SecondaryPrivateIpAddressCount' => '2', 'IamInstanceProfile.Arn' => 'arn', 'IamInstanceProfile.Name' => 'name');
     $this->assertEquals($fxtr, $r->getQueryArrayBare());
 }
示例#2
0
文件: Ec2Api.php 项目: scalr/scalr
 /**
  * RunInstances action
  *
  * Launches the specified number of instances of an AMI for which you have permissions.
  * If Amazon EC2 cannot launch the minimum number of instances you request, no instances will be
  * launched. If there is insufficient capacity to launch the maximum number of instances you request, Amazon
  * EC2 launches the minimum number specified and allocates the remaining available instances using round robin.
  *
  * Note! Every instance is launched in a security group (created using the CreateSecurityGroup
  * operation). If you don't specify a security group in the RunInstances request, the "default"
  * security group is used.
  *
  * @param   RunInstancesRequestData $request Request data
  * @return  ReservationData         Returns the ReservationData object
  * @throws  ClientException
  * @throws  Ec2Exception
  */
 public function runInstances(RunInstancesRequestData $request)
 {
     $result = null;
     $options = $request->getQueryArrayBare();
     $response = $this->client->call(ucfirst(__FUNCTION__), $options);
     if ($response->getError() === false) {
         //Success
         $sxml = simplexml_load_string($response->getRawContent());
         $result = new ReservationData();
         $result->setEc2($this->ec2);
         $result->reservationId = (string) $sxml->reservationId;
         $result->ownerId = (string) $sxml->ownerId;
         $result->requesterId = $this->exist($sxml->requesterId) ? (string) $sxml->requesterId : null;
         $result->setGroupSet($this->_loadGroupList($sxml->groupSet));
         $result->setInstancesSet($this->_loadInstanceList($sxml->instancesSet));
     }
     return $result;
 }