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()- Проверка здоровья APIlist_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.12python:3.11- Python 3.11python:3.10- Python 3.10node:18- Node.js 18node:20- Node.js 20ubuntu:22.04- Ubuntu 22.04alpine: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}")
📚 Дополнительные ресурсы
🤝 Поддержка
Если у вас есть вопросы или проблемы:
- Создайте issue на GitHub
- Напишите на email: artemjson@gmail.com
- Проверьте документацию 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)
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.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
23b2bca57d623cecd23c32cd392dec3d5fb03a6f9f3d5947c68cf361ff6b04bf
|
|
| MD5 |
8545fddba6c2ffa8bc62b6af533e9163
|
|
| BLAKE2b-256 |
5b1fba34fe6d5c14faaa346448bd1731a91202f2846ec375ced050d076e42323
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
000bb51ba8f744365ecae4518802d4f93be16bc581d65c5b9a38ec83a1dc5d0c
|
|
| MD5 |
5fbe93d546aa533dce9a8b40ac7ac501
|
|
| BLAKE2b-256 |
00ad3bc89205efd4c4869762bc85760c0b3697d0a4971d8019b69a116936180f
|