Last active
December 11, 2015 02:49
-
-
Save garlandkr/4533728 to your computer and use it in GitHub Desktop.
Update to the latest Logstash version, requires sh module and lxml (pip install sh lxml) and python headers. If you are on Ubuntu use: apt-get -y install python-dev python-pip libxml2-dev libxslt-dev; pip install lxml sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/python | |
import re | |
import sh | |
import urllib | |
from lxml import objectify, etree | |
from distutils.version import StrictVersion | |
url = "https://logstash.objects.dreamhost.com/" # xml listing of releases | |
logstash_dir = "/opt/logstash" | |
# Checking the Logstash version might take a while, be patient. | |
version_parse = re.compile("release\/logstash-(.*)-monolithic\.jar") | |
version_current = sh.java("-jar", "%s/logstash.jar" % logstash_dir, "agent", "-V").split(" ")[1].strip('\n') | |
response = urllib.urlopen(url).read().replace('<?xml version="1.0" encoding="UTF-8"?>','') | |
response = response.replace(" xmlns=\"http://s3.amazonaws.com/doc/2006-03-01/\"", "") | |
xml = objectify.fromstring(response) | |
tree = xml.getchildren() | |
# Version as key, with a dict as value. Example: | |
# {'1.1.1': {'releasename': 'release/logstash-1.1.1-monolithic.jar'}} | |
available_versions = {} | |
for subtree in tree: | |
for release in subtree.iterchildren(): | |
if release.tag == "Key": | |
release = str(release) | |
matching = re.search(version_parse, release) | |
if matching: | |
available_versions[matching.group(1)] = {'releasename': release} | |
for version in available_versions: | |
if StrictVersion(version_current) < StrictVersion(version): | |
new_version_url = url+available_versions[version]['releasename'] | |
urllib.urlretrieve(new_version_url, "%s/%s" % (logstash_dir, "logstash.jar")) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment