context-hub/patch_container.py

49 lines
2.1 KiB
Python

import urllib.request
import json
import urllib.parse
import time
base_url = "http://192.168.100.33:9000/api"
data = json.dumps({"Username":"bestof","Password":"2L2u519wportainer"}).encode('utf-8')
req = urllib.request.Request(f"{base_url}/auth", data=data, headers={'Content-Type': 'application/json'})
token = json.loads(urllib.request.urlopen(req).read().decode())['jwt']
req = urllib.request.Request(f"{base_url}/endpoints", headers={'Authorization': f'Bearer {token}'})
endpoint_id = json.loads(urllib.request.urlopen(req).read().decode())[0]['Id']
req = urllib.request.Request(f"{base_url}/endpoints/{endpoint_id}/docker/containers/json?all=1", headers={'Authorization': f'Bearer {token}'})
containers = json.loads(urllib.request.urlopen(req).read().decode())
container_id = None
for c in containers:
if "/context-hub" in c.get('Names', []):
container_id = c['Id']
break
if not container_id:
print("context-hub container not found")
exit(1)
# Create exec instance
exec_data = {
"AttachStdin": False,
"AttachStdout": True,
"AttachStderr": True,
"Tty": False,
"Cmd": ["cp", "/app/data/admin.py", "/app/app/routes/admin.py"]
}
req = urllib.request.Request(f"{base_url}/endpoints/{endpoint_id}/docker/containers/{container_id}/exec", method="POST", data=json.dumps(exec_data).encode('utf-8'), headers={'Authorization': f'Bearer {token}', 'Content-Type': 'application/json'})
exec_res = json.loads(urllib.request.urlopen(req).read().decode())
exec_id = exec_res['Id']
# Start exec instance
start_data = {"Detach": False, "Tty": False}
req = urllib.request.Request(f"{base_url}/endpoints/{endpoint_id}/docker/exec/{exec_id}/start", method="POST", data=json.dumps(start_data).encode('utf-8'), headers={'Authorization': f'Bearer {token}', 'Content-Type': 'application/json'})
out = urllib.request.urlopen(req).read()
print("Exec output:", out)
# Restart container
req = urllib.request.Request(f"{base_url}/endpoints/{endpoint_id}/docker/containers/{container_id}/restart", method="POST", headers={'Authorization': f'Bearer {token}'})
urllib.request.urlopen(req)
print("Restarted container.")