This repository has been archived on 2020-03-24. You can view files and clone it, but cannot push or open issues or pull requests.
quay/boot.py

82 lines
1.8 KiB
Python
Raw Normal View History

#!/usr/bin/env python
from datetime import datetime
from urlparse import urlunparse
from jinja2 import Template
2016-04-27 13:39:01 -05:00
import release
from app import app
from data.model.release import set_region_release
from util.config.database import sync_database_with_config
2016-04-27 14:37:48 -05:00
from util.generatepresharedkey import generate_key
2016-04-28 09:04:04 -05:00
def create_quay_service_key():
"""
Creates a service key for quay to use in the jwtproxy
"""
quay_key, key_id = generate_key('quay', 'quay')
2016-04-27 13:39:01 -05:00
2016-04-27 14:37:48 -05:00
with open('/conf/quay.pem', mode='w') as f:
2016-04-27 13:39:01 -05:00
f.truncate(0)
2016-04-27 14:37:48 -05:00
f.write(quay_key.exportKey())
2016-04-27 13:39:01 -05:00
2016-04-27 14:37:48 -05:00
return key_id
2016-04-27 13:39:01 -05:00
2016-04-27 14:37:48 -05:00
def get_audience():
2016-04-28 14:29:21 -05:00
audience = app.config.get('JWTPROXY_AUDIENCE')
if audience:
return audience
scheme = app.config.get('PREFERRED_URL_SCHEME')
hostname = app.config.get('SERVER_HOSTNAME')
# hostname includes port, use that
if ':' in hostname:
return urlunparse((scheme, hostname, '', '', '', ''))
# no port, guess based on scheme
if scheme == 'https':
port = '443'
else:
port = '80'
return urlunparse((scheme, hostname + ':' + port, '', '', '', ''))
def create_jwtproxy_conf(quay_key_id):
"""
Generates the jwtproxy conf from the jinja template
"""
audience = get_audience()
registry = audience + '/keys'
with open("/conf/jwtproxy_conf.yaml.jnj") as f:
template = Template(f.read())
rendered = template.render(
audience=audience,
2016-04-27 14:37:48 -05:00
registry=registry,
key_id=quay_key_id
)
with open('/conf/jwtproxy_conf.yaml', 'w') as f:
f.write(rendered)
def main():
if app.config.get('SETUP_COMPLETE', False):
sync_database_with_config(app.config)
2016-04-28 09:04:04 -05:00
quay_key_id = create_quay_service_key()
2016-04-27 14:37:48 -05:00
create_jwtproxy_conf(quay_key_id)
# Record deploy
if release.REGION and release.GIT_HEAD:
set_region_release(release.SERVICE, release.REGION, release.GIT_HEAD)
if __name__ == '__main__':
main()