Skip to content

Commit

Permalink
Merge pull request #34 from EvSamigulin/develop
Browse files Browse the repository at this point in the history
Добавлено управление счетчиками потребления ресурсов
  • Loading branch information
arkuznetsov authored Nov 7, 2018
2 parents eb2ce96 + 360c31a commit 2245fa7
Show file tree
Hide file tree
Showing 11 changed files with 793 additions and 2 deletions.
2 changes: 2 additions & 0 deletions lib.config
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@
<class name="НазначениеФункциональности" file="src/Классы/НазначениеФункциональности.os"/>
<class name="ПрофилиБезопасности" file="src/Классы/КластерПрофилиБезопасности.os"/>
<class name="ПрофильБезопасности" file="src/Классы/ПрофильБезопасности.os"/>
<class name="СчетчикиПотребленияРесурсов" file="src/Классы/КластерСчетчикиПотребленияРесурсов.os"/>
<class name="СчетчикПотребленияРесурсов" file="src/Классы/СчетчикПотребленияРесурсов.os"/>
<class name="ОбъектыПрофиля" file="src/Классы/ПрофильОбъекты.os"/>
<class name="ИсполнительКоманд" file="src/Классы/ИсполнительКоманд.os"/>
<module name="Служебный" file="src/Модули/Служебный.os"/>
Expand Down
2 changes: 2 additions & 0 deletions src/lib.config
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@
<class name="НазначениеФункциональности" file="Классы/НазначениеФункциональности.os"/>
<class name="ПрофилиБезопасности" file="Классы/КластерПрофилиБезопасности.os"/>
<class name="ПрофильБезопасности" file="Классы/ПрофильБезопасности.os"/>
<class name="СчетчикиПотребленияРесурсов" file="Классы/КластерСчетчикиПотребленияРесурсов.os"/>
<class name="СчетчикПотребленияРесурсов" file="Классы/СчетчикПотребленияРесурсов.os"/>
<class name="ОбъектыПрофиля" file="Классы/ПрофильОбъекты.os"/>
<class name="ИсполнительКоманд" file="Классы/ИсполнительКоманд.os"/>
<module name="Служебный" file="Модули/Служебный.os"/>
Expand Down
10 changes: 9 additions & 1 deletion src/Классы/Кластер.os
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
Перем Кластер_Блокировки;
Перем Кластер_ИБ;
Перем Кластер_Профили;
Перем Кластер_Счетчики;

Перем ПараметрыОбъекта;

Expand Down Expand Up @@ -67,7 +68,8 @@
Кластер_Соединения = Новый Соединения(Кластер_Агент, ЭтотОбъект);
Кластер_Блокировки = Новый Блокировки(Кластер_Агент, ЭтотОбъект);
Кластер_Профили = Новый ПрофилиБезопасности(Кластер_Агент, ЭтотОбъект);

Кластер_Счетчики = Новый СчетчикиПотребленияРесурсов(Кластер_Агент, ЭтотОбъект);

Кластер_Параметры = Неопределено;

КонецПроцедуры // ПриСозданииОбъекта()
Expand Down Expand Up @@ -382,7 +384,13 @@
Возврат Кластер_Профили;

КонецФункции // ПрофилиБезопасности()

Функция СчетчикиПотребленияРесурсов() Экспорт

Возврат Кластер_Счетчики;

КонецФункции // СчетчикиПотребленияРесурсов()

// Функция возвращает значение параметра кластера 1С
//
// Параметры:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,215 @@
Перем Кластер_Агент;
Перем Кластер_Владелец;
Перем ПараметрыОбъекта;
Перем Элементы;

Перем Лог;

// Конструктор
//
// Параметры:
// АгентКластера - АгентКластера - ссылка на родительский объект агента кластера
// Кластер - Кластер - ссылка на родительский объект кластера
//
Процедура ПриСозданииОбъекта(АгентКластера, Кластер)

