arkuznetsov / irac

Интерфейсная библиотека (oscript) к утилите администрирования кластера серверов 1С (rac).
Mozilla Public License 2.0
75 stars 35 forks source link
1c 1c-enterprise bsl hacktoberfest onescript oscript rac ras

GitHub release GitHub license GitHub Releases GitHub All Releases Build Status Quality Gate Coverage Tech debt

Checked by Silver Bulleters SonarQube BSL plugin

Библиотека управления кластером 1С

Назначение

Библиотека (oscript) irac предоставляет интерфейс управления кластером серверов 1С:Предприятие 8 с использованием утилиты администрирования кластера (RAC).

Принцип работы

Библиотека подключается, как отдельный класс и используется для вызова команд утилиты RAC для взаимодействия с одним экземпляром сервера администрирования кластера 1С.

Используемая кодировка

В некоторых случаях консольная утилита RAC может выводить результат в некорректной кодировке.

Для указания кодировки можно использовать переменную среды RAC_ENCODING. Возможные значения OEM, ANSI, UTF8. По умолчанию используется кодировка UTF8.

В известных случаях для Windows проблему устраняет установка кодировки в значение OEM.

Пример получения списка кластеров, параметров серверов и информационных баз

#Использовать irac
Админ = Новый Структура();
Админ.Вставить("Администратор", "admin");
Админ.Вставить("Пароль", "P@$$w0rd");

Админка = Новый УправлениеКластером1С("8.3", "localhost:1545", Админ);

Кластеры = Админка.Кластеры();

// Обходим список кластеров
Для Каждого Кластер Из Кластеры.Список() Цикл
    Сообщить(Кластер.Получить("Имя"));
КонецЦикла;

// Кластер.УстановитьАдминистратора("<admin>", "<pwd>"); // - указывается если задан администратор кластера

Серверы = Кластер.Серверы();

// Обходим список серверов
Для Каждого Сервер Из Серверы.Список() Цикл

    Сообщить(Сервер.Имя() + " (" + Сервер.АдресСервера() + ":" + Сервер.ПортСервера() + ")");

    Для Каждого ТекАтрибут Из Серверы.ПараметрыОбъекта().ОписаниеСвойств() Цикл
        Сообщить(ТекАтрибут.Ключ + " : " + Сервер.Получить(ТекАтрибут.Значение.Имя));
    КонецЦикла;

КонецЦикла;

ИБ = Кластер.ИнформационныеБазы();

Сообщить("Всего ИБ: " + ИБ.Список().Количество());

// Обходим список информационных баз
Для Каждого ТекИБ Из ИБ.Список() Цикл

    Сообщить(ТекИБ.Имя() + " (" + ?(ТекИБ.ПолноеОписание(), "Полное", "Сокращенное") + " " + ТекИБ.Описание() + ")");

    Для Каждого ТекАтрибут Из ИБ.ПараметрыОбъекта().ОписаниеСвойств() Цикл
        Сообщить(ТекАтрибут.Ключ + " : " + ТекИБ.Получить(ТекАтрибут.Значение.Имя));
    КонецЦикла;

КонецЦикла;

Пример блокировки/разблокировки сеансов в информационной базе


#Использовать irac

Админ = Новый Структура("Администратор, Пароль", "agentAdmin", "P@$$w0rd");
Управление = Новый УправлениеКластером1С("8.3", "localhost:1545", Админ);

Кластер = Управление.Кластеры().Список()[0];
Кластер.УстановитьАдминистратора("clusterAdmin", "P@$$w0rd");

// Получение ИБ по имени
ИБ = Кластер.ИнформационныеБазы().Получить("MyAwesomeDatabase");
ИБ.УстановитьАдминистратора("Администратор", "P@$$w0rd");

// Установка блокировки начала сеансов с базой
ПараметрыИБ = Новый Структура();
ПараметрыИБ.Вставить("НачалоБлокировкиСеансов"   , Дата(20010101));
ПараметрыИБ.Вставить("ОкончаниеБлокировкиСеансов", Дата(20991231));
ПараметрыИБ.Вставить("СообщениеБлокировкиСеансов", "База заблокирована до особых распоряжений");
ПараметрыИБ.Вставить("КодРазрешения"             , "SuperSecretKey");
ПараметрыИБ.Вставить("БлокировкаСеансовВключена" , Перечисления.СостоянияВыключателя.Включено);

ИБ.Изменить(ПараметрыИБ);

// Снятие блокировки начала сеансов с базой
ПараметрыИБ = Новый Структура();
ПараметрыИБ.Вставить("БлокировкаСеансовВключена" , Перечисления.СостоянияВыключателя.Выключено);

ИБ.Изменить(ПараметрыИБ);

Пример блокировки/разблокировки регламентных заданий в информационной базе


#Использовать irac

Админ = Новый Структура("Администратор, Пароль", "agentAdmin", "P@$$w0rd");
Управление = Новый УправлениеКластером1С("8.3", "localhost:1545", Админ);

Кластер.УстановитьАдминистратора("clusterAdmin", "P@$$w0rd");

// Получение ИБ по имени
ИБ = Кластер.ИнформационныеБазы().Получить("MyAwesomeDatabase");
ИБ.УстановитьАдминистратора("Администратор", "P@$$w0rd");

