Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- import requests
- import argparse
- import base64
- def validate_and_return(resp):
- if str(resp.status_code)[0] in ["2", "3"]:
- json = None
- try:
- json = resp.json()
- except:
- return resp.text
- return json
- raise Exception("Invalid response code: %s", response.text)
- class TeamCity(object):
- def __init__(self, username, password, uri):
- self.username = username
- self.password = password
- self.uri = uri
- self.verify = False # Can be parameterized
- def connect(self):
- self.session = requests.Session()
- login_data = dict(userName=self.username, password=self.password)
- uri = self.uri + "/app/rest/application.wadl"
- userpass = '%s:%s' % (self.username, self.password)
- base64string = base64.encodestring(userpass.encode()).decode().replace("\n", "")
- headers = {"Authorization": "Basic %s" % base64string}
- return validate_and_return(self.session.get(uri, verify=self.verify, headers=headers))
- def get_projects(self):
- headers = {"Accept": "application/json"}
- return validate_and_return(self.session.get(self.uri + "/app/rest/projects", headers=headers))
- def get_builds(self):
- headers = {"Accept": "application/json"}
- return validate_and_return(self.session.get(self.uri + "/app/rest/builds", headers=headers))
- def delete_build(self, id):
- headers = {"Accept": "application/json"}
- uri = self.uri + "/app/rest/builds/?locator=id:"
- return validate_and_return(self.session.delete(uri+str(id), headers=headers))
- def start():
- parser = argparse.ArgumentParser()
- parser.add_argument("-username")
- parser.add_argument("-password")
- parser.add_argument("-uri")
- args = parser.parse_args()
- tc = TeamCity(args.username, args.password, args.uri)
- tc.connect()
- builds = tc.get_builds()['build']
- print("Builds", builds)
- print(builds)
- for build in builds:
- print("Deleting build with id: ", build["id"])
- tc.delete_build(build["id"])
- if __name__ == "__main__":
- start()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement