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

setFreeFarmRoleIndex() public method

Set free farm role index for new server
    public function setFreeFarmRoleIndex()
    {
        // We ingore terminated and pending terminating instances to release their indexes.
        $used = $this->db()->GetCol("\n            SELECT {$this->columnIndex}\n            FROM {$this->table()}\n            WHERE {$this->columnFarmRoleId} = ? AND {$this->columnStatus} NOT IN (?,?)\n            ORDER BY {$this->columnIndex}\n        ", [$this->farmRoleId, 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->index = $index;
    }