Мегаобучалка Главная | О нас | Обратная связь


Тестирование результатов интеграции



2016-09-16 488 Обсуждений (0)
Тестирование результатов интеграции 0.00 из 5.00 0 оценок




На этапе исполнения сервер IIS слушает порт 80. В программе есть несколько контроллеров, которые обрабатывают запросы, отправленные клиентским приложением. В процессе интеграции библиотеки в проект компании был создан VdsController, в котором были реализованы методы обработки запросов, подразумевающих взаимодействие с развёрнутой в описанном ранее кластере облачной инфраструктурой. После того, как пользователь прошёл процедуру регистрации в системе vds.ultrazoom.ru, он получает доступ к панели управления выделенными ему ресурсами. Создание пользователя непосредственно внутри системы облачной инфраструктуры происходит перед созданием первого виртуального сервера.

Таблица 8. Аппаратная реализация узлов

Узел Аппаратная реализация
Контроллер Модель: Dell R620 ЦПУ: 2x Intel® Xeon® CPU E5-2620 0 @ 2.00 GHz Оперативная память: 32 ГБ Диск: два 300 ГБ 10000 RPM SAS диска Сеть: два сетевых порта 10G
Вычислительный узел Model: Dell R620 ЦПУ: 2x Intel® Xeon® CPU E5-2650 0 @ 2.00 GHz Оперативная память: 128 GB Диск: два 600 GB 10000 RPM SAS диска Сеть: четыре сетевых порта 10G
Узел хранения Модель: Dell R720xd ЦПУ: 2x Intel® Xeon® CPU E5-2620 0 @ 2.00 GHz Оперативная память: 64 ГБ Диск: два диска 500 ГБ 7200 RPM SAS и двадцать четыре диска 600 ГБ 10000 RPM SAS Disks Raid контроллер: PERC H710P интегрированный RAID контроллер, 1 ГБ NV кеш Сеть: два сетевых порта 10G

 

Для тестирования работы и результатов интегрирования библиотеки, была создана тестовая учётная запись на портале vds.ultrazoom.ru. В разделеWeb-интерфейса сайта, отображающего средства создания новой виртуальной машины была выбрана тестовая конфигурация сервера под управлением операционной системы Windows Server 2008 и запущен процесс создания виртуальной машины. В результате соответствующий метод серверного приложения выполнил следующие действия:

1) Инстаниировал классы RegistrationQuery и AuthorizationQuery разработанной библиотеки OpenstackManager для выполнения операции создания пользователя облачной платформы. В качестве учётных данных были использованы логин и пароль, предоставленные на этапе регистрации на портале vds.ultrazoom.ru и хранящиеся в базе данных системы.

2) Выполнил задачу регистрации и авторизации пользователя в облаке средствами классов RegistrationQuery и AuthorizationQuery соответственно.

3) На основе выбранной конфигурации получил имена шаблона виртуальной конфигурации и образа виртуального сервера в соответствии с правилами именования данных элементов системы, установленными системными администраторами проекта и описанными в конфигурационном файле серверного приложения.

4) Инстанциировал класс CreateServerQuery, передав в конструктор токен, полученный на втором шаге и данные, полученные на третьем шаге. Инициализировал задачу по созданию виртуального сервера средствами класса CreateServerQuery.

5) Обработал данные, полученные в ответ на запрос выполнения функции OpenStackAPI, инициализирующей задачу создания нового виртуального сервера. Обновил необходимые данные о, доступных пользователю, экземплярах виртуальных серверов, которые хранятся в базе данных системы.

6) Отправил клиентскому приложению все необходимые данные для обновления Web-интерфейса пользователя.

На рисунке 9 показан пользовательский интерфейс портала vds.ultrazoom.ru, предоставляющий информацию о созданном виртуальном сервере.

Рисунок 10. Интерфейс пользователя vds.ultrzoom.ru

 

Вывод

На этапе интеграции классы разработанной ранее библиотеки были успешно использованы в серверном приложении портала самообслуживания vds.ultrazoom.ru для решения задач по управлению ресурсами облка, развёрнутого средствами OpenStack на серверах компании UltraZoom.


 

Заключение

В результате работы была получена библиотека классов .NET, содержащая функционал по управлению ресурсами облачной инфраструктуры. На этапе реализации данной библиотеки были выполнены следующие последовательные действия:

· Спроектирована архитектура библиотеки классов

· Реализованы базовые классы и интерфейсы архитектуры

· Реализованы классы базовых команд

· Реализованы классы сценариев

В ходе проведенной работы были выполнены все поставленные в дипломе цели и задачи, т.е. полученная библиотека удовлетворяет следующим функциональным требованиям:

· Содержит средства создания нового пользователя облачной платформы, поддерживающие установку ролей, определяющих конкретные правила и полномочия пользователя.

· Содержит средства аутентификации, необходимые для взаимодействия пользователя с облачной платформой.

· Содержит функционал, позволяющий пользователю создавать новые виртуальные сервера и управлять существующими.

· Содержит функционал, необходимый для создания и управления резервными копиями виртуальных серверов пользователя.

 


 

Список используемой литературы

1. Технология облачных вычислений [Электронный ресурс]
http://mirtelecoma.ru/magazine/elektronnaya-versiya/31/

2. Что такое инфраструктура как услуга [Электронный ресурс]
https://technet.microsoft.com/ru-ru/cloud/hh744751.aspx

3. Маркелов, А. А. OpenStack. Знакомство с облачной операционной системой/ А. А. Маркелов –ДМК Пресс, 2016 г. – 160 с.

4. Внедрение OpenStack и куда двигаться дальше? [Электронный ресурс] https://habrahabr.ru/company/icl_services/blog/281068/

5. Знакомство с OpenStack : архитектура, функции, взаимодействия [Электронный ресурс] http://www.ibm.com/developerworks/ru/library/cl-openstack-overview/index.html

6. OpenStack API Complete Reference [Электронныйресурс]
http://developer.openstack.org/api-ref.html

7. РихетД. CLR via C#. Программирование на платформе Microsoft .NET Framework 4.0 на языке C# /Д.Рихтер–Питер, 2012 г. – 928 с.

8. Общие сведения о платформе .NET Framework [Электронный ресурс]
https://msdn.microsoft.com/ru-ru/library/zw4w595w(v=vs.110).aspx

9. ШилдтГ. C# 4.0. Полное руководство / Г. Шилдт –Вильямс, 2015 г. – 1056 с.

10. Гамма Э. Приёмы объектно-ориентированного проектирования. Паттерны проектирования / Э.Гамма, Р.Хелм, Р. Джонсон, Дж.Влиссидес –Питер, 2013 г. – 386 с.

11. Р. С. Мартин Принципы, паттерны и методики гибкой разработки на языке C# / Р. С. Мартин, М. Мартин. –Символ-Плюс, 2011 г. – 768 с.

12. Знакомство с OpenStack : Компонент Identity (Keystone) [Электронный ресурс]
http://www.ibm.com/developerworks/ru/library/cl-openstack-keystone/index.html

13. Знакомство с OpenStack: компонент Glance и компонент Nova [Электронный ресурс]
http://www.ibm.com/developerworks/ru/library/cl-openstack-nova-glance/index.html/


 

ПРИЛОЖЕНИЕ А

Листинг 1

 

public interface ICommand

{

void Execute();

}

public interface IQuery<T>

{

T Execute();

}

Листинг 3

 

public abstract class CommandBase : ICommand

{

public void Execute()

{

var webClient = new WebClient();

var httpParams = GetHttpRequestParams();

webClient.Headers.Add(HttpRequestHeader.ContentType, httpParams.ContentType);

if (string.IsNullOrEmpty(httpParams.XAuthToken))

webClient.Headers.Set("X-Auth-Token", httpParams.XAuthToken);

webClient.UploadString(httpParams.Url, httpParams.Method, httpParams.MessageBody);

}

abstract protected HttpRequestParams GetHttpRequestParams();

}

 

public abstract class QueryBase<T> : IQuery<T>

{

public void Execute()

{

var webClient = new WebClient();

var httpParams = GetHttpRequestParams();

webClient.Headers.Add(HttpRequestHeader.ContentType, httpParams.ContentType);

if (string.IsNullOrEmpty(httpParams.XAuthToken))

webClient.Headers.Set("X-Auth-Token", httpParams.XAuthToken);

var result = webClient.UploadString(httpParams.Url, httpParams.Method, httpParams.MessageBody);

return JsonConvert.DeserializeObject<T>(result);

}

abstract protected HttpRequestParams GetHttpRequestParams();

}