Кластер_Агент = АгентКластера;
Кластер_Владелец = Кластер;

ПараметрыОбъекта = Новый ПараметрыОбъекта("counter");

Элементы = Новый ОбъектыКластера(ЭтотОбъект);

КонецПроцедуры // ПриСозданииОбъекта()

// Процедура получает данные от сервиса администрирования кластера 1С
// и сохраняет в локальных переменных
//
// Параметры:
// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
// - Ложь - данные будут получены если истекло время актуальности
// или данные не были получены ранее
//
Процедура ОбновитьДанные(ОбновитьПринудительно = Ложь) Экспорт

Если НЕ Элементы.ТребуетсяОбновление(ОбновитьПринудительно) Тогда
Возврат;
КонецЕсли;

ПараметрыЗапуска = Новый Массив();
ПараметрыЗапуска.Добавить(Кластер_Агент.СтрокаПодключения());

ПараметрыЗапуска.Добавить("counter");

ПараметрыЗапуска.Добавить(СтрШаблон("--cluster=%1", Кластер_Владелец.Ид()));
ПараметрыЗапуска.Добавить(Кластер_Владелец.СтрокаАвторизации());

ПараметрыЗапуска.Добавить("list");

Кластер_Агент.ВыполнитьКоманду(ПараметрыЗапуска);

МассивРезультатов = Кластер_Агент.ВыводКоманды();

МассивСчетчиков = Новый Массив();
Для Каждого ТекОписание Из МассивРезультатов Цикл
МассивСчетчиков.Добавить(Новый СчетчикПотребленияРесурсов(Кластер_Агент, Кластер_Владелец, ТекОписание));
КонецЦикла;

Элементы.Заполнить(МассивСчетчиков);

Элементы.УстановитьАктуальность();

КонецПроцедуры // ОбновитьДанные()

// Функция возвращает коллекцию параметров объекта
//
// Параметры:
// ИмяПоляКлюча - Строка - имя поля, значение которого будет использовано
// в качестве ключа возвращаемого соответствия
//
// Возвращаемое значение:
// Соответствие - коллекция параметров объекта, для получения/изменения значений
//
Функция ПараметрыОбъекта(ИмяПоляКлюча = "ИмяПараметра") Экспорт

Возврат ПараметрыОбъекта.Получить(ИмяПоляКлюча);

КонецФункции // ПараметрыОбъекта()

// Функция возвращает список счетчиков потребления ресурсов кластера 1С
//
// Параметры:
// Отбор - Структура - Структура отбора счетчиков потребления ресурсов (<поле>:<значение>)
// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
//
// Возвращаемое значение:
// Массив - список счетчиков потребления ресурсов кластера 1С
//
Функция Список(Отбор = Неопределено, ОбновитьПринудительно = Ложь) Экспорт

СписокСчетчиков = Элементы.Список(Отбор, ОбновитьПринудительно);

Возврат СписокСчетчиков;

КонецФункции // Список()

// Функция возвращает счетчиков потребления ресурсов кластера 1С
//
// Параметры:
// ПоляИерархии - Строка - Поля для построения иерархии списка счетчиков потребления ресурсов,
// разделенные ","
// ОбновитьПринудительно - Булево - Истина - обновить список (вызов RAC)
//
// Возвращаемое значение:
// Соответствие - список счетчиков потребления ресурсов кластера 1С
// <имя поля объекта> - Массив(Соответствие), Соответствие - список счетчиков потребления ресурсов
// или следующий уровень
//
Функция ИерархическийСписок(Знач ПоляИерархии, ОбновитьПринудительно = Ложь) Экспорт

СписокСчетчиков = Элементы.ИерархическийСписок(ПоляИерархии, ОбновитьПринудительно);

Возврат СписокСчетчиков;

КонецФункции // ИерархическийСписок()

