73 lines
5.2 KiB
TeX
73 lines
5.2 KiB
TeX
\section{Описание программной реализации}
|
|
\label{sec:Chapter4} \index{Chapter4}
|
|
|
|
%\begin{figure}[htbp]
|
|
%\centering
|
|
%\includegraphics[width=0.8\textwidth]{files/UML.png}
|
|
%\caption{UML диаграмма классов Python}
|
|
%\label{fig:uml_model}
|
|
%\end{figure}
|
|
|
|
|
|
\begin{figure}[H]
|
|
\centering
|
|
\includegraphics[width=1\textwidth]{files/UML.png}
|
|
\caption{UML-диаграмма классов Python}
|
|
\label{fig:uml_model1}
|
|
\end{figure}
|
|
|
|
Табличное представление используется для ввода, но для дальнейшей обработки требуется программная структура, в которой связи между объектами выражены явно. Поэтому данные таблиц должны преобразовываться во внутреннее представление, которое было реализовано в виде набора объектов Python (рис. \ref{fig:uml_model1}), соответствующих основным сущностям конфигурации. Такая модель служит центральным представлением, из которого данные могут быть преобразованы в другие форматы.
|
|
|
|
|
|
|
|
|
|
Также необходима разработка механизмов преобразования модели. Основными преобразованиями являются импорт данных из табличного описания во внутреннюю модель, экспорт во входные языки средства развертывания сетевых конфигураций \cite{netloom} и средства построения диаграмм (D2).
|
|
|
|
Программная реализация выполнена на языке Python. Объём написанного кода: 710 строк, 48 килобайт. Код выложен на веб-сервисе Github \cite{github}. На рисунке \ref{fig:schema} представлен основной процесс работы с утилитой. Построение диаграмм происходит с помощью модуля py-d2 (пример на рис \ref{fig:diagram}).
|
|
|
|
|
|
\begin{figure}[H]
|
|
\centering
|
|
\includegraphics[width=0.8\textwidth]{files/schema.png}
|
|
\caption{Схема работы программной реализации}
|
|
\label{fig:schema}
|
|
\end{figure}
|
|
|
|
|
|
\begin{figure}[H]
|
|
\centering
|
|
\includegraphics[width=1\textwidth]{files/diagram.png}
|
|
\caption{Пример диаграмммы, построенной утилитой}
|
|
\label{fig:diagram}
|
|
\end{figure}
|
|
|
|
|
|
Воспроизводимость описания конфигурации обеспечивается тем, что результат хранится в виде структурированных данных. Одна и та же таблица при повторной обработке приводит к построению той же внутренней модели и, соответственно, к одинаковому описанию конфигурации. А преобразование в формат, пригодный для использования в средстве развёртывания сети виртуальных машин, обеспечивает возможность дальнейшего применения описания при подготовке лабораторных стендов из виртуальных машин.
|
|
|
|
|
|
|
|
Пример экспортированного YAML-описания конфигурации сети приведён в листинге~\ref{lst:yaml-config}.
|
|
|
|
\lstinputlisting[
|
|
language=yaml,
|
|
caption={Фрагмент YAML-описания конфигурации сети виртуальных машин},
|
|
label={lst:yaml-config},
|
|
frame=single,
|
|
framerule=0.4pt,
|
|
numbers=left,
|
|
numberstyle=\tiny,
|
|
basicstyle=\ttfamily\footnotesize,
|
|
lineskip=-1pt,
|
|
breaklines=true,
|
|
columns=fullflexible,
|
|
keepspaces=true
|
|
]{files/topology.yaml}
|
|
|
|
% \lstinputlisting[
|
|
% language=yaml,
|
|
% caption={Фрагмент YAML-описания конфигурации сети виртуальных машин},
|
|
% label={lst:yaml-config}
|
|
% ]{files/topology.yaml}
|
|
|
|
% Таким образом, решение строится не вокруг построения диаграммы, а вокруг формальной модели сетевой конфигурации. Табличное представление используется как способ ввода и редактирования, внутренняя модель — как основа обработки данных, а YAML и диаграмма — как формы представления результата. Такой подход позволяет обеспечить редактируемость, воспроизводимость и возможность дальнейшего применения описания при подготовке лабораторных стендов из виртуальных машин.
|