
The memory tied up in tmpfs filesystems needs to be released after building packages. This update also tries to simplify some of the more tortured logic, overly complex functions, code duplications and confusing or inconsistent namings. partial-bug: 2081843 Change-Id: I59c12602929a8da1c5076c27243d6e6dca951c61 Signed-off-by: Scott Little <scott.little@windriver.com>
153 lines
4.3 KiB
Python
153 lines
4.3 KiB
Python
#!/usr/bin/python3
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
#
|
|
# Copyright (C) 2021-2022 Wind River Systems,Inc
|
|
#
|
|
from debbuilder import Debbuilder
|
|
from flask import Flask
|
|
from flask import jsonify
|
|
from flask import request
|
|
import logging
|
|
import utils
|
|
|
|
STX_DISTRO = 'bullseye'
|
|
STX_ARCH = 'amd64'
|
|
PKG_BUILDER_LOG = '/localdisk/pkgbuilder.log'
|
|
|
|
app = Flask(__name__)
|
|
app.debug = True
|
|
|
|
logging.basicConfig(level=logging.DEBUG)
|
|
log = logging.getLogger('pkgbuilder')
|
|
handler = logging.FileHandler(PKG_BUILDER_LOG, encoding='UTF-8')
|
|
log_format = logging.Formatter("%(asctime)s - %(levelname)s: %(message)s")
|
|
handler.setFormatter(log_format)
|
|
log.addHandler(handler)
|
|
|
|
utils.set_logger(log)
|
|
dbuilder = Debbuilder('private', STX_DISTRO, STX_ARCH, log)
|
|
response = {}
|
|
|
|
|
|
def dbuider_initialized():
|
|
global dbuilder
|
|
if not dbuilder:
|
|
response['status'] = 'fail'
|
|
response['msg'] = 'Package builder is not initialized'
|
|
return False
|
|
return True
|
|
|
|
|
|
def log_request(action, request):
|
|
"""
|
|
Print request with parameters
|
|
"""
|
|
msg = 'Received request: ' + action + ': {'
|
|
for key in request:
|
|
value = key + ':' + request[key]
|
|
msg = ' '.join([msg, value])
|
|
msg = msg + '}'
|
|
log.info(msg)
|
|
|
|
|
|
@app.route('/pkgbuilder/state', methods=['GET'])
|
|
def get_state():
|
|
if dbuider_initialized():
|
|
response = dbuilder.state()
|
|
return jsonify(response)
|
|
|
|
|
|
@app.route('/pkgbuilder/loadchroot', methods=['GET'])
|
|
def load_chroot():
|
|
log_request('loadchroot', request.form)
|
|
if dbuider_initialized():
|
|
response = dbuilder.load_chroot(request.form)
|
|
return jsonify(response)
|
|
|
|
|
|
@app.route('/pkgbuilder/clonechroot', methods=['GET'])
|
|
def clone_chroot():
|
|
log_request('clonechroot', request.form)
|
|
if dbuider_initialized():
|
|
response = dbuilder.clone_chroot(request.form)
|
|
return jsonify(response)
|
|
|
|
|
|
@app.route('/pkgbuilder/savechroot', methods=['GET'])
|
|
def save_chroot():
|
|
log_request('savechroot', request.form)
|
|
if dbuider_initialized():
|
|
response = dbuilder.save_chroot(request.form)
|
|
return jsonify(response)
|
|
|
|
|
|
@app.route('/pkgbuilder/addchroot', methods=['GET'])
|
|
def add_chroot():
|
|
log_request('addchroot', request.form)
|
|
if dbuider_initialized():
|
|
response = dbuilder.add_chroot(request.form)
|
|
return jsonify(response)
|
|
|
|
|
|
@app.route('/pkgbuilder/refreshchroots', methods=['GET'])
|
|
def refresh_chroot():
|
|
log_request('refreshchroots', request.form)
|
|
if dbuider_initialized():
|
|
response = dbuilder.refresh_chroots(request.form)
|
|
return jsonify(response)
|
|
|
|
|
|
@app.route('/pkgbuilder/addtask', methods=['POST'])
|
|
def add_task():
|
|
if dbuider_initialized():
|
|
reqs = request.get_json()
|
|
log.debug("Request for adding task: %s", reqs)
|
|
response = dbuilder.add_task(reqs)
|
|
return jsonify(response)
|
|
|
|
|
|
@app.route('/pkgbuilder/killtask', methods=['GET'])
|
|
def clean_env():
|
|
log_request('killtask', request.form)
|
|
if dbuider_initialized():
|
|
response = dbuilder.kill_task(request.form)
|
|
return jsonify(response)
|
|
|
|
|
|
@app.route('/pkgbuilder/stoptask', methods=['GET'])
|
|
def stop_task():
|
|
log_request('stoptask', request.form)
|
|
if dbuider_initialized():
|
|
response = dbuilder.stop_task(request.form)
|
|
return jsonify(response)
|
|
|
|
|
|
@app.route('/pkgbuilder/cleanstamp', methods=['GET'])
|
|
def clean_stamp():
|
|
log_request('cleanstamp', request.form)
|
|
if dbuider_initialized():
|
|
response = dbuilder.clean_stamp(request.form)
|
|
return jsonify(response)
|
|
|
|
|
|
@app.route('/pkgbuilder/freetmpfschroots', methods=['GET'])
|
|
def free_tmpfs_chroots():
|
|
log_request('freetmpfschroots', request.form)
|
|
if dbuider_initialized():
|
|
response = dbuilder.free_tmpfs_chroots(request.form)
|
|
return jsonify(response)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
app.run(host='0.0.0.0', port=80, debug=True)
|