Встроенные переменные Calculate 2.2

Переменные Calculate 2.2 используются в шаблонах а также в логике программы.
В шаблонах определение переменной заменяется значением переменной.

Описание переменной

Описание каждой переменной состоит из двух частей:
  • параметры переменной (название, права на запись, будет ли напечатана и.т. д)
  • метод определения значения переменной (необязательная часть)
Параметры и методы переменных находятся в разных файлах:
  • файл параметров переменных;
  • файл методов определения значений переменных.
Для пакета calculate-lib:
  • cl_vars.py - параметры переменных
  • cl_fill.py - методы определения значений переменных
Для пакета calculate-desktop:
  • cl_vars_desktop.py - параметры переменных
  • cl_fill_desktop.py - методы определения значений переменных

Аналогично для других пакетов.

Параметры переменной.

Переменная имеет следующие параметры.
  • value - значение переменной, по умолчанию - пустая строка
  • mode - режим доступа к переменной для пользователя, по умолчанию только для чтения. Режимы ("r" - чтение, "w" - запись)
  • official - переменная для внутреннего использования в программе, по умолчанию флаг выключен. Значения (True - внутреннее использование, False - доступна всем). Если official=True - переменная не выводится на печать.
  • dynamic - в случае dynamic=True, при каждом вызове переменной будет вызван метод определения (осторожно, возможно рекурсивное зацикливание в случае циклических зависимостей переменных), по умолчанию dynamic=False. Значения (True - постоянный вызов метода определения, False - метод определения вызывается один раз при первом обращении(при последующих обращениях выдается сохраненное значение полученное при первом обращении))
Примеры определения переменных:
class Data:
    # имя компьютера
    os_net_hostname = {'mode':"w"}
    # разрешенные сети
    os_net_allow = {value:"192.168.0.0/24"}
    # ip на всех интерфейсах
    os_net_ip = {}

В этом примере будут по требованию созданы следующие переменные (значения переменных при отсутствии методов заполнения)
  • os_net_hostname - (значение переменной "", пользователь может изменить значение)
  • os_net_allow - (значение переменной "192.168.0.0/24", пользователь не может изменить значение)
  • os_net_ip - (значение переменной "", пользователь не может изменить значение)

Метод определения значения переменной

Название метода определения значения переменной состоит из 'get_' и имени переменной.
Пример метода определения значения для переменной os_net_ip:

class fillVars()

    def get_os_net_ip(self):
        return "192.168.0.1" 

В этом примере значение переменной os_net_ip будет равно 192.168.0.1

Если для переменной нет метода определения значения, значением этой переменной будет значение по умолчанию из параметров переменной.

Файлы хранения параметров и методов определения значений

Обычно для каждого пакета утилит Calculate 2.2 используется два файла хранения параметров переменных, и два файла хранения методов определения переменных.
Например для пакета calculate-desktop это:

файлы параметров:
  • cl_vars_desktop.py
  • cl_vars.py
файлы методов:
  • cl_fill_desktop.py
  • cl_fill.py

Где, первый из файлов - файл пакета, второй файл из библиотеки calculate-lib.

Запись значения переменной в файл

Значение переменной может быть записано в файл для сохранения и последующего чтения.

Пути к файлам хранения значений переменных находятся в переменной cl_env_path:
  • /etc/calculate/calculate.env
  • /var/calculate/calculate.env
  • /var/calculate/remote/calculate.env

Значение переменной сохраняется в формате samba.
Пример сохраненного значения переменной пакета calculate-client:

[client] 
ld_samba_dn = ou=Samba,ou=Services,dc=calculate
ld_unix_dn = ou=Unix,ou=Services,dc=calculate

Cекция совпадает с названием пакета [client] calculate-client

Значение переменной может храниться в нескольких файлах хранения переменных, в этом случае значением переменной будет значение сохраненной переменной в последнем обработанном файле. То есть приоритет файлов хранения значений переменных обратный их расположению, самый приоритетный файл последний в списке (Наиболее приоритетный файл /var/calculate/remote/calculate.env).

