Scalr\Modules\Platforms\Ec2\Ec2PlatformModule::getOrphanedServers PHP Method

getOrphanedServers() public method

See also: Scalr\Modules\PlatformModuleInterface::getOrphanedServers()
public getOrphanedServers ( Environment $environment, $cloudLocation, $instanceIds = null )
$environment Scalr\Model\Entity\Account\Environment
    public function getOrphanedServers(Entity\Account\Environment $environment, $cloudLocation, $instanceIds = null)
    {
        if (empty($cloudLocation)) {
            return [];
        }
        $aws = $environment->aws($cloudLocation);
        $orphans = [];
        $nextToken = null;
        do {
            try {
                /* @var $results ReservationList */
                $results = $aws->ec2->instance->describe($instanceIds, null, $nextToken, empty($instanceIds) ? 1000 : null);
            } catch (Exception $e) {
                throw new Exception(sprintf("Cannot get list of servers for platform ec2: %s", $e->getMessage()));
            }
            if (count($results)) {
                foreach ($results as $reservation) {
                    /* @var $reservation ReservationData */
                    foreach ($reservation->instancesSet as $instance) {
                        /* @var $instance InstanceData */
                        if (StatusAdapter::load($instance->instanceState->name)->isTerminated()) {
                            continue;
                        }
                        // check whether scalr tag exists
                        foreach ($instance->tagSet as $tag) {
                            /* @var $tag ResourceTagSetData */
                            if ($tag->key == "scalr-meta") {
                                continue 2;
                            }
                        }
                        $orphans[] = new OrphanedServer($instance->instanceId, $instance->instanceType, $instance->imageId, $instance->instanceState->name, $instance->launchTime->setTimezone(new \DateTimeZone("UTC")), $instance->privateIpAddress, $instance->ipAddress, $instance->keyName, $instance->vpcId, $instance->subnetId, $instance->architecture, $instance->groupSet->toArray(), $instance->tagSet->toArray());
                    }
                }
            }
            if (empty($instanceIds)) {
                $nextToken = $results->getNextToken();
            }
            unset($results);
        } while ($nextToken);
        return $orphans;
    }