Advertisement
Guest User

Untitled

a guest
May 11th, 2016
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.10 KB | None | 0 0
  1. #!/usr/bin/env python
  2.  
  3. import requests
  4. import argparse
  5. import base64
  6.  
  7. def validate_and_return(resp):
  8. if str(resp.status_code)[0] in ["2", "3"]:
  9. json = None
  10. try:
  11. json = resp.json()
  12. except:
  13. return resp.text
  14. return json
  15. raise Exception("Invalid response code: %s", response.text)
  16.  
  17. class TeamCity(object):
  18. def __init__(self, username, password, uri):
  19. self.username = username
  20. self.password = password
  21. self.uri = uri
  22. self.verify = False # Can be parameterized
  23.  
  24. def connect(self):
  25. self.session = requests.Session()
  26. login_data = dict(userName=self.username, password=self.password)
  27. uri = self.uri + "/app/rest/application.wadl"
  28. userpass = '%s:%s' % (self.username, self.password)
  29. base64string = base64.encodestring(userpass.encode()).decode().replace("\n", "")
  30. headers = {"Authorization": "Basic %s" % base64string}
  31. return validate_and_return(self.session.get(uri, verify=self.verify, headers=headers))
  32.  
  33. def get_projects(self):
  34. headers = {"Accept": "application/json"}
  35. return validate_and_return(self.session.get(self.uri + "/app/rest/projects", headers=headers))
  36.  
  37. def get_builds(self):
  38. headers = {"Accept": "application/json"}
  39. return validate_and_return(self.session.get(self.uri + "/app/rest/builds", headers=headers))
  40.  
  41. def delete_build(self, id):
  42. headers = {"Accept": "application/json"}
  43. uri = self.uri + "/app/rest/builds/?locator=id:"
  44. return validate_and_return(self.session.delete(uri+str(id), headers=headers))
  45.  
  46.  
  47. def start():
  48. parser = argparse.ArgumentParser()
  49. parser.add_argument("-username")
  50. parser.add_argument("-password")
  51. parser.add_argument("-uri")
  52. args = parser.parse_args()
  53. tc = TeamCity(args.username, args.password, args.uri)
  54. tc.connect()
  55. builds = tc.get_builds()['build']
  56. print("Builds", builds)
  57. print(builds)
  58. for build in builds:
  59. print("Deleting build with id: ", build["id"])
  60. tc.delete_build(build["id"])
  61.  
  62. if __name__ == "__main__":
  63. start()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement