1
0
Эх сурвалжийг харах

Tools: Add script to grab ES version for BWC tests.

closes #7653
Ryan Ernst 11 жил өмнө
parent
commit
3397908454

+ 83 - 0
dev-tools/get-bwc-version.py

@@ -0,0 +1,83 @@
+# Licensed to Elasticsearch under one or more contributor
+# license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright
+# ownership. Elasticsearch licenses this file to you 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.
+
+'''
+Downloads and extracts elasticsearch for backwards compatibility tests.
+'''
+
+import argparse
+import os
+import platform
+import shutil
+import subprocess
+import urllib.request
+import zipfile
+
+def parse_config():
+  parser = argparse.ArgumentParser(description=__doc__)
+  parser.add_argument('--path', metavar='DIR', default='./backwards',
+                      help='Where to extract elasticsearch')
+  parser.add_argument('--force', action='store_true', default=False,
+                      help='Delete and redownload if the version already exists')
+  parser.add_argument('version', metavar='X.Y.Z',
+                      help='Version of elasticsearch to grab')
+  return parser.parse_args()
+
+def main():
+  c = parse_config()
+  
+  if not os.path.exists(c.path):
+    print('Creating %s' % c.path)
+    os.mkdir(c.path)
+
+  is_windows = platform.system() == 'Windows'
+
+  os.chdir(c.path)
+  version_dir = 'elasticsearch-%s' % c.version
+  if os.path.exists(version_dir):
+    if c.force:
+      print('Removing old download %s' % version_dir)
+      shutil.rmtree(version_dir)
+    else:
+      print('Version %s exists at %s' % (c.version, version_dir))
+      return 
+
+  # before 1.4.0, the zip file contains windows scripts, and tar.gz contained *nix scripts
+  if is_windows:
+    filename = '%s.zip' % version_dir
+  else:
+    filename = '%s.tar.gz' % version_dir
+
+  url = 'https://download.elasticsearch.org/elasticsearch/elasticsearch/%s' % filename
+  print('Downloading %s' % url)
+  urllib.request.urlretrieve(url, filename)
+
+  print('Extracting to %s' % version_dir)
+  if is_windows:
+    archive = zipfile.ZipFile(filename)
+    archive.extractall() 
+  else:
+    # for some reason python's tarfile module has trouble with ES tgz?
+    subprocess.check_call('tar -xzf %s' % filename, shell=True)
+
+  print('Cleaning up %s' % filename)
+  os.remove(filename)
+
+if __name__ == '__main__':
+  try:
+    main()
+  except KeyboardInterrupt:
+    print('Ctrl-C caught, exiting')