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