superhosting 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (248) hide show
  1. checksums.yaml +8 -8
  2. data/.gitignore +1 -0
  3. data/.travis.yml +13 -0
  4. data/Gemfile.lock +43 -7
  5. data/LICENSE.txt +4 -1
  6. data/Vagrantfile +6 -3
  7. data/bin/sx +6 -2
  8. data/bootstrap/etc/sx/default_model +1 -0
  9. data/bootstrap/etc/sx/models/base/container/docker/command +1 -0
  10. data/bootstrap/etc/sx/models/base/container/docker/user.erb +1 -0
  11. data/bootstrap/etc/sx/models/base/container/docker/volume.erb +2 -0
  12. data/bootstrap/etc/sx/models/bitrix_l/inherit +3 -0
  13. data/bootstrap/etc/sx/models/bitrix_m/inherit +3 -0
  14. data/bootstrap/etc/sx/models/bitrix_xl/inherit +3 -0
  15. data/bootstrap/etc/sx/models/common_bitrix/abstract +1 -0
  16. data/bootstrap/etc/sx/models/common_bitrix/container/mux +1 -0
  17. data/bootstrap/etc/sx/models/common_bitrix/inherit +1 -0
  18. data/bootstrap/etc/sx/models/common_bitrix/site/php/admin_value +2 -0
  19. data/bootstrap/etc/sx/models/common_bitrix/site/php/flag +1 -0
  20. data/bootstrap/etc/sx/models/common_bitrix/site/php/value +6 -0
  21. data/bootstrap/etc/sx/models/common_fcgi/abstract +1 -0
  22. data/bootstrap/etc/sx/models/common_fcgi/container/config.rb +6 -0
  23. data/bootstrap/etc/sx/models/common_fcgi/container/config_templates/supervisord.conf.erb +16 -0
  24. data/bootstrap/etc/sx/models/common_fcgi/container/docker/image +1 -0
  25. data/bootstrap/etc/sx/models/common_fcgi/container/docker/user.erb +1 -0
  26. data/bootstrap/etc/sx/models/common_fcgi/container/system_users +1 -0
  27. data/bootstrap/etc/sx/models/common_fcgi/site/config.rb +4 -0
  28. data/bootstrap/etc/sx/models/common_fcgi/site/config_templates/nginx_vhost.erb +21 -0
  29. data/bootstrap/etc/sx/models/common_joomla/abstract +1 -0
  30. data/bootstrap/etc/sx/models/common_joomla/site/php/flag +1 -0
  31. data/bootstrap/etc/sx/models/common_joomla/site/php/value +2 -0
  32. data/bootstrap/etc/sx/models/common_joomla_v2/abstract +1 -0
  33. data/bootstrap/etc/sx/models/common_joomla_v2/container/mux +1 -0
  34. data/bootstrap/etc/sx/models/common_joomla_v2/inherit +2 -0
  35. data/bootstrap/etc/sx/models/common_joomla_v3/abstract +1 -0
  36. data/bootstrap/etc/sx/models/common_joomla_v3/container/mux +1 -0
  37. data/bootstrap/etc/sx/models/common_joomla_v3/inherit +2 -0
  38. data/bootstrap/etc/sx/models/common_l/abstract +1 -0
  39. data/bootstrap/etc/sx/models/common_l/container/docker/blkio_weight +1 -0
  40. data/bootstrap/etc/sx/models/common_l/container/docker/cpu_period +1 -0
  41. data/bootstrap/etc/sx/models/common_l/container/docker/cpu_quota +1 -0
  42. data/bootstrap/etc/sx/models/common_l/container/docker/cpu_shares +1 -0
  43. data/bootstrap/etc/sx/models/common_l/container/docker/memory +1 -0
  44. data/bootstrap/etc/sx/models/common_l/container/docker/memory_swap +1 -0
  45. data/bootstrap/etc/sx/models/common_m/abstract +1 -0
  46. data/bootstrap/etc/sx/models/common_m/container/docker/blkio_weight +1 -0
  47. data/bootstrap/etc/sx/models/common_m/container/docker/cpu_period +1 -0
  48. data/bootstrap/etc/sx/models/common_m/container/docker/cpu_quota +1 -0
  49. data/bootstrap/etc/sx/models/common_m/container/docker/cpu_shares +1 -0
  50. data/bootstrap/etc/sx/models/common_m/container/docker/memory +1 -0
  51. data/bootstrap/etc/sx/models/common_m/container/docker/memory_swap +1 -0
  52. data/bootstrap/etc/sx/models/common_mail/abstract +1 -0
  53. data/bootstrap/etc/sx/models/common_mail/container/config.rb +12 -0
  54. data/bootstrap/etc/sx/models/common_mail/container/config_templates/postfwd_rules.erb +12 -0
  55. data/bootstrap/etc/sx/models/common_mail/container/config_templates/ssmtp.conf.erb +6 -0
  56. data/bootstrap/etc/sx/models/common_mail/container/mail/daily_limit +1 -0
  57. data/bootstrap/etc/sx/models/common_mail/container/mail/enabled +1 -0
  58. data/bootstrap/etc/sx/models/common_mail/container/mail/hourly_limit +1 -0
  59. data/bootstrap/etc/sx/models/common_php_l/abstract +1 -0
  60. data/bootstrap/etc/sx/models/common_php_l/container/mail/daily_limit +1 -0
  61. data/bootstrap/etc/sx/models/common_php_l/container/mail/hourly_limit +1 -0
  62. data/bootstrap/etc/sx/models/common_php_l/inherit +1 -0
  63. data/bootstrap/etc/sx/models/common_php_l/site/php/pm +1 -0
  64. data/bootstrap/etc/sx/models/common_php_l/site/php/pm_max_children +1 -0
  65. data/bootstrap/etc/sx/models/common_php_l/site/php/pm_max_spare_servers +1 -0
  66. data/bootstrap/etc/sx/models/common_php_l/site/php/pm_min_spare_servers +1 -0
  67. data/bootstrap/etc/sx/models/common_php_l/site/php/pm_start_servers +1 -0
  68. data/bootstrap/etc/sx/models/common_php_m/abstract +1 -0
  69. data/bootstrap/etc/sx/models/common_php_m/inherit +1 -0
  70. data/bootstrap/etc/sx/models/common_php_m/site/php/pm_max_children +1 -0
  71. data/bootstrap/etc/sx/models/common_php_s/abstract +1 -0
  72. data/bootstrap/etc/sx/models/common_php_s/inherit +1 -0
  73. data/bootstrap/etc/sx/models/common_php_xl/abstract +1 -0
  74. data/bootstrap/etc/sx/models/common_php_xl/container/mail/daily_limit +1 -0
  75. data/bootstrap/etc/sx/models/common_php_xl/container/mail/hourly_limit +1 -0
  76. data/bootstrap/etc/sx/models/common_php_xl/inherit +1 -0
  77. data/bootstrap/etc/sx/models/common_php_xl/site/php/pm +1 -0
  78. data/bootstrap/etc/sx/models/common_php_xl/site/php/pm_max_children +1 -0
  79. data/bootstrap/etc/sx/models/common_php_xl/site/php/pm_max_spare_servers +1 -0
  80. data/bootstrap/etc/sx/models/common_php_xl/site/php/pm_min_spare_servers +1 -0
  81. data/bootstrap/etc/sx/models/common_php_xl/site/php/pm_start_servers +1 -0
  82. data/bootstrap/etc/sx/models/common_php_xs/abstract +1 -0
  83. data/bootstrap/etc/sx/models/common_php_xs/container/mail/daily_limit +1 -0
  84. data/bootstrap/etc/sx/models/common_php_xs/container/mail/hourly_limit +1 -0
  85. data/bootstrap/etc/sx/models/common_php_xs/inherit +1 -0
  86. data/bootstrap/etc/sx/models/common_php_xs/site/php/pm_max_children +1 -0
  87. data/bootstrap/etc/sx/models/common_s/abstract +1 -0
  88. data/bootstrap/etc/sx/models/common_s/container/docker/blkio_weight +1 -0
  89. data/bootstrap/etc/sx/models/common_s/container/docker/cpu_period +1 -0
  90. data/bootstrap/etc/sx/models/common_s/container/docker/cpu_quota +1 -0
  91. data/bootstrap/etc/sx/models/common_s/container/docker/cpu_shares +1 -0
  92. data/bootstrap/etc/sx/models/common_s/container/docker/memory +1 -0
  93. data/bootstrap/etc/sx/models/common_s/container/docker/memory_swap +1 -0
  94. data/bootstrap/etc/sx/models/common_symfony/abstract +1 -0
  95. data/bootstrap/etc/sx/models/common_symfony/container/mux +1 -0
  96. data/bootstrap/etc/sx/models/common_symfony/container/system_users +1 -0
  97. data/bootstrap/etc/sx/models/common_symfony/inherit +1 -0
  98. data/bootstrap/etc/sx/models/common_symfony/site/php/flag +3 -0
  99. data/bootstrap/etc/sx/models/common_symfony/site/php/user +1 -0
  100. data/bootstrap/etc/sx/models/common_symfony/site/use_apache +1 -0
  101. data/bootstrap/etc/sx/models/common_xl/abstract +1 -0
  102. data/bootstrap/etc/sx/models/common_xl/container/docker/blkio_weight +1 -0
  103. data/bootstrap/etc/sx/models/common_xl/container/docker/cpu_shares +1 -0
  104. data/bootstrap/etc/sx/models/common_xl/container/docker/memory +1 -0
  105. data/bootstrap/etc/sx/models/common_xl/container/docker/memory_swap +1 -0
  106. data/bootstrap/etc/sx/models/common_xs/abstract +1 -0
  107. data/bootstrap/etc/sx/models/common_xs/container/docker/blkio_weight +1 -0
  108. data/bootstrap/etc/sx/models/common_xs/container/docker/cpu_period +1 -0
  109. data/bootstrap/etc/sx/models/common_xs/container/docker/cpu_quota +1 -0
  110. data/bootstrap/etc/sx/models/common_xs/container/docker/cpu_shares +1 -0
  111. data/bootstrap/etc/sx/models/common_xs/container/docker/memory +1 -0
  112. data/bootstrap/etc/sx/models/common_xs/container/docker/memory_swap +1 -0
  113. data/bootstrap/etc/sx/models/fcgi_l/inherit +3 -0
  114. data/bootstrap/etc/sx/models/fcgi_m/inherit +3 -0
  115. data/bootstrap/etc/sx/models/fcgi_s/inherit +3 -0
  116. data/bootstrap/etc/sx/models/fcgi_xl/inherit +3 -0
  117. data/bootstrap/etc/sx/models/joomla_v2_l/inherit +3 -0
  118. data/bootstrap/etc/sx/models/joomla_v2_m/inherit +3 -0
  119. data/bootstrap/etc/sx/models/joomla_v2_s/inherit +3 -0
  120. data/bootstrap/etc/sx/models/joomla_v2_xs/inherit +3 -0
  121. data/bootstrap/etc/sx/models/joomla_v3_l/inherit +3 -0
  122. data/bootstrap/etc/sx/models/joomla_v3_m/inherit +3 -0
  123. data/bootstrap/etc/sx/models/joomla_v3_s/inherit +3 -0
  124. data/bootstrap/etc/sx/models/joomla_v3_xs/inherit +3 -0
  125. data/bootstrap/etc/sx/models/symfony_l/inherit +3 -0
  126. data/bootstrap/etc/sx/models/symfony_m/inherit +3 -0
  127. data/bootstrap/etc/sx/models/symfony_xl/inherit +3 -0
  128. data/bootstrap/etc/sx/models/test/container/config.rb +4 -0
  129. data/bootstrap/etc/sx/models/test/container/config_templates/supervisord.conf.erb +16 -0
  130. data/bootstrap/etc/sx/models/test/container/docker/blkio_weight +1 -0
  131. data/bootstrap/etc/sx/models/test/container/docker/command +1 -0
  132. data/bootstrap/etc/sx/models/test/container/docker/cpu_period +1 -0
  133. data/bootstrap/etc/sx/models/test/container/docker/cpu_quota +1 -0
  134. data/bootstrap/etc/sx/models/test/container/docker/cpu_shares +1 -0
  135. data/bootstrap/etc/sx/models/test/container/docker/image +1 -0
  136. data/bootstrap/etc/sx/models/test/container/docker/memory +1 -0
  137. data/bootstrap/etc/sx/models/test/container/docker/memory_swap +1 -0
  138. data/bootstrap/etc/sx/models/test/container/docker/user.erb +1 -0
  139. data/bootstrap/etc/sx/models/test/container/docker/volume.erb +2 -0
  140. data/bootstrap/etc/sx/models/test/container/system_users +1 -0
  141. data/bootstrap/etc/sx/models/test/site/config.rb +4 -0
  142. data/bootstrap/etc/sx/models/test/site/config_templates/nginx_vhost.erb +21 -0
  143. data/bootstrap/etc/sx/models/test_with_mux/container/mux +1 -0
  144. data/bootstrap/etc/sx/models/test_with_mux/inherit +1 -0
  145. data/bootstrap/etc/sx/muxs/base/docker/command +1 -0
  146. data/bootstrap/etc/sx/muxs/php-5.3/container/docker/image +1 -0
  147. data/bootstrap/etc/sx/muxs/php-5.3/docker/image +1 -0
  148. data/bootstrap/etc/sx/muxs/php-5.3/inherit +2 -0
  149. data/bootstrap/etc/sx/muxs/php-5.5/container/docker/image +1 -0
  150. data/bootstrap/etc/sx/muxs/php-5.5/docker/image +1 -0
  151. data/bootstrap/etc/sx/muxs/php-5.5/inherit +2 -0
  152. data/bootstrap/etc/sx/muxs/php-5.6/container/docker/image +1 -0
  153. data/bootstrap/etc/sx/muxs/php-5.6/docker/image +1 -0
  154. data/bootstrap/etc/sx/muxs/php-5.6/inherit +2 -0
  155. data/bootstrap/etc/sx/muxs/php/abstract +1 -0
  156. data/bootstrap/etc/sx/muxs/php/docker/pid +1 -0
  157. data/bootstrap/etc/sx/muxs/php/docker/privileged +1 -0
  158. data/bootstrap/etc/sx/muxs/php/docker/volume +3 -0
  159. data/bootstrap/etc/sx/muxs/php/site/config.rb +10 -0
  160. data/bootstrap/etc/sx/muxs/php/site/config_templates/apache_vhost.erb +26 -0
  161. data/bootstrap/etc/sx/muxs/php/site/config_templates/nginx_vhost.erb +39 -0
  162. data/bootstrap/etc/sx/muxs/php/site/config_templates/php_fpm_pool.erb +22 -0
  163. data/bootstrap/etc/sx/muxs/php/site/php/pm +1 -0
  164. data/bootstrap/etc/sx/muxs/php/site/php/pm_max_children +1 -0
  165. data/bootstrap/etc/sx/muxs/php/site/use_apache +1 -0
  166. data/bootstrap/etc/sx/muxs/test/container/docker/image +1 -0
  167. data/bootstrap/etc/sx/muxs/test/docker/command +1 -0
  168. data/bootstrap/etc/sx/muxs/test/docker/image +1 -0
  169. data/bootstrap/etc/sx/muxs/test/inherit +1 -0
  170. data/bootstrap/etc/sx/password_strength +1 -0
  171. data/bootstrap/etc/sx/smtp_hostname +1 -0
  172. data/dockerfile/almost_base +19 -0
  173. data/dockerfile/base +18 -0
  174. data/dockerfile/mux +6 -0
  175. data/lib/superhosting.rb +39 -5
  176. data/lib/superhosting/base.rb +15 -21
  177. data/lib/superhosting/cli/base.rb +56 -40
  178. data/lib/superhosting/cli/cmd/admin_add.rb +5 -0
  179. data/lib/superhosting/cli/cmd/admin_container_list.rb +4 -0
  180. data/lib/superhosting/cli/cmd/admin_list.rb +11 -0
  181. data/lib/superhosting/cli/cmd/admin_passwd.rb +4 -0
  182. data/lib/superhosting/cli/cmd/container_admin_list.rb +4 -0
  183. data/lib/superhosting/cli/cmd/container_inspect.rb +11 -0
  184. data/lib/superhosting/cli/cmd/container_list.rb +18 -0
  185. data/lib/superhosting/cli/cmd/container_reconfigure.rb +11 -0
  186. data/lib/superhosting/cli/cmd/container_rename.rb +16 -0
  187. data/lib/superhosting/cli/cmd/model_list.rb +11 -0
  188. data/lib/superhosting/cli/cmd/{container_reconfig.rb → model_reconfigure.rb} +1 -1
  189. data/lib/superhosting/cli/cmd/model_tree.rb +30 -0
  190. data/lib/superhosting/cli/cmd/model_update.rb +11 -0
  191. data/lib/superhosting/cli/cmd/mux_reconfigure.rb +11 -0
  192. data/lib/superhosting/cli/cmd/repair.rb +8 -0
  193. data/lib/superhosting/cli/cmd/site_container.rb +15 -0
  194. data/lib/superhosting/cli/cmd/site_inspect.rb +11 -0
  195. data/lib/superhosting/cli/cmd/site_list.rb +35 -0
  196. data/lib/superhosting/cli/cmd/site_name.rb +15 -0
  197. data/lib/superhosting/cli/cmd/site_reconfigure.rb +11 -0
  198. data/lib/superhosting/cli/cmd/site_rename.rb +4 -0
  199. data/lib/superhosting/cli/cmd/user_add.rb +11 -5
  200. data/lib/superhosting/cli/cmd/user_change.rb +12 -6
  201. data/lib/superhosting/cli/cmd/user_list.rb +7 -0
  202. data/lib/superhosting/cli/cmd/user_passwd.rb +9 -0
  203. data/lib/superhosting/composite_mapper.rb +12 -0
  204. data/lib/superhosting/composite_mapper/base.rb +17 -0
  205. data/lib/superhosting/composite_mapper/container.rb +9 -0
  206. data/lib/superhosting/composite_mapper/site.rb +13 -0
  207. data/lib/superhosting/config/net_status.yml +122 -0
  208. data/lib/superhosting/config_executor.rb +12 -0
  209. data/lib/superhosting/{script_executor → config_executor}/base.rb +6 -5
  210. data/lib/superhosting/config_executor/container.rb +69 -0
  211. data/lib/superhosting/config_executor/site.rb +18 -0
  212. data/lib/superhosting/controller/admin.rb +84 -4
  213. data/lib/superhosting/controller/admin/container.rb +62 -2
  214. data/lib/superhosting/controller/base.rb +18 -0
  215. data/lib/superhosting/controller/container.rb +185 -122
  216. data/lib/superhosting/controller/container/admin.rb +25 -3
  217. data/lib/superhosting/controller/container/states.rb +296 -0
  218. data/lib/superhosting/controller/model.rb +62 -0
  219. data/lib/superhosting/controller/mux.rb +88 -0
  220. data/lib/superhosting/controller/mysql.rb +2 -2
  221. data/lib/superhosting/controller/site.rb +217 -72
  222. data/lib/superhosting/controller/site/alias.rb +32 -6
  223. data/lib/superhosting/controller/site/states.rb +41 -0
  224. data/lib/superhosting/controller/user.rb +233 -4
  225. data/lib/superhosting/docker_api.rb +170 -6
  226. data/lib/superhosting/helper/cmd.rb +40 -0
  227. data/lib/superhosting/helper/config.rb +80 -0
  228. data/lib/superhosting/helper/file.rb +56 -0
  229. data/lib/superhosting/helper/i18n.rb +13 -0
  230. data/lib/superhosting/helper/logger.rb +136 -0
  231. data/lib/superhosting/helper/states.rb +69 -0
  232. data/lib/superhosting/helpers.rb +5 -21
  233. data/lib/superhosting/mapper_inheritance/base.rb +16 -0
  234. data/lib/superhosting/mapper_inheritance/model.rb +96 -0
  235. data/lib/superhosting/mapper_inheritance/mux.rb +49 -0
  236. data/lib/superhosting/patches/path_mapper/dir_node.rb +23 -0
  237. data/lib/superhosting/patches/path_mapper/file_node.rb +47 -0
  238. data/lib/superhosting/patches/path_mapper/null_node.rb +35 -0
  239. data/lib/superhosting/patches/string/punycode.rb +21 -0
  240. data/lib/superhosting/version.rb +1 -1
  241. data/provision/bootstrap.sh +11 -0
  242. data/provision/docker.sh +25 -0
  243. data/provision/pam_docker.sh +5 -0
  244. data/{bootstrap.sh → provision/vagrant.sh} +5 -8
  245. data/superhosting.gemspec +14 -3
  246. metadata +368 -12
  247. data/lib/superhosting/script_executor/container.rb +0 -36
  248. data/lib/superhosting/script_executor/site.rb +0 -13