Алгоритм создания переменной.

  1. Выполняется один раз для всех переменных:
    1. Поиск переменных в файлах хранения значений переменных
    2. Поиск параметров переменных для переменных найденных в файлах хранения значений
    3. Поиск методов определения для переменных найденных в файлах хранения значений
    4. Создание переменных на основании параметров и методов определения значений и присвоение им значений из файлов хранения значений переменных
  2. Поиск параметров переменной. (поиск в текущем пакете, затем в библиотеке)
  3. Поиск метода определения значения переменной (поиск в текущем пакете, затем в библиотеке)
  4. Создание переменной на основании параметров и метода определения значения

Поиск параметров переменной происходит сначала в файле параметров этого пакета, затем в библиотеке (calculate-lib).
Такой алгоритм поиска позволяет переопределить параметры для переменной для которой есть параметры в библиотеке (calculate-lib).
Поиск метода определения значения переменной происходит по алгоритму поиска параметров переменных.
Это позволяет переопределить метод определения значения переменной для которой есть метод в библиотеке (calculate-lib).

Группы переменных

Переменные разбиты на группы, в зависимости от типа информации (тип, приложение/служба, функция):
  • cl - общие настройки calculate
  • hr - настройки оборудования
  • ld - атрибуты ldap
  • os - операционная система
  • sr - настройки сервисов
  • ur - информация о пользователе

calculate-lib

Общие переменные

  • cl_env_path - список путей к .env файлам в порядке приоритета, от низкого к высокому.
  • cl_pass_file - полный путь к обрабатываемому в данный момент конфигурационному файлу
  • cl_pass_step - first/next - проход при наложении шаблона (первый, последующие)
  • cl_pass_action - действие программы, используется для выбора директории с шаблонами:
    • profile - генерация профиля пользователя
    • install / uninstall - установка и удаление программы
    • domain / undomain - ввод и вывод из домена
  • hr_virtual - название виртуальной машины (virtualbox, vmware, qemu)
  • os_arch_machine - архитектура системы (i686, x86_64)
  • os_linux_name - полное название системы (прим: Calculate Linux Desktop)
  • os_linux_shortname - короткое название системы (прим: CLD)
  • os_linux_subname - оконный менеджер системы (прим: KDE)
  • os_linux_ver - версия системы (прим: 10.2)
  • os_locale_lang - язык системы (прим: ru_RU)
  • os_locale_language - язык системы (прим: ru)
  • os_locale_locale - локаль системы (прим: ru_RU.UTF-8)
  • os_locale_xkb - раскладка клавиатуры для X (прим: us,ru(winkeys))
  • os_locale_xkbname - названия используемых раскладок клавиатуры для X (прим: us,ru)
  • os_net_allow - разрешенные сети (прим: 10.0.0.0/24)
  • os_net_domain - домен сети (прим: domain.ru)
  • os_net_hostname - имя хоста (прим: comp1)
  • os_net_ip - список ip адресов на всех интерфейсах (прим: 10.0.0.53)
  • os_root_dev - корневой раздел файловой системы (прим: /dev/sda3)
  • os_root_type - тип носителя в котором находится корневой раздел (ram, hdd, usb-hdd, livecd)

