Skip to content

Commit

Permalink
finished issue #6 and passed basic tests
Browse files Browse the repository at this point in the history
  • Loading branch information
dcvan24 committed Mar 20, 2018
1 parent 9da5aaf commit beae6fc
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 6 deletions.
13 changes: 10 additions & 3 deletions container/job.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from container.base import Container, NetworkMode, Resources, ContainerState
from util import parse_container_short_id
from container.base import Container, NetworkMode, ContainerState

# Limitations:
# 1. Inefficient job state monitoring: Chronos does not have an API for per-job state
Expand Down Expand Up @@ -72,14 +73,20 @@ def to_request(self):
cpus=self.resources.cpus, mem=self.resources.mem, disk=self.resources.disk,
shell=self.args is None,
command = self.cmd if self.cmd else '',
environmentVariables=[dict(name=k, value=v) for k, v in self.env.items()],
environmentVariables=[dict(name=k,
value=parse_container_short_id(v, self.appliance))
for k, v in self.env.items()],
container=dict(type='DOCKER',
image=self.image,
network=self.network_mode.value,
volumes=[v.to_request() for v in self.volumes],
forcePullImage=self.force_pull_image))
if self.args:
r['arguments'] = self.args
r['arguments'] = [parse_container_short_id(a, self.appliance)
for a in self.args if str(a).strip()]
if self.cmd:
r['command'] = ' '.join([parse_container_short_id(p, self.appliance)
for p in self.cmd.split()])
parameters = [dict(key='privileged', value=self.is_privileged)]
parameters += [dict(key='publish',
value='%d:%d/%s'%(p.host_port, p.container_port, p.protocol))
Expand Down
10 changes: 7 additions & 3 deletions container/service.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import json

from util import parse_container_short_id
from container.base import Container, ContainerState, Endpoint, NetworkMode


Expand Down Expand Up @@ -151,7 +152,8 @@ def to_save(self):
def to_request(self):
r = dict(id=str(self), instances=self.instances,
**self.resources.to_request(),
env={k: str(v) for k, v in self.env.items()},
env={k: parse_container_short_id(v, self.appliance)
for k, v in self.env.items()},
labels=self.labels,
requirePorts=len(self.ports) > 0,
acceptedResourceRoles=[ "slave_public", "*" ],
Expand All @@ -165,9 +167,11 @@ def to_request(self):
minimumHealthCapacity=self.minimum_capacity,
maximumOverCapacity=self.maximum_capacity))
if self.cmd:
r['cmd'] = self.cmd
r['cmd'] = ' '.join([parse_container_short_id(p, self.appliance)
for p in self.cmd.split()])
if self.args:
r['args'] = self.args
r['args'] = [parse_container_short_id(a, self.appliance)
for a in self.args if str(a).strip()]
# set network mode
if self.network_mode == NetworkMode.HOST:
r['networks'] = [dict(mode='host')]
Expand Down
5 changes: 5 additions & 0 deletions util.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import re
import sys
import json
import motor
Expand All @@ -21,6 +22,10 @@ def message(msg):
def error(msg):
return dict(error=msg)

def parse_container_short_id(p, appliance):
return re.sub(r'(.*)\@([a-z0-9\.-]+)(.*)',
r'\1\2-%s.marathon.containerip.dcos.thisdcos.directory\3'%appliance,
str(p))

class Singleton(type):
_instances = {}
Expand Down

0 comments on commit beae6fc

Please sign in to comment.