prscript: update docker code

Update docker code to latest docker python API. This patch
preserves backwrd compatibility with older versions.
pull/2900/head
Eric Leblond 8 years ago committed by Victor Julien
parent c048ee6505
commit 620f2540c6

@ -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:

Loading…
Cancel
Save