-
Notifications
You must be signed in to change notification settings - Fork 35
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #34 from EvSamigulin/develop
Добавлено управление счетчиками потребления ресурсов
- Loading branch information
Showing
11 changed files
with
793 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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"); |
Oops, something went wrong.