Run unhandled cmd directly

pull/1/head
Christophe Mehay 8 years ago
parent 5538aa3da3
commit 7933137a27

@ -36,7 +36,17 @@ class Command(object):
self.env = {env: val for env, val in os.environ.items()
if not is_link_env(env, all_link_names)}
@property
def is_handled(self):
subcom = self.config.subcommands
if not self.args or self.args[0] == self.command or \
[p for p in subcom if fnmatch(self.args[0], p)]:
return True
return False
def run(self):
if not self.is_handled:
os.execvpe(self.args[0], self.args, self.env)
if os.getuid() is 0:
os.setgid(self.config.group)
os.setuid(self.config.user)

@ -42,6 +42,10 @@ class Entrypoint(object):
quickSetup(min_level=levels.DEBUG)
self.args = args
@property
def is_handled(self):
return self.config.command.is_handled
def apply_conf(self):
env = Environment(loader=FileSystemLoader('/'))
for template in self.config.config_files:
@ -87,6 +91,8 @@ def main(argv):
argv.pop(0)
entry = Entrypoint(args=argv)
try:
if not entry.is_handled:
entry.launch()
entry.run_pre_conf_cmds()
entry.apply_conf()
entry.run_post_conf_cmds()

@ -9,7 +9,7 @@ setup(
name='pyentrypoint',
version='0.1.13',
version='0.1.14',
packages=find_packages(),

@ -0,0 +1,12 @@
command: cat
user: 1000
group: 1000
pre_conf_commands:
- echo NOPE > /tmp/CMD4
post_conf_commands:
- echo NOPE >> /tmp/CMD4

@ -163,6 +163,10 @@ def test_command():
conf='configs/usernames.yml',
args=['bash', '-c', 'echo OK > /tmp/CMD3']).launch),
'/tmp/CMD3', 33, 33),
(Process(target=Entrypoint(
conf='configs/unhandled.yml',
args=['bash', '-c', 'echo OK > /tmp/CMD4']).launch),
'/tmp/CMD4', 0, 0),
]
for proc, test, uid, gid in run:

Loading…
Cancel
Save