ftp_deploy.utils.core: 51 total statements, 100.0% covered

Generated: Sun 2014-03-16 19:26 GMT

Source file: /var/www/service.dev/service/ftp_deploy/utils/core.py

Stats: 44 executed, 0 missed, 7 excluded, 29 ignored

  1. import re
  2. import pycurl
  3. import certifi
  4. import StringIO
  5. from .ftp import ftp_check
  6. from .repo import bitbucket_check, github_check
  7. from ftp_deploy.conf import *
  8. class service_check(object):
  9. """Service check class, what group together all checking points. Return 'fails' and 'message' lists"""
  10. def __init__(self, service):
  11. self.service = service
  12. self.message = list()
  13. self.fails = [False, False, False, False]
  14. def check_log(self):
  15. """Check logs"""
  16. if self.service.pk is not None:
  17. log_fail = self.service.log_set.all().filter(status=False).filter(skip=False).count()
  18. if log_fail:
  19. self.message.append('<b>Log</b>: Deploy Fails(%d)' % log_fail)
  20. self.fails[0] = True
  21. def check_repo(self):
  22. """Check repositories connection, along with POST Hook"""
  23. if self.service.repo_source == 'bb':
  24. repo = bitbucket_check(BITBUCKET_SETTINGS['username'], BITBUCKET_SETTINGS['password'], self.service)
  25. elif self.service.repo_source == 'gh':
  26. repo = github_check(GITHUB_SETTINGS['username'], GITHUB_SETTINGS['password'], self.service)
  27. repo_fail, repo_fail_message = repo.check_all()
  28. if repo_fail:
  29. self.message.append(repo_fail_message)
  30. self.fails[1] = True
  31. hook_fail, hook_fail_message = repo.check_hook_exist()
  32. if hook_fail:
  33. self.message.append(hook_fail_message)
  34. self.fails[2] = True
  35. def check_ftp(self):
  36. """Check FTP connection"""
  37. ftp = ftp_check(self.service.ftp_host, self.service.ftp_username, self.service.ftp_password, self.service.ftp_path)
  38. ftp_fail, ftp_fail_message = ftp.check_all()
  39. ftp.quit()
  40. if ftp_fail:
  41. self.message.append(ftp_fail_message)
  42. self.fails[3] = True
  43. def check_all(self):
  44. self.check_log()
  45. self.check_repo()
  46. self.check_ftp()
  47. return self.fails, self.message
  48. class absolute_url(object):
  49. """Build absolute url to root url without trailing slash"""
  50. def __init__(self, request):
  51. self.request = request
  52. def build(self):
  53. return self.request.build_absolute_uri('/')[:-1]
  54. class LockError(Exception):
  55. """Exception if service is locked"""
  56. def __str__(self):
  57. return 'Deploy failed because service is Locked!'