From c8d758740cbad1919ab47c0af6e5670eaa4277eb Mon Sep 17 00:00:00 2001 From: Seth Shelnutt Date: Fri, 11 Mar 2016 07:17:40 -0500 Subject: [PATCH 1/3] Add support for specifying docker host --- gantry.py | 13 +++++++++---- util.py | 10 ++++++++-- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/gantry.py b/gantry.py index 92b72d8..17cb1d8 100755 --- a/gantry.py +++ b/gantry.py @@ -7,7 +7,7 @@ from actions import start_action, update_action, list_action, stop_action, kill_action from config.GantryConfig import Configuration from runtime.manager import RuntimeManager -from util import report, fail +from util import report, fail, connectDockerClient ACTIONS = { @@ -57,7 +57,8 @@ def run(): parser.add_argument('action', help='The action to perform', choices=ACTIONS.keys()) parser.add_argument('component_name', help='The name of the component to manage') parser.add_argument('-m', dest='monitor', action='store_true', help='If specified and the action is "start" or "update", gantry will remain running to monitor components, auto restarting them as necessary') - parser.add_argument('--setconfig', dest='config_overrides', action='append', help='Configuration overrides for the component') + parser.add_argument('-o-setconfig', dest='config_overrides', action='append', help='Configuration overrides for the component') + parser.add_argument('-H', '--host', dest='docker_url', default='unix://var/run/docker.sock', help='Set url for docker host, defaults to unix://var/run/docker.sock') args = parser.parse_args() component_name = args.component_name @@ -65,6 +66,10 @@ def run(): should_monitor = args.monitor config_file = args.config_file config_overrides = args.config_overrides + docker_url = args.docker_url + + # Connect to docker + connectDockerClient(docker_url) # Load the config. config = loadConfig(config_file) @@ -78,7 +83,7 @@ def run(): component = manager.getComponent(component_name) if not component: raise Exception('Unknown component: ' + component_name) - + # Apply the config overrides (if any). if config_overrides: component.applyConfigOverrides(config_overrides) @@ -102,4 +107,4 @@ def cleanup_monitor(signum, frame): cleanup_monitor(None, None) if __name__ == "__main__": - run() \ No newline at end of file + run() diff --git a/util.py b/util.py index 566d7fe..a3de193 100644 --- a/util.py +++ b/util.py @@ -11,7 +11,11 @@ def enum(*sequential, **named): ReportLevels = enum(BACKGROUND=-2, EXTRA=-1, NORMAL=0, IMPORTANT=1) -client = docker.Client(version='auto') +client = None + +def connectDockerClient(docker_url): + global client + client = docker.Client(base_url=docker_url, version='auto') def pickUnusedPort(): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) @@ -47,4 +51,6 @@ def fail(reason, project=None, component=None, exception=None): def getDockerClient(): """ Returns the docker client. """ - return client \ No newline at end of file + if client is None: + connectDockerClient('unix://var/run/docker.sock') + return client From 67b6b96d05f9b04c63f9ff1477ea3a95bb1d87d1 Mon Sep 17 00:00:00 2001 From: Seth Shelnutt Date: Thu, 21 Apr 2016 07:29:43 -0400 Subject: [PATCH 2/3] Add support in gantryd for specifying docker url --- gantryd.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gantryd.py b/gantryd.py index 41b8052..d2435ce 100755 --- a/gantryd.py +++ b/gantryd.py @@ -70,10 +70,15 @@ def start(): parser.add_argument('-c', help='A component to watch and run', nargs='+', type=str, dest='component') parser.add_argument('-etcd', help='The etcd endpoint to which the client should connect. Defaults to 127.0.0.1', dest='etcd_host', nargs='?', const=ETCD_HOST) parser.add_argument('-etcdport', help='The client port of the etcd endpoint. Defaults to 4001.', dest='etcd_port', nargs='?', const=ETCD_PORT) + parser.add_argument('-H', '--host', dest='docker_url', default='unix://var/run/docker.sock', help='Set url for docker host, defaults to unix://var/run/docker.sock') # Parse the arguments. args = parser.parse_args() port = int(args.etcd_port) if args.etcd_port else ETCD_PORT + docker_url = args.docker_url + + # Connect to docker + connectDockerClient(docker_url) # Initialize the gantryd client. dclient = GantryDClient(args.etcd_host or ETCD_HOST, args.project, port) From e2d34a211f1d173f4511b7541d8f9c130e9afc4c Mon Sep 17 00:00:00 2001 From: Seth Shelnutt Date: Thu, 21 Apr 2016 17:22:57 -0400 Subject: [PATCH 3/3] gantry.py: Remove accidentel change of --set-config --- gantry.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gantry.py b/gantry.py index 17cb1d8..28fd6f1 100755 --- a/gantry.py +++ b/gantry.py @@ -57,7 +57,7 @@ def run(): parser.add_argument('action', help='The action to perform', choices=ACTIONS.keys()) parser.add_argument('component_name', help='The name of the component to manage') parser.add_argument('-m', dest='monitor', action='store_true', help='If specified and the action is "start" or "update", gantry will remain running to monitor components, auto restarting them as necessary') - parser.add_argument('-o-setconfig', dest='config_overrides', action='append', help='Configuration overrides for the component') + parser.add_argument('--setconfig', dest='config_overrides', action='append', help='Configuration overrides for the component') parser.add_argument('-H', '--host', dest='docker_url', default='unix://var/run/docker.sock', help='Set url for docker host, defaults to unix://var/run/docker.sock') args = parser.parse_args()