Add nodepool host
Change-Id: Ib216bd400aa269ccdb17848b3870ab65400cf3d2
This commit is contained in:
parent
64b1fe343f
commit
f1c342cdf4
118
modules/openstack_project/files/nodepool/scripts/devstack-cache.py
Executable file
118
modules/openstack_project/files/nodepool/scripts/devstack-cache.py
Executable file
@ -0,0 +1,118 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
# Copyright (C) 2011-2013 OpenStack Foundation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
# implied.
|
||||
#
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
import os
|
||||
import sys
|
||||
import subprocess
|
||||
|
||||
DEVSTACK='~/workspace-cache/devstack'
|
||||
|
||||
def run_local(cmd, status=False, cwd='.', env={}):
|
||||
print "Running:", cmd
|
||||
newenv = os.environ
|
||||
newenv.update(env)
|
||||
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, cwd=cwd,
|
||||
stderr=subprocess.STDOUT, env=newenv)
|
||||
(out, nothing) = p.communicate()
|
||||
if status:
|
||||
return (p.returncode, out.strip())
|
||||
return out.strip()
|
||||
|
||||
|
||||
def git_branches():
|
||||
branches = []
|
||||
for branch in run_local(['git', 'branch', '-a'], cwd=DEVSTACK).split("\n"):
|
||||
branch = branch.strip()
|
||||
if not branch.startswith('remotes/origin'):
|
||||
continue
|
||||
branches.append(branch)
|
||||
return branches
|
||||
|
||||
|
||||
def tokenize(fn, tokens, distribution, comment=None):
|
||||
for line in open(fn):
|
||||
if 'dist:' in line and ('dist:%s' % distribution not in line):
|
||||
continue
|
||||
if 'qpid' in line:
|
||||
continue # TODO: explain why this is here
|
||||
if comment and comment in line:
|
||||
line = line[:line.rfind(comment)]
|
||||
line = line.strip()
|
||||
if line and line not in tokens:
|
||||
tokens.append(line)
|
||||
|
||||
|
||||
def local_prep(distribution):
|
||||
branches = []
|
||||
for branch in git_branches():
|
||||
# Ignore branches of the form 'somestring -> someotherstring'
|
||||
# as this denotes a symbolic reference and the entire string
|
||||
# as is cannot be checked out. We can do this safely as the
|
||||
# reference will refer to one of the other branches returned
|
||||
# by git_branches.
|
||||
if ' -> ' in branch:
|
||||
continue
|
||||
branch_data = {'name': branch}
|
||||
print 'Branch: ', branch
|
||||
run_local(['git', 'checkout', branch], cwd=DEVSTACK)
|
||||
run_local(['git', 'pull', '--ff-only', 'origin'], cwd=DEVSTACK)
|
||||
|
||||
debs = []
|
||||
debdir = os.path.join(DEVSTACK, 'files', 'apts')
|
||||
for fn in os.listdir(debdir):
|
||||
fn = os.path.join(debdir, fn)
|
||||
tokenize(fn, debs, distribution, comment='#')
|
||||
branch_data['debs'] = debs
|
||||
|
||||
images = []
|
||||
for line in open(os.path.join(DEVSTACK, 'stackrc')):
|
||||
line = line.strip()
|
||||
if line.startswith('IMAGE_URLS'):
|
||||
if '#' in line:
|
||||
line = line[:line.rfind('#')]
|
||||
if line.endswith(';;'):
|
||||
line = line[:-2]
|
||||
line = line.split('=', 1)[1].strip()
|
||||
if line.startswith('${IMAGE_URLS:-'):
|
||||
line = line[len('${IMAGE_URLS:-'):]
|
||||
if line.endswith('}'):
|
||||
line = line[:-1]
|
||||
if line[0] == line[-1] == '"':
|
||||
line = line[1:-1]
|
||||
images += [x.strip() for x in line.split(',')]
|
||||
branch_data['images'] = images
|
||||
branches.append(branch_data)
|
||||
return branches
|
||||
|
||||
|
||||
def main():
|
||||
distribution = sys.argv[1]
|
||||
|
||||
branches = local_prep(distribution)
|
||||
image_filenames = {}
|
||||
for branch_data in branches:
|
||||
if branch_data['debs']:
|
||||
run_local(['sudo', 'apt-get', '-y', '-d', 'install'] +
|
||||
branch_data['debs'])
|
||||
|
||||
for url in branch_data['images']:
|
||||
fname = url.split('/')[-1]
|
||||
if fname in image_filenames:
|
||||
continue
|
||||
run_local(['wget', '-nv', '-c', url,
|
||||
'-O', '~/cache/files/%s' % fname])
|
63
modules/openstack_project/files/nodepool/scripts/prepare_devstack.sh
Executable file
63
modules/openstack_project/files/nodepool/scripts/prepare_devstack.sh
Executable file
@ -0,0 +1,63 @@
|
||||
#!/bin/bash -xe
|
||||
|
||||
# Copyright (C) 2011-2013 OpenStack Foundation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
# implied.
|
||||
#
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
mkdir -p ~/cache/files
|
||||
mkdir -p ~/cache/pip
|
||||
sudo DEBIAN_FRONTEND=noninteractive apt-get \
|
||||
--option "Dpkg::Options::=--force-confold" \
|
||||
--assume-yes install build-essential python-dev \
|
||||
linux-headers-virtual linux-headers-`uname -r`
|
||||
|
||||
rm -rf ~/workspace-cache
|
||||
mkdir -p ~/workspace-cache
|
||||
|
||||
pushd ~/workspace-cache
|
||||
git clone https://review.openstack.org/p/openstack-dev/devstack
|
||||
git clone https://review.openstack.org/p/openstack-dev/grenade
|
||||
git clone https://review.openstack.org/p/openstack-dev/pbr
|
||||
git clone https://review.openstack.org/p/openstack-infra/devstack-gate
|
||||
git clone https://review.openstack.org/p/openstack-infra/jeepyb
|
||||
git clone https://review.openstack.org/p/openstack/ceilometer
|
||||
git clone https://review.openstack.org/p/openstack/cinder
|
||||
git clone https://review.openstack.org/p/openstack/glance
|
||||
git clone https://review.openstack.org/p/openstack/heat
|
||||
git clone https://review.openstack.org/p/openstack/horizon
|
||||
git clone https://review.openstack.org/p/openstack/keystone
|
||||
git clone https://review.openstack.org/p/openstack/neutron
|
||||
git clone https://review.openstack.org/p/openstack/nova
|
||||
git clone https://review.openstack.org/p/openstack/oslo.config
|
||||
git clone https://review.openstack.org/p/openstack/oslo.messaging
|
||||
git clone https://review.openstack.org/p/openstack/python-ceilometerclient
|
||||
git clone https://review.openstack.org/p/openstack/python-cinderclient
|
||||
git clone https://review.openstack.org/p/openstack/python-glanceclient
|
||||
git clone https://review.openstack.org/p/openstack/python-heatclient
|
||||
git clone https://review.openstack.org/p/openstack/python-keystoneclient
|
||||
git clone https://review.openstack.org/p/openstack/python-neutronclient
|
||||
git clone https://review.openstack.org/p/openstack/python-novaclient
|
||||
git clone https://review.openstack.org/p/openstack/python-openstackclient
|
||||
git clone https://review.openstack.org/p/openstack/python-swiftclient
|
||||
git clone https://review.openstack.org/p/openstack/requirements
|
||||
git clone https://review.openstack.org/p/openstack/swift
|
||||
git clone https://review.openstack.org/p/openstack/tempest
|
||||
popd
|
||||
|
||||
. /etc/lsb-release
|
||||
python ./devstack-cache.py $DISTRIB_CODENAME
|
||||
|
||||
sync
|
||||
sleep 5
|
33
modules/openstack_project/files/nodepool/scripts/prepare_node.sh
Executable file
33
modules/openstack_project/files/nodepool/scripts/prepare_node.sh
Executable file
@ -0,0 +1,33 @@
|
||||
#!/bin/bash -xe
|
||||
|
||||
# Copyright (C) 2011-2013 OpenStack Foundation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
# implied.
|
||||
#
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
HOSTNAME=$1
|
||||
|
||||
sudo hostname $1
|
||||
wget https://raw.github.com/openstack-infra/config/master/install_puppet.sh
|
||||
sudo bash -xe install_puppet.sh
|
||||
sudo git clone https://review.openstack.org/p/openstack-infra/config.git \
|
||||
/root/config
|
||||
sudo /bin/bash /root/config/install_modules.sh
|
||||
if [ -z $NODEPOOL_SSH_KEY ] ; then
|
||||
sudo puppet apply --modulepath=/root/config/modules:/etc/puppet/modules \
|
||||
-e "class {'openstack_project::slave_template': }"
|
||||
else
|
||||
sudo puppet apply --modulepath=/root/config/modules:/etc/puppet/modules \
|
||||
-e "class {'openstack_project::slave_template': install_users => false, ssh_key => '$NODEPOOL_SSH_KEY', }"
|
||||
fi
|
22
modules/openstack_project/files/nodepool/scripts/prepare_node_devstack.sh
Executable file
22
modules/openstack_project/files/nodepool/scripts/prepare_node_devstack.sh
Executable file
@ -0,0 +1,22 @@
|
||||
#!/bin/bash -xe
|
||||
|
||||
# Copyright (C) 2011-2013 OpenStack Foundation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
# implied.
|
||||
#
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
HOSTNAME=$1
|
||||
|
||||
./prepare_node.sh $HOSTNAME
|
||||
./prepare_devstack.sh $HOSTNAME
|
Loading…
Reference in New Issue
Block a user