Панель управления | Регистрация

Примеры использования 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";
     }
 }