Scalr\Model\Entity\Server::setFreeFarmIndex PHP Method

setFreeFarmIndex() public method

Set free farm index for new server
public setFreeFarmIndex ( )
    public function setFreeFarmIndex()
    {
        // We ingore terminated and pending terminating instances to release their indexes.
        $used = $this->db()->GetCol("\n            SELECT {$this->columnFarmIndex}\n            FROM {$this->table()}\n            WHERE {$this->columnFarmId} = ? AND {$this->columnStatus} NOT IN (?, ?)\n            ORDER BY {$this->columnFarmIndex}\n        ", [$this->farmId, SERVER_STATUS::TERMINATED, SERVER_STATUS::PENDING_TERMINATE]);
        if (empty($used)) {
            $index = 1;
        } else {
            $minIndex = min($used);
            $maxIndex = max($used);
            $freeIndexes = array_diff(range($minIndex, $maxIndex), $used);
            if (empty($freeIndexes)) {
                $index = $maxIndex + 1;
            } else {
                $index = min($freeIndexes);
            }
        }
        $this->farmIndex = $index;
    }