From 3f04bd80718461d2907f0d4b4be140143121ee6c Mon Sep 17 00:00:00 2001 From: Isaac Beckman <isaacb@il.ibm.com> Date: Sun, 6 Nov 2016 11:35:11 +0200 Subject: [PATCH] cleanup: remove unused scripts used for snapshots This review cleanup scripts that were exclusively used by snapshot scripts for nodepool which were removed in: https://review.openstack.org/#/c/331494/ Change-Id: I37900a5d698a43bc0d510100289a5a7ec527021d --- nodepool/scripts/cache_devstack.py | 189 ------------------ nodepool/scripts/cache_git_repos.py | 92 --------- nodepool/scripts/common.py | 32 --- nodepool/scripts/fix_grub_timeout.sh | 31 --- .../scripts/install_devstack_dependencies.sh | 52 ----- 5 files changed, 396 deletions(-) delete mode 100755 nodepool/scripts/cache_devstack.py delete mode 100755 nodepool/scripts/cache_git_repos.py delete mode 100644 nodepool/scripts/common.py delete mode 100755 nodepool/scripts/fix_grub_timeout.sh delete mode 100755 nodepool/scripts/install_devstack_dependencies.sh diff --git a/nodepool/scripts/cache_devstack.py b/nodepool/scripts/cache_devstack.py deleted file mode 100755 index 0c7505959b..0000000000 --- a/nodepool/scripts/cache_devstack.py +++ /dev/null @@ -1,189 +0,0 @@ -#!/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 - -from common import run_local - -DEVSTACK = os.path.expanduser('/opt/git/openstack-dev/devstack') -CACHEDIR = os.path.expanduser('~/cache/files') - -# Some jobs might require newer distro packages, so we can pre-cache -# deb packages from specified Ubuntu Cloud Archive pockets. -UCA_POCKETS = [] - - -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.find(comment)] - line = line.strip() - if line and line not in tokens: - tokens.append(line) - - -def _legacy_find_images(basedir): - """Divine what images we should use based on parsing stackrc.""" - images = [] - for line in open(os.path.join(basedir, 'stackrc')): - line = line.strip() - if line.startswith('IMAGE_URLS'): - if '#' in line: - line = line[:line.find('#')] - 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 not line: - continue - if line[0] == line[-1] == '"': - line = line[1:-1] - # Add image to the list to be downloaded, but - # skip downloading giant vmware images - images += [x.strip() for x in line.split(',') - if not x.strip().endswith('vmdk')] - return images - - -def _find_images(basedir): - images = [] - image_tool = os.path.join(basedir, 'tools', 'image_list.sh') - if os.path.exists(image_tool): - returncode, out = run_local(image_tool, status=True) - if returncode: - print "%s failed" % image_tool - print "Exit: %s, Output: %s" % (returncode, out) - # reset images so we'll fall back - images = [] - else: - images = out.split('\n') - return images - - -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(['sudo', 'git', 'checkout', branch], cwd=DEVSTACK) - run_local(['sudo', 'git', 'pull', '--ff-only', 'origin'], cwd=DEVSTACK) - - if os.path.exists('/usr/bin/apt-get'): - debs = [] - debdir = os.path.join(DEVSTACK, 'files', 'debs') - if not os.path.exists(debdir): - 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 - - if os.path.exists('/usr/bin/yum'): - rpms = [] - rpmdir = os.path.join(DEVSTACK, 'files', 'rpms') - for fn in os.listdir(rpmdir): - fn = os.path.join(rpmdir, fn) - tokenize(fn, rpms, distribution, comment='#') - branch_data['rpms'] = rpms - - images = _find_images(DEVSTACK) - if not images: - images = _legacy_find_images(DEVSTACK) - - branch_data['images'] = images - branches.append(branch_data) - return branches - - -def download(url, fname): - run_local(['wget', '-nv', '-c', url, '-O', os.path.join(CACHEDIR, fname)]) - - -def cache_debs(debs, uca_pocket=None): - """Cache a list of deb packages, optionally pulling from an Ubuntu Cloud - Archive pocket. If a UCA pocket is specified, it is enabled temporarily - for caching only. - """ - if uca_pocket: - # Note this will install the ubuntu-cloud-keyring package which - # contains the required GPG key. - run_local(['sudo', 'add-apt-repository', '-y', - 'cloud-archive:%s' % uca_pocket]) - run_local(['sudo', 'apt-get', 'update']) - run_local(['sudo', 'apt-get', '-y', '-d', 'install'] + debs) - if uca_pocket: - run_local(['sudo', 'rm', '-f', - '/etc/apt/sources.list.d/cloudarchive-%s.list' % uca_pocket]) - run_local(['sudo', 'apt-get', 'update']) - - -def main(): - distribution = sys.argv[1] - - branches = local_prep(distribution) - image_filenames = [] - for branch_data in branches: - if branch_data.get('debs'): - cache_debs(branch_data['debs']) - for uca in sorted(UCA_POCKETS): - cache_debs(branch_data['debs'], uca) - elif branch_data.get('rpms'): - run_local(['sudo', 'yum', 'install', '-y', '--downloadonly'] + - branch_data['rpms']) - else: - sys.exit('No supported package data found.') - - for url in branch_data['images']: - fname = url.split('/')[-1] - if fname in image_filenames: - continue - image_filenames.append(fname) - download(url, fname) - - # cache get-pip, because upstream network connection fails more - # often than you might imagine. - download('https://bootstrap.pypa.io/get-pip.py', 'get-pip.py') - - -if __name__ == '__main__': - main() diff --git a/nodepool/scripts/cache_git_repos.py b/nodepool/scripts/cache_git_repos.py deleted file mode 100755 index 46b5758273..0000000000 --- a/nodepool/scripts/cache_git_repos.py +++ /dev/null @@ -1,92 +0,0 @@ -#!/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.path -import re -import shutil -import sys -import urllib2 - -from common import run_local - -URL = ('https://git.openstack.org/cgit/openstack-infra/project-config/' - 'plain/gerrit/projects.yaml') -PROJECT_RE = re.compile('^-?\s+project:\s+(.*)$') - -# Not using an arg libraries in order to avoid module imports that -# are not available across all python versions -if len(sys.argv) > 1: - GIT_BASE = sys.argv[1] -else: - GIT_BASE = 'git://git.openstack.org' - - -def clone_repo(project): - remote = '%s/%s.git' % (GIT_BASE, project) - - # Clear out any existing target directory first, in case of a retry. - try: - shutil.rmtree(os.path.join('/opt/git', project)) - except OSError: - pass - - # Try to clone the requested git repository. - (status, out) = run_local(['git', 'clone', remote, project], - status=True, cwd='/opt/git') - - # If it claims to have worked, make sure we can list branches. - if status == 0: - (status, moreout) = run_local(['git', 'branch', '-a'], status=True, - cwd=os.path.join('/opt/git', project)) - out = '\n'.join((out, moreout)) - - # If that worked, try resetting to HEAD to make sure it's there. - if status == 0: - (status, moreout) = run_local(['git', 'reset', '--hard', 'HEAD'], - status=True, - cwd=os.path.join('/opt/git', project)) - out = '\n'.join((out, moreout)) - - # Status of 0 imples all the above worked, 1 means something failed. - return (status, out) - - -def main(): - # TODO(jeblair): use gerrit rest api when available - data = urllib2.urlopen(URL).read() - for line in data.split('\n'): - # We're regex-parsing YAML so that we don't have to depend on the - # YAML module which is not in the stdlib. - m = PROJECT_RE.match(line) - if m: - project = m.group(1) - dirname = os.path.dirname(project) - # Skip repos that are inactive - if not ('attic' in dirname or dirname == 'stackforge'): - (status, out) = clone_repo(project) - print out - if status != 0: - print 'Retrying to clone %s' % m.group(1) - (status, out) = clone_repo(m.group(1)) - print out - if status != 0: - raise Exception('Failed to clone %s' % m.group(1)) - - -if __name__ == '__main__': - main() diff --git a/nodepool/scripts/common.py b/nodepool/scripts/common.py deleted file mode 100644 index 3ccfedfdf2..0000000000 --- a/nodepool/scripts/common.py +++ /dev/null @@ -1,32 +0,0 @@ -#!/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 subprocess - - -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() diff --git a/nodepool/scripts/fix_grub_timeout.sh b/nodepool/scripts/fix_grub_timeout.sh deleted file mode 100755 index 77fb04b218..0000000000 --- a/nodepool/scripts/fix_grub_timeout.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash -xe -# Copyright (C) 2014 Hewlett-Packard Development Company, L.P. -# -# 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. - -# Set the grub timeout to 0. -if [ -f /etc/default/grub ] ; then - sudo sed -i -e 's/^GRUB_TIMEOUT=[0-9]\+/GRUB_TIMEOUT=0/' \ - /etc/default/grub - if which update-grub &> /dev/null ; then - sudo update-grub - else - # If update-grub isn't available, use grub2-mkconfig directly - sudo /usr/sbin/grub2-mkconfig -o /boot/grub2/grub.cfg - fi -elif [ -f /boot/grub/grub.conf ] ; then - sudo sed -i -e 's/^timeout=[0-9]\+/timeout=0/' \ - /boot/grub/grub.conf -fi diff --git a/nodepool/scripts/install_devstack_dependencies.sh b/nodepool/scripts/install_devstack_dependencies.sh deleted file mode 100755 index a1c713e037..0000000000 --- a/nodepool/scripts/install_devstack_dependencies.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/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 - -if [ -f /usr/bin/yum ]; then - sudo yum -y install python-devel python3-devel make automake gcc gcc-c++ \ - kernel-devel redhat-lsb-core -elif [ -f /usr/bin/apt-get ]; then - if [ "$(lsb_release -c -s)" = "precise" ]; then - # temporary - remove the breaking -70 kernel and - # reinstall -69 to prevent openvswitch breakage - sudo DEBIAN_FRONTEND=noninteractive apt-get \ - --option "Dpkg::Options::=--force-confold" \ - --assume-yes remove linux-headers-3.2.0-70 \ - linux-headers-3.2.0-70-virtual \ - linux-image-3.2.0-70-virtual \ - linux-headers-3.2.0-70-generic \ - linux-image-3.2.0-70-generic - sudo DEBIAN_FRONTEND=noninteractive apt-get \ - --option "Dpkg::Options::=--force-confold" \ - --assume-yes install --reinstall linux-headers-3.2.0-69 \ - linux-headers-3.2.0-69-virtual \ - linux-image-3.2.0-69-virtual \ - python-software-properties build-essential python-dev python3-dev - else - sudo DEBIAN_FRONTEND=noninteractive apt-get \ - --option "Dpkg::Options::=--force-confold" \ - --assume-yes install build-essential python-dev python3-dev \ - python-software-properties linux-headers-virtual \ - linux-headers-$(uname -r) - fi -else - echo "Unsupported distro." - exit 1 -fi