@@ -19,7 +19,7 @@ programs = ["docker", "docker-compose"]
1919base = "base.yml"
2020conf = "box.yml"
2121minimal = 'minimal.yml'
22- # src = os.path.dirname(os.path.realpath(__file__))
22+ layersbox_src = os .path .dirname (os .path .realpath (__file__ ))
2323
2424minimal_data = '''adapterdata:
2525 container_name: adapter-data
@@ -328,6 +328,17 @@ def generate_yml(dir):
328328 # open docker-compose.yml file for each service
329329 with open (join (dir , service_yml ), 'r' ) as addon_file :
330330 addon = yaml .load (addon_file .read ())
331+ # fix env_files definitions in addon to refer to path where service's files were copied
332+ for subservice_values in addon .values ():
333+ if 'env_file' in subservice_values :
334+ new_envs = []
335+ for env in subservice_values ['env_file' ]:
336+ # common.env shouldn't redirect to services' definition, it is *common*
337+ if env == 'common.env' or env .startswith ('services' ):
338+ new_envs .append (env )
339+ else :
340+ new_envs .append ('services/%s/%s' % (service_name , env ))
341+ subservice_values ['env_file' ] = new_envs
331342 # merged is the base one
332343 merged , more_databases = merge_ymls (merged , addon )
333344 # "extend" extends list by appending elements from the iterable
@@ -387,7 +398,11 @@ def box_install(args):
387398 os .makedirs (tmp_servicedir )
388399 if not os .path .exists (servicedir ):
389400 os .makedirs (servicedir )
390- response = urllib2 .urlopen (url )
401+ try :
402+ response = urllib2 .urlopen (url )
403+ except urllib2 .HTTPError :
404+ print "Failed to download service package from %s" % url
405+ return 1
391406 with open (release_tar , 'w' ) as f :
392407 f .write (response .read ())
393408 with tarfile .open (release_tar ) as t :
@@ -528,7 +543,8 @@ def update_adapter(config, service_directory, service_name):
528543
529544 # copy nginx.adapted.conf into container
530545 #TODO: run the whole script directly from python
531- subprocess .check_output (["./add_nginx_conf.sh" , service_name ])
546+ subprocess .check_output ([join (layersbox_src ,"add_nginx_conf.sh" ),
547+ service_name ])
532548
533549 # send the adapter the HUP kill signal
534550 subprocess .check_output (["docker" , "kill" , '--signal="HUP"' , "adapter" ])
@@ -629,8 +645,10 @@ def box_init(args):
629645 with open (page_zip , 'w' ) as f :
630646 f .write (response .read ())
631647 with ZipFile (page_zip , 'r' ) as zip :
632- os .makedirs (join (dir , 'html/' ))
633- zip .extractall (join (dir , 'html/' ))
648+ html_dir = join (dir , 'html/' )
649+ if not os .path .exists (html_dir ):
650+ os .makedirs (html_dir )
651+ zip .extractall (html_dir )
634652 os .remove (page_zip )
635653
636654 config = {'services' : {}}
@@ -640,8 +658,9 @@ def box_init(args):
640658 print ("Make sure port 80 and 443 are not in use on this machine" )
641659 print ("You can start your LayersBox with 'layersbox start'" )
642660 # Workaround for logs dir not being available in the adapterdata container
643- os .makedirs (join (dir , 'logs/' ))
644-
661+ log_dir = join (dir , 'logs/' )
662+ if not os .path .exists (log_dir ):
663+ os .makedirs (log_dir )
645664 return 0
646665
647666
0 commit comments