// Установка блокировки регламентных заданий
ПараметрыИБ = Новый Структура();
ПараметрыИБ.Вставить("БлокировкаРегламентныхЗаданийВключена" , Перечисления.СостоянияВыключателя.Включено);

ИБ.Изменить(ПараметрыИБ);
// Снятие блокировки регламентных заданий
ПараметрыИБ = Новый Структура();
ПараметрыИБ.Вставить("БлокировкаРегламентныхЗаданийВключена" , Перечисления.СостоянияВыключателя.Выключено);

ИБ.Изменить(ПараметрыИБ);

Структура основных объектов

УправлениеКластером1С

    |-Администраторы
    |-Кластеры
        |-Администраторы
        |-МенеджерыКластера
        |-Серверы
        |   |-ТребованияНазначения
        |-РабочиеПроцессы
        |   |-Лицензии
        |-ИнформационныеБазы
        |-Сервисы
        |-Сеансы
        |-Соединения
        |   |-Лицензии
        |-Блокировки
        |-ПрофилиБезопасности
        |-СчетчикиПотребленияРесурсов

Объекты и методы

УправлениеКластером1С

Основной класс библиотеки. Предоставляет интерфейс управления серверами 1С.

    Админ = Новый Структура("Администратор, Пароль", "admin", "P@ssw0rd")
    УправлениеКластером = Новый УправлениеКластером1С("8.3.10", "localhost:1545", Админ);
Параметры конструктора
ВерсияИлиПутьКRAC Строка маска версии 1С или путь к утилите RAC
СтрокаПодключенияСервиса Строка адрес:порт сервиса агента администрирования (RAS) (по умолчанию: "localhost:1545")
Администратор Структура параметры администратора агента сервера 1С
   - Администратор    Строка    имя администратора агента сервера 1С
   - Пароль    Строка    пароль администратора агента сервера 1С
Методы
СтрокаПодключения() Строка возвращает строку параметров подключения к агенту администрирования (RAS)
СтрокаАвторизации() Строка возвращает строку параметров авторизации на агенте кластера 1С
УстановитьАдминистратора(Администратор, Пароль) устанавливает параметры авторизации на агенте кластера 1С
ИсполнительКоманд() ИсполнительКоманд возвращает текущий объект-исполнитель команд
УстановитьИсполнительКоманд(НовыйИсполнитель) устанавливает объект-исполнитель команд
ОписаниеПодключения() Строка возвращает строку описания подключения к серверу администрирования кластера 1С
Администраторы() АдминистраторыАгента возвращает список администраторов агента кластера 1С
Кластеры() Кластеры возвращает список кластеров 1С
ВыполнитьКоманду(ПараметрыКоманды) Число передает команду в объект-исполнитель команды и возвращает код возврата команды
ВыводКоманды() Массив(Соответствие) возвращает вывод команды из объекта-исполнитель команд

ИсполнительКоманд

Вспомогательный объект для выполнения команд. Непосредственно вызывает утилиту RAC.

    Админ = Новый Структура("Администратор, Пароль", "admin", "P@ssw0rd")
    УправлениеКластером = Новый УправлениеКластером1С("8.3.10", "localhost:1545", Админ);
    УправлениеКластером.УстановитьИсполнительКоманд(Новый ИсполнительКоманд("8.3"));
Параметры конструктора
ВерсияИлиПутьКRAC Строка маска версии 1С или путь к утилите RAC
Методы
ВерсияRAC() Строка возвращает версию утилиты RAC
ПутьКRAC() Строка возвращает путь к утилите RAC
УстановитьПутьКRAC(Путь) устанавливает переданный путь к утилите RAC
ВыполнитьКоманду(ПараметрыКоманды) Массив(Соответствие) выполняет команду и возвращает код возврата
ВыводКоманды(РазобратьВывод) Строка/Массив(Соответствие) возвращает вывод команды
КодВозврата() Число возвращает код возврата выполнения команды

Кластеры

Объект предоставляет доступ к списку кластеров, доступных для администрирования.

    Админ = Новый Структура("Администратор, Пароль", "admin", "P@ssw0rd")
    УправлениеКластером = Новый УправлениеКластером1С("8.3.10", "localhost:1545", Админ);
    СписокКластеров = Новый Кластеры(УправлениеКластером);
    Админ = Новый Структура("Администратор, Пароль", "admin", "P@ssw0rd")
    УправлениеКластером = Новый УправлениеКластером1С("8.3.10", "localhost:1545", Админ);
    СписокКластеров = УправлениеКластером.Кластеры();
Параметры конструктора
АгентКластера УправлениеКластером1С ссылка на родительский объект агент кластера
Методы
ОбновитьДанные(РежимОбновления) обновляет список кластеров вызывая утилиту RAC
ПараметрыОбъекта() Соответствие список параметров объекта кластера
Список(Отбор, РежимОбновления) возвращает список кластеров, соответствующих отбору
ВыполнитьКоманду(ПараметрыКоманды) Массив(Соответствие) выполняет команду и возвращает код возврата
ВыводКоманды(РазобратьВывод) Строка/Массив(Соответствие) возвращает вывод команды
КодВозврата() Число возвращает код возврата выполнения команды