openshift-origin-console 1.3.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 (291) hide show
  1. data/COPYRIGHT +1 -0
  2. data/Gemfile +21 -0
  3. data/LICENSE +203 -0
  4. data/README.md +123 -0
  5. data/Rakefile +44 -0
  6. data/app/assets/images/cartridge-edge.gif +0 -0
  7. data/app/assets/images/console/arrow-down.png +0 -0
  8. data/app/assets/images/console/console-sprite.png +0 -0
  9. data/app/assets/images/favicon-32.png +0 -0
  10. data/app/assets/images/loader-dark.gif +0 -0
  11. data/app/assets/images/loader.gif +0 -0
  12. data/app/assets/images/sprite-vert.png +0 -0
  13. data/app/assets/javascripts/console.js +10 -0
  14. data/app/assets/javascripts/console/form.js.coffee +51 -0
  15. data/app/assets/stylesheets/_alerts.scss +84 -0
  16. data/app/assets/stylesheets/_breadcrumbs.scss +31 -0
  17. data/app/assets/stylesheets/_buttons.scss +229 -0
  18. data/app/assets/stylesheets/_code.scss +86 -0
  19. data/app/assets/stylesheets/_custom.scss +207 -0
  20. data/app/assets/stylesheets/_footer.scss +54 -0
  21. data/app/assets/stylesheets/_forms.scss +710 -0
  22. data/app/assets/stylesheets/_grid.scss +28 -0
  23. data/app/assets/stylesheets/_input-prepend-append.scss +138 -0
  24. data/app/assets/stylesheets/_labels.scss +40 -0
  25. data/app/assets/stylesheets/_mixins.scss +76 -0
  26. data/app/assets/stylesheets/_override-variables.scss +1 -0
  27. data/app/assets/stylesheets/_responsive.scss +438 -0
  28. data/app/assets/stylesheets/_ribbon.scss +57 -0
  29. data/app/assets/stylesheets/_type.scss +306 -0
  30. data/app/assets/stylesheets/_utilities.scss +10 -0
  31. data/app/assets/stylesheets/_variables.scss +131 -0
  32. data/app/assets/stylesheets/common.css.scss +82 -0
  33. data/app/assets/stylesheets/console/_application.scss +194 -0
  34. data/app/assets/stylesheets/console/_base.scss +26 -0
  35. data/app/assets/stylesheets/console/_breadcrumbs.scss +32 -0
  36. data/app/assets/stylesheets/console/_buttons.scss +214 -0
  37. data/app/assets/stylesheets/console/_core.scss +1002 -0
  38. data/app/assets/stylesheets/console/_dropdowns.scss +63 -0
  39. data/app/assets/stylesheets/console/_help.scss +54 -0
  40. data/app/assets/stylesheets/console/_mixins.scss +11 -0
  41. data/app/assets/stylesheets/console/_navbar.scss +415 -0
  42. data/app/assets/stylesheets/console/_ribbon.scss +82 -0
  43. data/app/assets/stylesheets/console/_tile.scss +122 -0
  44. data/app/assets/stylesheets/origin.css.scss +37 -0
  45. data/app/controllers/account/dashboard.rb +13 -0
  46. data/app/controllers/account_controller.rb +3 -0
  47. data/app/controllers/application_types_controller.rb +80 -0
  48. data/app/controllers/applications_controller.rb +183 -0
  49. data/app/controllers/building_controller.rb +81 -0
  50. data/app/controllers/capability_aware.rb +18 -0
  51. data/app/controllers/cartridge_types_controller.rb +53 -0
  52. data/app/controllers/cartridges_controller.rb +43 -0
  53. data/app/controllers/console/auth/basic.rb +65 -0
  54. data/app/controllers/console/auth/none.rb +5 -0
  55. data/app/controllers/console/auth/remote_user.rb +69 -0
  56. data/app/controllers/console/rescue.rb +48 -0
  57. data/app/controllers/console_controller.rb +19 -0
  58. data/app/controllers/console_index_controller.rb +14 -0
  59. data/app/controllers/domain_aware.rb +26 -0
  60. data/app/controllers/domain_session_sweeper.rb +29 -0
  61. data/app/controllers/domains_controller.rb +30 -0
  62. data/app/controllers/keys_controller.rb +43 -0
  63. data/app/controllers/scaling_controller.rb +46 -0
  64. data/app/controllers/sshkey_aware.rb +23 -0
  65. data/app/controllers/sshkey_session_sweeper.rb +29 -0
  66. data/app/controllers/user_session_sweeper.rb +29 -0
  67. data/app/helpers/console/community_helper.rb +78 -0
  68. data/app/helpers/console/console_helper.rb +26 -0
  69. data/app/helpers/console/help_helper.rb +270 -0
  70. data/app/helpers/console/html5_boilerplate_helper.rb +63 -0
  71. data/app/helpers/console/layout_helper.rb +277 -0
  72. data/app/helpers/console/model_helper.rb +106 -0
  73. data/app/helpers/console/secured_helper.rb +5 -0
  74. data/app/models/alias.rb +10 -0
  75. data/app/models/application.rb +148 -0
  76. data/app/models/application_associations.rb +36 -0
  77. data/app/models/application_template.rb +90 -0
  78. data/app/models/application_type.rb +258 -0
  79. data/app/models/async_aware.rb +60 -0
  80. data/app/models/capabilities.rb +62 -0
  81. data/app/models/cartridge.rb +122 -0
  82. data/app/models/cartridge_type.rb +140 -0
  83. data/app/models/domain.rb +44 -0
  84. data/app/models/domain_associations.rb +33 -0
  85. data/app/models/embedded.rb +11 -0
  86. data/app/models/gear.rb +13 -0
  87. data/app/models/gear_group.rb +104 -0
  88. data/app/models/key.rb +87 -0
  89. data/app/models/quickstart.rb +135 -0
  90. data/app/models/rest_api.rb +130 -0
  91. data/app/models/rest_api/base.rb +781 -0
  92. data/app/models/rest_api/cacheable.rb +91 -0
  93. data/app/models/rest_api/environment.rb +13 -0
  94. data/app/models/rest_api/info.rb +34 -0
  95. data/app/models/rest_api/log_subscriber.rb +29 -0
  96. data/app/models/rest_api/railties/controller_runtime.rb +37 -0
  97. data/app/models/user.rb +27 -0
  98. data/app/models/user_associations.rb +6 -0
  99. data/app/views/account/_domain.html.haml +14 -0
  100. data/app/views/account/_keys.html.haml +20 -0
  101. data/app/views/account/_user.html.haml +5 -0
  102. data/app/views/account/show.html.haml +15 -0
  103. data/app/views/application_templates/_application_template.html.haml +5 -0
  104. data/app/views/application_types/_application_type.html.haml +19 -0
  105. data/app/views/application_types/_custom.html.haml +19 -0
  106. data/app/views/application_types/_persisted.html.haml +26 -0
  107. data/app/views/application_types/_tile.html.haml +9 -0
  108. data/app/views/application_types/index.html.haml +87 -0
  109. data/app/views/application_types/search.html.haml +67 -0
  110. data/app/views/application_types/show.html.haml +219 -0
  111. data/app/views/applications/_application.html.haml +34 -0
  112. data/app/views/applications/_applications_filter.html.haml +8 -0
  113. data/app/views/applications/_footer.html.haml +0 -0
  114. data/app/views/applications/_name.html.haml +28 -0
  115. data/app/views/applications/delete.html.haml +19 -0
  116. data/app/views/applications/get_started.html.haml +145 -0
  117. data/app/views/applications/index.html.haml +55 -0
  118. data/app/views/applications/show.html.haml +193 -0
  119. data/app/views/building/delete.html.haml +22 -0
  120. data/app/views/building/new.html.haml +57 -0
  121. data/app/views/building/show.html.haml +12 -0
  122. data/app/views/cartridge_types/_cartridge_type.html.haml +61 -0
  123. data/app/views/cartridge_types/index.html.haml +37 -0
  124. data/app/views/cartridge_types/show.html.haml +21 -0
  125. data/app/views/cartridges/next_steps.html.haml +58 -0
  126. data/app/views/cartridges/show.html.haml +1 -0
  127. data/app/views/console/error.html.haml +58 -0
  128. data/app/views/console/help.html.haml +90 -0
  129. data/app/views/console/not_found.html.haml +69 -0
  130. data/app/views/console/unauthorized.html.haml +7 -0
  131. data/app/views/domains/_domain.html.haml +14 -0
  132. data/app/views/domains/_form.html.haml +13 -0
  133. data/app/views/domains/edit.html.haml +5 -0
  134. data/app/views/domains/new.html.haml +6 -0
  135. data/app/views/keys/_form.html.haml +14 -0
  136. data/app/views/keys/_simple_form.html.haml +14 -0
  137. data/app/views/keys/new.html.haml +2 -0
  138. data/app/views/layouts/_footer.html.haml +38 -0
  139. data/app/views/layouts/_head.html.haml +35 -0
  140. data/app/views/layouts/console.html.haml +60 -0
  141. data/app/views/layouts/console/_header.html.haml +44 -0
  142. data/app/views/layouts/console/_identity.html.haml +7 -0
  143. data/app/views/layouts/console/_javascripts.html.haml +5 -0
  144. data/app/views/layouts/console/_stylesheets.html.haml +6 -0
  145. data/app/views/scaling/delete.html.haml +17 -0
  146. data/app/views/scaling/new.html.haml +24 -0
  147. data/app/views/scaling/show.html.haml +81 -0
  148. data/app/views/shared/_tracking.html.haml +0 -0
  149. data/conf/console.conf.example +108 -0
  150. data/conf/openshift_console.conf +10 -0
  151. data/config/cartridge_types.yml +54 -0
  152. data/config/initializers/barista_config.rb +86 -0
  153. data/config/initializers/cartridge_types.rb +5 -0
  154. data/config/initializers/console_security.rb +1 -0
  155. data/config/initializers/date_helper.rb +5 -0
  156. data/config/initializers/extended_logger.rb +51 -0
  157. data/config/initializers/formtastic.rb +100 -0
  158. data/config/initializers/inflections.rb +38 -0
  159. data/config/initializers/rdiscount.rb +8 -0
  160. data/config/initializers/rest_api.rb +22 -0
  161. data/config/initializers/sass.rb +30 -0
  162. data/config/initializers/session_trace.rb +32 -0
  163. data/config/initializers/x_frame_options.rb +53 -0
  164. data/config/locales/en.yml +12 -0
  165. data/lib/active_resource/associations.rb +107 -0
  166. data/lib/active_resource/associations/builder/association.rb +35 -0
  167. data/lib/active_resource/associations/builder/belongs_to.rb +5 -0
  168. data/lib/active_resource/associations/builder/has_many.rb +5 -0
  169. data/lib/active_resource/associations/builder/has_one.rb +5 -0
  170. data/lib/active_resource/persistent_connection.rb +341 -0
  171. data/lib/active_resource/persistent_http_mock.rb +68 -0
  172. data/lib/active_resource/reflection.rb +78 -0
  173. data/lib/console.rb +8 -0
  174. data/lib/console/config_file.rb +13 -0
  175. data/lib/console/configuration.rb +163 -0
  176. data/lib/console/engine.rb +28 -0
  177. data/lib/console/formtastic/bootstrap_form_builder.rb +369 -0
  178. data/lib/console/rails/app_redirector.rb +40 -0
  179. data/lib/console/rails/filter_hash.rb +15 -0
  180. data/lib/console/rails/routes.rb +51 -0
  181. data/lib/console/version.rb +5 -0
  182. data/lib/tasks/assets.rake +79 -0
  183. data/lib/tasks/stats.rake +18 -0
  184. data/lib/tasks/test_suites.rake +73 -0
  185. data/test/coverage_helper.rb +27 -0
  186. data/test/fixtures/cartridges.json +1 -0
  187. data/test/fixtures/quickstarts.csv +3 -0
  188. data/test/functional/account_controller_test.rb +14 -0
  189. data/test/functional/application_types_controller_test.rb +251 -0
  190. data/test/functional/applications_controller_sanity_test.rb +26 -0
  191. data/test/functional/applications_controller_test.rb +365 -0
  192. data/test/functional/building_controller_test.rb +203 -0
  193. data/test/functional/cartridge_types_controller_isolation_test.rb +68 -0
  194. data/test/functional/cartridge_types_controller_test.rb +48 -0
  195. data/test/functional/cartridges_controller_test.rb +83 -0
  196. data/test/functional/console_auth_basic_controller_test.rb +82 -0
  197. data/test/functional/console_auth_remote_user_controller_test.rb +90 -0
  198. data/test/functional/console_index_controller_test.rb +22 -0
  199. data/test/functional/domains_controller_test.rb +194 -0
  200. data/test/functional/keys_controller_test.rb +163 -0
  201. data/test/functional/quickstarts.json +18 -0
  202. data/test/functional/scaling_controller_test.rb +153 -0
  203. data/test/integration/assets_test.rb +34 -0
  204. data/test/integration/help_link_test.rb +43 -0
  205. data/test/integration/quickstarts_test.rb +24 -0
  206. data/test/integration/rescue_from_test.rb +25 -0
  207. data/test/integration/rest_api/application_test.rb +115 -0
  208. data/test/integration/rest_api/cartridge_test.rb +44 -0
  209. data/test/integration/rest_api/cartridge_type_test.rb +143 -0
  210. data/test/integration/rest_api/domain_test.rb +91 -0
  211. data/test/integration/rest_api/info_test.rb +9 -0
  212. data/test/integration/rest_api/key_test.rb +85 -0
  213. data/test/integration/static_pages_test.rb +44 -0
  214. data/test/rails_app/Rakefile +7 -0
  215. data/test/rails_app/app/controllers/application_controller.rb +5 -0
  216. data/test/rails_app/config.ru +4 -0
  217. data/test/rails_app/config/application.rb +48 -0
  218. data/test/rails_app/config/boot.rb +10 -0
  219. data/test/rails_app/config/database.yml +25 -0
  220. data/test/rails_app/config/environment.rb +5 -0
  221. data/test/rails_app/config/environments/development.rb +38 -0
  222. data/test/rails_app/config/environments/production.rb +70 -0
  223. data/test/rails_app/config/environments/test.rb +43 -0
  224. data/test/rails_app/config/initializers/auth.rb +0 -0
  225. data/test/rails_app/config/initializers/backtrace_silencers.rb +7 -0
  226. data/test/rails_app/config/initializers/inflections.rb +10 -0
  227. data/test/rails_app/config/initializers/mime_types.rb +5 -0
  228. data/test/rails_app/config/initializers/secret_token.rb +7 -0
  229. data/test/rails_app/config/initializers/session_store.rb +8 -0
  230. data/test/rails_app/config/locales/en.yml +5 -0
  231. data/test/rails_app/config/routes.rb +4 -0
  232. data/test/rails_app/script/rails +6 -0
  233. data/test/support/auth.rb +111 -0
  234. data/test/support/base.rb +142 -0
  235. data/test/support/errors.rb +28 -0
  236. data/test/support/rest_api.rb +189 -0
  237. data/test/test_helper.rb +14 -0
  238. data/test/unit/active_model_compliance_test.rb +23 -0
  239. data/test/unit/async_aware_test.rb +55 -0
  240. data/test/unit/configuration_test.rb +158 -0
  241. data/test/unit/filter_hash_test.rb +64 -0
  242. data/test/unit/helpers/model_helper_test.rb +61 -0
  243. data/test/unit/overrides_test.rb +9 -0
  244. data/test/unit/rest_api_test.rb +1590 -0
  245. data/vendor/assets/javascripts/MIT-LICENSE.txt +20 -0
  246. data/vendor/assets/javascripts/bootstrap-collapse.js +157 -0
  247. data/vendor/assets/javascripts/bootstrap-dropdown.js +100 -0
  248. data/vendor/assets/javascripts/bootstrap-tab.js +135 -0
  249. data/vendor/assets/javascripts/bootstrap-transition.js +61 -0
  250. data/vendor/assets/javascripts/jquery.spin.js +47 -0
  251. data/vendor/assets/javascripts/jquery.ui.widget.js +16 -0
  252. data/vendor/assets/javascripts/jquery_cookie.js +41 -0
  253. data/vendor/assets/javascripts/jquery_validate_min.js +51 -0
  254. data/vendor/assets/javascripts/modernizr.min.js +2 -0
  255. data/vendor/assets/javascripts/plugins.js +16 -0
  256. data/vendor/assets/stylesheets/bootstrap/_accordion.scss +28 -0
  257. data/vendor/assets/stylesheets/bootstrap/_alerts.scss +70 -0
  258. data/vendor/assets/stylesheets/bootstrap/_breadcrumbs.scss +22 -0
  259. data/vendor/assets/stylesheets/bootstrap/_button-groups.scss +147 -0
  260. data/vendor/assets/stylesheets/bootstrap/_buttons.scss +183 -0
  261. data/vendor/assets/stylesheets/bootstrap/_carousel.scss +121 -0
  262. data/vendor/assets/stylesheets/bootstrap/_close.scss +18 -0
  263. data/vendor/assets/stylesheets/bootstrap/_code.scss +57 -0
  264. data/vendor/assets/stylesheets/bootstrap/_component-animations.scss +18 -0
  265. data/vendor/assets/stylesheets/bootstrap/_dropdowns.scss +130 -0
  266. data/vendor/assets/stylesheets/bootstrap/_forms.scss +522 -0
  267. data/vendor/assets/stylesheets/bootstrap/_grid.scss +8 -0
  268. data/vendor/assets/stylesheets/bootstrap/_hero-unit.scss +20 -0
  269. data/vendor/assets/stylesheets/bootstrap/_labels.scss +32 -0
  270. data/vendor/assets/stylesheets/bootstrap/_layouts.scss +17 -0
  271. data/vendor/assets/stylesheets/bootstrap/_mixins.scss +602 -0
  272. data/vendor/assets/stylesheets/bootstrap/_modals.scss +84 -0
  273. data/vendor/assets/stylesheets/bootstrap/_navbar.scss +299 -0
  274. data/vendor/assets/stylesheets/bootstrap/_navs.scss +353 -0
  275. data/vendor/assets/stylesheets/bootstrap/_pager.scss +30 -0
  276. data/vendor/assets/stylesheets/bootstrap/_pagination.scss +55 -0
  277. data/vendor/assets/stylesheets/bootstrap/_popovers.scss +49 -0
  278. data/vendor/assets/stylesheets/bootstrap/_progress-bars.scss +95 -0
  279. data/vendor/assets/stylesheets/bootstrap/_reset.scss +126 -0
  280. data/vendor/assets/stylesheets/bootstrap/_scaffolding.scss +33 -0
  281. data/vendor/assets/stylesheets/bootstrap/_sprites.scss +158 -0
  282. data/vendor/assets/stylesheets/bootstrap/_tables.scss +150 -0
  283. data/vendor/assets/stylesheets/bootstrap/_thumbnails.scss +35 -0
  284. data/vendor/assets/stylesheets/bootstrap/_tooltip.scss +35 -0
  285. data/vendor/assets/stylesheets/bootstrap/_type.scss +218 -0
  286. data/vendor/assets/stylesheets/bootstrap/_utilities.scss +23 -0
  287. data/vendor/assets/stylesheets/bootstrap/_variables.scss +107 -0
  288. data/vendor/assets/stylesheets/bootstrap/_wells.scss +17 -0
  289. data/vendor/assets/stylesheets/bootstrap/bootstrap.scss +66 -0
  290. data/vendor/assets/stylesheets/bootstrap/responsive.scss +334 -0
  291. metadata +506 -0
