builder: include environment when running an exec

Some container execs have an environment, let's make sure they are
included when running exec.

NOTE: This is for Rocky and below as docker was the only supported
method in these versions. Additionally in Rocky and below, the
environment was a list and not a dictionary so we only support a list
version for the environment.

Closes-Bug: #1855932
Change-Id: Ic2e2c2d50f5883f7db28768ba215e74bcbf9fd8b
(cherry picked from commit b5be45067a)
(cherry picked from commit 0108ad789a)
This commit is contained in:
Alex Schultz 2019-12-13 08:21:46 -07:00
parent f12e6da460
commit 5fa3028d11
2 changed files with 6 additions and 0 deletions

View File

@ -220,6 +220,10 @@ class ComposeV1Builder(object):
cmd.append('--privileged=%s' % str(cconfig['privileged']).lower())
if 'user' in cconfig:
cmd.append('--user=%s' % cconfig['user'])
# TODO(sbaker): support the dict layout for this property
for v in cconfig.get('environment', []):
if v:
cmd.append('--env=%s' % v)
command = self.command_argument(cconfig.get('command'))
# for exec, the first argument is the container name,
# make sure the correct one is used

View File

@ -561,6 +561,7 @@ three-12345678 three''', '', 0),
'one': {
'command': 'ls -l /foo',
'privileged': True,
'environment': ['FOO=BAR'],
'user': 'bar'
}
}
@ -572,6 +573,7 @@ three-12345678 three''', '', 0),
self.assertEqual(
['docker', 'exec',
'--privileged=true', '--user=bar',
'--env=FOO=BAR',
'one-12345678', '-l', '/foo'],
cmd
)