]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
prscript: update docker code
authorEric Leblond <eric@regit.org>
Sat, 9 Sep 2017 09:13:29 +0000 (11:13 +0200)
committerVictor Julien <victor@inliniac.net>
Wed, 20 Sep 2017 06:51:22 +0000 (08:51 +0200)
Update docker code to latest docker python API. This patch
preserves backwrd compatibility with older versions.

qa/prscript.py

index 21e989433131c8c2253971b7412e483158359b26..d26633221ae4154d0da33e4dc10cb5587adfc65b 100755 (executable)
@@ -39,10 +39,22 @@ except:
     GOT_NOTIFY = False
 
 GOT_DOCKER = True
+GOT_DOCKERPY_API = 2
+
 try:
-    from docker import Client
-except:
+    import docker
+    try:
+        from docker import APIClient as Client
+        from docker import from_env as DockerClient
+    except ImportError:
+        GOT_DOCKERPY_API = 1
+        try:
+            from docker import Client
+        except ImportError:
+            GOT_DOCKER = FALSE
+except ImportError:
     GOT_DOCKER = False
+
 # variables
 #  - github user
 #  - buildbot user and password
@@ -80,7 +92,7 @@ username = args.username
 password = args.password
 cookie = None
 
-if args.create or args.start or args.stop:
+if args.create or args.start or args.stop or args.rm:
     if GOT_DOCKER:
         args.docker = True
         args.local = True
@@ -257,37 +269,57 @@ if not args.local:
             sys.exit(-1)
 
 def CreateContainer():
-    cli = Client()
     # FIXME check if existing
     print "Pulling docking image, first run should take long"
-    cli.pull('regit/suri-buildbot')
-    cli.create_container(name='suri-buildbot', image='regit/suri-buildbot', ports=[8010, 22], volumes=['/data/oisf', '/data/buildbot/master/master.cfg'])
+    if GOT_DOCKERPY_API < 2:
+        cli = Client()
+        cli.pull('regit/suri-buildbot')
+        cli.create_container(name='suri-buildbot', image='regit/suri-buildbot', ports=[8010, 22], volumes=['/data/oisf', '/data/buildbot/master/master.cfg'])
+    else:
+        cli = DockerClient()
+        cli.images.pull('regit/suri-buildbot')
+        suri_src_dir = os.path.split(os.path.dirname(os.path.realpath(__file__)))[0]
+        print "Using base src dir: " + suri_src_dir
+        cli.containers.create('regit/suri-buildbot', name='suri-buildbot', ports={'8010/tcp': 8010, '22/tcp': None} , volumes={suri_src_dir: { 'bind': '/data/oisf', 'mode': 'ro'}, os.path.join(suri_src_dir,'qa','docker','buildbot.cfg'): { 'bind': '/data/buildbot/master/master.cfg', 'mode': 'ro'}}, detach = True)
     sys.exit(0)
 
 def StartContainer():
-    cli = Client()
     suri_src_dir = os.path.split(os.path.dirname(os.path.realpath(__file__)))[0]
     print "Using base src dir: " + suri_src_dir
-    cli.start('suri-buildbot', port_bindings={8010:8010, 22:None}, binds={suri_src_dir: { 'bind': '/data/oisf', 'ro': True}, os.path.join(suri_src_dir,'qa','docker','buildbot.cfg'): { 'bind': '/data/buildbot/master/master.cfg', 'ro': True}} )
+    if GOT_DOCKERPY_API < 2:
+        cli = Client()
+        cli.start('suri-buildbot', port_bindings={8010:8010, 22:None}, binds={suri_src_dir: { 'bind': '/data/oisf', 'ro': True}, os.path.join(suri_src_dir,'qa','docker','buildbot.cfg'): { 'bind': '/data/buildbot/master/master.cfg', 'ro': True}} )
+    else:
+        cli = DockerClient()
+        cli.containers.get('suri-buildbot').start()
     sys.exit(0)
 
 def StopContainer():
-    cli = Client()
-    cli.stop('suri-buildbot')
+    if GOT_DOCKERPY_API < 2:
+        cli = Client()
+        cli.stop('suri-buildbot')
+    else:
+        cli = DockerClient()
+        cli.containers.get('suri-buildbot').stop()
     sys.exit(0)
 
 def RmContainer():
-    cli = Client()
-    try:
-        cli.remove_container('suri-buildbot')
-    except:
-        print "Unable to remove suri-buildbot container"
-        pass
-    try:
-        cli.remove_image('regit/suri-buildbot:latest')
-    except:
-        print "Unable to remove suri-buildbot images"
-        pass
+    if GOT_DOCKERPY_API < 2:
+        cli = Client()
+        try:
+            cli.remove_container('suri-buildbot')
+        except:
+            print "Unable to remove suri-buildbot container"
+            pass
+        try:
+            cli.remove_image('regit/suri-buildbot:latest')
+        except:
+            print "Unable to remove suri-buildbot images"
+            pass
+    else:
+        cli = DockerClient()
+        cli.containers.get('suri-buildbot').remove()
+        cli.images.remove('regit/suri-buildbot:latest')
     sys.exit(0)
 
 if GOT_DOCKER: