in container_agent/run_containers.py [0:0]
def LoadVolumeMounts(mounts_spec, all_volumes, ctr_name):
"""Process a "volumeMounts" block of config and return a list of mounts."""
# TODO(thockin): Could be a dict of name -> Mount
all_mounts = []
for vol_index, vol_spec in enumerate(mounts_spec):
if 'name' not in vol_spec:
raise ConfigException(
'containers[%s].volumeMounts[%d] has no name'
% (ctr_name, vol_index))
vol_name = vol_spec['name']
if not IsRfc1035Name(vol_name):
raise ConfigException(
'containers[%s].volumeMounts[%d].name'
'is invalid: %s'
% (ctr_name, vol_index, vol_name))
if vol_name not in all_volumes:
raise ConfigException(
'containers[%s].volumeMounts[%d].name'
'is not a known volume: %s'
% (ctr_name, vol_index, vol_name))
if 'path' not in vol_spec:
raise ConfigException(
'containers[%s].volumeMounts[%s] has no path'
% (ctr_name, vol_name))
vol_path = vol_spec['path']
if not IsValidPath(vol_path):
raise ConfigException(
'containers[%s].volumeMounts[%s].path is invalid: %s'
% (ctr_name, vol_name, vol_path))
read_mode = 'ro' if vol_spec.get('readOnly', False) else 'rw'
all_mounts.append(
'%s/%s:%s:%s' % (VOLUMES_ROOT_DIR, vol_name, vol_path, read_mode))
return all_mounts