@@ -6,6 +6,10 @@ module Superhosting
6
6
  :short => '-c NAME',
7
7
  :long => '--container NAME',
8
8
  :required => true
9
+
10
+ def self.after_action(data, config)
11
+ self.info(data)
12
+ end
9
13
  end
10
14
  end
11
15
  end
@@ -0,0 +1,11 @@
1
+ module Superhosting
2
+ module Cli
3
+ module Cmd
4
+ class ContainerInspect< Base
5
+ def self.after_action(data, config)
6
+ self.info(data)
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -2,7 +2,25 @@ module Superhosting
2
2
  module Cli
3
3
  module Cmd
4
4
  class ContainerList < Base
5
+ option :state,
6
+ :long => '--state',
7
+ :boolean => true
5
8
 
9
+ option :json,
10
+ :long => '--json',
11
+ :boolean => true
12
+
13
+ def self.after_action(data, config)
14
+ data.each do |k,v|
15
+ if config[:state]
16
+ self.info("#{k} #{v[:state]}")
17
+ elsif config[:json]
18
+ self.info(name: k, state: v[:state])
19
+ else
20
+ self.info(k)
21
+ end
22
+ end
23
+ end
6
24
  end
7
25
  end
8
26
  end
@@ -0,0 +1,11 @@
1
+ module Superhosting
2
+ module Cli
3
+ module Cmd
4
+ class ContainerReconfigure < Base
5
+ def self.has_required_param?
6
+ true
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,16 @@
1
+ module Superhosting
2
+ module Cli
3
+ module Cmd
4
+ class ContainerRename < Base
5
+ option :new_name,
6
+ :short => '-r NAME',
7
+ :long => '--new-name NAME',
8
+ :required => true
9
+
10
+ def self.has_required_param?
11
+ true
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,11 @@
1
+ module Superhosting
2
+ module Cli
3
+ module Cmd
4
+ class ModelList < Base
5
+ def self.after_action(data, config)
6
+ self.info(data)
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -1,7 +1,7 @@
1
1
  module Superhosting
