Skip to content

Commit

Permalink
Add cbpi service logfile download via journalctl
Browse files Browse the repository at this point in the history
  • Loading branch information
avollkopf committed Dec 19, 2021
1 parent 206eff8 commit 563fae9
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 3 deletions.
2 changes: 1 addition & 1 deletion cbpi/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = "4.0.0.57"
__version__ = "4.0.0.58"
2 changes: 1 addition & 1 deletion cbpi/controller/satellite_controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ async def cancel_tasks(tasks):
async with AsyncExitStack() as stack:
self.tasks = set()
stack.push_async_callback(cancel_tasks, self.tasks)
self.client = Client(self.host, port=self.port, username=self.username, password=self.password, will=Will(topic="cbpi/diconnect", payload="CBPi Server Disconnected"))
self.client = Client(self.host, port=self.port, username=self.username, password=self.password, will=Will(topic="cbpi/disconnect", payload="CBPi Server Disconnected"))

await stack.enter_async_context(self.client)

Expand Down
18 changes: 18 additions & 0 deletions cbpi/controller/system_controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,24 @@ async def backupConfig(self):
dir_name = pathlib.Path(os.path.join(".", 'config'))
shutil.make_archive(output_filename, 'zip', dir_name)

async def downloadlog(self, logtime):
filename = "cbpi4.log"
fullname = pathlib.Path(os.path.join(".",filename))
output_filename="cbpi4_log.zip"
if logtime == "b":
os.system('journalctl -b -u craftbeerpi.service > {}'.format(fullname))
else:
os.system('journalctl --since \"{} hours ago\" -u craftbeerpi.service > {}'.format(logtime, fullname))

zipObj=zipfile.ZipFile(output_filename , 'w', zipfile.ZIP_DEFLATED)
zipObj.write(fullname)
zipObj.close()
os.remove(fullname)





def allowed_file(self, filename, extension):
return '.' in filename and filename.rsplit('.', 1)[1] in set([extension])

Expand Down
36 changes: 35 additions & 1 deletion cbpi/http_endpoints/http_system.py
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,40 @@ async def backup(self, request):
await response.write_eof()
return response


@request_mapping("/log/{logtime}/", method="GET", name="BackupConfig", auth_required=False)
async def downloadlog(self, request):
"""
---
description: Zip and download craftbeerpi.service log
tags:
- System
responses:
"200":
description: successful operation
content: # Response body
application/zip: # Media type
"""
logtime = request.match_info['logtime']
await self.controller.downloadlog(logtime)
filename = "cbpi4_log.zip"
file_name = pathlib.Path(os.path.join(".", filename))

response = web.StreamResponse(
status=200,
reason='OK',
headers={'Content-Type': 'application/zip'},
)
await response.prepare(request)
with open(file_name, 'rb') as file:
for line in file.readlines():
await response.write(line)

await response.write_eof()
os.remove(file_name)
return response


@request_mapping("/restore", method="POST", name="RestoreConfig", auth_required=False)
async def restore(self, request):
"""
Expand Down Expand Up @@ -192,4 +226,4 @@ async def uploadSVG(self, request):
data = await request.post()
logging.info("Data received")
await self.controller.uploadSVG(data)
return web.Response(status=200)
return web.Response(status=200)

0 comments on commit 563fae9

Please sign in to comment.