@@ -0,0 +1,29 @@
1
+ class DomainSessionSweeper < ActiveModel::Observer
2
+ observe Domain
3
+
4
+ def self.before(controller)
5
+ self.domain_changes = false
6
+ true
7
+ end
8
+ def self.after(controller)
9
+ controller.session[:domain] = nil if self.domain_changes?
10
+ end
11
+
12
+ def self.domain_changes?
13
+ Thread.current[:domain_sweeper]
14
+ end
15
+ def self.domain_changes=(bool)
16
+ Thread.current[:domain_sweeper] = bool
17
+ end
18
+
19
+ def changed
20
+ self.class.domain_changes = true
21
+ end
22
+
23
+ def after_save(domain)
24
+ changed
25
+ end
26
+ def after_destroy(domain)
27
+ changed
28
+ end
29
+ end
@@ -0,0 +1,30 @@
1
+ class DomainsController < ConsoleController
2
+ def new
3
+ @domain = Domain.new
4
+ end
5
+
6
+ def create
7
+ @domain = Domain.new params[:domain]
8
+ @domain.as = current_user
9
+
10
+ if @domain.save
11
+ redirect_to account_path, :flash => {:success => 'Your domain has been created'}
12
+ else
13
+ render :new
14
+ end
15
+ end
16
+
17
+ def edit
18
+ @domain = Domain.find(:one, :as => current_user) rescue redirect_to(new_domain_path)
19
+ end
20
+
21
+ def update
22
+ @domain = Domain.find(:one, :as => current_user)
23
+ @domain.attributes = params[:domain]
24
+ if @domain.save
25
+ redirect_to account_path, :flash => {:success => 'Your domain has been changed. Your public URLs will now be different'}
26
+ else
27
+ render :edit
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,43 @@
1
+ class KeysController < ConsoleController
2
+ def new
3
+ @first = true if params[:first]
4
+ @key = Key.new
5
+ end
6
+
7
+ def create
8
+ @first = true if params[:first]
9
+ @key ||= Key.new params[:key]
10
+ @key.as = current_user
11
+
12
+ if @key.save
13
+ redirect_to (@first ? :back : account_path), :flash => {:success => 'Your public key has been created'} rescue redirect_to account_path
14
+ else
15
+ Rails.logger.debug @key.errors.inspect
16
+ render :new
17
+ end
18
+
19
+ # If a key already exists with that name
20
+ # FIXME When resource validation is added, we may need the server to return a unique code
21
+ # for this condition with the error, and then this logic should be moved to Key.rescue_save_failure
22
+ # which should throw a more specific exception Key::NameExists / Key::ContentExists
23
+ rescue Key::DuplicateName
24
+ if @first
25
+ if @key.default?
26
+ @key = Key.default(:as => current_user).load(params[:key])
27
+ else
28
+ @key.make_unique! "#{@key.name}%s"
29
+ end
30
+ raise if @retried
31
+ @retried = true
32
+ retry
33
+ end
34
+ @key.errors.add(:name, 'You have already created a key with that name')
35
+ render :new
36
+ end
37
+
38
+ def destroy
39
+ @key = Key.find params[:id], :as => current_user
40
+ @key.destroy
41
+ redirect_to account_path
42
+ end
43
+ end
@@ -0,0 +1,46 @@
1
+ class ScalingController < ConsoleController
2
+
3
+ def show
4
+ user_default_domain
5
+ @application = @domain.find_application params[:application_id]
6
+ @cartridges = @application.cartridges
7
+ @user = User.find :one, :as => current_user
8
+ redirect_to new_application_scaling_path(@application) unless @application.scales?
9
+ end
10
+
11
+ def new
12
+ user_default_domain
13
+ @application = @domain.find_application params[:application_id]
14
+ @cartridge_type = CartridgeType.cached.find 'haproxy-1.4'
15
+ @cartridge = Cartridge.new :name => @cartridge_type.name
16
+ end
17
+
18
+ def delete
19
+ user_default_domain
20
+ @application = @domain.find_application params[:application_id]
21
+ redirect_to new_application_scaling_path(@application) unless @application.scales?
22
+ end
23
+
24
+ def update
25
+ user_default_domain
26
+ @user = User.find :one, :as => current_user
27
+ @application = @domain.find_application params[:application_id]
28
+ @cartridges = @application.cartridges
29
+ @cartridge = @cartridges.find{ |c| c.name == params[:id] } or raise RestApi::ResourceNotFound.new(Cartridge.model_name, params[:id])
30
+
31
+ range = [params[:cartridge][:scales_from].to_i, params[:cartridge][:scales_to].to_i]
32
+ range.reverse! if range.first > range.last && range.last != -1
33
+ @cartridge.scales_from, @cartridge.scales_to = range
34
+
35
+ if @cartridge.save
36
+ redirect_to application_scaling_path, :flash => {:success => "Updated scale settings for cartridge '#{@cartridge.display_name}'"}
37
+ else
38
+ render :show
39
+ end
40
+ end
41
+
42
+ #def update
43
+ # commit form parameters to a cartridge on an application
44
+ # redirect_to application_scaling_path
45
+ #end
46
+ end
@@ -0,0 +1,23 @@
1
+ module SshkeyAware
2
+ extend ActiveSupport::Concern
3
+
4
+ included do
5
+ around_filter SshkeySessionSweeper
6
+ end
7
+
8
+ def sshkey_uploaded?
9
+ @has_key = false
10
+ if session[:has_sshkey]
11
+ logger.debug " Hit has_sshkey cache #{session.inspect}"
12
+ @has_keys = session[:has_sshkey]
13
+ else
14
+ key = Key.first :as => current_user
15
+ @has_keys = key ? true : false
16
+ session[:has_sshkey] = @has_keys
17
+ end
18
+
19
+ @has_key
20
+ end
21
+ end
22
+ RestApi::Base.observers << SshkeySessionSweeper
23
+ SshkeySessionSweeper.instance
@@ -0,0 +1,29 @@
1
+ class SshkeySessionSweeper < ActiveModel::Observer
2
+ observe Key
3
+
4
+ def self.before(controller)
5
+ self.sshkey_changes = false
6
+ true
7
+ end
8
+ def self.after(controller)
9
+ controller.session[:has_sshkey] = nil if self.sshkey_changes?
10
+ end
11
+
12
+ def self.sshkey_changes?
13
+ Thread.current[:sshkey_sweeper]
14
+ end
15
+ def self.sshkey_changes=(bool)
16
+ Thread.current[:sshkey_sweeper] = bool
17
+ end
18
+
19
+ def changed
20
+ self.class.sshkey_changes = true
21
+ end
22
+
23
+ def after_save(key)
24
+ changed
25
+ end
26
+ def after_destroy(key)
27
+ changed
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ class UserSessionSweeper < ActiveModel::Observer
2
+ observe User, Application, Domain
3
+
4
+ def self.before(controller)
5
+ self.user_changes = false
6
+ true
7
+ end
8
+ def self.after(controller)
9
+ controller.session[:user_capabilities] = nil if self.user_changes?
10
+ end
11
+
12
+ def self.user_changes?
13
+ Thread.current[:user_sweeper]
14
+ end
15
+ def self.user_changes=(bool)
16
+ Thread.current[:user_sweeper] = bool
17
+ end
18
+
19
+ def changed
20
+ self.class.user_changes = true
21
+ end
22
+
23
+ def after_save(user)
24
+ changed
25
+ end
26
+ def after_destroy(user)
27
+ changed
28
+ end
29
+ end
@@ -0,0 +1,78 @@
1
+ module Console::CommunityHelper
2
+
3
+ def irc_web_url
4
+ 'http://webchat.freenode.net/?randomnick=1&channels=openshift&uio=d4'
5
+ end
6
+
7
+ def link_to_irc
8
+ link_to "IRC", irc_web_url
9
+ end
10
+
11
+ def openshift_twitter_hashtag_url
12
+ 'http://twitter.com/#!/search/%23OpenShift'
13
+ end
14
+
15
+ def openshift_twitter_url
16
+ 'http://www.twitter.com/#!/openshift'
17
+ end
18
+
19
+ def openshift_ops_twitter_url
20
+ 'http://www.twitter.com/#!/openshift_ops'
21
+ end
22
+
23
+ def open_bug_url
24
+ 'https://bugzilla.redhat.com/enter_bug.cgi?product=OpenShift%20Origin'
25
+ end
26
+
27
+ def openshift_github_url
28
+ 'https://github.com/openshift'
29
+ end
30
+
31
+ def stack_overflow_url
32
+ 'http://stackoverflow.com/questions/tagged/openshift/'
33
+ end
34
+
35
+ def client_tools_url
36
+ openshift_github_project_url 'rhc'
37
+ end
38
+
39
+ def origin_server_url
40
+ openshift_github_project_url 'origin-server'
41
+ end
42
+
43
+ def origin_server_source_path_url(path)
44
+ "#{openshift_github_project_url('origin-server')}/tree/master/#{path}"
45
+ end
46
+
47
+ def cartridges_source_url
48
+ origin_server_source_path_url 'cartridges'
49
+ end
50
+
51
+ def origin_server_srpm_url
52
+ "http://mirror.openshift.com/pub/origin-server/fedora-16/SRPMS/"
53
+ end
54
+
55
+ def openshift_github_project_url(project)
56
+ "https://github.com/openshift/#{project}"
57
+ end
58
+
59
+ def red_hat_account_url
60
+ 'https://www.redhat.com/wapps/ugc'
61
+ end
62
+
63
+ def mailto_openshift_url
64
+ 'mailto:openshift@redhat.com'
65
+ end
66
+
67
+ def link_to_account_mailto
68
+ link_to "openshift@redhat.com", mailto_openshift_url
69
+ end
70
+
71
+ def status_jsonp_url(id)
72
+ status_js_path :id => id
73
+ end
74
+
75
+ def open_issues_jsonp_url(jsonp)
76
+ open_issues_js_path :jsonp => jsonp
77
+ end
78
+ end
@@ -0,0 +1,26 @@
1
+ module Console::ConsoleHelper
2
+
3
+ def openshift_url(relative='')
4
+ "https://openshift.redhat.com/app/#{relative}"
5
+ end
6
+
7
+ def legal_opensource_disclaimer_url
8
+ openshift_url 'legal/opensource_disclaimer'
9
+ end
10
+
11
+ #FIXME: Replace with real isolation of login state
12
+ def logout_path
13
+ nil
14
+ end
15
+
16
+ def outage_notification
17
+ end
18
+
19
+ def product_branding
20
+ content_tag(:span, "<strong>Open</strong>Shift Origin".html_safe, :class => 'brand-text headline')
21
+ end
22
+
23
+ def product_title
24
+ 'OpenShift Origin'
25
+ end
26
+ end
@@ -0,0 +1,270 @@
1
+ module Console::HelpHelper
2
+
3
+ # Given a relative path within the user guide, display the topic
4
+ def user_guide_topic_url(topic)
5
+ locale = 'en-US'
6
+ "http://access.redhat.com/knowledge/docs/#{locale}/OpenShift/2.0/html/User_Guide/#{topic}"
7
+ end
8
+
9
+ def user_guide_url
10
+ user_guide_topic_url 'index.html'
11
+ end
12
+
13
+ def newsletter_signup_url
14
+ community_base_url 'newsletter/signup'
15
+ end
16
+
17
+ def ssh_keys_help_path
18
+ community_base_url 'developers/remote-access#keys'
19
+ end
20
+
21
+ def deploy_hook_user_guide_topic_url
22
+ community_base_url 'developers/deploying-and-building-applications'
23
+ end
24
+
25
+ def add_domains_user_guide_topic_url
26
+ user_guide_topic_url 'chap-User_Guide-OpenShift_Command_Line_Interface.html#sect-User_Guide-Working_With_Domains'
27
+ end
28
+
29
+ def cartridge_list_url
30
+ community_base_url 'developers/technologies'
31
+ end
32
+
33
+ def get_involved_url
34
+ community_base_url 'get-involved'
35
+ end
36
+
37
+ def suggest_features_url
38
+ community_base_url 'ideas'
39
+ end
40
+
41
+ def openshift_blog_url
42
+ community_base_url 'blogs'
43
+ end
44
+
45
+ def opensource_community_url
46
+ community_base_url 'open-source'
47
+ end
48
+
49
+ def get_involved_developers_url
50
+ community_base_url 'developers/get-involved'
51
+ end
52
+
53
+ def get_started_quickstart_url
54
+ community_base_url 'developers/get-started'
55
+ end
56
+
57
+ def developers_url
58
+ community_base_url 'developers'
59
+ end
60
+
61
+ def developers_path
62
+ community_base_url 'developers'
63
+ end
64
+
65
+ def ssh_help_url
66
+ community_base_url 'developers/remote-access'
67
+ end
68
+
69
+ def client_tools_install_help_url
70
+ community_base_url 'developers/install-the-client-tools'
71
+ end
72
+
73
+ def client_tools_help_url
74
+ community_base_url 'developers/tools'
75
+ end
76
+
77
+ def developers_get_started_path
78
+ community_base_url 'developers/get-started'
79
+ end
80
+
81
+ def livecd_wiki_url(anchor=nil)
82
+ community_base_url "wiki/getting-started-with-openshift-origin-livecd#{anchor.present? ? "##{anchor}" : ''}"
83
+ end
84
+
85
+ def post_to_forum_url
86
+ community_base_url 'forums/openshift'
87
+ end
88
+
89
+ def events_url
90
+ community_base_url 'events/'
91
+ end
92
+
93
+ def jenkins_help_url
94
+ community_base_url 'jenkins'
95
+ end
96
+
97
+ def forums_url
98
+ community_base_url 'forums/openshift'
99
+ end
100
+
101
+ def knowledge_base_url
102
+ community_base_url 'kb'
103
+ end
104
+
105
+ def faq_url
106
+ community_base_url 'faq'
107
+ end
108
+
109
+ def signup_faq_url
110
+ community_base_url 'faq/i-just-signed-up-why-didnt-i-receive-an-email-confirmation'
111
+ end
112
+
113
+ def developers_get_started_fast_url
114
+ community_base_url 'developers/get-started'
115
+ end
116
+
117
+ def community_search_url
118
+ community_base_url 'search/node'
119
+ end
120
+
121
+ def sync_git_with_remote_repo_knowledge_base_url
122
+ community_base_url 'kb/kb-e1006-sync-new-express-git-repo-with-your-own-existing-git-repo'
123
+ end
124
+
125
+ def rails_quickstart_guide_url
126
+ community_base_url 'kb/kb-e1005-ruby-on-rails-express-quickstart-guide'
127
+ end
128
+
129
+ def jboss_resources_url
130
+ community_base_url 'developers/jboss'
131
+ end
132
+
133
+ def videos_url
134
+ community_base_url 'videos'
135
+ end
136
+
137
+ def blog_post_url(post)
138
+ community_base_url "blogs/#{post}"
139
+ end
140
+
141
+ def community_document_url(file)
142
+ community_base_url "sites/default/files/documents/#{file}"
143
+ end
144
+
145
+ def mongodb_resources_url
146
+ community_base_url 'developers/mongodb'
147
+ end
148
+
149
+ def scaling_help_url
150
+ community_base_url 'developers/scaling'
151
+ end
152
+
153
+ def user_guide_url
154
+ user_guide_topic_url 'index.html'
155
+ end
156
+
157
+ def getting_started_path(opts=nil)
158
+ community_base_url "get-started", opts
159
+ end
160
+
161
+ def product_overview_path(opts=nil)
162
+ community_base_url "paas", opts
163
+ end
164
+
165
+ def opensource_process_url
166
+ community_base_url "wiki/community-process"
167
+ end
168
+
169
+ def opensource_architecture_url
170
+ community_base_url "wiki/architecture-overview"
171
+ end
172
+
173
+ def opensource_download_path(opts=nil)
174
+ community_base_url "open-source/download-origin", opts
175
+ end
176
+ def opensource_download_url(opts=nil)
177
+ opensource_download_path opts
178
+ end
179
+
180
+ def getting_started_guide_url
181
+ community_base_url 'developers/install-the-client-tools'
182
+ end
183
+
184
+ def cli_on_windows_user_guide_topic_url
185
+ community_base_url 'developers/install-the-client-tools#windows'
186
+ end
187
+
188
+ def git_homepage_url
189
+ "http://git-scm.com/"
190
+ end
191
+
192
+ def pricing_url
193
+ community_base_url 'developers/pricing'
194
+ end
195
+
196
+ def legal_url
197
+ community_base_url 'legal'
198
+ end
199
+
200
+ def policy_url
201
+ community_base_url 'policy'
202
+ end
203
+
204
+ def services_agreement_url
205
+ community_base_url 'legal/services_agreement'
206
+ end
207
+
208
+ def acceptable_use_url
209
+ community_base_url 'legal/acceptable_use'
210
+ end
211
+
212
+ def privacy_policy_url
213
+ community_base_url 'legal/openshift_privacy'
214
+ end
215
+
216
+ def terms_of_service_url
217
+ community_base_url 'legal/site_terms'
218
+ end
219
+
220
+ def security_policy_url
221
+ community_base_url 'policy/security'
222
+ end
223
+
224
+ def tax_exempt_help_status
225
+ community_base_url 'policy/tax-exemptions'
226
+ end
227
+
228
+ def create_quickstart_url
229
+ community_base_url 'node/add/quickstart'
230
+ end
231
+
232
+ def community_quickstarts_url
233
+ community_base_url 'quickstarts'
234
+ end
235
+
236
+ def console_help_links
237
+ [
238
+ {:href => developers_url,
239
+ :name => 'Developer Center'},
240
+ {:href => user_guide_url,
241
+ :name => 'OpenShift User Guide'},
242
+ {:href => getting_started_path,
243
+ :name => 'Installing OpenShift client tools on Mac OSX, Linux, and Windows'},
244
+ {:href => sync_git_with_remote_repo_knowledge_base_url,
245
+ :name => 'Sync your OpenShift repo with an existing Git repo'}
246
+ ]
247
+ end
248
+
249
+ def console_faq_links
250
+ [
251
+ {:href => community_base_url('faq/how-do-i-start-a-new-forum-discussion'),
252
+ :name => 'How do I start a new Forum discussion?'},
253
+ {:href => community_base_url('faq/how-do-i-install-the-rhc-client-tools-on-windows'),
254
+ :name => 'How do I install the rhc client tools on Windows?'}
255
+ ]
256
+ end
257
+
258
+ def community_path
259
+ community_base_url('')
260
+ end
261
+
262
+ def community_url
263
+ community_path
264
+ end
265
+
266
+ private
267
+ def community_base_url(path, opts=nil)
268
+ "https://openshift.redhat.com/community/#{path}#{opts && opts[:anchor] ? "##{opts[:anchor]}" : ""}"
269
+ end
270
+ end