Skip to main content

Python client library for OpenIDE container system

Project description

OpenIDE Client

Python клиентская библиотека для работы с OpenIDE контейнерной системой через HTTP API.

🚀 Установка

pip install openide-client

📖 Быстрый старт

Базовое использование

from openide_client import create_api_client

# Создание клиента
client = create_api_client("127.0.0.1", 5000)

# Проверка здоровья API
health = client.health_check()
print(f"API статус: {health['status']}")

# Создание контейнера
result = client.create_container("python:3.12", "bash")
container_id = result['container_id']
print(f"Контейнер создан: {container_id}")

# Выполнение команды
output = client.exec_command(container_id, "ls -la")
print(f"Результат: {output['output']}")

# Удаление контейнера
client.delete_container(container_id)

Использование CLI

# Проверка здоровья API
openide-client health

# Список контейнеров
openide-client containers

# Создание контейнера
openide-client create python:3.12 bash

# Выполнение команды
openide-client exec <container_id> "ls -la"

# Удаление контейнера
openide-client delete <container_id>

🔧 API Reference

OpenIDEAPIClient

Методы

  • health_check() - Проверка здоровья API
  • list_containers() - Получение списка контейнеров
  • create_container(image, command) - Создание контейнера
  • get_container_info(container_id) - Информация о контейнере
  • execute_command_in_container(container_id, command) - Выполнение команды
  • delete_container(container_id) - Удаление контейнера

Примеры

from openide_client import OpenIDEAPIClient, OpenIDEConfig

# Создание конфигурации
config = OpenIDEConfig(
    api_key="your-api-key",
    base_url="http://127.0.0.1:5000"
)

# Создание клиента
client = OpenIDEAPIClient(config)

# Работа с контейнерами
containers = client.list_containers()
print(f"Найдено контейнеров: {len(containers['containers'])}")

# Создание Python контейнера
result = client.create_container("python:3.12", "bash")
container_id = result['container_id']

# Установка пакетов
client.exec_command(container_id, "pip install requests")

# Запуск Python скрипта
output = client.exec_command(container_id, "python -c 'import requests; print(requests.__version__)'")
print(output['output'])

🐳 Поддерживаемые образы

  • python:3.12 - Python 3.12
  • python:3.11 - Python 3.11
  • python:3.10 - Python 3.10
  • node:18 - Node.js 18
  • node:20 - Node.js 20
  • ubuntu:22.04 - Ubuntu 22.04
  • alpine:3.18 - Alpine Linux

🔐 Безопасность

  • Все контейнеры изолированы в chroot jail
  • Ограничен доступ к родительским директориям
  • Автоматическое управление ресурсами (RAM, CPU)
  • Временные контейнеры с автоочисткой

📝 Примеры использования

Разработка Python приложений

# Создание Python окружения
result = client.create_container("python:3.12", "bash")
container_id = result['container_id']

# Установка зависимостей
client.exec_command(container_id, "pip install flask requests")

# Создание файла
client.exec_command(container_id, "echo 'from flask import Flask\napp = Flask(__name__)\n@app.route(\"/\")\ndef hello():\n    return \"Hello OpenIDE!\"\n\nif __name__ == \"__main__\":\n    app.run(host=\"0.0.0.0\", port=5000)' > app.py")

# Запуск приложения
output = client.exec_command(container_id, "python app.py")

Тестирование Node.js приложений

# Создание Node.js окружения
result = client.create_container("node:18", "bash")
container_id = result['container_id']

# Инициализация проекта
client.exec_command(container_id, "npm init -y")

# Установка зависимостей
client.exec_command(container_id, "npm install express")

# Создание сервера
client.exec_command(container_id, "echo 'const express = require(\"express\");\nconst app = express();\napp.get(\"/\", (req, res) => res.send(\"Hello OpenIDE!\"));\napp.listen(3000, () => console.log(\"Server running on port 3000\"));' > server.js")

# Запуск сервера
output = client.exec_command(container_id, "node server.js")

🛠️ Конфигурация

Переменные окружения

export OPENIDE_API_KEY="your-api-key"
export OPENIDE_BASE_URL="http://127.0.0.1:5000"
export OPENIDE_TIMEOUT="30"

Конфигурационный файл

from openide_client import OpenIDEConfig

config = OpenIDEConfig(
    api_key="your-api-key",
    base_url="http://127.0.0.1:5000",
    timeout=30,
    verify_ssl=True
)

🐛 Обработка ошибок

from openide_client import OpenIDEAPIClient, OpenIDEConfig

try:
    client = OpenIDEAPIClient(OpenIDEConfig(api_key="test"))
    result = client.create_container("python:3.12", "bash")
    print(f"Успех: {result}")
except Exception as e:
    print(f"Ошибка: {e}")

📚 Дополнительные ресурсы

🤝 Поддержка

Если у вас есть вопросы или проблемы:

  1. Создайте issue на GitHub
  2. Напишите на email: artemjson@gmail.com
  3. Проверьте документацию API

📄 Лицензия

MIT License - см. файл LICENSE для подробностей.

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.2.tar.gz (10.6 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.2-py3-none-any.whl (11.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: openide_client-1.1.2.tar.gz
  • Upload date:
  • Size: 10.6 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.2.tar.gz
Algorithm Hash digest
SHA256 23b2bca57d623cecd23c32cd392dec3d5fb03a6f9f3d5947c68cf361ff6b04bf
MD5 8545fddba6c2ffa8bc62b6af533e9163
BLAKE2b-256 5b1fba34fe6d5c14faaa346448bd1731a91202f2846ec375ced050d076e42323

See more details on using hashes here.

File details

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

File metadata

  • Download URL: openide_client-1.1.2-py3-none-any.whl
  • Upload date:
  • Size: 11.9 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 000bb51ba8f744365ecae4518802d4f93be16bc581d65c5b9a38ec83a1dc5d0c
MD5 5fbe93d546aa533dce9a8b40ac7ac501
BLAKE2b-256 00ad3bc89205efd4c4869762bc85760c0b3697d0a4971d8019b69a116936180f

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