diff options
Diffstat (limited to 'build')
-rw-r--r-- | build/build.conf | 42 | ||||
-rw-r--r-- | build/build.yaml | 41 | ||||
-rw-r--r-- | build/parser.py | 104 |
3 files changed, 145 insertions, 42 deletions
diff --git a/build/build.conf b/build/build.conf deleted file mode 100644 index fea50c80..00000000 --- a/build/build.conf +++ /dev/null @@ -1,42 +0,0 @@ -TIMEOUT=10 - -# PACKAGE_URL will be reset in Jenkins for different branch -export PACKAGE_URL=${PACKAGE_URL:-http://artifacts.opnfv.org/compass4nfv/package/master} - -# Jumphost OS version -# export CENTOS_BASE=${CENTOS_BASE:-$PACKAGE_URL/CentOS-7-x86_64-Minimal-1511.iso} - -# Compass git repository -# export COMPASS_CORE=${COMPASS_CORE:-https://github.com/openstack/compass-core.git} -# export COMPASS_WEB=${COMPASS_WEB:-https://github.com/openstack/compass-web.git} -# export COMPASS_INSTALL=${COMPASS_INSTALL:-http://github.com/baigk/compass-install.git} - -# Compass core packages -# export COMPASS_PKG=${COMPASS_PKG:-$PACKAGE_URL/centos7-compass-core.tar.gz} -# export PIP_REPO=${PIP_REPO:-$PACKAGE_URL/pip.tar.gz} -# export PIP_OPENSTACK_REPO=${PIP_OPENSTACK_REPO:-$PACKAGE_URL/pip-openstack.tar.gz} - -# OS ISO for provisioning -export CENTOS_ISO=${CENTOS_ISO:-$PACKAGE_URL/CentOS-7-x86_64-Minimal-1611.iso} # centos 7.3 -export UBUNTU_ISO=${UBUNTU_ISO:-$PACKAGE_URL/ubuntu-16.04-server-amd64.iso} # ubuntu 16.04 - -# OpenStack Packages for deployment -# export UBUNTU_PPA=${UBUNTU_PPA:-$PACKAGE_URL/xenial-ocata-ppa.tar.gz} -# export CENTOS_PPA=${CENTOS_PPA:-$PACKAGE_URL/centos7-ocata-ppa.tar.gz} - -# SDN Packages for integration -# export APP_PACKAGE=${APP_PACKAGE:-$PACKAGE_URL/packages.tar.gz} - -# Other Packages -# export LOADERS=${LOADERS:-$PACKAGE_URL/loaders.tar.gz} -# export CIRROS=${CIRROS:-$PACKAGE_URL/cirros-0.3.3-x86_64-disk.img} - -# Containerized compass-core docker images -export COMPASS_DECK=${COMPASS_DECK:-huangxiangyu/compass-deck:v0.2} -export COMPASS_TASKS=${COMPASS_TASKS:-wtwde/compass-tasks-osa:v0.2} -export COMPASS_COBBLER=${COMPASS_COBBLER:-huangxiangyu/compass-cobbler:v0.1} -export COMPASS_DB=${COMPASS_DB:-huangxiangyu/compass-db:v0.1} -export COMPASS_MQ=${COMPASS_MQ:-huangxiangyu/compass-mq:v0.1} - -# Containerized compass-core ansible -export COMPASS_COMPOSE=${COMPASS_COMPOSE:-https://github.com/hexhxy/compass-docker-compose.git} diff --git a/build/build.yaml b/build/build.yaml new file mode 100644 index 00000000..3f684613 --- /dev/null +++ b/build/build.yaml @@ -0,0 +1,41 @@ +--- +packages: + - name: CentOS-7-x86_64-Minimal-1611.iso + description: "Centos ISO of each host for provisioning" + get_method: cached + url: http://artifacts.opnfv.org/compass4nfv/package/master/CentOS-7-x86_64-Minimal-1611.iso + + - name: ubuntu-16.04-server-amd64.iso + description: "Ubuntu ISO of each host for provisioning" + get_method: cached + url: http://artifacts.opnfv.org/compass4nfv/package/master/ubuntu-16.04-server-amd64.iso + + - name: compass-deck + description: "RESTful API and DB Handlers for Compass" + get_method: docker + url: huangxiangyu/compass-deck:v0.2 + + - name: compass-tasks-osa + description: "compass task container for openstack deployment via openstack-ansible" + get_method: docker + url: wtwde/compass-tasks-osa:v0.2 + + - name: compass-cobbler + description: "cobbler container for compass" + get_method: docker + url: huangxiangyu/compass-cobbler:v0.1 + + - name: compass-db + description: "datebase container for compass" + get_method: docker + url: huangxiangyu/compass-db:v0.1 + + - name: compass-mq + description: "message queue container for compass" + get_method: docker + url: huangxiangyu/compass-mq:v0.1 + + - name: compass-docker-compose + description: "containerized compass compose ansible" + get_method: git + url: https://github.com/hexhxy/compass-docker-compose.git diff --git a/build/parser.py b/build/parser.py new file mode 100644 index 00000000..602d7c21 --- /dev/null +++ b/build/parser.py @@ -0,0 +1,104 @@ +############################################################################## +# Copyright (c) 2017 HUAWEI TECHNOLOGIES CO.,LTD and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +import yaml +import os +import sys + + +def load_env(): + cache_dir = os.environ.get('CACHE_DIR') + print "Read local Cache dir is %s" % cache_dir + return cache_dir + + +def get_from_cache(cache, package): + filename = package.get("name") + remotefile = package.get("url") + localfile = cache + "/" + filename + localmd5file = localfile + ".md5" + remotemd5file = remotefile + ".md5" + print "removing local md5 file...." + cmd = "rm -f " + localmd5file + os.system(cmd) + print "downloading remote md5 file to local...." + cmd = "curl --connect-timeout 10 -o " + localmd5file + " " + remotemd5file + os.system(cmd) + if os.path.exists(localmd5file): + print "calculate md5sum of local file" + cmd = "md5sum " + localfile + "|cut -d ' ' -f 1" + localmd5sum = os.popen(cmd).readlines() + cmd = "cat " + localmd5file + "|cut -d ' ' -f 1" + remotemd5sum = os.popen(cmd).readlines() + print "md5 local %s remote %s" % (localmd5sum, remotemd5sum) + if (remotemd5sum == localmd5sum): + print "Same with remote, no need to download...." + return + print "downloading remote file to local...." + cmd = "curl --connect-timeout 10 -o " + localfile + " " + remotefile + print cmd + os.system(cmd) + + +def get_from_git(cache, package): + localfile = cache + "/" + package.get("name") + cmd = "rm -rf " + localfile + print cmd + os.system(cmd) + cmd = "git clone " + package.get("url") + " " + localfile + print cmd + os.system(cmd) + + +def get_from_docker(cache, package): + cmd = "sudo docker pull "+package.get("url") + os.system(cmd) + cmd = "sudo docker save "+package.get("url")+" -o "+cache+"/" + cmd += package.get("name")+".tar" + os.system(cmd) + + +def get_from_curl(cache, package): + cmd = "curl --connect-timeout 10 -o " + cache + "/" + cmd += package.get("name") + " " + package.get("url") + print cmd + os.system(cmd) + + +def usage(): + print "cached : Download from a cached server" + print "git : Download from git url" + print "curl : Download from a url link by curl" + print "docker : Download from docker hub" + + +def build_parser(build_file_name): + cache = load_env() + cfg = yaml.load(file(build_file_name, 'r')) + + print "Starting building...." + for pkg in cfg.get("packages"): + print "processing %s" % pkg.get("description") + + if pkg.get("get_method") == "cached": + get_from_cache(cache, pkg) + elif pkg.get("get_method") == "git": + get_from_git(cache, pkg) + elif pkg.get("get_method") == "docker": + get_from_docker(cache, pkg) + elif pkg.get("get_method") == "curl": + get_from_curl(cache, pkg) + else: + usage + +if __name__ == "__main__": + if len(sys.argv) != 2: + print("parameter wrong%d %s" % (len(sys.argv), sys.argv)) + sys.exit(1) + build_parser(sys.argv[1]) |