Skip to main content

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 - путь к директории OpenIDE
  • timeout - таймаут операций (по умолчанию 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

🤝 Вклад в проект

  1. Форкните репозиторий
  2. Создайте ветку для новой функции (git checkout -b feature/amazing-feature)
  3. Зафиксируйте изменения (git commit -m 'Add amazing feature')
  4. Отправьте в ветку (git push origin feature/amazing-feature)
  5. Откройте Pull Request

📞 Поддержка

🎯 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)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

openide_client-1.0.2-py3-none-any.whl (13.8 kB view details)

Uploaded Python 3

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

Hashes for openide_client-1.0.2.tar.gz
Algorithm Hash digest
SHA256 753881cc37705d8b19cedd1d738f121a96904a00512eee2e06114a68dde67474
MD5 563704f3e4470e825e98fff75f2cea9f
BLAKE2b-256 99da737ccb4176bfbad47b76eb4e85c5b249e49280083aee158a508b344f54dc

See more details on using hashes here.

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

Hashes for openide_client-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 cb281c679715e06cab0c80d889bd494bbd1fcef0139854372a92f4a1dfd62d2f
MD5 5d4e3612528928b489195536ef77eb88
BLAKE2b-256 d127833c3a7a46bedddb051e0737916ee543a2e40f5b455bf980c409469288fc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page