Skip to main content

Python client library for OpenIDE API

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.1.0.tar.gz (9.0 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.1.0-py3-none-any.whl (8.4 kB view details)

Uploaded Python 3

File details

Details for the file openide_client-1.1.0.tar.gz.

File metadata

  • Download URL: openide_client-1.1.0.tar.gz
  • Upload date:
  • Size: 9.0 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.1.0.tar.gz
Algorithm Hash digest
SHA256 82c44fae18a26c7a34f418318c791718f531d2ea2e2ba5905aa2d70bd4e467d2
MD5 ac07f5908180e2a936ec2d2a3192e469
BLAKE2b-256 fb87003b4cf499942d817ae59be7940eacf96eb0e15f09e8b8eda10b0d7665cc

See more details on using hashes here.

File details

Details for the file openide_client-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: openide_client-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 8.4 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.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8254109a1dbdfdf0976027ffc4a389c97fef7a1d505a5bf2277768acd615271c
MD5 4ede8f3116fd76e81aa53572502b084e
BLAKE2b-256 e57c0186c64a3c72fa32c2006b2498e4e52e5752f2bc5f9ee76955d3667d2850

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