mirror of
https://github.com/newnius/YAO-agent.git
synced 2025-12-15 13:56:44 +00:00
bugfix, add query stat
This commit is contained in:
111
server.py
111
server.py
@@ -25,10 +25,38 @@ class MyHandler(BaseHTTPRequestHandler):
|
||||
|
||||
elif req.path == "/logs":
|
||||
id = query['id'][0]
|
||||
client = docker.from_env()
|
||||
container = client.containers.get(id)
|
||||
try:
|
||||
client = docker.from_env()
|
||||
container = client.containers.get(id)
|
||||
msg = {'code': 0, 'logs': str(container.logs().decode())}
|
||||
except Exception as e:
|
||||
msg = {'code': 0, 'error': e}
|
||||
self.send_response(200)
|
||||
self.send_header('Content-type', 'application/json')
|
||||
self.end_headers()
|
||||
self.wfile.write(bytes(json.dumps(msg), "utf-8"))
|
||||
|
||||
msg = {'code': 0, 'logs': container.logs().decode()}
|
||||
elif req.path == "/status":
|
||||
id = query['id'][0]
|
||||
client = docker.from_env()
|
||||
container = client.containers.list(all=True, filters={'id': id})
|
||||
if len(container) > 0:
|
||||
container = container[0]
|
||||
print(container.image.attrs)
|
||||
status = {
|
||||
'id': container.short_id,
|
||||
'image': container.attrs['Config']['Image'],
|
||||
'image_digest': container.attrs['Image'],
|
||||
'command': container.attrs['Config']['Cmd'],
|
||||
'createdAt': container.attrs['Created'],
|
||||
'finishedAt': container.attrs['State']['FinishedAt'],
|
||||
'status': container.status
|
||||
}
|
||||
if status['command'] is not None:
|
||||
status['command'] = ' '.join(container.attrs['Config']['Cmd'])
|
||||
msg = {'code': 0, 'status': status}
|
||||
else:
|
||||
msg = {'code': 1, 'error': "container not exist"}
|
||||
self.send_response(200)
|
||||
self.send_header('Content-type', 'application/json')
|
||||
self.end_headers()
|
||||
@@ -37,22 +65,21 @@ class MyHandler(BaseHTTPRequestHandler):
|
||||
else:
|
||||
self.send_error(404, 'File Not Found: %s' % self.path)
|
||||
|
||||
# Handler for the POST requests
|
||||
def do_POST(self):
|
||||
if self.path == "/create":
|
||||
form = cgi.FieldStorage(
|
||||
fp=self.rfile,
|
||||
headers=self.headers,
|
||||
environ={
|
||||
'REQUEST_METHOD': 'POST',
|
||||
'CONTENT_TYPE': self.headers['Content-Type'],
|
||||
})
|
||||
docker_image = form["image"].value
|
||||
docker_cmd = form["cmd"].value
|
||||
|
||||
print(docker_image)
|
||||
print(docker_cmd)
|
||||
# Handler for the POST requests
|
||||
def do_POST(self):
|
||||
if self.path == "/create":
|
||||
form = cgi.FieldStorage(
|
||||
fp=self.rfile,
|
||||
headers=self.headers,
|
||||
environ={
|
||||
'REQUEST_METHOD': 'POST',
|
||||
'CONTENT_TYPE': self.headers['Content-Type'],
|
||||
})
|
||||
docker_image = form["image"].value
|
||||
docker_cmd = form["cmd"].value
|
||||
|
||||
try:
|
||||
client = docker.from_env()
|
||||
container = client.containers.run(
|
||||
image=docker_image,
|
||||
@@ -61,35 +88,36 @@ class MyHandler(BaseHTTPRequestHandler):
|
||||
runtime="nvidia",
|
||||
detach=True
|
||||
)
|
||||
|
||||
msg = {"code": 0, "id": container.id}
|
||||
except Exception as e:
|
||||
msg = {"code": 1, "error": e}
|
||||
|
||||
self.send_response(200)
|
||||
self.send_header('Content-type', 'application/json')
|
||||
self.end_headers()
|
||||
self.wfile.write(bytes(json.dumps(msg), "utf-8"))
|
||||
self.send_response(200)
|
||||
self.send_header('Content-type', 'application/json')
|
||||
self.end_headers()
|
||||
self.wfile.write(bytes(json.dumps(msg), "utf-8"))
|
||||
|
||||
elif self.path == "/stop":
|
||||
form = cgi.FieldStorage(
|
||||
fp=self.rfile,
|
||||
headers=self.headers,
|
||||
environ={
|
||||
'REQUEST_METHOD': 'POST',
|
||||
'CONTENT_TYPE': self.headers['Content-Type'],
|
||||
})
|
||||
id = form["id"].value
|
||||
elif self.path == "/stop":
|
||||
form = cgi.FieldStorage(
|
||||
fp=self.rfile,
|
||||
headers=self.headers,
|
||||
environ={
|
||||
'REQUEST_METHOD': 'POST',
|
||||
'CONTENT_TYPE': self.headers['Content-Type'],
|
||||
})
|
||||
id = form["id"].value
|
||||
|
||||
client = docker.from_env()
|
||||
container = client.containers.get(id)
|
||||
container.stop()
|
||||
msg = {"code": 0}
|
||||
client = docker.from_env()
|
||||
container = client.containers.get(id)
|
||||
container.stop()
|
||||
msg = {"code": 0}
|
||||
|
||||
self.send_response(200)
|
||||
self.send_header('Content-type', 'application/json')
|
||||
self.end_headers()
|
||||
self.wfile.write(bytes(json.dumps(msg), "utf-8"))
|
||||
else:
|
||||
self.send_error(404, 'File Not Found: %s' % self.path)
|
||||
self.send_response(200)
|
||||
self.send_header('Content-type', 'application/json')
|
||||
self.end_headers()
|
||||
self.wfile.write(bytes(json.dumps(msg), "utf-8"))
|
||||
else:
|
||||
self.send_error(404, 'File Not Found: %s' % self.path)
|
||||
|
||||
|
||||
try:
|
||||
@@ -104,5 +132,4 @@ try:
|
||||
except KeyboardInterrupt:
|
||||
print('^C received, shutting down the web server')
|
||||
|
||||
|
||||
server.socket.close()
|
||||
|
||||
Reference in New Issue
Block a user