// Функция возвращает количество счетчиков потребления ресурсов в списке
//
// Возвращаемое значение:
// Число - количество счетчиков потребления ресурсов
//
Функция Количество() Экспорт

Если Элементы = Неопределено Тогда
Возврат 0;
КонецЕсли;

Возврат Элементы.Количество();

КонецФункции // Количество()

// Функция возвращает описание счетчика потребления ресурсов кластера 1С
//
// Параметры:
// Имя - Строка - Имя счетчика потребления ресурсов
// ОбновитьПринудительно - Булево - Истина - принудительно обновить данные (вызов RAC)
//
// Возвращаемое значение:
// Соответствие - описание счетчика потребления ресурсов кластера 1С
//
Функция Получить(Знач Имя, Знач ОбновитьПринудительно = Ложь) Экспорт

Отбор = Новый Соответствие();
Отбор.Вставить("name", Имя);

СписокСчетчиков = Элементы.Список(Отбор, ОбновитьПринудительно);

Если СписокСчетчиков.Количество() = 0 Тогда
Возврат Неопределено;
КонецЕсли;

Возврат СписокСчетчиков[0];

КонецФункции // Получить()

// Процедура добавляет новый счетчик потребления ресурсов в кластер 1С
//
// Параметры:
// Имя - Строка - имя счетчика потребления ресурсов 1С
// ПараметрыСчетчика - Структура - параметры счетчика потребления ресурсов 1С
//
Процедура Добавить(Имя, ПараметрыСчетчика = Неопределено) Экспорт

ПараметрыЗапуска = Новый Массив();
ПараметрыЗапуска.Добавить(Кластер_Агент.СтрокаПодключения());

ПараметрыЗапуска.Добавить("counter");
ПараметрыЗапуска.Добавить("insert");

ПараметрыЗапуска.Добавить(СтрШаблон("--cluster=%1", Кластер_Владелец.Ид()));
ПараметрыЗапуска.Добавить(Кластер_Владелец.СтрокаАвторизации());

ПараметрыЗапуска.Добавить(СтрШаблон("--counter=%1", Имя));

ВремПараметры = ПараметрыОбъекта();

Для Каждого ТекЭлемент Из ВремПараметры Цикл
ЗначениеПараметра = Служебный.ПолучитьЗначениеИзСтруктуры(ПараметрыСчетчика, ТекЭлемент.Ключ, 0);
ПараметрыЗапуска.Добавить(СтрШаблон(ТекЭлемент.Значение.ПараметрКоманды + "=%1", ЗначениеПараметра));
КонецЦикла;

Кластер_Агент.ВыполнитьКоманду(ПараметрыЗапуска);

Лог.Отладка(Кластер_Агент.ВыводКоманды(Ложь));

ОбновитьДанные(Истина);

КонецПроцедуры // Добавить()

// Процедура удаляет счетчик потребления ресурсов из кластера 1С
//
// Параметры:
// Имя - Строка - Имя счетчикf потребления ресурсов
//
Процедура Удалить(Имя) Экспорт

ПараметрыЗапуска = Новый Массив();
ПараметрыЗапуска.Добавить(Кластер_Агент.СтрокаПодключения());

ПараметрыЗапуска.Добавить("counter");
ПараметрыЗапуска.Добавить("remove");

ПараметрыЗапуска.Добавить(СтрШаблон("--сounter=%1", Имя));

ПараметрыЗапуска.Добавить(СтрШаблон("--cluster=%1", Кластер_Владелец.Ид()));
ПараметрыЗапуска.Добавить(Кластер_Владелец.СтрокаАвторизации());

Кластер_Агент.ВыполнитьКоманду(ПараметрыЗапуска);

Лог.Отладка(Кластер_Агент.ВыводКоманды(Ложь));

ОбновитьДанные(Истина);

КонецПроцедуры // Удалить()

Лог = Логирование.ПолучитьЛог("ktb.lib.irac");
Loading

0 comments on commit 2245fa7

Please sign in to comment.