Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 23 additions & 12 deletions gsc.py
Original file line number Diff line number Diff line change
Expand Up @@ -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 == '':
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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})
Expand Down Expand Up @@ -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}`...')
Expand Down Expand Up @@ -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.')
Expand Down