maestroprog/netangels-cvds-api

A php library provides remote control for NetAngels cloud VDS hosting.

v1.0 2017-08-12 10:10 UTC

This package is auto-updated.

Last update: 2025-03-17 03:28:24 UTC


README

Данная библиотека, написанная на PHP, позволяет работать с NetAngels Cloud VDS API.

Она позволяет выполнять почти все операции, описанные в документации.

Принцип работы

Библиотека поделена на классы для работы с разными типами ресурсов API:

  • VmApi - реализует управление облачными VDS
  • DiskApi - реализует управление облачными дисками
  • VmsIpApi - получает информацию об IP адресах используемых облачными VDS
  • TariffsApi - позволяет получить список доступных тарифов
  • OsApi - даёт информацию о возможных образах операционных систем для создания облачных VDS

Основной класс Api содержит получение авторизационного токена, и даёт доступ к остальным API классам

Сущности Vds и Disk инкапсулируют логику для работы с API

Примеры

Для работы с API нужен специальный API ключ, получить его можно в панели NetAngels будучи авторизованным пользователем с подключенной услугой "Облачные VDS".

  1. Инициализация библиотеки и получение авторизационного токена.

    define('API_KEY', '#Ваш API ключ#');
    
    try {
        $netAngelsApi = new \NetAngels\Api(new ApiKey(API_KEY));
    } catch (Exception $e) {
        echo '<p>Не удалось получить авторизационный токен:' . $e->getMessage() . '</p>';
        if ($prev = $e->getPrevious()) {
            echo '<p>' . nl2br($prev->getMessage()) . '</p>';
        }
    }

    Далее переменная $netAngelsApi будет использована взеде.

    При создании нового объекта \NetAngels\Api происходит попытка получения авторизационного токена. Не все API методы требуют авторизационный токен, поэтому можно поймать исключение, и работать дальше с API без токена. API ресурсы, поддерживающе работу без токена: vm-tariffs, os-images, token (получение токена).

  2. Создание облачной VDS

    // в качестве примера выберем самый начальный тариф
    $tariff = $netAngelsApi->getTariffsApi()->getLowTariff();
    
    // получаем список возможных образов операционных систем, просматриваем его, и выбираем нужный образ
    $images = $netAngelsApi->getOsApi()->getList();
    
    // затем нужно выбрать образ диска с операционной системой
    // допустим, это будет образ с Debian 7 Wheezy LAMP, и архитектурой 64-битной
    $image = \NetAngels\ValueObject\VmImage::custom(2, 64);
    
    // также для облачной VDS потребуется диск, будем создавать SSD диск на 10ГБ
    $disk = new \NetAngels\Entity\SsdDisk($netAngelsApi, 10);
    
    // создаем обланую вдс на основе выбранного образа
    $requisites = (new \NetAngels\Entity\Vds($netAngelsApi,$tariff))->createByImage($image);

    После данных манипуляций в переменной $requisites будет находиться объект класса \NetAngels\ValueObject\VmRequisites; после создания новой облачной VDS данный объект хранит IP адрес созданной VDS; а если облачная VDS была создана на основе образа ОС, то этот объект будет хранить также реквизиты пользователей для доступа к данной VDS.

    Данный код

    $users = $requisites->getUsers();
    var_dump($users);

    Выведет что-то вроде этого:

    object(NetAngels\ValueObject\VmRequisites)[39]
      private 'ip' => string '91.226.83.194' (length=13)
      private 'users' => 
        array (size=2)
          0 => 
            object(NetAngels\ValueObject\VmUser)[41]
              private 'username' => string 'root' (length=4)
              private 'password' => string 'M*************y' (length=15)
          1 => 
            object(NetAngels\ValueObject\VmUser)[40]
              private 'username' => string 'web' (length=3)
              private 'password' => string 'r*************J' (length=15)
    
  3. Получение VDS по ID

    $vds = $netAngelsApi->getVmApi()->getVds(777);

    В сущностях \Netangels\Entity\Vds и \Netangels\Entity\*Disk\ инкапсулировано API, поэтому операции можно производить прямо с ними:

    // переименование VDS
    $vds = $vds->rename('Новое имя');
    // переменной $vds присваивается новый объект VDS с новым именем
    
    // меняем имя и тариф
    
    $vds = $netAngelsApi->getVmApi()->getVds(777)
        ->changeTariff($netAngelsApi->getTariffsApi()->getPowerfulTariff())
        ->rename('Супер-мощная VDS');
    
  4. Простенькая панель для включения/выключения VDS

    Находится в примере