Skip to content

Instantly share code, notes, and snippets.

@quantonganh
Created May 11, 2014 05:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save quantonganh/af2c83c7b7c77cf4be77 to your computer and use it in GitHub Desktop.
Save quantonganh/af2c83c7b7c77cf4be77 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
import os
import json
import salt.client
import salt.syspaths as syspaths
def application(environ, start_response):
length = environ.get('CONTENT_LENGTH', '0')
length = 0 if length == '' else int(length)
body = environ['wsgi.input'].read()
data = json.loads(body)
organization = ''.join(json.dumps(data['repository']['homepage'])[1:-1].split('/')[-2:-1])
print('organization: {0}'.format(organization))
project = ''.join(json.dumps(data['repository']['homepage'])[1:-1].split('/')[-1:])
print('project: {0}'.format(project))
branch = json.dumps(data['ref'])[1:-1].split('/')[2]
print('branch: {0}'.format(branch))
tag = 'deploy_' + branch
print('tag: {0}'.format(tag))
caller = salt.client.Caller(os.path.join(syspaths.CONFIG_DIR, 'minion'))
pillar = caller.sminion.functions['pillar.get']('{0}:{1}:deploy_{2}'.format(organization, project, branch))
repository = data['repository']
repository.update(pillar)
payload = json.dumps(repository)
print('payload: {0}'.format(payload))
start_response('200 OK', [('Content-Type','text/html')])
return [os.system("sudo /usr/local/bin/salt_fire_event.py -p '{0}' -t '{1}'".format(payload, tag))]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment