Guest User

Untitled

a guest
Jan 19th, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.39 KB | None | 0 0
  1. import os
  2. import re
  3.  
  4. from fabric.api import cd, hide, local, puts
  5.  
  6.  
  7. CONTRIB_DIR = 'gallery-contrib'
  8. GALLERY_REPO = 'git://github.com/gallery/gallery3.git'
  9. GALLERY_CONTRIB_REPO = 'git://github.com/gallery/gallery3-contrib.git'
  10. DATABASE_PREFIX = 'gallery_'
  11.  
  12.  
  13. # PRIVATE UTILITY FUNCTIONS
  14.  
  15. def _get_tags():
  16. with hide('running'):
  17. output = local('git ls-remote --tags ' + GALLERY_REPO)
  18. it = re.finditer('/([^/]+)$', output, re.MULTILINE)
  19. return [m.group(1) for m in it]
  20.  
  21.  
  22. def _get_last_version():
  23. return max(_get_tags())
  24.  
  25.  
  26. def _get_gallery_dirs():
  27. current_dir = os.getcwd()
  28. entries = os.listdir(current_dir)
  29. dirs = filter(os.path.isdir, entries)
  30. if CONTRIB_DIR in dirs:
  31. dirs.remove(CONTRIB_DIR)
  32. return dirs
  33.  
  34.  
  35. # TAGS TASKS
  36.  
  37. def list_tags():
  38. map(puts, _get_tags())
  39.  
  40.  
  41. def last_version():
  42. puts(_get_last_version())
  43.  
  44.  
  45. # INSTANCES TASKS
  46.  
  47. def deploy(name, database_password=None):
  48. create_instance(name)
  49. create_database(name, database_password)
  50.  
  51.  
  52. def create_instance(name):
  53. local('git clone ' + GALLERY_REPO + ' ' + name)
  54. with cd(name):
  55. tag = _get_last_version()
  56. local('git checkout ' + tag)
  57. local('mkdir var')
  58. local('chown www-data:www-data var')
  59. path = os.path.abspath(name)
  60. puts('New gallery instance deployed in ' + path)
  61.  
  62.  
  63. def create_database(site, password=None):
  64. if not password:
  65. password = local('pwgen -s 8 1')
  66.  
  67. database_name = DATABASE_PREFIX + site
  68. database_user = database_name + '@localhost'
  69.  
  70. local('mysqladmin -u root -p create ' + database_name)
  71. local('mysql -u root -p -e "CREATE USER ' + database_user + ' IDENTIFIED BY \'' + password + '\';"')
  72. local('mysql -u root -p -e "GRANT ALL ON ' + database_name + '.* TO ' + database_user + ';"')
  73.  
  74. puts('Database ' + database_name + ' successfully created with password ' + password)
  75.  
  76.  
  77. def upgrade_site(site, tag=None):
  78. if not tag:
  79. tag = _get_last_version()
  80.  
  81. puts('Upgrade site ' + site + ' to version ' + tag)
  82. with cd(site):
  83. local('git fetch origin')
  84. local('git checkout ' + tag)
  85.  
  86.  
  87. def upgrade(site=None, tag=None):
  88. if not tag:
  89. tag = _get_last_version()
  90.  
  91. if site:
  92. upgrade_site(site, tag)
  93. return
  94.  
  95. for site in _get_gallery_dirs():
  96. upgrade_site(site, tag)
  97. puts('')
  98.  
  99.  
  100. # CONTRIB REPO TASKS
  101.  
  102. def setup_contrib():
  103. local('git clone ' + GALLERY_CONTRIB_REPO + ' ' + CONTRIB_DIR)
  104. path = os.path.abspath(CONTRIB_DIR)
  105. puts('Contrib repository fetched in ' + path)
  106.  
  107.  
  108. def upgrade_contrib():
  109. with cd(CONTRIB_DIR):
  110. local('git pull origin master')
Add Comment
Please, Sign In to add comment