Skip to content

Instantly share code, notes, and snippets.

@artbear
Forked from JohnyDeath/SAC_example.py
Created March 16, 2020 17:42
Show Gist options
  • Save artbear/6035f681b745a7b066f64f372b816af9 to your computer and use it in GitHub Desktop.
Save artbear/6035f681b745a7b066f64f372b816af9 to your computer and use it in GitHub Desktop.
# coding: utf-8
################################################################################
# В данном файле описана заготовка для создания скриптов для
# 1С:Центра Автоматизации. Все поставляемые скрипты написаны по данному шаблону,
# поэтому можно любой скрипт использовать как пример.
################################################################################
# Этот модуль требуется импортировать в начале каждого скрипта.
from lib.common import bootstrap
# Экспорт базового класса для сценария. Он отвечает за настройку логгирования,
# базовую валидацию параметров, перехват исключений и корректное завершение
# скрипта и т.д.
from lib.common.base_scenario import BaseScenario
# Экспорт класса ошибок.
from lib.common.errors import SACError
# Далее могут экспоритроваться любые модули.
# Структура lib :
# | -- common : базовая функциональность для скриптов
# | |-- base_scenario : базовые классы для сценариев
# | |-- bootstrap : модуль, в котором производится первоначальная настройка
# | |-- config : определение базового класса для описания конфигурации
# | сценария и вспомогательные функции (в т.ч. StrPathExpanded)
# | |-- const : описание некоторых констант
# | |-- errors : описание ошибок и реализация класса ошибок SACError
# | |-- global_vars : содержит в себе глобальные переменны
# | |-- logger : содержит в себе глобальный объект логгера global_logger и
# | класс LogFunc, который предназначен для замера времени
# |
# |-- utils : вспомогательные функции, классы (сам модуль также содержит в себе
# | функции и классы)
# | |-- apache : функции для работы с Apache
# | |-- cmd : содержит в себе инструменты для запуска внешних утилит
# | |-- cvt : содержит в себе функции для конвертации типов
# | |-- fs : содержит в себе инструменты для работы с файловой системой
# |
# |-- linux_utils : вспомогательные утилиты для Linux (сам модуль также содержит
# | в себе функции и классы)
# | |-- deb : содержит инструменты для работы с DEB системами
# | |-- rpm : содержит инструменты для работы с RPM системами
# | |-- apache : функции для работы с Apache
# | |-- service : инструменты для работы с сервисами
# | |-- platform_installer : реализация установки платформы
# | |-- platform_remover : реализация удаления платформы
# |
# |-- win_utils : вспомогательные утилиты для Windows (сам модуль также содержит
# | в себе функции и классы)
# | |-- apache : функции для работы с Apache
# | |-- service : инструменты для работы с сервисами
# | |-- platform_installer : реализация установки платформы
# | |-- platform_remover : реализация удаления платформы
# | |-- iis : функции для работы с IIS
# | |-- permissions : функции дял проверки прав
# |
# |-- proc_tree_controller : утилита для запуска процессов и контроля всего
# | дерева процессов
#
# Также в lib лежит код, который требуется отдельным сценариям и не предназначен
# для переиспользования.
## Основной класс, реализующий сценарий. Более детально можно посмотреть в
# lib/common/base_scenario.py .
class ExampleScenario(BaseScenario):
# Базовый класс имеет 2 поля, которые можно использовать внутри методов:
#
# self.config - ScenarioConfiguration объект, который хранит в себе
# данные, пришедшие извне. К этому объекту можно обращаться как к словарю,
# т.е., например, self.config["input-parameter"]. Этот словарь всегда
# содержит параметры "os-type" и "arch".
#
# self.tmp - путь ко временной директории, которая будет удалена по
# завершению работы скрипта. Ее можно использовать для любых целей.
## Метод, который валидирует входные данные. Что валидация считалась
# неуспешной, метод должен выбросить исключение (любое). В противном случае
# валидация считается успешной.
def _validate_specific_data(self):
pass
## Метод, который выполняется после инициализации скрипта и прохождения
# валидации. Тут могут быть выполнены любые действия, которые нужны перед
# началом теста.
def _after_init(self):
pass
## Метод, который возвращает список тестов, которые необходимо провести.
# Каждый тест должен быть функцией, не принимающей параметры.
# Возвращаемый список должен содержать кортежи (имя теста, функция,
# выполнять только если тест не ограничивается).
def _get_available_tests(self):
return [
("test-name", lambda: True, False),
]
## Метод, реализующий основную логику. Он запускается в случае, если
# test-mode == False.
def _real(self):
pass
# Позволяет запускать сценарий, если данный файл был запущен напрямую.
if __name__ == "__main__":
ExampleScenario.main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment