Skip to content
Snippets Groups Projects
Commit 27f4b767f6c0 authored by Vincent Hatakeyama's avatar Vincent Hatakeyama
Browse files

:sparkles: use option to start or no py3o, and use all in one image

parent 011e8b0e6622
No related branches found
No related tags found
No related merge requests found
...@@ -32,5 +32,5 @@ ...@@ -32,5 +32,5 @@
_logger = logging.getLogger(__name__) _logger = logging.getLogger(__name__)
__version__ = '1.1.12' __version__ = '1.1.13'
__date__ = '2017-08-11' __date__ = '2017-08-11'
...@@ -36,5 +36,5 @@ ...@@ -36,5 +36,5 @@
__date__ = '2017-08-11' __date__ = '2017-08-11'
__updated__ = '2019-06-17' __updated__ = '2019-07-15'
def which(program): def which(program):
...@@ -289,6 +289,24 @@ ...@@ -289,6 +289,24 @@
default=os.path.join('conf', 'dev', 'odoo.conf'), default=os.path.join('conf', 'dev', 'odoo.conf'),
) )
py3o_group = parser.add_mutually_exclusive_group()
py3o_group.add_argument(
'--start-py3o',
help="start py3o docker [default: %(default)s]",
action='store_const',
default=None,
const=1,
dest='start_py3o',
)
py3o_group.add_argument(
'--no-start-py3o',
help="do not start py3o docker [default: %(default)s]",
action='store_const',
default=None,
const=-1,
dest='start_py3o',
)
# TODO detect that user is member of docker group # TODO detect that user is member of docker group
# TODO add a way to add options to docker # TODO add a way to add options to docker
...@@ -356,6 +374,16 @@ ...@@ -356,6 +374,16 @@
c.has_section('odoo_scripts') and c.has_section('odoo_scripts') and
c.has_option('odoo_scripts', 'module_list') and c.has_option('odoo_scripts', 'module_list') and
c.get('odoo_scripts', 'module_list').split()) or [] c.get('odoo_scripts', 'module_list').split()) or []
if nmspc.start_py3o:
_logger.debug("Command line start py3o %d", nmspc.start_py3o)
start_py3o_stack = nmspc.start_py3o == 1
else:
start_py3o_stack = (
c.has_section('odoo_scripts') and
c.has_option('odoo_scripts', 'start_py3o') and
c.get('odoo_scripts', 'start_py3o') in ('yes', 'true'))
_logger.debug("No command line start py3o %d", start_py3o_stack)
_logger.debug("Docker image: %s", image) _logger.debug("Docker image: %s", image)
# detect if docker image already exists # detect if docker image already exists
docker_client = docker_api(base_url='unix://var/run/docker.sock') docker_client = docker_api(base_url='unix://var/run/docker.sock')
...@@ -567,8 +595,6 @@ ...@@ -567,8 +595,6 @@
# volume = createVolume(docker_client, volume_name) # volume = createVolume(docker_client, volume_name)
binds.append('{}:{}'.format(volume_name, extra_volume)) binds.append('{}:{}'.format(volume_name, extra_volume))
start_py3o_stack = 'report_py3o_fusion_server' in module_list
if start_py3o_stack: if start_py3o_stack:
start_py3o(docker_client) start_py3o(docker_client)
options.append('--add-host') options.append('--add-host')
...@@ -814,58 +840,9 @@ ...@@ -814,58 +840,9 @@
def start_py3o( def start_py3o(
docker_client, host_fusion_port=8765, stop_at_exit=True, docker_client, host_fusion_port=8765, stop_at_exit=True,
): ):
ooo_repository = 'xcgd/libreoffice' fusion_repository = 'xcgd/py3o'
ooo_version = '4.2.8' fusion_version = '1.0.0'
ooo_name = 'oooserver' fusion_name = 'py3o_fusion'
ooo_image = '{}:{}'.format(ooo_repository, ooo_version)
try:
docker_client.pull(repository=ooo_repository, tag=ooo_version)
except Exception as e:
_logger.warning('Exception when trying to pull: %s', e)
if any(
'/{}'.format(ooo_name) in container['Names']
for container in docker_client.containers()
):
_logger.debug('%s Container already running', ooo_name)
remove_and_stop(docker_client, ooo_name)
_logger.debug('Starting %s container', ooo_name)
ooo = docker_client.create_container(
image=ooo_image,
name=ooo_name,
)
_logger.debug('Starting %s container', ooo_name)
docker_client.start(ooo.get('Id'))
render_repository = 'xcgd/py3oserver-docker'
render_version = '0.5.2'
render_name = 'py3orenderserver'
render_image = '{}:{}'.format(render_repository, render_version)
try:
docker_client.pull(repository=render_repository, tag=render_version)
except Exception as e:
_logger.warning('Exception when trying to pull: %s', e)
if any(
'/{}'.format(render_name) in container['Names']
for container in docker_client.containers()
):
_logger.debug('%s Container already running', render_name)
remove_and_stop(docker_client, render_name)
_logger.debug('Starting %s container', render_name)
render_host_config = docker_client.create_host_config(
volumes_from=[ooo.get('Id')]
)
render = docker_client.create_container(
image=render_image,
host_config=render_host_config,
name=render_name,
)
_logger.debug('Starting %s container', render_name)
docker_client.start(render.get('Id'), links=[(ooo_name, 'oooserver')])
fusion_repository = 'xcgd/py3o.fusion'
fusion_version = '0.8.9'
fusion_name = 'fusionserver'
fusion_image = '{}:{}'.format(fusion_repository, fusion_version) fusion_image = '{}:{}'.format(fusion_repository, fusion_version)
try: try:
docker_client.pull(repository=fusion_repository, tag=fusion_version) docker_client.pull(repository=fusion_repository, tag=fusion_version)
...@@ -892,9 +869,9 @@ ...@@ -892,9 +869,9 @@
docker_client.start( docker_client.start(
fusion.get('Id'), fusion.get('Id'),
port_bindings=port_bindings, port_bindings=port_bindings,
links=[(render_name, 'py3orenderserver')]) )
def stop_py3o(): def stop_py3o():
# TODO test if still exists # TODO test if still exists
_logger.info('Stopping fusion') _logger.info('Stopping fusion')
docker_client.stop(fusion.get('Id')) docker_client.stop(fusion.get('Id'))
...@@ -896,11 +873,7 @@ ...@@ -896,11 +873,7 @@
def stop_py3o(): def stop_py3o():
# TODO test if still exists # TODO test if still exists
_logger.info('Stopping fusion') _logger.info('Stopping fusion')
docker_client.stop(fusion.get('Id')) docker_client.stop(fusion.get('Id'))
_logger.info('Stopping render')
docker_client.stop(render.get('Id'))
_logger.info('Stopping ooo')
docker_client.stop(ooo.get('Id'))
_logger.info('Removing containers') _logger.info('Removing containers')
docker_client.remove_container(fusion.get('Id')) docker_client.remove_container(fusion.get('Id'))
...@@ -905,7 +878,5 @@ ...@@ -905,7 +878,5 @@
_logger.info('Removing containers') _logger.info('Removing containers')
docker_client.remove_container(fusion.get('Id')) docker_client.remove_container(fusion.get('Id'))
docker_client.remove_container(render.get('Id'))
docker_client.remove_container(ooo.get('Id'))
if stop_at_exit: if stop_at_exit:
atexit.register(stop_py3o) atexit.register(stop_py3o)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment