solum/tools/trigger-app.py

75 lines
2.4 KiB
Python

#!/usr/bin/env python
# Copyright 2014 - Rackspace Hosting
#
# 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.
"""
For testing trigger workflow
"""
import argparse
import json
import os
import requests
from solumclient import client as solum_client
SOLUM_API_VERSION = '1'
def _get_solum_client():
args = {}
args['os_username'] = os.getenv('OS_USERNAME', '')
args['os_password'] = os.getenv('OS_PASSWORD', '')
args['os_tenant_name'] = os.getenv('OS_TENANT_NAME', '')
args['os_auth_url'] = os.getenv('OS_AUTH_URL', '')
args['solum_url'] = os.getenv('SOLUM_URL', '')
try:
client = solum_client.get_client(SOLUM_API_VERSION, **args)
return client
except Exception as ex:
print("Error in getting Solum client: %s" % ex)
exit(1)
def main(args):
client = _get_solum_client()
app = client.apps.find(name_or_id=args.app)
status_url = 'https://api.github.com/repos/{repo}/statuses/{sha}'.format(
repo=args.repo, sha=args.sha)
body_dict = {'sender': {'url': 'https://api.github.com'},
'pull_request': {'head': {'sha': args.sha}},
'repository': {'statuses_url': status_url}}
body = json.dumps(body_dict)
trigger_uri = app.trigger_uri
if args.workflow:
trigger_uri = "%s?workflow=%s" % (trigger_uri, args.workflow)
resp = requests.post(trigger_uri, data=body)
print('status code is %s' % resp.status_code)
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('app', help="app name/UUID")
parser.add_argument('--sha', default='xyz', dest='sha',
help="the commit sha to clone from")
parser.add_argument('--repo', default='u/r', dest='repo',
help="{user}/{repo}")
parser.add_argument('--workflow', dest="workflow",
help="Workflow to trigger")
args = parser.parse_args()
main(args)