Python client library for OpenIDE container system
Project description
OpenIDE Client
Python клиентская библиотека для работы с OpenIDE - изолированной контейнерной системой для разработки.
🚀 Возможности
- Изолированная разработка - создание контейнеров для изолированной работы
- HTTP API - REST API для управления контейнерами
- Python/Node.js - поддержка различных языков программирования
- Виртуальные окружения - управление venv и npm окружениями
- Файловые операции - работа с файлами и папками в контейнерах
- Simple команды - упрощенные команды для работы внутри контейнеров
📦 Установка
pip install openide-client
🔧 Быстрый старт
Базовое использование
from openide_client import OpenIDEClient, OpenIDEConfig
# Создаем конфигурацию
config = OpenIDEConfig(
openide_directory="B:/Projects/Cursor/OpenIDE",
timeout=30
)
# Создаем клиент
client = OpenIDEClient(config)
# Запускаем контейнер
result = client.run_container(
image="ubuntu:latest",
command="echo Hello World!",
detach=True
)
print(f"Container ID: {result['container_id']}")
# Список контейнеров
containers = client.list_containers()
print(f"Active containers: {len(containers)}")
# Остановка контейнера
client.stop_container(result['container_id'])
# Удаление контейнера
client.remove_container(result['container_id'])
HTTP API клиент
import requests
# Проверка здоровья API
response = requests.get('http://localhost:5000/api/health')
print(f"API Status: {response.json()}")
# Создание контейнера
response = requests.post('http://localhost:5000/api/containers', json={
'image': 'ubuntu:latest',
'command': 'echo Hello World!',
'detach': True
})
container = response.json()
print(f"Container ID: {container['container_id']}")
# Выполнение команды в контейнере
response = requests.post(f'http://localhost:5000/api/containers/{container["container_id"]}/exec', json={
'command': 'ls -la'
})
result = response.json()
print(f"Command result: {result['result']}")
Simple команды
# Создание venv
client.exec_command(container_id, "venv myenv{3.13.5}")
# Создание файлов
client.exec_command(container_id, "file create pyfile{hello}")
client.exec_command(container_id, "file create filename{test.txt}")
# Создание папок
client.exec_command(container_id, "folder create foldername{src}")
# Установка пакетов
client.exec_command(container_id, "localpip install requests")
# Запуск Python скрипта
client.exec_command(container_id, "run: python{hello.py}")
📚 API Reference
OpenIDEClient
Основной класс для работы с OpenIDE.
Методы
run_container(image, command, **kwargs)- запуск контейнераlist_containers()- список контейнеровstop_container(container_id)- остановка контейнераremove_container(container_id)- удаление контейнераinspect_container(container_id)- информация о контейнереexec_command(container_id, command)- выполнение команды
OpenIDEConfig
Конфигурация клиента.
Параметры
openide_directory- путь к директории OpenIDEtimeout- таймаут операций (по умолчанию 30 сек)api_key- API ключ для аутентификации
🌐 HTTP API
Эндпоинты
| Метод | Эндпоинт | Описание |
|---|---|---|
| GET | /api/health |
Проверка здоровья API |
| GET | /api/containers |
Список контейнеров |
| POST | /api/containers |
Создание контейнера |
| GET | /api/containers/{id} |
Информация о контейнере |
| DELETE | /api/containers/{id} |
Удаление контейнера |
| POST | /api/containers/{id}/exec |
Выполнение команды |
| GET | /api/system |
Информация о системе |
Запуск HTTP API сервера
# Установи зависимости
pip install flask flask-cors
# Запусти HTTP API сервер
python openide_http_api.py --host 0.0.0.0 --port 5000
🔑 API ключи
# Создание API ключа
openide api-generate "My API Key" --permissions "run,ps,inspect,exec"
# Список API ключей
openide api-keys
📖 Примеры
CI/CD Pipeline
def deploy_application():
client = OpenIDEClient(config)
# Собери образ
build_result = client.build_image("./Dockerfile", "myapp:latest")
print("✅ Образ собран")
# Запусти контейнер
container = client.run_container(
image="myapp:latest",
command="python app.py",
detach=True,
ports={"8080": "8080"}
)
print(f"✅ Приложение запущено: {container['container_id']}")
return container['container_id']
Мониторинг контейнеров
import time
def monitor_containers():
client = OpenIDEClient(config)
while True:
containers = client.list_containers()
print(f"Active containers: {len(containers)}")
for container in containers:
print(f"ID: {container['id']}, Status: {container['status']}")
time.sleep(5)
# Запусти мониторинг
monitor_containers()
🛠️ Разработка
Установка для разработки
git clone https://github.com/artemjs/OpenIDE.git
cd OpenIDE
pip install -e .
Запуск тестов
pytest tests/
Форматирование кода
black openide_client/
flake8 openide_client/
📄 Лицензия
MIT License
🤝 Вклад в проект
- Форкните репозиторий
- Создайте ветку для новой функции (
git checkout -b feature/amazing-feature) - Зафиксируйте изменения (
git commit -m 'Add amazing feature') - Отправьте в ветку (
git push origin feature/amazing-feature) - Откройте Pull Request
📞 Поддержка
- GitHub Issues: https://github.com/artemjs/OpenIDE/issues
- Документация: https://github.com/artemjs/OpenIDE/blob/main/README.md
🎯 Roadmap
- Поддержка Docker образов
- Web UI для управления контейнерами
- Интеграция с популярными IDE
- Поддержка Kubernetes
- Мониторинг и логирование
Удачного кодинга! 🚀
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
openide_client-1.0.2.tar.gz
(15.9 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file openide_client-1.0.2.tar.gz.
File metadata
- Download URL: openide_client-1.0.2.tar.gz
- Upload date:
- Size: 15.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
753881cc37705d8b19cedd1d738f121a96904a00512eee2e06114a68dde67474
|
|
| MD5 |
563704f3e4470e825e98fff75f2cea9f
|
|
| BLAKE2b-256 |
99da737ccb4176bfbad47b76eb4e85c5b249e49280083aee158a508b344f54dc
|
File details
Details for the file openide_client-1.0.2-py3-none-any.whl.
File metadata
- Download URL: openide_client-1.0.2-py3-none-any.whl
- Upload date:
- Size: 13.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cb281c679715e06cab0c80d889bd494bbd1fcef0139854372a92f4a1dfd62d2f
|
|
| MD5 |
5d4e3612528928b489195536ef77eb88
|
|
| BLAKE2b-256 |
d127833c3a7a46bedddb051e0737916ee543a2e40f5b455bf980c409469288fc
|