| 
									
										
										
										
											2019-04-02 20:08:26 +08:00
										 |  |  | import os, copy | 
					
						
							| 
									
										
										
										
											2018-11-15 11:09:57 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-30 13:40:49 +08:00
										 |  |  | from g import config_dir, templates_dir, DEFAULT_GID, DEFAULT_UID, data_dir | 
					
						
							| 
									
										
										
										
											2019-08-01 16:02:08 +08:00
										 |  |  | from utils.misc import prepare_dir | 
					
						
							| 
									
										
										
										
											2018-11-15 11:09:57 +08:00
										 |  |  | from utils.jinja import render_jinja | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | registry_config_dir = os.path.join(config_dir, "registry") | 
					
						
							|  |  |  | registry_config_template_path = os.path.join(templates_dir, "registry", "config.yml.jinja") | 
					
						
							|  |  |  | registry_conf = os.path.join(config_dir, "registry", "config.yml") | 
					
						
							| 
									
										
										
										
											2019-08-30 13:40:49 +08:00
										 |  |  | registry_data_dir = os.path.join(data_dir, 'registry') | 
					
						
							| 
									
										
										
										
											2018-11-15 11:09:57 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-07 14:35:36 +08:00
										 |  |  | levels_map = { | 
					
						
							|  |  |  |     'debug': 'debug', | 
					
						
							|  |  |  |     'info': 'info', | 
					
						
							|  |  |  |     'warning': 'warn', | 
					
						
							|  |  |  |     'error': 'error', | 
					
						
							|  |  |  |     'fatal': 'fatal' | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2018-11-15 11:09:57 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | def prepare_registry(config_dict): | 
					
						
							| 
									
										
										
										
											2019-08-30 13:40:49 +08:00
										 |  |  |     prepare_dir(registry_data_dir, uid=DEFAULT_UID, gid=DEFAULT_GID) | 
					
						
							| 
									
										
										
										
											2019-08-01 16:02:08 +08:00
										 |  |  |     prepare_dir(registry_config_dir) | 
					
						
							| 
									
										
										
										
											2018-11-15 11:09:57 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     storage_provider_info = get_storage_provider_info( | 
					
						
							|  |  |  |     config_dict['storage_provider_name'], | 
					
						
							| 
									
										
										
										
											2019-04-02 20:08:26 +08:00
										 |  |  |     config_dict['storage_provider_config']) | 
					
						
							| 
									
										
										
										
											2018-11-15 11:09:57 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     render_jinja( | 
					
						
							|  |  |  |         registry_config_template_path, | 
					
						
							|  |  |  |         registry_conf, | 
					
						
							|  |  |  |         uid=DEFAULT_UID, | 
					
						
							|  |  |  |         gid=DEFAULT_GID, | 
					
						
							| 
									
										
										
										
											2019-08-07 14:35:36 +08:00
										 |  |  |         level=levels_map[config_dict['log_level']], | 
					
						
							| 
									
										
										
										
											2018-11-15 11:09:57 +08:00
										 |  |  |         storage_provider_info=storage_provider_info, | 
					
						
							|  |  |  |         **config_dict) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-02 20:08:26 +08:00
										 |  |  | def get_storage_provider_info(provider_name, provider_config): | 
					
						
							|  |  |  |     provider_config_copy = copy.deepcopy(provider_config) | 
					
						
							| 
									
										
										
										
											2018-11-15 11:09:57 +08:00
										 |  |  |     if provider_name == "filesystem": | 
					
						
							| 
									
										
										
										
											2019-04-30 17:05:27 +08:00
										 |  |  |         if not (provider_config_copy and ('rootdirectory' in provider_config_copy)): | 
					
						
							| 
									
										
										
										
											2019-04-02 20:08:26 +08:00
										 |  |  |             provider_config_copy['rootdirectory'] = '/storage' | 
					
						
							|  |  |  |     if provider_name == 'gcs' and provider_config_copy.get('keyfile'): | 
					
						
							|  |  |  |         provider_config_copy['keyfile'] = '/etc/registry/gcs.key' | 
					
						
							| 
									
										
										
										
											2018-11-15 11:09:57 +08:00
										 |  |  |     # generate storage configuration section in yaml format | 
					
						
							|  |  |  |     storage_provider_conf_list = [provider_name + ':'] | 
					
						
							| 
									
										
										
										
											2019-04-02 20:08:26 +08:00
										 |  |  |     for config in provider_config_copy.items(): | 
					
						
							| 
									
										
										
										
											2019-05-10 11:01:29 +08:00
										 |  |  |         if config[1] is None: | 
					
						
							|  |  |  |             value = '' | 
					
						
							|  |  |  |         elif config[1] == True: | 
					
						
							|  |  |  |             value = 'true' | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             value = config[1] | 
					
						
							|  |  |  |         storage_provider_conf_list.append('{}: {}'.format(config[0], value)) | 
					
						
							| 
									
										
										
										
											2018-11-15 11:09:57 +08:00
										 |  |  |     storage_provider_info = ('\n' + ' ' * 4).join(storage_provider_conf_list) | 
					
						
							|  |  |  |     return storage_provider_info |