Автоматизация жизненного цикла приложений с Infobox Jelastic API
Jelastic Cloud API позволяет автоматизировать действия для обеспечения жизненного цикла приложений и расширить функциональность платформы, связывая Jelatic с другими сервисами. Используя API вы можете программно создавать окружения, разворачивать приложения и выполнять другие задачи, которые возможно сделать из панели управления Jelastic, но не ограничиваясь ими.
Jelastic API следует REST принципам. Взаимодействие происходит через HTTP протокол. Преимущество такого подхода — широкая расширяемость протокола HTTP. Вы можете использовать REST API практически с любым языком программирования.
В этой статье вы узнаете, как использовать Jelastic Cloud API и Jelastic Client Library (Java) на облачном хостинге Infobox. В конце статьи 300 рублей на счет Infobox Jelastic в подарок (получить можно только один раз).
Запрос Jelastic APIВсе запросы методов API GET или POST к Infobox Jelastic производятся для адреса: https://app.jelasticloud.com/1.0/ В документации этот адрес указан, как [hoster-api-host].
Данные запроса могут быть переданы в строке запроса после символа »?» при использовании GET–метода или в теле POST-запроса. В случае использования GET–запроса параметры должны использовать percent encoding (URL encoding).
Помните про ограничение длины запроса в 2048 символов. Поэтому мы рекомендуем:
GET запрос использовать для получения информации, которая просто помещается в ограничение длины запроса; POST запрос использовать для изменения данных (создания окружений, изменение файлов конфигурации и т.д.). Таким образом вы не ограничены длинной запроса. Такое использование и более релевантно для спецификации протокола HTTP.Каждый запрос должен содержать набор обязательных параметров. Для некоторых функций есть набор дополнительных параметров, описанных в документации.
Каждый запрос включает обязательный параметр appid, обощначающий запрошенное окружение. Если запрос не связан с окружениями, должно быть использовано системное значение 1dd8d191d38fff45e62564fcf67fdcd6. Текстовое значения параметров должно быть представлено в кодировке UTF-8. Последовательность параметров не важна.
Ответ Jelastic API Ответ на запрос представлен в кодировке UTF-8. Ответы всех функций API даются в формате JSON. Пример результата запроса для каждой функции описан в документации.
Jelastic API в действии (на примере Java-библиотеки) Для начала автоматизации требуемого процесса с Jelastic API необходимо зарегистрироваться на облачном хостинге Infobox Jelastic. Также необходимо скачать Jelastic Client Library и добавить ее в classpath.Если вы используете Maven, добавьте следующую зависимость в pom.xml
Создание окружения Полная версия примера создания окружения доступна в документации по Jelastic API (раздел «Jelastic Java Samples»). Здесь мы шаг за шагом рассмотрим основные пункты:1. Определите новый публичный класс CreateEnviroment, в который войдут все следующие блоки и параметры. Первый блок параметров должен содержать следующие строки:
private final static String PLATFORM_APPID = »1dd8d191d38fff45e62564fcf67fdcd6»;
private final static String HOSTER_URL = «https://app.jelasticloud.com»;
private final static String USER_EMAIL = »
System.out.println («Getting list of engines…»);
ArrayResponse arrayResponse = environmentService.getEngineList (PLATFORM_APPID, session,»
Таким образом вы можете автоматизировать создание различных окружений. Также в Jelastic Java Samples вы можете найти и другие примеры использования Jelastic Java Client Library.
package com.infobox.playground;
import com.jelastic.api.development.response.ScriptEvalResponse; import com.jelastic.api.development.response.interfaces.ArrayResponse; import com.jelastic.api.environment.Environment; import com.jelastic.api.users.Authentication; import com.jelastic.api.users.response.AuthenticationResponse; import org.json.JSONArray; import org.json.JSONObject;
import java.util.Random;
public class App {
private final static String PLATFORM_APPID = »1dd8d191d38fff45e62564fcf67fdcd6»;
private final static String HOSTER_URL = «https://app.jelasticloud.com»;
private final static String USER_EMAIL = »
private static Authentication authenticationService; private static Environment environmentService;
static { authenticationService = new Authentication (PLATFORM_APPID); authenticationService.setServerUrl (HOSTER_URL + »/1.0/»);
environmentService = new Environment (PLATFORM_APPID); environmentService.setServerUrl (HOSTER_URL + »/1.0/»); }
public static void main (String[] args) { /** * Authentication * To get started you need to specify the login and password of your Jelastic account in order to authenticate. * After this a unique session will be created for performing the required actions within user account. * The further calling of the API functions should be performed with the received session value. * This session is valid until the Signout method is called. */ System.out.println («Authenticate user…»); AuthenticationResponse authenticationResponse = authenticationService.signin (USER_EMAIL, USER_PASSWORD); System.out.println («Signin response:» + authenticationResponse); if (! authenticationResponse.isOK ()) { System.exit (authenticationResponse.getResult ()); }
final String session = authenticationResponse.getSession ();
/** * Get the list of all available engines available for the required engine type (java, php, ruby, js etc.). */ System.out.println («Getting list of engines…»); ArrayResponse arrayResponse = environmentService.getEngineList (PLATFORM_APPID, session, «php»); System.out.println («GetEngineList response:» + arrayResponse); if (! arrayResponse.isOK ()) { System.exit (arrayResponse.getResult ()); }
/** * Get the list of available node templates according to the specified type (ALL, NATIVE or CARTRIDGE). */ System.out.println («Getting list of templates…»); arrayResponse = environmentService.getTemplates (PLATFORM_APPID, session, «NATIVE», false); System.out.println («GetTemplates response:» + arrayResponse); if (! arrayResponse.isOK ()) { System.exit (arrayResponse.getResult ()); }
JSONObject env = new JSONObject () .put («ishaenabled», false) .put («engine», «php5.5») .put («shortdomain», ENV_NAME);
JSONObject apacheNode = new JSONObject () .put («nodeType», «apache2») .put («extip», false) .put («count», 1) .put («fixedCloudlets», 1) .put («flexibleCloudlets», 4);
JSONObject mysqlNode = new JSONObject () .put («nodeType», «mysql5») .put («extip», false) .put («fixedCloudlets», 1) .put («flexibleCloudlets», 4);
JSONObject memcachedNode = new JSONObject () .put («nodeType», «memcached»);
JSONArray nodes = new JSONArray () .put (apacheNode) .put (mysqlNode) .put (memcachedNode);
/** * Create a new environment with all required settings. */ System.out.println («Creating environment…»); ScriptEvalResponse scriptEvalResponse = environmentService.createEnvironment (PLATFORM_APPID, session, «createenv», env.toString (), nodes.toString ()); System.out.println («CreateEnvironment response:» + scriptEvalResponse); } } Попробуйте Jelastic Cloud API сейчас и оцените удобство разработки с Infobox Jelastic! Получите 300 рублей на счет Infobox Jelastic для экспериментов (если еще не получали их из других наших статей). Для начисления бонуса пришлите ваш логин от Jelastic на trukhinyuri@infoboxcloud.com.