def ignition():
"""
Ignition
---
tags:
- matchbox
responses:
200:
description: Ignition configuration
schema:
type: dict
403:
description: Matchbox unavailable
schema:
type: text/plain
503:
description: Matchbox is out of sync
schema:
type: text/plain
"""
cache_key = "sync-notify"
last_sync_ts = CACHE.get(cache_key)
app.logger.debug("cacheKey: %s is set with value %s" % (cache_key, last_sync_ts))
# we ignore the sync status if we arrived from /ignition-pxe because it's a discovery PXE boot
if last_sync_ts is None and request.path != "/ignition-pxe":
app.logger.error("matchbox state is out of sync: cacheKey: %s is None" % cache_key)
return Response("matchbox is out of sync", status=503, mimetype="text/plain")
if request.path == "/ignition-pxe":
app.logger.info("%s %s" % (request.method, request.url))
matchbox_uri = application.config.get("MATCHBOX_URI")
if matchbox_uri:
try:
# remove the -pxe from the path because matchbox only serve /ignition
path = request.full_path.replace("/ignition-pxe?", "/ignition?")
matchbox_resp = requests.get("%s%s" % (matchbox_uri, path))
resp = matchbox_resp.content
matchbox_resp.close()
return Response(resp, status=matchbox_resp.status_code, mimetype="text/plain")
except requests.RequestException as e:
app.logger.error("fail to query matchbox ignition %s" % e)
return Response("matchbox doesn't respond", status=502, mimetype="text/plain")
return Response("matchbox=%s" % matchbox_uri, status=403, mimetype="text/plain")
评论列表
文章目录