2
2
  module Cli
3
3
  module Cmd
4
- class ContainerReconfig < Base
4
+ class ModelReconfigure < Base
5
5
  def self.has_required_param?
6
6
  true
7
7
  end
@@ -0,0 +1,30 @@
1
+ module Superhosting
2
+ module Cli
3
+ module Cmd
4
+ class ModelTree < Base
5
+ class << self
6
+ def has_required_param?
7
+ true
8
+ end
9
+
10
+ def after_action(data, config)
11
+ def show_tree(node, type='model')
12
+ node.each do |k, hash|
13
+ self.info("#{"#{type}: " if type == 'mux'}#{k.name}")
14
+ self.indent_step
15
+ %w(mux model).each do |type|
16
+ (hash[type] || []).each {|v| show_tree(v, type) } if !hash[type].nil? and !hash[type].empty?
17
+ end
18
+ self.indent_step_back
19
+ end
20
+ end
21
+
22
+ old = self.indent
23
+ show_tree(data)
24
+ self.indent = old
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,11 @@
1
+ module Superhosting
2
+ module Cli
3
+ module Cmd
4
+ class ModelUpdate < Base
5
+ def self.has_required_param?
6
+ true
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Superhosting
2
+ module Cli
3
+ module Cmd
4
+ class MuxReconfigure < Base
5
+ def self.has_required_param?
6
+ true
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,8 @@
1
+ module Superhosting
2
+ module Cli
3
+ module Cmd
4
+ class Repair < Base
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,15 @@
1
+ module Superhosting
2
+ module Cli
3
+ module Cmd
4
+ class SiteContainer < Base
5
+ def self.has_required_param?
6
+ true
7
+ end
8
+
9
+ def self.after_action(data, config)
10
+ self.info(data)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,11 @@
1
+ module Superhosting
2
+ module Cli
3
+ module Cmd
4
+ class SiteInspect < Base
5
+ def self.after_action(data, config)
6
+ self.info(data)
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,35 @@
1
+ module Superhosting
2
+ module Cli
3
+ module Cmd
4
+ class SiteList < Base
5
+ option :container_name,
6
+ :short => '-c NAME',
7
+ :long => '--container NAME',
8
+ :required => false
9
+
10
+ option :state,
11
+ :long => '--state',
12
+ :boolean => true
13
+
14
+ option :json,
15
+ :long => '--json',
16
+ :boolean => true
17
+
18
+ def self.after_action(data, config)
19
+ data.each do |k,v|
20
+ output = []
21
+ output << v[:container] unless config[:container_name]
22
+ output << k
23
+ output << v[:state] if config[:state]
24
+
25
+ if config[:json]
26
+ self.info(name: k, state: v[:state], aliases: v[:aliases], container: v[:container])
27
+ else
28
+ self.info(output.join(' '))
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,15 @@
1
+ module Superhosting
2
+ module Cli
3
+ module Cmd
4
+ class SiteName < Base
5
+ def self.has_required_param?
6
+ true
7
+ end
8
+
9
+ def self.after_action(data, config)
10
+ self.info(data)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,11 @@
1
+ module Superhosting
2
+ module Cli
3
+ module Cmd
4
+ class SiteReconfigure < Base
5
+ def self.has_required_param?
6
+ true
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -7,6 +7,10 @@ module Superhosting
7
7
  :long => '--new-name NAME',
8
8
  :required => true
9
9
 
10
+ option :alias_name,
11
+ :long => '--alias-name',
12
+ :bollean => true
13
+
10
14
  def self.has_required_param?
11
15
  true
12
16
  end
@@ -2,19 +2,25 @@ module Superhosting
2
2
  module Cli
3
3
  module Cmd
4
4
  class UserAdd < Base
5
- option :no_ssh,
6
- :long => '--no-ssh',
5
+ option :ftp_only,
6
+ :short => '-f',
7
+ :long => '--ftp-only',
7
8
  :boolean => true
8
9
 
9
- option :no_ftp,
10
- :long => '--no-ftp',
11
- :boolean => true
10
+ option :ftp_dir,
11
+ :short => '-d',
12
+ :long => '--ftp-dir DIR'
12
13
 
13
14
  option :container_name,
14
15
  :short => '-c NAME',
15
16
  :long => '--container NAME',
16
17
  :required => true
17
18
 
19
+ option :generate,
20
+ :short => '-g',
21
+ :long => '--generate',
22
+ :boolean => true
23
+
18
24
  def self.has_required_param?
19
25
  true
20
26
  end
@@ -2,18 +2,24 @@ module Superhosting
2
2
  module Cli
3
3
  module Cmd
4
4
  class UserChange < Base
5
- option :no_ssh,
6
- :long => '--no-ssh',
5
+ option :ftp_only,
6
+ :short => '-f',
7
+ :long => '--ftp-only',
7
8
  :boolean => true
8
9
 
9
- option :no_ftp,
10
- :long => '--no-ftp',
11
- :boolean => true
10
+ option :ftp_dir,
11
+ :short => '-d',
12
+ :long => '--ftp-dir DIR'
12
13
 
13
14
  option :container_name,
14
15
  :short => '-c NAME',
15
16
  :long => '--container NAME',
16
- :required => true
17
+ :required => true
18
+
19
+ option :generate,
20
+ :short => '-g',
21
+ :long => '--generate',
22
+ :boolean => true
17
23
 
18
24
  def self.has_required_param?
19
25
  true
@@ -2,7 +2,14 @@ module Superhosting
2
2
  module Cli
3
3
  module Cmd
4
4
  class UserList < Base
5
+ option :container_name,
6
+ :short => '-c NAME',
7
+ :long => '--container NAME',
8
+ :required => true
5
9
 
10
+ def self.after_action(data, config)
11
+ self.info(data)
12
+ end
6
13
  end
7
14
  end
8
15
  end
@@ -7,9 +7,18 @@ module Superhosting
7
7
  :long => '--generate',
8
8
  :boolean => true
9
9
 
10
+ option :container_name,
11
+ :short => '-c NAME',
12
+ :long => '--container NAME',
13
+ :required => true
14
+
10
15
  def self.has_required_param?
11
16
  true
12
17
  end
18
+
19
+ def self.after_action(data, config)
20
+ self.info(data)
21
+ end
13
22
  end
14
23
  end
15
24
  end
@@ -0,0 +1,12 @@
1
+ module Superhosting
2
+ module CompositeMapper
3
+ def self.new(etc_mapper:, lib_mapper:, web_mapper:)
4
+ klass = case type = etc_mapper.parent.name
5
+ when 'containers' then Container
6
+ when 'sites' then Site
7
+ else raise NetStatus::Exception, { error: :logical_error, code: :mapper_type_not_supported, data: { name: type } }
8
+ end
9
+ klass.new(etc_mapper: etc_mapper, lib_mapper: lib_mapper, web_mapper: web_mapper)
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,17 @@
1
+ module Superhosting
2
+ module CompositeMapper
3
+ class Base
4
+ attr_accessor :etc, :lib, :web
5
+
6
+ def initialize(etc_mapper:, lib_mapper:, web_mapper:)
7
+ self.etc = etc_mapper
8
+ self.lib = lib_mapper
9
+ self.web = web_mapper
10
+ end
11
+
12
+ def method_missing(m, *args, &block)
13
+ self.etc.send(m, *args, &block)
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,9 @@
1
+ module Superhosting
2
+ module CompositeMapper
3
+ class Container < Base
4
+ def config
5
+ self.lib.config
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,13 @@
1
+ module Superhosting
2
+ module CompositeMapper
3
+ class Site < Base
4
+ def aliases
5
+ aliases_mapper.lines
6
+ end
7
+
8
+ def aliases_mapper
9
+ self.lib.parent.parent.sites.f(self.name).aliases
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,122 @@
1
+ en:
2
+ net_status:
3
+ no_model_given: 'No model given.'
4
+ docker_command_not_found: "No container/docker/command specified in model."
5
+ unable_to_run_docker_container: 'Unable to run docker container.'
6
+ option_admin_mail_required: 'Admin mail required.'
7
+
8
+ invalid_container_name: "Invalid site name '%{name}' only '%{regex}' are allowed."
9
+ container_is_not_running: "Container '%{name}' isn\'t running."
10
+ container_is_running: "Container '%{name}' is already running."
11
+ container_does_not_exists: "Container '%{name}' doesn't exists."
12
+ container_exists: "Container '%{name}' already exists."
13
+ container_is_not_available: "Container '%{name}' is not available."
14
+
15
+ invalid_site_name: "Invalid site name '%{name}' only '%{regex}' are allowed."
16
+ site_does_not_exists: "Site '%{name}' doesn't exists."
17
+ site_exists: "Site '%{name}' already exists."
18
+ site_is_not_available: "Site '%{name}' is not available."
19
+ container_site_name_conflict: "Conflict between containers sites: '%{site1}' and '%{site2}'."
20
+
21
+ alias_does_not_exists: "Alias '%{name}' doesn't exists."
22
+ alias_exists: "Alias '%{name}' already exists."
23
+
24
+ invalid_user_name: "Invalid user name '%{name}' only '%{regex}' are allowed."
25
+ user_does_not_exists: "User '%{name}' doesn't exists."
26
+ user_exists: "User '%{name}' already exists."
27
+
28
+ admin_does_not_exists: "Admin '%{name}' doesn't exists."
29
+ admin_exists: "Admin '%{name}' already exists."
30
+
31
+ mux_is_running: "Mux '%{name}' is already running."
32
+ mux_is_not_running: "Mux '%{name}' isn\'t running."
33
+ mux_does_not_exists: "Mux '%{name}' doesn't exists."
34
+
35
+ option_ftp_only_is_required: "Option 'ftp-only' is required if specified 'ftp-dir'."
36
+ incorrect_ftp_dir: "Incorrect ftp-dir '%{dir}'."
37
+
38
+ model_does_not_exists: "Model '%{name}' doesn't exists."
39
+ model_does_not_used: "Model '%{name}' doesn't used."
40
+ base_model_should_not_be_abstract: "Base model '%{name}' should not be abstract."
41
+ mux_does_not_exists: "Mux '%{name}' doesn't exists."
42
+ base_mux_should_not_be_abstract: "Base mux '%{name}' should not be abstract."
43
+ mapper_type_not_supported: "Mapper type '%{name}' not supported."
44
+
45
+ no_docker_image_specified_in_model_or_mux: "No container/docker/image specified in model|mux '%{name}'."
46
+
47
+ erb_error: "Erb has executed with error: '%{error}'."
48
+ file_does_not_exists: "File '%{path}' does not exist."
49
+ can_not_pass_an_absolute_path: "Can't pass an absolute path '%{path}'."
50
+
51
+ command_with_error: "Command output:\n %{error}."
52
+
53
+ invalid_cli_option: "%{message}"
54
+
55
+ missing_translation: "Missing translation for code: '%{code}'"
56
+
57
+ debug:
58
+ user:
59
+ added: "User '%{name}': ADDED"
60
+ deleted: "User '%{name}': DELETED"
61
+ updated: "User '%{name}': UPDATED"
62
+ failed: "User '%{name}': FAILED"
63
+ ok: "User '%{name}': OK"
64
+ group:
65
+ added: "Group '%{name}': ADDED"
66
+ deleted: "Group '%{name}': DELETED"
67
+ failed: "Group '%{name}': FAILED"
68
+ ok: "Group '%{name}': OK"
69
+ file:
70
+ created: "File '%{path}': CREATED"
71
+ renamed: "File '%{path}' > '%{to}': RENAMED"
72
+ modified: "File '%{path}': MODIFIED"
73
+ deleted: "File '%{path}': DELETED"
74
+ failed: "File '%{path}': FAILED"
75
+ ok: "File '%{path}': OK"
76
+ directory:
77
+ created: "Directory '%{path}': CREATED"
78
+ renamed: "Directory '%{path}' > '%{to}': RENAMED"
79
+ deleted: "Directory '%{path}': DELETED"
80
+ failed: "Directory '%{path}': FAILED"
81
+ ok: "Directory '%{path}': OK"
82
+ symlink:
83
+ created: "Symlink '%{path}' to '%{path_to}': CREATED"
84
+ deleted: "Symlink '%{path}': DELETED"
85
+ failed: "Symlink '%{path}': FAILED"
86
+ ok: "Symlink '%{path}': OK"
87
+ container:
88
+ added: "Container '%{name}': ADDED"
89
+ removed: "Container '%{name}': REMOVED"
90
+ stopped: "Container '%{name}': STOPPED"
91
+ killed: "Container '%{name}': KILLED"
92
+ started: "Container '%{name}': STARTED"
93
+ restarted: "Container '%{name}': RESTARTED"
94
+ paused: "Container '%{name}': PAUSED"
95
+ unpaused: "Container '%{name}': UNPAUSED"
96
+ failed: "Container '%{name}': FAILED"
97
+ ok: "Container '%{name}': OK"
98
+ command:
99
+ failed: "Command: '%{command}': executing... FAILED"
100
+ ok: "Command: '%{command}': executing... OK"
101
+
102
+ transition: "Transition '%{name}'..."
103
+ transition_undo: "Transition '%{name}' (undo)..."
104
+
105
+ failed: "FAILED"
106
+ ok: "OK"
107
+
108
+ deleting_old_configs: 'Deleting old configs...'
109
+
110
+ change_state:
111
+ ok: "State of '%{obj}' change from '%{from}' to '%{to}' OK"
112
+ failed: "State of '%{obj}' change from '%{from}' to '%{to}' FAILED"
113
+
114
+ chown_r:
115
+ failed: "Command: chown -r '%{user}' '%{group}' '%{path}'... FAILED"
116
+ ok: "Command: chown -r '%{user}' '%{group}' '%{path}'... OK"
117
+ chown:
118
+ failed: "Command: chown '%{user}' '%{group}' '%{path}'... FAILED"
119
+ ok: "Command: chown '%{user}' '%{group}' '%{path}'... OK"
120
+ chmod:
121
+ failed: "Command: chmod '%{mode}' '%{path}'... FAILED"
122
+ ok: "Command: chmod '%{mode}' '%{path}'... OK"