Примеры использования Perl библиотеки
Примеры использования находятся в разработке.
Скачать библиотеку для Perl можно здесь: Imserver.pm. Библиотека должна быть доступной для интерпретатора perl в путях по умолчанию, либо располагаться в той же папке, откуда производится вызов вашего приложения.
Подключение библиотеки:
use Imserver; use strict; # Рекомендуется, но не обязательно
Указываем авторизационную информацию. В процессе обмена сообщениями будет использоваться сессия, однако для ее получения требуется указать логин и пароль:
my $login="userxxx"; # Замените на свой логин my $password="hundredsofthousandsofmonkeysinabananastuckass"; # Замените на свой пароль
Cоздание соединения с API:
my $imserver=Session->new(login=>$login, password=>$password); if (!$imserver->{success}){ #Проверка на успешное получение сессии. die "Session is not established. Error:".$imserver->{data} }
Изменение пароля:
my $result = $imserver->changepass(lastpass=>$password, # изменение пароля newpassword1=>"121212", # новый пароль newpassword2=>"121212", # новый пароль (повтор) ); if ($result->{'success'}){ # получение результата исполнения команды и/или расшифровки ошибки print "Password changed\n"; }else{ print %$errors->{$result->{'data'}}."\n"; }
Получение списка всех серверов:
my $servers = $imserver->listservers(); foreach my $server (@{$servers->{data}}){ print $server->{id}."\n"; }
Получение списка возможных ошибок на англ. языке. Доступны 2 варианта: ru - Русский язык и en - Английский.
my $errors = $imserver->listerrors(lang=>"en"); print %$errors->{'0001'};
Получение списка доступных шаблонов систем:
my $templates = $imserver->listtemplates(); foreach my $template (@{$templates->{data}}){ print $template->{id}."\t"; # Выводим ID шаблона print $template->{name}."\n"; # Выводим Имя шаблона }
Получение списка доступных ISO образов:
my $isos = $imserver->listiso(); foreach my $iso (@{$isos->{data}}){ print $iso->{id}."\t"; # Выводим ID ISO образа print $iso->{name}."\t"; # Выводим Имя образа print $iso->{type}."\n"; # Тип образа, 1- пользовательский, 0 - системный. }
Получение списка приватных сетей Vlan:
my $vlans = $imserver->listvlan(); foreach my $vlan (@{$vlans->{data}}){ print $vlan->{id}."\t"; # ID приватной сети print $vlan->{name}."\n"; # Название приватной сети. }
Добавление нового vlan:
my $result=$imserver->addvlan(vlanname=>"testfromAPI"); if ($result->{'success'}){ # получение результата исполнения команды и/или расшифровки ошибки print "New vlan ID is: $result->{'data'}\n"; } else{ print %$errors->{$result->{'data'}}."\n"; };
Создание объекта Vlan. Обращение к приватной сети по ее ID:
my $vlan=Vlan->new(id=>79, session=>$imserver);
Изменение имени vlan:
$vlan->do(vlanaction=>"update", vlanname=>"New name of vlan");
Удаление Vlan:
my $result=$vlan->do(vlanaction=>"delete");
Создание нового сервера:
my $result = $imserver->add( cpu=>"1", # 1 ядро ram=>"1", # 1 гб оперативной памяти hdd=>"5", # 5 гб жесткого диска server_name=>"My Server name" # Имя сервера ); if ($result->{'success'}){ # получение результата исполнения команды и/или расшифровки ошибки print "New server ID is: $result->{'data'}\n"; my $server=Server->new(id=>$result->{data}, session=>$imserver); # Новый объект Server } else{ print %$errors->{$result->{'data'}}."\n"; };
Создание объекта Server. Обращение к серверу по его ID:
my $server=Server->new(id=>xxxx, session=>$imserver);
Получение состояния сервера:
print $server->get_status();
Старт сервера:
my $result = $server->do(cmd=>"run_server");
Стoп сервера:
my $result=$server->do(cmd=>"stop_server");
Пауза сервера:
$server->do(cmd=>"pause_server");
Клонирование сервера:
$server->do(cmd=>"clone_server");
Удаление сервера:
$server->do(cmd=>"del_server");
Жесткая перезагрузка сервера:
$server->do(cmd=>"reload_server",type=>"hard");
Мягкая перезагрузка сервера:
$server->do(cmd=>"reload_server",type=>"soft");
Переустановка OS сервера из шаблона:
$server->do(cmd=>"reinstall_server", shablon=>10, root=>"121212" );
Получение списка сетевых интерфейсов:
my $eths = $server->listeth(); foreach my $eth (@{$eths->{data}}){ print $eth->{id}."\t"; print $eth->{eth_mac}."\t"; print $eth->{status}."\t"; print $eth->{eth}."\n"; }
Отключить сетевой интерфейс:
my $result = $server->ethdo(ethaction=>"down", ethid=>$ethid);
Включить сетевой интерфейс:
my $result = $server->ethdo(ethaction=>"up", ethid=>$ethid);
Привязать интерфейс к другой сети:
my $result = $server->ethdo(ethaction=>"update", ethid=>$ethid, vlan=>$vlan);
Удалить интерфейс:
my $result = $server->ethdo(ethaction=>"delete", ethid=>$ethid);
Получение токена для VNC консоли:
my $info= $server->do(cmd=>"get_token"); print "Token is: ".$info->{token} ."\n"; print "Passw is: ".$info->{pass} ."\n"; # пароль передается только в случае его необходимости
Пример изменения имени, объема памяти и процессора сервера:
$server->do( cmd=>"update_server", server_name=>"ByAPI New", ram=>"1", cpu=>"1" );
Пример получения списка URL для скачивания образов дисков серверов:
my $servers = $imserver->listservers(); foreach my $srv (@{$servers->{data}}){ my $server=Server->new(id=>$srv->{id}, session=>$imserver); foreach my $hdd (@{$srv->{hdd_list}}){ my $result = $server->get_dl_url(key=>$hdd->{key}); print $result->{url}."\n"; } }