Листинг 4

 

public class CreateUserResponse

{

public string id {get; set;}

public string name {get; set;}

public string domain_id {get; set;}

public string enabled {get; set;}

}

 

public class CreateUserQuery : QueryBase<CreateUserCommand>

{

private string _url;

private string _name;

private string _password;

private string _domainUuid;

 

public CreateUserQuery(string url,

string name, string password, string domainUuid)

{

_xAuthToken = xAuthToken;

_name = name;

_password = password;

_url = url;

_domainUuid = domainUuid;

}

 

protected override HttpRequestParams GetHttpRequestParams()

{

var url = _url + "v3/";

 

var messageBodyObj = new

{

auth = new

{

identity = new

{

methods = new[] { "password" },

password = new

{

user = new

{

domain_id = _domainUuid,

name = _name,

password = _password

}

}

},

}

};

 

var method = "POST";

var contentType = "application/json";

var messageBody = JsonConvert.SerializeObject(messageBodyObj);

 

return new HttpRequestParams

{

Url = url,

ContentType = contentType,

MessageBody = messageBody,

Method = method,

};

}

}

 

Листинг 5

 

public class CreateServerResponse

{

public string id {get; set;}

public DateTime created {get; set;}

public string name {get; set;}

public string accessIPv4 {get; set;}

public string accessIPv6 {get; set;}

public string vm_state {get; set;}

public string user_Id {get; set;}

}

 

public class CreateServerQuery : QueryBase<CreateServerResponse>

{

private string _flavorRef;

private string _imageRef;

private string _name;

private string _adminPass;

private string _xAuthToken;

private string _baseUrl;

 

public CreateServerQuery(string flavorRef, string imageRef, string name,

string adminPass, string xAuthToken, string baseUrl)

{

_flavorRef = flavorRef;

_imageRef = imageRef;

_name = name;

_adminPass = adminPass;

_xAuthToken = xAuthToken;

_baseUrl = baseUrl;

}

 

protected override HttpRequestParams GetHttpRequestParams()

{

var url = _baseUrl + "v3/";

 

var messageBodyObj = new

{

server = new

{

name = _name,

imageRef = _imageRef,

flavorRef = _flavorRef,

adminPass = _adminPass

}

};

 

var method = "POST";

var contentType = "application/json";

var messageBody = JsonConvert.SerializeObject(messageBodyObj);

 

return new HttpRequestParams

{

Url = url,

ContentType = contentType,

MessageBody = messageBody,

Method = method,

XAuthToken = _xAuthToken

};

}

}

 

Листинг 6

public class CreateServerQuery: IQuery<CreateServerResponse>

{

private string _xAuthToken;

private string _baseUrl;

private string _flavorName;

private string _imageName;

private string _serverName;

private string _adminUrl;

private string _adminPass;

 

public CreateServerByNamesCommand(string xAuthToken, string baseUrl, string adminUrl, string flavorName, string imageName, string serverName, string adminPass)

{

_xAuthToken = xAuthToken;

_baseUrl = baseUrl;

_flavorName = flavorName;

_imageName = imageName;

_serverName = serverName;

_adminUrl = adminUrl;

_adminPass = adminPass;

}

public CreateServerResponse Execute()

{

var getFlavorsQuery = new GetFlavorQuery(_adminUrl);

var flavorsList = getFlavorsQuery.Execute();

var flavor = flavorsList.FirstOrDefault(f => f.name == _flavorName);

if (flavor == null)

return;

 

var flavorId = flavor.id;

 

var getImagesQuery = new GetImagesQuery(_adminUrl);

var imagesList = getImagesQuery.Execute();

var image = flavorsList.FirstOrDefault(i => i.name == _imageName);

if (image == null)

return;

 

var imageId = image.id;

 

var createServerQuery = new CreateServerQuery(flavorId, imageId, _serverName, _adminPass, _xAuthToken, _baseUrl);

return createServerQuery.Execute();

}

}

 

 



2016-09-16 488 Обсуждений (0)
Тестирование результатов интеграции 0.00 из 5.00 0 оценок









Обсуждение в статье: Тестирование результатов интеграции

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы...
Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе...
Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение...
Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (488)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.007 сек.)