Система управления зависимостями инфраструктуры — desktop-приложение для визуализации и управления зависимостями между компонентами IT-инфраструктуры, Docker-контейнерами и Godot-проектами.
- Поддержка множества типов объектов:
- 📄 Файлы (Files)
- 🐳 Docker-контейнеры
- 🌐 Роутеры (Routers)
- ⚡ Коммутаторы (Switches)
- 🖥️ Серверы (Servers)
- 💾 Базы данных (Databases)
- Поддержка объектов Godot Engine:
- 🎬 Сцены (Scenes)
- 📜 Скрипты (Scripts)
- 📦 Ресурсы (Resources)
- ⚙️ Autoload-синглтоны
- Графическое представление зависимостей с использованием NetworkX и Matplotlib
- Интерактивное управление графом:
- Перетаскивание узлов мышью для изменения расположения
- Плавное масштабирование колесом мыши
- Панорамирование с помощью средней кнопки мыши или Shift+ЛКМ
- Выделение связей при клике на элементы
- 6 алгоритмов компоновки графа:
- Пружинная (Spring) — физическая симуляция
- Круговая (Circular) — узлы по кругу
- Kamada-Kawai — минимизация энергии
- Спектральная (Spectral) — на основе собственных векторов
- Оболочка (Shell) — концентрические круги
- Иерархическая — древовидное расположение
- Различные формы узлов для разных типов объектов
- 4 цветовые схемы: Default, Dark, Pastel, Vibrant
- Экспорт графа в PNG с высоким разрешением (300 DPI)
- Импорт из конфигурационных файлов:
- Docker Compose (YAML)
- Kubernetes (YAML)
- Godot-проекты (с анализом зависимостей)
- Фильтрация при импорте Godot:
- Исключение текстур (.png, .jpg, .webp, .svg)
- Исключение аудио (.wav, .ogg, .mp3)
- Исключение шрифтов (.ttf, .otf, .woff)
- Сохранение и загрузка проектов в JSON формате
- Многооконный интерфейс — работа с несколькими проектами одновременно
- Поддержка двух языков: Русский и English
- Современный Material Design интерфейс
- Подробная информация об объектах и связях
- Защита от потери данных — предупреждение о несохраненных изменениях
- Python 3.8+
- Linux (Ubuntu 20.04+ или аналогичные дистрибутивы)
- Зависимости Python:
- PyQt5
- networkx
- matplotlib
- PyYAML
git clone https://github.com/AlexandrD7/Dependency_manager.git
cd Dependency-managervenv, так как это имя жёстко задано в скриптах!
python3 -m venv venvsource venv/bin/activatepip install -r requirements.txtExample-файлы (docker-compose-example.yml, kubernetes-example.yaml, example_infrastructure.json) предназначены для демонстрации возможностей импорта и могут быть удалены:
rm docker-compose-example.yml kubernetes-example.yaml example_infrastructure.json# Активируйте виртуальное окружение, если ещё не активировано
source venv/bin/activate
# Запустите приложение
python3 dependency_manager.py# Сделайте скрипт исполняемым (только первый раз)
chmod +x run_dependency_manager.sh
# Запустите приложение
./run_dependency_manager.shСкрипт run_dependency_manager.sh автоматически:
- Проверяет наличие виртуального окружения
venv - Активирует окружение
- Запускает приложение
- Выводит ошибки, если что-то пошло не так
Для удобного запуска из меню приложений используйте скрипт icon.sh:
# Сделайте скрипт исполняемым
chmod +x icon.sh
# Запустите скрипт создания ярлыка
./icon.shЧто делает скрипт:
- Создаёт desktop-файл в
~/.local/share/applications/ - Приложение появится в меню в категории Development → Utility
- Название: Dependency Manager
После выполнения:
- Приложение появится в меню приложений
- Если не появилось сразу — выйдите и войдите в систему или перезагрузитесь
Примечание: Для работы ярлыка необходима иконка dependency_manager_icon.svg в директории проекта.
- Запустите приложение
- Файл → Новый проект (или Ctrl+N)
- Добавьте объекты через вкладку "Объекты"
- Создайте связи через вкладку "Связи"
- Визуализация обновится автоматически
- Перейдите на вкладку "Объекты"
- Нажмите кнопку "Добавить"
- Заполните:
- ID объекта — уникальный идентификатор
- Тип объекта — выберите из списка
- Название — понятное имя
- Описание — дополнительная информация (опционально)
- Нажмите "Сохранить"
- Создайте минимум 2 объекта
- Перейдите на вкладку "Связи"
- Нажмите "Добавить"
- Выберите:
- Исходный объект
- Тип связи (calls, depends_on, connects_to и др.)
- Целевой объект
- Описание (опционально)
- Нажмите "Сохранить"
- Масштабирование: Колесо мыши
- Панорамирование: Средняя кнопка мыши ИЛИ Shift + Левая кнопка мыши ИЛИ кнопка "Перемещение"
- Перетаскивание узлов: Левая кнопка мыши на узле
- Просмотр информации: Клик по узлу
- Выделение связи: Клик по связи в списке
- Файл → Импорт → Docker Compose
- Выберите файл
.ymlили.yaml - Приложение автоматически создаст:
- Контейнеры как объекты типа "docker_container"
- Зависимости между контейнерами
- Volumes как объекты типа "database"
- Файл → Импорт → Kubernetes
- Выберите файл
.ymlили.yaml - Приложение импортирует:
- Deployments как контейнеры
- Services как серверы
- PersistentVolumeClaims как базы данных
- Связи между компонентами
- Файл → Импорт → Godot Project
- Выберите папку с Godot-проектом (содержащую
project.godot) - В диалоге фильтрации выберите, что исключить:
- ☐ Текстуры — исключить изображения
- ☐ Аудио — исключить звуковые файлы
- ☐ Шрифты — исключить файлы шрифтов
- Нажмите "Импортировать"
- Приложение создаст:
- Сцены (.tscn) как объекты типа "godot_scene"
- Скрипты (.gd) как объекты типа "godot_script"
- Ресурсы (.tres) как объекты типа "godot_resource"
- Autoload-модули как объекты типа "godot_autoload"
- Зависимости между всеми компонентами
- Нажмите кнопку "Компоновка" на панели визуализации
- Выберите алгоритм из списка:
- Пружинная (Spring) — хорошо для общих графов
- Круговая (Circular) — узлы равномерно по кругу
- Kamada-Kawai — оптимизация расстояний
- Спектральная (Spectral) — хорошо для кластеров
- Оболочка (Shell) — концентрические уровни
- Иерархическая — для деревьев и DAG
- Нажмите OK для применения
- Нажмите кнопку "Экспорт PNG"
- Выберите место сохранения
- Граф будет сохранён в высоком качестве (300 DPI)
- Сохранить: Файл → Сохранить (Ctrl+S)
- Сохранить как: Файл → Сохранить как... (Ctrl+Shift+S)
- Проект сохраняется в формате JSON со всеми объектами и связями
Приложение поддерживает 4 цветовые схемы:
- Default — яркие контрастные цвета
- Dark — приглушённые тёмные тона
- Pastel — нежные пастельные оттенки
- Vibrant — насыщенные энергичные цвета
Смена схемы: кнопка "Цветовая схема" на панели визуализации.
dependency-manager/
│
├── dependency_manager.py # Основное приложение
├── godot_analyzer.py # Анализатор зависимостей Godot
├── requirements.txt # Python зависимости
├── run_dependency_manager.sh # Скрипт запуска
├── icon.sh # Скрипт создания ярлыка
├── dependency_manager_icon.svg # Иконка приложения
│
├── docker-compose-example.yml # Пример Docker Compose (можно удалить)
├── kubernetes-example.yaml # Пример Kubernetes (можно удалить)
├── example_infrastructure.json # Пример проекта (можно удалить)
│
└── venv/ # Виртуальное окружение
# Проверьте, что виртуальное окружение называется именно venv
ls -la | grep venv
# Убедитесь, что окружение активировано
which python3 # должен показать путь к venv/bin/python3
# Переустановите зависимости
pip install --upgrade -r requirements.txtУбедитесь, что виртуальное окружение:
- Называется строго
venv(неenv, не.venv, не другое имя!) - Находится в корневой директории проекта
- Содержит директорию
bin/с исполняемыми файлами
# Пересоздайте окружение с правильным именем
rm -rf venv
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt# Обновите базу данных desktop-файлов вручную
update-desktop-database ~/.local/share/applications/
# Или выйдите и войдите в систему
# Или перезагрузите компьютер- Убедитесь, что выбрана папка, содержащая файл
project.godot - Проверьте, что проект создан в Godot 4.x (поддержка 3.x ограничена)
- При больших проектах используйте фильтрацию для исключения текстур и аудио
Этот проект распространяется под лицензией MIT. Подробности в файле LICENSE.
- Support for multiple object types:
- 📄 Files
- 🐳 Docker Containers
- 🌐 Routers
- ⚡ Switches
- 🖥️ Servers
- 💾 Databases
- Godot Engine object support:
- 🎬 Scenes
- 📜 Scripts
- 📦 Resources
- ⚙️ Autoload singletons
- Graphical dependency representation using NetworkX and Matplotlib
- Interactive graph control:
- Drag nodes with mouse to reposition
- Smooth zoom with mouse wheel
- Pan with middle mouse button or Shift+LMB
- Highlight connections on click
- 6 graph layout algorithms:
- Spring — force-directed layout
- Circular — nodes arranged in circle
- Kamada-Kawai — energy minimization
- Spectral — eigenvector-based
- Shell — concentric circles
- Hierarchical — tree-like arrangement
- Different node shapes for different object types
- 4 color schemes: Default, Dark, Pastel, Vibrant
- Export graph to high-resolution PNG (300 DPI)
- Import from configuration files:
- Docker Compose (YAML)
- Kubernetes (YAML)
- Godot projects (with dependency analysis)
- Godot import filtering:
- Exclude textures (.png, .jpg, .webp, .svg)
- Exclude audio (.wav, .ogg, .mp3)
- Exclude fonts (.ttf, .otf, .woff)
- Save and load projects in JSON format
- Multi-window interface — work with multiple projects simultaneously
- Bilingual support: Russian and English
- Modern Material Design interface
- Detailed information about objects and relationships
- Data loss protection — warnings about unsaved changes
- Python 3.8+
- Linux (Ubuntu 20.04+ or similar distributions)
- Python Dependencies (installed automatically):
- PyQt5
- networkx
- matplotlib
- PyYAML
git clone https://github.com/AlexandrD7/Dependency_manager.git
cd Dependency-managervenv, as this name is hardcoded in scripts!
python3 -m venv venvsource venv/bin/activatepip install -r requirements.txtExample files (docker-compose-example.yml, kubernetes-example.yaml, example_infrastructure.json) are for demonstration purposes and can be removed:
rm docker-compose-example.yml kubernetes-example.yaml example_infrastructure.json# Activate virtual environment if not already activated
source venv/bin/activate
# Run the application
python3 dependency_manager.py# Make script executable (first time only)
chmod +x run_dependency_manager.sh
# Run the application
./run_dependency_manager.shThe run_dependency_manager.sh script automatically:
- Checks for
venvvirtual environment - Activates the environment
- Launches the application
- Shows errors if something goes wrong
For convenient launch from application menu, use the icon.sh script:
# Make script executable
chmod +x icon.sh
# Run the launcher creation script
./icon.shWhat the script does:
- Creates a desktop file in
~/.local/share/applications/ - Application appears in menu under Development → Utility
- Name: Dependency Manager
After execution:
- Application appears in applications menu
- If not visible immediately — log out and log in, or reboot
Note: The launcher requires dependency_manager_icon.svg icon file in the project directory.
- Launch the application
- File → New Project (or Ctrl+N)
- Add objects via "Objects" tab
- Create relationships via "Relationships" tab
- Visualization updates automatically
- Go to "Objects" tab
- Click "Add" button
- Fill in:
- Object ID — unique identifier
- Object Type — select from list
- Name — readable name
- Description — additional info (optional)
- Click "Save"
- Create at least 2 objects
- Go to "Relationships" tab
- Click "Add"
- Select:
- Source Object
- Relationship Type (calls, depends_on, connects_to, etc.)
- Target Object
- Description (optional)
- Click "Save"
- Zoom: Mouse wheel
- Pan: Middle mouse button OR Shift + Left mouse button OR "Pan" button
- Drag nodes: Left mouse button on node
- View information: Click on node
- Highlight relationship: Click on relationship in list
- File → Import → Docker Compose
- Select
.ymlor.yamlfile - Application automatically creates:
- Containers as "docker_container" objects
- Dependencies between containers
- Volumes as "database" objects
- File → Import → Kubernetes
- Select
.ymlor.yamlfile - Application imports:
- Deployments as containers
- Services as servers
- PersistentVolumeClaims as databases
- Relationships between components
- File → Import → Godot Project
- Select folder with Godot project (containing
project.godot) - In filter dialog, choose what to exclude:
- ☐ Textures — exclude images
- ☐ Audio — exclude sound files
- ☐ Fonts — exclude font files
- Click "Import"
- Application creates:
- Scenes (.tscn) as "godot_scene" objects
- Scripts (.gd) as "godot_script" objects
- Resources (.tres) as "godot_resource" objects
- Autoload modules as "godot_autoload" objects
- Dependencies between all components
- Click "Layout" button on visualization panel
- Select algorithm from list:
- Spring — good for general graphs
- Circular — nodes evenly around circle
- Kamada-Kawai — distance optimization
- Spectral — good for clusters
- Shell — concentric levels
- Hierarchical — for trees and DAGs
- Click OK to apply
- Click "Export PNG" button
- Choose save location
- Graph saved in high quality (300 DPI)
- Save: File → Save (Ctrl+S)
- Save As: File → Save As... (Ctrl+Shift+S)
- Project saved in JSON format with all objects and relationships
# Check that virtual environment is named venv
ls -la | grep venv
# Make sure environment is activated
which python3 # should show path to venv/bin/python3
# Reinstall dependencies
pip install --upgrade -r requirements.txtEnsure the virtual environment:
- Is named exactly
venv(notenv, not.venv, not another name!) - Is in the project root directory
- Contains
bin/directory with executables
# Recreate environment with correct name
rm -rf venv
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt# Update desktop database manually
update-desktop-database ~/.local/share/applications/
# Or log out and log in
# Or reboot the computer- Make sure to select folder containing
project.godotfile - Check that project was created in Godot 4.x (3.x support is limited)
- For large projects, use filtering to exclude textures and audio
dependency-manager/
│
├── dependency_manager.py # Main application
├── godot_analyzer.py # Godot dependency analyzer
├── requirements.txt # Python dependencies
├── run_dependency_manager.sh # Launch script
├── icon.sh # Desktop launcher creation script
├── dependency_manager_icon.svg # Application icon
│
├── docker-compose-example.yml # Docker Compose example (can be deleted)
├── kubernetes-example.yaml # Kubernetes example (can be deleted)
├── example_infrastructure.json # Project example (can be deleted)
│
└── venv/ # Virtual environment
This project is licensed under the MIT License. See LICENSE file for details.