diff --git a/gsc.py b/gsc.py index 64cc88b4..c2ec4656 100755 --- a/gsc.py +++ b/gsc.py @@ -69,10 +69,10 @@ def build_docker_image(docker_api, build_path, image_name, dockerfile, **kwargs) def extract_binary_info_from_image_config(config, env): - entrypoint = config['Entrypoint'] or [] + entrypoint = config.get('Entrypoint') or [] num_starting_entrypoint_items = len(entrypoint) - cmd = config['Cmd'] or [] - working_dir = config['WorkingDir'] or '' + cmd = config.get('Cmd') or [] + working_dir = config.get('WorkingDir') or '' # Canonize working dir if working_dir == '': @@ -115,7 +115,7 @@ def extract_binary_info_from_image_config(config, env): def extract_environment_from_image_config(config): - env_list = config['Env'] or [] + env_list = config.get('Env') or [] base_image_environment = '' for env_var in env_list: # TODO: switch to loader.env_src_file = "file:file_with_serialized_envs" if @@ -158,7 +158,7 @@ def extract_define_args(args): return defineargs_dict def extract_user_from_image_config(config, env): - user = config['User'] + user = config.get('User') if not user: user = 'root' env.globals.update({'app_user': user}) @@ -349,11 +349,20 @@ def gsc_build(args): sys.exit(1) config = yaml.safe_load(args.config_file) - if 'Image' in config['Gramine']: - gramine_image_name = config['Gramine']['Image'] - if get_docker_image(docker_socket, gramine_image_name) is None: - print(f'Cannot find base-Gramine Docker image `{gramine_image_name}`.') + gramine_config = config.get('Gramine') + if gramine_config: + if gramine_config.get('Image'): + gramine_image_name = gramine_config.get('Image') + if get_docker_image(docker_socket, gramine_image_name) is None: + print(f'Cannot find base-Gramine Docker image `{gramine_image_name}`.') + sys.exit(1) + elif ((gramine_config.get('Repository') is None) + or (gramine_config.get('Branch') is None)): + print('Gramine.Image or Gramine.Repository or Gramine.Branch key not found') sys.exit(1) + else: + print('Error: Missing `Gramine` key in config file.') + sys.exit(1) print(f'Building unsigned graminized Docker image `{unsigned_image_name}` from original ' f'application image `{original_image_name}`...') @@ -471,9 +480,11 @@ def gsc_build_gramine(args): docker_socket = docker.from_env() config = yaml.safe_load(args.config_file) - if 'Image' in config['Gramine']: - print('`gsc build-gramine` does not allow `Gramine.Image` to be set.') - sys.exit(1) + gramine_config = config.get('Gramine') + if gramine_config: + if gramine_config.get('Image'): + print('`gsc build-gramine` does not allow `Gramine.Image` to be set.') + sys.exit(1) if get_docker_image(docker_socket, gramine_image_name) is not None: print(f'Base-Gramine Docker image `{gramine_image_name}` already exists.')