Add version option to docker_daemon plugin

As requested on #147, there is now an option to specify the Docker
version to be installed when using the `docker_daemon` plugin. The
version string is validated against a pattern extracted from the
Docker's CHANGELOG. If the version is not present, it will just download
the latest available.

The download method was also changed from `urllib` to `wget`, so we can
see its progress if needed.

This closes #147.
This commit is contained in:
Tiago Ilieve 2014-09-13 15:08:52 -03:00
parent 8076ad3ae1
commit 0f5de13bae
2 changed files with 17 additions and 3 deletions

View file

@ -3,6 +3,15 @@ $schema: http://json-schema.org/draft-04/schema#
title: Install Docker plugin manifest
type: object
properties:
plugins:
type: object
properties:
docker_daemon:
type: object
properties:
version:
pattern: '^\d\.\d{1,2}\.\d$'
type: string
system:
type: object
properties:

View file

@ -25,13 +25,18 @@ class AddDockerDeps(Task):
class AddDockerBinary(Task):
description = 'Add docker binary'
phase = phases.system_modification
DOCKER_URL = 'https://get.docker.io/builds/Linux/x86_64/docker-latest'
@classmethod
def run(cls, info):
import urllib
from bootstrapvz.common.tools import log_check_call
docker_version = info.manifest.plugins['docker_daemon'].get('version', False)
docker_url = 'https://get.docker.io/builds/Linux/x86_64/docker-'
if docker_version:
docker_url += docker_version
else:
docker_url += 'latest'
bin_docker = os.path.join(info.root, 'usr/bin/docker')
urllib.urlretrieve(cls.DOCKER_URL, bin_docker)
log_check_call(['wget', '-O', bin_docker, docker_url])
os.chmod(bin_docker, 0755)