calculate-client

  • cl_name - имя программы (прим: calculate-desktop)
  • cl_template_path - список директорий в которых находятся шаблоны
  • cl_remote_ftp - DNS имя сервера с настроенным сервисом FTP под управлением утилит Calculate2 (прим: ftp.domain.ru)
  • cl_remote_host - DNS имя сервера с настроенным сервисом Samba под управлением утилит Calculate2 (прим: office.domain.ru)
  • cl_remote_pw - пароль Samba пользователя client для подключения к серверу под управлением утилит Calculate2
  • cl_root_path - путь к директории относительно которой происходит наложение профилей на файлы системы (прим: /)
  • cl_ver - версия программы (прим: 2.2.0)
  • hr_laptop - если компьютер ноутбук - его производитель
  • hr_video - название производителя видеокарты (прим: ati)
  • hr_x11_height - разрешение X по вертикали (прим: 1024)
  • hr_x11_standart - ближайший стандартный размер изображения к текущему разрешению (прим: 1280x1024)
  • hr_x11_video_drv - название используемого видеодрайвера (прим: radeon)
  • hr_x11_width - разрешение X по горизонтали (прим: 1280)
  • ld_base_dn - базовый суффикс LDAP: dc=calculate
  • ld_bind_dn - dn пользователя bind: cn=proxyuser,dc=calculate
  • ld_bind_pw - пароль пользователя bind: calculate
  • ld_repl_dn - dn пользователя репликации (не используется, оставлена для совместимости)
  • ld_samba_dn - dn админстратора сервиса Samba: ou=Samba,ou=Services,dc=calculate
  • ld_services_dn - dn ветки всех сервисов: ou=Services,dc=calculate
  • ld_unix_dn - dn админстратора сервиса Unix: ou=Unix,ou=Services,dc=calculate
  • os_remote_auth - имя сервера, который используется для авторизации (в случае авторизации на сервере под управлением утилит Calculate2 - DNS имя сервера, в ином случае - local)
  • os_remote_client - версия программы которой в прошлый раз были применены шаблоны (прим: 2.1.9)
  • sr_jabber_crypt - шифрование при работе с настроенным сервисом Jabber под управлением утилит Calculate2 (прим: ssl)
  • sr_jabber_host - DNS имя сервера с настроенным сервисом Jabber под управлением утилит Calculate2 (прим: jabber.domain.ru)
  • sr_jabber_port - порт для подсоединения к сервису Jabber на сервере под управлением утилит Calculate2 (прим: 5223)
  • sr_mail_crypt - шифрование при приеме почты с настроенного сервиса Mail, под управлением утилит Calculate2 (none, tls) (прим: tls)
  • sr_mail_host - DNS имя сервера для приема почты, с настроенным сервисом Mail под управлением утилит Calculate2 (прим: mail.domain.ru)
  • sr_mail_port - порт для подсоединения к сервису Mail для приема почты, на сервере под управлением утилит Calculate2 (прим: 143)
  • sr_mail_send_crypt - шифрование при отправке почты на настроенный сервис Mail, под управлением утилит Calculate2
  • sr_mail_send_host - DNS имя сервера для отправки почты, с настроенным сервисом Mail под управлением утилит Calculate2 (прим: mail.domain.ru)
  • sr_mail_send_port - порт для подсоединения к сервису Mail для отправки почты, на сервер под управлением утилит Calculate2 (прим: 25)
  • sr_mail_type - протокол для получения почты (pop, imap) (прим: imap)
  • sr_proxy_host - DNS имя сервера с настроенным сервисом Proxy под управлением утилит Calculate2 (прим: proxy.domain.ru)
  • sr_proxy_port - порт для подсоединения к сервису Proxy на сервере под управлением утилит Calculate2 (прим: 8080)
  • sr_samba_host - DNS имя сервера с настроенным сервисом Samba под управлением утилит Calculate2 (прим: office.domain.ru)
  • ur_fullname - полное имя пользователя (прим: Иванов Иван Иванович)
  • ur_group - первичная группа пользователя (прим: it)
  • ur_jid - jabber id пользователя (прим: )
  • ur_jid_host - имя хоста из jabber id пользователя (прим: jabber.domain.ru)
  • ur_login - имя пользователя (прим: ivan)
  • ur_mail - почтовый адрес пользователя (прим: )
  • ur_organization - организация пользователя (прим: Компания "Калкулэйт")
  • ur_signature - подпись пользователя (прим: Россия, Санкт-Петербург, пл. Стачек, 4\nhttp://www.calculate.ru \n+7 812 3363632\n+7 495 7727678)
Спасибо!