Логи и конфиги переработаны, добавлен модуль ZFS и ведется работа с телеграм-ботом
This commit is contained in:
@@ -1,12 +1,11 @@
|
||||
#!/usr/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Примеры использования модуля c1_cluster.py новым способом
|
||||
Демонстрирует прямое использование C1ClusterOperations без основного класса ssh
|
||||
Примеры использования модуля c1_cluster через единый SSHClient.
|
||||
Паттерн: SSHClient + connect() + set_c1_config() + операции + close()
|
||||
"""
|
||||
import config
|
||||
from modules.ssh_base import SSHBase
|
||||
from modules.c1_cluster import C1ClusterOperations
|
||||
from modules import SSHClient
|
||||
|
||||
|
||||
def example_basic_usage():
|
||||
@@ -17,37 +16,27 @@ def example_basic_usage():
|
||||
print("Пример 1: Базовое использование модуля c1_cluster")
|
||||
print("=" * 60)
|
||||
|
||||
# Загружаем конфигурацию
|
||||
cfg = config.get_config()
|
||||
|
||||
# Создаем SSH подключение
|
||||
ssh_client = SSHBase(
|
||||
client = SSHClient(
|
||||
hostname=cfg['ssh']['hostname'],
|
||||
port=cfg['ssh']['port'],
|
||||
username=cfg['ssh']['username'],
|
||||
pkey_file=cfg['ssh']['pkey_file'],
|
||||
host_keys=cfg['ssh']['host_keys']
|
||||
host_keys=cfg['ssh']['host_keys'],
|
||||
)
|
||||
|
||||
# Подключаемся
|
||||
ssh_client.connect()
|
||||
|
||||
# Создаем экземпляр модуля 1С кластера с параметрами из конфига
|
||||
lxc_container = cfg['c1']['lxc_container_name']
|
||||
cluster_user = cfg['c1']['cluster_user']
|
||||
cluster_password = cfg['c1']['cluster_password']
|
||||
c1_cluster = C1ClusterOperations(ssh_client, lxc_container, cluster_user, cluster_password)
|
||||
|
||||
# Получаем версию кластера
|
||||
version = c1_cluster.cluster_version()
|
||||
client.connect()
|
||||
client.set_c1_config(
|
||||
cfg['c1']['lxc_container_name'],
|
||||
cfg['c1']['cluster_user'],
|
||||
cfg['c1']['cluster_password'],
|
||||
)
|
||||
|
||||
version = client.cluster_version()
|
||||
print(f"Версия кластера 1С: {version}")
|
||||
|
||||
# Получаем ID кластера
|
||||
cluster_id = c1_cluster.cluster_id()
|
||||
cluster_id = client.cluster_id()
|
||||
print(f"ID кластера 1С: {cluster_id}")
|
||||
|
||||
# Закрываем соединение
|
||||
ssh_client.close()
|
||||
|
||||
client.close()
|
||||
print("\n")
|
||||
|
||||
|
||||
@@ -61,22 +50,21 @@ def example_get_base_list():
|
||||
|
||||
cfg = config.get_config()
|
||||
|
||||
ssh_client = SSHBase(
|
||||
client = SSHClient(
|
||||
hostname=cfg['ssh']['hostname'],
|
||||
port=cfg['ssh']['port'],
|
||||
username=cfg['ssh']['username'],
|
||||
pkey_file=cfg['ssh']['pkey_file']
|
||||
pkey_file=cfg['ssh']['pkey_file'],
|
||||
host_keys=cfg['ssh'].get('host_keys', '~/.ssh/known_hosts'),
|
||||
)
|
||||
ssh_client.connect()
|
||||
|
||||
# Создаем экземпляр модуля 1С кластера с параметрами из конфига
|
||||
lxc_container = cfg['c1']['lxc_container_name']
|
||||
cluster_user = cfg['c1']['cluster_user']
|
||||
cluster_password = cfg['c1']['cluster_password']
|
||||
c1_cluster = C1ClusterOperations(ssh_client, lxc_container, cluster_user, cluster_password)
|
||||
|
||||
# Получаем список баз данных
|
||||
bases = c1_cluster.base_list()
|
||||
client.connect()
|
||||
client.set_c1_config(
|
||||
cfg['c1']['lxc_container_name'],
|
||||
cfg['c1']['cluster_user'],
|
||||
cfg['c1']['cluster_password'],
|
||||
)
|
||||
|
||||
bases = client.base_list()
|
||||
|
||||
print(f"Найдено баз данных: {len(bases)}")
|
||||
for base in bases:
|
||||
@@ -85,7 +73,7 @@ def example_get_base_list():
|
||||
base_id = base['id'][0] if base.get('id') and len(base['id']) > 0 else 'N/A'
|
||||
print(f" - {base_name} (ID: {base_id})")
|
||||
|
||||
ssh_client.close()
|
||||
client.close()
|
||||
print("\n")
|
||||
|
||||
|
||||
@@ -99,28 +87,27 @@ def example_get_base_info():
|
||||
|
||||
cfg = config.get_config()
|
||||
|
||||
ssh_client = SSHBase(
|
||||
client = SSHClient(
|
||||
hostname=cfg['ssh']['hostname'],
|
||||
port=cfg['ssh']['port'],
|
||||
username=cfg['ssh']['username'],
|
||||
pkey_file=cfg['ssh']['pkey_file']
|
||||
pkey_file=cfg['ssh']['pkey_file'],
|
||||
host_keys=cfg['ssh'].get('host_keys', '~/.ssh/known_hosts'),
|
||||
)
|
||||
client.connect()
|
||||
client.set_c1_config(
|
||||
cfg['c1']['lxc_container_name'],
|
||||
cfg['c1']['cluster_user'],
|
||||
cfg['c1']['cluster_password'],
|
||||
)
|
||||
ssh_client.connect()
|
||||
|
||||
# Создаем экземпляр модуля 1С кластера с параметрами из конфига
|
||||
lxc_container = cfg['c1']['lxc_container_name']
|
||||
cluster_user = cfg['c1']['cluster_user']
|
||||
cluster_password = cfg['c1']['cluster_password']
|
||||
infobase_user = cfg['c1']['infobase_user']
|
||||
infobase_password = cfg['c1']['infobase_password']
|
||||
c1_cluster = C1ClusterOperations(ssh_client, lxc_container, cluster_user, cluster_password)
|
||||
|
||||
# Получаем список баз из конфигурации
|
||||
|
||||
bases_to_process = cfg['migration'].get('bases', [])
|
||||
|
||||
if not bases_to_process:
|
||||
print("Список баз для обработки не указан в конфигурации (migration.bases)")
|
||||
ssh_client.close()
|
||||
client.close()
|
||||
return
|
||||
|
||||
print(f"Обработка {len(bases_to_process)} баз данных из конфигурации:")
|
||||
@@ -134,12 +121,12 @@ def example_get_base_info():
|
||||
|
||||
try:
|
||||
# Получаем ID базы
|
||||
base_id = c1_cluster.base_id(base_name)
|
||||
base_id = client.base_id(base_name)
|
||||
if base_id:
|
||||
print(f"ID базы данных '{base_name}': {base_id}")
|
||||
|
||||
# Получаем полную информацию о базе
|
||||
base_info = c1_cluster.base_info(base_name, infobase_user, infobase_password)
|
||||
base_info = client.base_info(base_name, infobase_user, infobase_password)
|
||||
|
||||
if base_info:
|
||||
print(f"\nИнформация о базе данных '{base_name}':")
|
||||
@@ -154,7 +141,7 @@ def example_get_base_info():
|
||||
|
||||
print()
|
||||
|
||||
ssh_client.close()
|
||||
client.close()
|
||||
print("\n")
|
||||
|
||||
|
||||
@@ -168,13 +155,14 @@ def example_update_base_info():
|
||||
|
||||
cfg = config.get_config()
|
||||
|
||||
ssh_client = SSHBase(
|
||||
client = SSHClient(
|
||||
hostname=cfg['ssh']['hostname'],
|
||||
port=cfg['ssh']['port'],
|
||||
username=cfg['ssh']['username'],
|
||||
pkey_file=cfg['ssh']['pkey_file']
|
||||
pkey_file=cfg['ssh']['pkey_file'],
|
||||
host_keys=cfg['ssh'].get('host_keys', '~/.ssh/known_hosts'),
|
||||
)
|
||||
ssh_client.connect()
|
||||
client.connect()
|
||||
|
||||
# Создаем экземпляр модуля 1С кластера с параметрами из конфига
|
||||
lxc_container = cfg['c1']['lxc_container_name']
|
||||
@@ -182,8 +170,8 @@ def example_update_base_info():
|
||||
cluster_password = cfg['c1']['cluster_password']
|
||||
infobase_user = cfg['c1']['infobase_user']
|
||||
infobase_password = cfg['c1']['infobase_password']
|
||||
c1_cluster = C1ClusterOperations(ssh_client, lxc_container, cluster_user, cluster_password)
|
||||
|
||||
client.set_c1_config(lxc_container, cluster_user, cluster_password)
|
||||
|
||||
# Параметры базы данных PostgreSQL
|
||||
db_server = cfg['c1']['db_server']
|
||||
db_name = cfg['c1'].get('db_name', '')
|
||||
@@ -199,7 +187,7 @@ def example_update_base_info():
|
||||
|
||||
if not bases_to_process:
|
||||
print("Список баз для обработки не указан в конфигурации (migration.bases)")
|
||||
ssh_client.close()
|
||||
client.close()
|
||||
return
|
||||
|
||||
print(f"Обработка {len(bases_to_process)} баз данных из конфигурации:")
|
||||
@@ -231,7 +219,7 @@ def example_update_base_info():
|
||||
print(f" Запрет сеансов: {sessions_deny}")
|
||||
|
||||
# Обновляем информацию о базе
|
||||
updated_base_id = c1_cluster.base_info_update(
|
||||
updated_base_id = client.base_info_update(
|
||||
base_name, db_server, actual_db_name, db_user, db_password,
|
||||
infobase_user, infobase_password,
|
||||
scheduled_jobs_deny, sessions_deny
|
||||
@@ -246,7 +234,7 @@ def example_update_base_info():
|
||||
|
||||
print()
|
||||
|
||||
ssh_client.close()
|
||||
client.close()
|
||||
print("\n")
|
||||
|
||||
|
||||
@@ -260,29 +248,30 @@ def example_workflow():
|
||||
|
||||
cfg = config.get_config()
|
||||
|
||||
ssh_client = SSHBase(
|
||||
client = SSHClient(
|
||||
hostname=cfg['ssh']['hostname'],
|
||||
port=cfg['ssh']['port'],
|
||||
username=cfg['ssh']['username'],
|
||||
pkey_file=cfg['ssh']['pkey_file']
|
||||
pkey_file=cfg['ssh']['pkey_file'],
|
||||
host_keys=cfg['ssh'].get('host_keys', '~/.ssh/known_hosts'),
|
||||
)
|
||||
ssh_client.connect()
|
||||
client.connect()
|
||||
|
||||
# Создаем экземпляр модуля 1С кластера с параметрами из конфига
|
||||
lxc_container = cfg['c1']['lxc_container_name']
|
||||
cluster_user = cfg['c1']['cluster_user']
|
||||
cluster_password = cfg['c1']['cluster_password']
|
||||
c1_cluster = C1ClusterOperations(ssh_client, lxc_container, cluster_user, cluster_password)
|
||||
|
||||
client.set_c1_config(lxc_container, cluster_user, cluster_password)
|
||||
|
||||
try:
|
||||
# Шаг 1: Получаем версию кластера
|
||||
print("Шаг 1: Получение версии кластера...")
|
||||
version = c1_cluster.cluster_version()
|
||||
version = client.cluster_version()
|
||||
print(f" Версия: {version}")
|
||||
|
||||
# Шаг 2: Запускаем демон кластера
|
||||
print("\nШаг 2: Запуск демона кластера...")
|
||||
err = c1_cluster.cluster_daemon_start()
|
||||
err = client.cluster_daemon_start()
|
||||
if err:
|
||||
print(f" Предупреждение: {err}")
|
||||
else:
|
||||
@@ -290,12 +279,12 @@ def example_workflow():
|
||||
|
||||
# Шаг 3: Получаем ID кластера
|
||||
print("\nШаг 3: Получение ID кластера...")
|
||||
cluster_id = c1_cluster.cluster_id()
|
||||
cluster_id = client.cluster_id()
|
||||
print(f" ID кластера: {cluster_id}")
|
||||
|
||||
# Шаг 4: Получаем список баз данных
|
||||
print("\nШаг 4: Получение списка баз данных...")
|
||||
bases = c1_cluster.base_list()
|
||||
bases = client.base_list()
|
||||
print(f" Найдено баз: {len(bases)}")
|
||||
|
||||
# Шаг 5: Для каждой базы получаем ID
|
||||
@@ -303,13 +292,13 @@ def example_workflow():
|
||||
for base in bases:
|
||||
if base.get('name') and len(base['name']) > 0:
|
||||
base_name = base['name'][0]
|
||||
base_id = c1_cluster.base_id(base_name)
|
||||
base_id = client.base_id(base_name)
|
||||
print(f" {base_name}: {base_id}")
|
||||
|
||||
except Exception as e:
|
||||
print(f"Ошибка: {e}")
|
||||
finally:
|
||||
ssh_client.close()
|
||||
client.close()
|
||||
|
||||
print("\n")
|
||||
|
||||
@@ -323,28 +312,28 @@ def example_context_manager_style():
|
||||
print("=" * 60)
|
||||
|
||||
cfg = config.get_config()
|
||||
ssh_client = None
|
||||
client = None
|
||||
|
||||
try:
|
||||
ssh_client = SSHBase(
|
||||
client = SSHClient(
|
||||
hostname=cfg['ssh']['hostname'],
|
||||
port=cfg['ssh']['port'],
|
||||
username=cfg['ssh']['username'],
|
||||
pkey_file=cfg['ssh']['pkey_file']
|
||||
)
|
||||
ssh_client.connect()
|
||||
client.connect()
|
||||
|
||||
# Создаем экземпляр модуля 1С кластера с параметрами из конфига
|
||||
lxc_container = cfg['c1']['lxc_container_name']
|
||||
cluster_user = cfg['c1']['cluster_user']
|
||||
cluster_password = cfg['c1']['cluster_password']
|
||||
c1_cluster = C1ClusterOperations(ssh_client, lxc_container, cluster_user, cluster_password)
|
||||
|
||||
client.set_c1_config(lxc_container, cluster_user, cluster_password)
|
||||
|
||||
# Получаем версию и список баз
|
||||
version = c1_cluster.cluster_version()
|
||||
version = client.cluster_version()
|
||||
print(f"Версия кластера: {version}")
|
||||
|
||||
bases = c1_cluster.base_list()
|
||||
bases = client.base_list()
|
||||
print(f"Список баз данных ({len(bases)} шт.):")
|
||||
for base in bases[:3]: # Показываем только первые 3
|
||||
if base.get('name') and len(base['name']) > 0:
|
||||
@@ -353,8 +342,8 @@ def example_context_manager_style():
|
||||
except Exception as e:
|
||||
print(f"Произошла ошибка: {e}")
|
||||
finally:
|
||||
if ssh_client:
|
||||
ssh_client.close()
|
||||
if client:
|
||||
client.close()
|
||||
print("Соединение закрыто")
|
||||
|
||||
print("\n")
|
||||
@@ -362,7 +351,7 @@ def example_context_manager_style():
|
||||
|
||||
if __name__ == "__main__":
|
||||
print("\n" + "=" * 60)
|
||||
print("Примеры использования модуля c1_cluster.py")
|
||||
print("Примеры использования модуля client.py")
|
||||
print("=" * 60 + "\n")
|
||||
|
||||
# Раскомментируйте нужные примеры для запуска
|
||||
|
||||
Reference in New Issue
Block a user