Files
composer/composer/connector.py
2026-01-03 12:13:45 -08:00

61 lines
1.7 KiB
Python

from agent import *
from flask import Flask
import json
class Connector:
@staticmethod
def get_composer_info(composer):
return {
"name": composer.name,
"running": len(composer.docker.compose.ps()),
"stopped": len(composer.services) - len(composer.docker.compose.ps()),
"remote": composer.repo.remotes.origin.url
}
@staticmethod
def get_container_info(composer, container_name):
if container_name not in composer.services:
return None
container = composer.services[container_name]
return {
"image": container.config.image,
"status": container.get_status()
}
@staticmethod
def set_composer_status(composer, status):
composer.set_status(status)
@staticmethod
def set_container_status(composer, container_name, status):
if container_name not in composer.services:
return None
composer.services[container_name].set_status(status)
Setup.populate_store()
Setup.create_symlink()
remote = Setup.create_credential_remote()
composer = Composer(remote)
app = Flask(__name__)
@app.route("/composer")
def get_composer():
return Connector.get_composer_info(composer)
@app.route("/composer/<status>")
def set_composer(status):
Connector.set_composer_status(composer, status)
return ""
@app.route("/container/<container>")
def get_container(container):
return Connector.get_container_info(composer, container)
@app.route("/container/<container>/<status>")
def set_container(container, status):
Connector.set_container_status(composer, container, status)
return ""
app.run()