mirror of
https://github.com/lucaspalomodevelop/DoOrg.git
synced 2026-03-13 06:29:38 +00:00
add rest api and cli basics
This commit is contained in:
parent
b8435faeb0
commit
7d9bb1f212
53
api.py
Normal file
53
api.py
Normal file
@ -0,0 +1,53 @@
|
||||
from typing import Union
|
||||
import uvicorn
|
||||
from fastapi import FastAPI
|
||||
import dataworker
|
||||
import json
|
||||
|
||||
app = FastAPI()
|
||||
dataworker = dataworker.dataworker()
|
||||
|
||||
|
||||
class api:
|
||||
def __init__(self):
|
||||
self._commands = {}
|
||||
|
||||
def run(self):
|
||||
uvicorn.run(app, host="0.0.0.0", port=8000)
|
||||
|
||||
@app.get("/api/v1")
|
||||
def read_root():
|
||||
return {"Hello": "World"}
|
||||
|
||||
@app.get("/api/v1/services")
|
||||
def get_services():
|
||||
services = {}
|
||||
services["exists"] = []
|
||||
services["running"] = []
|
||||
for service in dataworker.get_services():
|
||||
services["exists"].append(service)
|
||||
for service in dataworker.get_running_services():
|
||||
services["running"].append(service)
|
||||
return services
|
||||
|
||||
@app.get("/api/v1/service/{service_name}/start")
|
||||
def start_service(service_name: str):
|
||||
if dataworker.is_valid_service(service_name):
|
||||
if dataworker.DockerComunicator.is_service_running(service_name):
|
||||
return {"status": "Service already running"}
|
||||
else:
|
||||
dataworker.DockerComunicator.start_service(service_name)
|
||||
return {"status": "Service started"}
|
||||
else:
|
||||
return {"status": "Service not found"}
|
||||
|
||||
@app.get("/api/v1/service/{service_name}/stop")
|
||||
def stop_service(service_name: str):
|
||||
if dataworker.is_valid_service(service_name):
|
||||
if dataworker.DockerComunicator.is_service_running(service_name):
|
||||
dataworker.DockerComunicator.stop_service(service_name)
|
||||
return {"status": "Service stopped"}
|
||||
else:
|
||||
return {"status": "Service already stopped"}
|
||||
else:
|
||||
return {"status": "Service not found"}
|
||||
43
cli.py
Normal file
43
cli.py
Normal file
@ -0,0 +1,43 @@
|
||||
import os
|
||||
import dataworker
|
||||
|
||||
VERSION = "0.0.1"
|
||||
call_dir = ""
|
||||
|
||||
|
||||
class cli_style:
|
||||
BLACK = "\033[30m"
|
||||
RED = "\033[31m"
|
||||
GREEN = "\033[32m"
|
||||
YELLOW = "\033[33m"
|
||||
BLUE = "\033[34m"
|
||||
MAGENTA = "\033[35m"
|
||||
CYAN = "\033[36m"
|
||||
WHITE = "\033[37m"
|
||||
UNDERLINE = "\033[4m"
|
||||
RESET = "\033[0m"
|
||||
|
||||
|
||||
class cli:
|
||||
def __init__(self):
|
||||
self.call_dir = "."
|
||||
self.dataworker = dataworker.dataworker()
|
||||
|
||||
def run(self):
|
||||
self.call_dir = os.getcwd()
|
||||
print("DoOrg v" + VERSION)
|
||||
print("call dir: " + self.call_dir)
|
||||
services = self.dataworker.get_services()
|
||||
print("Services:")
|
||||
for service in services:
|
||||
color = (
|
||||
cli_style.GREEN
|
||||
if self.dataworker.DockerComunicator.is_service_running(service)
|
||||
else cli_style.RED
|
||||
)
|
||||
print(color + " - " + service + cli_style.RESET)
|
||||
|
||||
print("Docker services:")
|
||||
docker_services = self.dataworker.DockerComunicator.get_services()
|
||||
for service in docker_services:
|
||||
print(" - " + service.name)
|
||||
50
dataworker.py
Normal file
50
dataworker.py
Normal file
@ -0,0 +1,50 @@
|
||||
import os
|
||||
import sys
|
||||
import DockerComunicator as DockerComunicator
|
||||
|
||||
|
||||
class dataworker:
|
||||
def __init__(self):
|
||||
self.call_dir = "."
|
||||
self.accepted_dockerfiles = [
|
||||
"docker-compose.yml",
|
||||
"docker-compose.yaml",
|
||||
"docker-compose.yml.j2",
|
||||
"docker-compose.yaml.j2",
|
||||
]
|
||||
self.DockerComunicator = DockerComunicator.DockerComunicator()
|
||||
|
||||
def is_valid_service(self, service):
|
||||
service_dir = self.call_dir + "/services/" + service
|
||||
for dockerfile in self.accepted_dockerfiles:
|
||||
if os.path.isfile(service_dir + "/" + dockerfile):
|
||||
return True
|
||||
return False
|
||||
|
||||
def get_services(self):
|
||||
services = []
|
||||
services_dir = self.call_dir + "/services"
|
||||
for service in os.listdir(services_dir):
|
||||
# print("Checking service " + service)
|
||||
if os.path.isdir(services_dir + "/" + service) and self.is_valid_service(
|
||||
service
|
||||
):
|
||||
services.append(service)
|
||||
else:
|
||||
print(
|
||||
cli_style.RED
|
||||
+ "Service "
|
||||
+ services_dir
|
||||
+ "/"
|
||||
+ service
|
||||
+ " is not a valid service"
|
||||
+ cli_style.RESET
|
||||
)
|
||||
return services
|
||||
|
||||
def get_running_services(self):
|
||||
services = []
|
||||
docker_services = self.DockerComunicator.get_services()
|
||||
for service in docker_services:
|
||||
services.append(service.name)
|
||||
return services
|
||||
Loading…
x
Reference in New Issue
Block a user