foreman_patch 1.1.5 → 1.1.6.alpha4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/foreman_patch/concerns/hosts_controller_extensions.rb +35 -41
  3. data/app/controllers/foreman_patch/react_controller.rb +12 -0
  4. data/app/lib/actions/foreman_patch/cycle/create.rb +5 -1
  5. data/app/lib/actions/foreman_patch/cycle/initiate.rb +5 -1
  6. data/app/lib/actions/foreman_patch/invocation/action.rb +23 -29
  7. data/app/lib/actions/foreman_patch/invocation/patch.rb +16 -7
  8. data/app/lib/actions/foreman_patch/invocation/process_logging.rb +44 -0
  9. data/app/lib/actions/foreman_patch/invocation/proxy_action.rb +52 -0
  10. data/app/lib/actions/foreman_patch/invocation/wait_for_host.rb +4 -29
  11. data/app/lib/actions/foreman_patch/round/patch.rb +5 -1
  12. data/app/lib/actions/foreman_patch/window/publish.rb +5 -1
  13. data/app/lib/actions/foreman_patch/window/resolve_hosts.rb +5 -1
  14. data/app/models/foreman_patch/event.rb +13 -0
  15. data/app/models/foreman_patch/invocation.rb +2 -4
  16. data/app/views/foreman_patch/api/v2/invocations/base.json.rabl +1 -1
  17. data/app/views/foreman_patch/api/v2/invocations/event.json.rabl +3 -0
  18. data/app/views/foreman_patch/api/v2/invocations/show.json.rabl +2 -2
  19. data/app/views/foreman_patch/groups/index.html.erb +1 -1
  20. data/app/views/foreman_patch/layouts/react.html.erb +1 -1
  21. data/config/api_routes.rb +26 -28
  22. data/config/routes.rb +40 -29
  23. data/db/migrate/20230706092400_nullify_group_on_delete.rb +11 -0
  24. data/db/migrate/20230707102800_create_invocation_events.rb +16 -0
  25. data/db/seeds.d/100-assign_features_with_templates.rb +6 -12
  26. data/lib/foreman_patch/engine.rb +11 -46
  27. data/lib/foreman_patch/register.rb +119 -0
  28. data/lib/foreman_patch/version.rb +1 -1
  29. data/locale/en/foreman_patch.po +1 -1
  30. data/locale/foreman_patch.pot +1 -1
  31. data/locale/gemspec.rb +1 -1
  32. data/package.json +4 -0
  33. data/public/assets/foreman_patch/calendar-b5391efda77239c4a4894e9f03f34610f6c8e2e748b2a147febfea814b857cdc.scss.gz +0 -0
  34. data/public/assets/foreman_patch/cycle_plans-e5667e178ba389908f5c815b24ec0ea77c340849d56bc39c5ce72bb626bd446a.scss +6 -0
  35. data/public/assets/foreman_patch/cycle_plans-e5667e178ba389908f5c815b24ec0ea77c340849d56bc39c5ce72bb626bd446a.scss.gz +0 -0
  36. data/public/assets/foreman_patch/cycle_plans-ff3d252119622a68828ff70f4a97328303963002237dbf850e92d6a706e93667.scss +6 -0
  37. data/public/assets/foreman_patch/cycle_plans-ff3d252119622a68828ff70f4a97328303963002237dbf850e92d6a706e93667.scss.gz +0 -0
  38. data/public/assets/foreman_patch/foreman_patch-410cf04bf9b09e65fee034cc3f2dd74acf2524abf881c6d6e559d5c62a615faf.css +11 -0
  39. data/public/assets/foreman_patch/foreman_patch-410cf04bf9b09e65fee034cc3f2dd74acf2524abf881c6d6e559d5c62a615faf.css.gz +0 -0
  40. data/public/assets/foreman_patch/foreman_patch-84845e54f06d3a11189828e656432d587c7312358cdf694753da7b78b7dabcee.css +11 -0
  41. data/public/assets/foreman_patch/foreman_patch-84845e54f06d3a11189828e656432d587c7312358cdf694753da7b78b7dabcee.css.gz +0 -0
  42. data/public/assets/foreman_patch/foreman_patch-a76c5fd10a5795e97c5ae4c222bfdf4ab88da49d6a7659175dba79f8fc62ab47.css +82 -0
  43. data/public/assets/foreman_patch/foreman_patch-a76c5fd10a5795e97c5ae4c222bfdf4ab88da49d6a7659175dba79f8fc62ab47.css.gz +0 -0
  44. data/public/assets/foreman_patch/foreman_patch.json +1 -0
  45. data/public/assets/foreman_patch/plan_edit_windows-2eb04c7e83fa62797b0a14364d3ff5b3c4336983603fdc5a276b5464eeba7e60.js +9 -0
  46. data/public/assets/foreman_patch/plan_edit_windows-2eb04c7e83fa62797b0a14364d3ff5b3c4336983603fdc5a276b5464eeba7e60.js.gz +0 -0
  47. data/public/assets/foreman_patch/plan_edit_windows-ddedd3e70fb6ef761f636be2b7b35286e86d68e126bfc37294f9365a5171a928.js +9 -0
  48. data/public/assets/foreman_patch/plan_edit_windows-ddedd3e70fb6ef761f636be2b7b35286e86d68e126bfc37294f9365a5171a928.js.gz +0 -0
  49. data/public/webpack/foreman_patch/bundle.css +1 -0
  50. data/public/webpack/foreman_patch/bundle.js +34173 -0
  51. data/public/webpack/foreman_patch/foreman_patch.css +1 -0
  52. data/public/webpack/foreman_patch/foreman_patch.js +34366 -0
  53. data/public/webpack/foreman_patch/foreman_patch:global.css +1 -0
  54. data/public/webpack/foreman_patch/foreman_patch:global.js +32098 -0
  55. data/public/webpack/foreman_patch/manifest.json +25 -0
  56. data/public/webpack/foreman_patch/vendor.js +5201 -0
  57. data/webpack/components/Invocations/InvocationsPage.js +1 -1
  58. data/webpack/components/Invocations/index.js +6 -6
  59. data/webpack/components/common/Calendar/Calendar.css +76 -0
  60. data/webpack/components/common/Calendar/Calendar.js +5 -4
  61. data/webpack/components/common/Table/index.js +28 -0
  62. data/webpack/global_index.js +16 -0
  63. data/webpack/index.js +3 -8
  64. data/webpack/src/Components/Invocation/Invocation.js +67 -0
  65. data/webpack/src/Components/Invocation/InvocationLogFooter.js +30 -0
  66. data/webpack/src/Components/Invocation/InvocationLogToolbar.js +80 -0
  67. data/webpack/{components → src/Components}/Invocation/InvocationSelectors.js +0 -3
  68. data/webpack/src/Components/Invocation/index.js +62 -0
  69. data/webpack/src/Components/InvocationStatus.js +50 -0
  70. data/webpack/src/Components/Loading.js +51 -0
  71. data/webpack/src/Extends/index.js +15 -0
  72. data/webpack/src/Router/routes.js +4 -2
  73. data/webpack/src/reducers.js +1 -1
  74. metadata +57 -88
  75. data/app/lib/actions/foreman_patch/cycle/complete.rb +0 -41
  76. data/app/lib/actions/foreman_patch/cycle/plan.rb +0 -73
  77. data/app/lib/actions/foreman_patch/round/plan.rb +0 -33
  78. data/app/lib/actions/foreman_patch/window/plan.rb +0 -43
  79. data/app/models/setting/patching.rb +0 -57
  80. data/app/views/foreman_patch/api/v2/invocations/phase.json.rabl +0 -7
  81. data/config/routes/mount_engine.rb +0 -3
  82. data/config/routes/overrides.rb +0 -10
  83. data/lib/foreman_patch/plugin.rb +0 -47
  84. data/webpack/components/Invocation/Invocation.js +0 -47
  85. data/webpack/components/Invocation/index.js +0 -36
  86. data/webpack/components/common/Terminal/OutputLine.js +0 -26
  87. data/webpack/components/common/Terminal/Terminal.js +0 -115
  88. data/webpack/components/common/Terminal/Terminal.scss +0 -47
  89. data/webpack/src/ForemanPatch.js +0 -11
  90. data/webpack/src/Router/index.js +0 -14
  91. data/webpack/src/index.js +0 -1
  92. /data/{webpack/components/common/Calendar/Calendar.scss → public/assets/foreman_patch/calendar-b5391efda77239c4a4894e9f03f34610f6c8e2e748b2a147febfea814b857cdc.scss} +0 -0
  93. /data/webpack/components/Invocations/{Invocations.scss → Invocations.css} +0 -0
  94. /data/webpack/{components → src/Components}/Invocation/InvocationActions.js +0 -0
  95. /data/webpack/{components → src/Components}/Invocation/InvocationConsts.js +0 -0
data/config/routes.rb CHANGED
@@ -1,47 +1,58 @@
1
1
  ForemanPatch::Engine.routes.draw do
2
- scope :foreman_patch, path: '/foreman_patch' do
3
- resources :groups, only: [:index, :new, :create, :edit, :update, :destroy] do
4
- collection do
5
- get 'auto_complete_search'
6
- end
2
+ resources :groups, only: [:index, :new, :create, :edit, :update, :destroy] do
3
+ collection do
4
+ get 'auto_complete_search'
7
5
  end
6
+ end
8
7
 
9
- resources :cycles, only: [:index, :show, :destroy] do
10
- collection do
11
- get 'auto_complete_search'
12
- end
13
-
14
- resources :windows, only: [:new, :create]
8
+ resources :cycles, only: [:index, :show, :destroy] do
9
+ collection do
10
+ get 'auto_complete_search'
15
11
  end
16
12
 
17
- resources :windows, only: [:show, :destroy]
13
+ resources :windows, only: [:new, :create]
14
+ end
18
15
 
19
- resources :rounds, only: [:show] do
20
- collection do
21
- get 'auto_complete_search'
22
- end
16
+ resources :windows, only: [:show, :destroy]
17
+
18
+ resources :rounds, only: [:show] do
19
+ collection do
20
+ get 'auto_complete_search'
23
21
  end
22
+ end
24
23
 
25
- resources :invocations, only: [:show, :destroy] do
26
- collection do
27
- get 'auto_complete_search'
28
- end
24
+ resources :invocations, only: [:show, :destroy] do
25
+ collection do
26
+ get 'auto_complete_search'
29
27
  end
28
+ end
30
29
 
31
- resources :plans, only: [:index, :new, :create, :show, :edit, :update, :destroy] do
32
- resources :window_plans, only: [:new, :create]
33
- member do
34
- post :iterate
35
- end
30
+ resources :plans, only: [:index, :new, :create, :show, :edit, :update, :destroy] do
31
+ resources :window_plans, only: [:new, :create]
32
+ member do
33
+ post :iterate
36
34
  end
35
+ end
37
36
 
38
- resources :window_plans, only: [:edit, :update, :destroy]
37
+ resources :window_plans, only: [:edit, :update, :destroy]
39
38
 
40
- resources :ticket_fields, except: [:show] do
41
- resources :lookup_values, only: [:index, :create, :update, :destroy]
39
+ resources :ticket_fields, except: [:show] do
40
+ resources :lookup_values, only: [:index, :create, :update, :destroy]
41
+ collection do
42
+ get 'auto_complete_search'
43
+ end
44
+ end
45
+
46
+ constraints(id: %r{[^/]+}) do
47
+ resources :hosts, only: [], controller: '/hosts' do
42
48
  collection do
43
- get 'auto_complete_search'
49
+ post 'select_multiple_patch_group'
50
+ post 'update_multiple_patch_group'
44
51
  end
45
52
  end
46
53
  end
47
54
  end
55
+
56
+ Foreman::Application.routes.draw do
57
+ mount ForemanPatch::Engine, at: '/foreman_patch'
58
+ end
@@ -0,0 +1,11 @@
1
+ class NullifyGroupOnDelete < ActiveRecord::Migration[6.0]
2
+ def up
3
+ remove_foreign_key :foreman_patch_rounds, name: :foreman_patch_rounds_by_group
4
+ add_foreign_key :foreman_patch_rounds, :foreman_patch_groups, column: :group_id, name: :foreman_patch_rounds_by_group, on_delete: :nullify
5
+ end
6
+
7
+ def down
8
+ remove_foreign_key :foreman_patch_rounds, name: :foreman_patch_rounds_by_group
9
+ add_foreign_key :foreman_patch_rounds, :foreman_patch_groups, column: :group_id, name: :foreman_patch_rounds_by_group
10
+ end
11
+ end
@@ -0,0 +1,16 @@
1
+ class CreateInvocationEvents < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :foreman_patch_events do |t|
4
+ t.bigint :invocation_id, null: false
5
+ t.integer :sequence, null: false
6
+ t.timestamp :timestamp, null: false
7
+ t.string :event_type, null: false
8
+ t.string :event, null: false
9
+ t.string :meta
10
+
11
+ t.index [:invocation_id, :sequence], unique: true, name: :foreman_patch_events_index
12
+ end
13
+
14
+ add_foreign_key :foreman_patch_events, :foreman_patch_invocations, column: :invocation_id, name: :foreman_patch_events_for_invocation, on_delete: :cascade
15
+ end
16
+ end
@@ -1,16 +1,10 @@
1
1
  User.as_anonymous_admin do
2
- RemoteExecutionFeature.without_auditing do
3
- if Rails.env.test? || Foreman.in_rake?
4
- ForemanPatch.register_rex_features
5
- end
6
-
7
- JobTemplate.without_auditing do
8
- module_template = JobTemplate.find_by(name: 'Power Action - SSH Default')
9
- if module_template && !Rails.env.test? && Setting[:remote_execution_sync_templates]
10
- module_template.sync_feature('power_action')
11
- module_template.organizations << Organization.unscoped.all if module_template.organizations.empty?
12
- module_template.locations << Location.unscoped.all if module_template.locations.empty?
13
- end
2
+ JobTemplate.without_auditing do
3
+ module_template = JobTemplate.find_by(name: 'Power Action - SSH Default')
4
+ if module_template && !Rails.env.test? && Setting[:remote_execution_sync_templates]
5
+ module_template.sync_feature('power_action')
6
+ module_template.organizations << Organization.unscoped.all if module_template.organizations.empty?
7
+ module_template.locations << Location.unscoped.all if module_template.locations.empty?
14
8
  end
15
9
  end
16
10
  end
@@ -1,15 +1,9 @@
1
1
  module ForemanPatch
2
2
  class Engine < ::Rails::Engine
3
- engine_name 'foreman_patch'
4
3
  isolate_namespace ForemanPatch
4
+ engine_name 'foreman_patch'
5
5
 
6
- config.autoload_paths += Dir["#{config.root}/app/controllers/concerns"]
7
- config.autoload_paths += Dir["#{config.root}/app/helpers/concerns"]
8
- config.autoload_paths += Dir["#{config.root}/app/models/concerns"]
9
-
10
- initializer 'foreman_patch.configure_assets', group: :assets do
11
- SETTINGS[:foreman_patch] = { assets: { precompile: ['foreman_patch.css'] } }
12
- end
6
+ config.paths['config/routes.rb'].unshift('config/api_routes.rb')
13
7
 
14
8
  # Add any db migrations
15
9
  initializer 'foreman_patch.load_app_instance_data' do |app|
@@ -18,40 +12,29 @@ module ForemanPatch
18
12
  end
19
13
  end
20
14
 
21
- initializer 'foreman_patch.mount_engine', before: :sooner_routes_load do |app|
22
- app.routes_reloader.paths << "#{ForemanPatch::Engine.root}/config/routes/mount_engine.rb"
23
- app.routes_reloader.paths << "#{ForemanPatch::Engine.root}/config/api_routes.rb"
24
- app.routes_reloader.paths.unshift("#{ForemanPatch::Engine.root}/config/routes/overrides.rb")
25
- end
26
-
27
- initializer 'foreman_patch.load_default_settings', before: :load_config_initializers do |_app|
28
- require_dependency File.expand_path('../../../app/models/setting/patching.rb', __FILE__)
29
- end
30
-
31
- initializer 'foreman_patch.require_dynflow', before: 'foreman_tasks.initialize_dynflow' do |_app|
32
- ::ForemanTasks.dynflow.require!
33
- ::ForemanTasks.dynflow.config.eager_load_paths << File.join(ForemanPatch::Engine.root, 'app/lib/actions/foreman_patch')
34
- end
35
-
36
- initializer 'foreman_patch.register_plugin', :before => :finisher_hook do |_app|
37
- require 'foreman_patch/plugin'
15
+ initializer 'foreman_patch.register_plugin', before: :finisher_hook, after: 'katello.register_plugin' do |_app|
16
+ require 'foreman_patch/register'
38
17
  Apipie.configuration.checksum_path += ['/foreman_patch/api/']
39
18
  end
40
19
 
41
- initializer 'foreman_patch.helpers' do |_app|
42
- ActionView::Base.include ForemanPatch::HostsHelper
20
+ initializer 'foreman_patch.register_actions', before: :finisher_hook do |_app|
21
+ ForemanTasks.dynflow.require!
22
+ ForemanTasks.dynflow.config.eager_load_paths << File.join(ForemanPatch::Engine.root, 'app/lib/actions/foreman_patch')
23
+ ForemanTasks.dynflow.eager_load_actions!
43
24
  end
44
25
 
45
26
  # Include concerns in this config.to_prepare block
46
27
  config.to_prepare do
47
28
  # Model extensions
48
- ::Host::Managed.send(:include, ForemanPatch::Concerns::HostManagedExtensions)
29
+ ::Host::Managed.include ForemanPatch::Concerns::HostManagedExtensions
49
30
 
50
31
  # Controller extensions
51
32
  ::HostsController.include ForemanPatch::Concerns::HostsControllerExtensions
52
33
 
53
34
  # Api Controller extensions
54
35
  ::Api::V2::HostsController.include ForemanPatch::Concerns::Api::V2::HostsControllerExtensions
36
+ rescue => e
37
+ Rails.logger.warn "ForemanPatch: skipping engine hook (#{e})"
55
38
  end
56
39
 
57
40
  rake_tasks do
@@ -66,22 +49,4 @@ module ForemanPatch
66
49
  Foreman::Gettext::Support.add_text_domain locale_domain, locale_dir
67
50
  end
68
51
  end
69
-
70
- def self.table_name_prefix
71
- 'foreman_patch_'
72
- end
73
-
74
- def self.use_relative_model_naming
75
- true
76
- end
77
-
78
- def self.register_rex_features
79
- RemoteExecutionFeature.register(
80
- :power_action,
81
- N_('Power Action'),
82
- description: N_('Power Action'),
83
- provided_inputs: 'action',
84
- host_action_button: false
85
- )
86
- end
87
52
  end
@@ -0,0 +1,119 @@
1
+ Foreman::Plugin.register :foreman_patch do
2
+ requires_foreman '~> 3.1'
3
+
4
+ register_global_js_file 'global'
5
+
6
+ settings do
7
+ category(:patching, N_('Patching')) do
8
+ setting('host_max_wait_for_up',
9
+ type: :integer,
10
+ description: N_("Maximum seconds to wait for a host after patching restart."),
11
+ default: 600,
12
+ full_name: N_("Max wait for host up"))
13
+ setting('host_patch_timeout',
14
+ type: :integer,
15
+ description: N_("Maximum seconds for a patching invocation to run before timing out"),
16
+ default: nil,
17
+ full_name: N_('Patch Timeout'))
18
+ setting('patch_schedule_time_zone',
19
+ type: :string,
20
+ description: N_('Time zone used to base patch window scheduling off of.'),
21
+ default: 'UTC',
22
+ full_name: N_('Patch Schedule Time Zone'),
23
+ collection: proc { ActiveSupport::TimeZone.all.map { |tz| [ tz.name, tz.name ] }.to_h })
24
+ setting('ticket_api_host',
25
+ type: :string,
26
+ description: N_('Host used for change management tickets'),
27
+ default: nil,
28
+ full_name: N_('Ticket API host'))
29
+ setting('ticket_api_proxy',
30
+ type: :string,
31
+ description: N_('HTTP Proxy to access ticket API host'),
32
+ default: nil,
33
+ full_name: N_('Ticket API HTTP proxy'),
34
+ collection: proc { HttpProxy.all.map { |proxy| [proxy.name, proxy.name_and_url] }.to_h },
35
+ include_blank: N_('no proxy'))
36
+ setting('ticket_api_user',
37
+ type: :string,
38
+ description: N_('User with access to ticket API'),
39
+ default: nil,
40
+ full_name: N_('Ticket API user'))
41
+ setting('ticket_api_password',
42
+ type: :string,
43
+ description: N_('Password for ticket API user'),
44
+ default: nil,
45
+ full_name: N_('Ticket API password'),
46
+ encrypted: true)
47
+ setting('ticket_api_path',
48
+ type: :string,
49
+ description: N_('Ticket API path for REST/CRUD operations'),
50
+ default: nil,
51
+ full_name: N_('Ticket API path'))
52
+ setting('ticket_web_ui_path',
53
+ type: :string,
54
+ description: N_('Path for opening a ticket in the web UI'),
55
+ default: nil,
56
+ full_name: N_('Ticket Web UI path'))
57
+ setting('ticket_label_field',
58
+ type: :string,
59
+ description: N_('Name of the field used for the ticket label'),
60
+ default: nil,
61
+ full_name: N_('Ticket label field'))
62
+ setting('ticket_id_field',
63
+ type: :string,
64
+ description: N_('Name of the field used for the ticket id'),
65
+ default: nil,
66
+ full_name: N_('Ticket ID field'))
67
+ setting('skip_broken_patches',
68
+ type: :boolean,
69
+ description: N_('Skip broken dependencies during patching'),
70
+ default: true,
71
+ full_name: N_('Skip broken patches'))
72
+ end
73
+ end
74
+
75
+ apipie_documented_controllers(["#{ForemanPatch::Engine.root}/app/controllers/foreman_patch/api/v2/*.rb"])
76
+
77
+ # Add permissions
78
+ security_block :foreman_patch do
79
+ end
80
+
81
+ divider :top_menu, caption: N_('Patching'), parent: :content_menu
82
+ menu :top_menu, :groups,
83
+ caption: N_('Groups'),
84
+ engine: ForemanPatch::Engine,
85
+ parent: :content_menu
86
+
87
+ menu :top_menu, :cycles,
88
+ caption: N_('Cycles'),
89
+ engine: ForemanPatch::Engine,
90
+ parent: :content_menu
91
+
92
+ menu :top_menu, :plans,
93
+ caption: N_('Plans'),
94
+ engine: ForemanPatch::Engine,
95
+ parent: :content_menu
96
+
97
+ menu :top_menu, :ticket_fields,
98
+ caption: N_('Ticket Fields'),
99
+ engine: ForemanPatch::Engine,
100
+ parent: :content_menu
101
+
102
+ parameter_filter ::Host::Managed, :group_facet_attributes => [:group_id]
103
+
104
+ describe_host do
105
+ multiple_actions_provider :patch_host_multiple_actions
106
+ overview_fields_provider :patch_host_overview_fields
107
+ end
108
+
109
+ register_facet ForemanPatch::Host::GroupFacet, :group_facet do
110
+ api_view list: 'foreman_patch/api/v2/group_facet/base_with_root',
111
+ single: 'foreman_patch/api/v2/group_facet/show'
112
+ api_docs :group_facet_attributes, ::ForemanPatch::Api::V2::HostGroupsController
113
+ extend_model ForemanPatch::Concerns::GroupFacetHostExtensions
114
+ set_dependent_action :destroy
115
+ end
116
+
117
+ RemoteExecutionFeature.register(:power_action, N_("Power Action"), description: N_("Power Action"), provided_inputs: ['action'])
118
+ RemoteExecutionFeature.register(:ensure_services, N_("Ensure Services"), description: N_("Ensure Services are running"))
119
+ end
@@ -1,3 +1,3 @@
1
1
  module ForemanPatch
2
- VERSION = '1.1.5'.freeze
2
+ VERSION = '1.1.6.alpha4'.freeze
3
3
  end
@@ -5,7 +5,7 @@
5
5
  #, fuzzy
6
6
  msgid ""
7
7
  msgstr ""
8
- "Project-Id-Version: version 0.0.1\n"
8
+ "Project-Id-Version: foreman_patch 0.0.1\n"
9
9
  "Report-Msgid-Bugs-To: \n"
10
10
  "POT-Creation-Date: 2014-08-20 08:46+0100\n"
11
11
  "PO-Revision-Date: 2014-08-20 08:54+0100\n"
@@ -5,7 +5,7 @@
5
5
  #, fuzzy
6
6
  msgid ""
7
7
  msgstr ""
8
- "Project-Id-Version: version 0.0.1\n"
8
+ "Project-Id-Version: foreman_patch 0.0.1\n"
9
9
  "Report-Msgid-Bugs-To: \n"
10
10
  "POT-Creation-Date: 2014-08-20 08:46+0100\n"
11
11
  "PO-Revision-Date: 2014-08-20 08:46+0100\n"
data/locale/gemspec.rb CHANGED
@@ -1,2 +1,2 @@
1
1
  # Matches foreman_patch.gemspec
2
- _('TODO: Description of ForemanPatch.')
2
+ _("Foreman Plugin for Managing Patching.")
data/package.json CHANGED
@@ -12,6 +12,7 @@
12
12
  "publish-coverage": "tfm-publish-coverage",
13
13
  "stories": "tfm-stories --plugin",
14
14
  "stories:build": "tfm-build-stories --plugin",
15
+ "stories:deploy": "surge --project .storybook-dist",
15
16
  "create-react-component": "yo react-domain"
16
17
  },
17
18
  "repository": {
@@ -36,6 +37,9 @@
36
37
  "stylelint-config-standard": "^18.0.0",
37
38
  "stylelint": "^9.3.0"
38
39
  },
40
+ "dependencies": {
41
+ "@patternfly/react-log-viewer": "~4.87.100"
42
+ },
39
43
  "peerDependencies": {
40
44
  "@theforeman/vendor": "^8.15.0"
41
45
  }
@@ -0,0 +1,6 @@
1
+ div.event {
2
+ margin: 2px 10px;
3
+ border: 1px solid black;
4
+ border-color: #d1d1d1;
5
+ padding: 2px 3px;
6
+ }
@@ -0,0 +1,6 @@
1
+ div.event {
2
+ margin: 2px 10px;
3
+ border: 1px solid black;
4
+ border-color: #d1d1d1;
5
+ padding: 2px 3px;
6
+ }
@@ -0,0 +1,11 @@
1
+ /*
2
+
3
+
4
+ */
5
+ /* line 1, ../projects/foreman_patch/app/assets/stylesheets/foreman_patch/cycle_plans.scss */
6
+ div.event {
7
+ margin: 2px 10px;
8
+ border: 1px solid black;
9
+ border-color: #d1d1d1;
10
+ padding: 2px 3px;
11
+ }
@@ -0,0 +1,11 @@
1
+ /*
2
+
3
+
4
+ */
5
+ /* line 1, ../projects/foreman_patch/app/assets/stylesheets/foreman_patch/cycle_plans.scss */
6
+ div.event {
7
+ margin: 2px 10px;
8
+ border: 1px solid black;
9
+ border-color: #d1d1d1;
10
+ padding: 2px 3px;
11
+ }
@@ -0,0 +1,82 @@
1
+ /*
2
+
3
+
4
+ */
5
+ /* line 3, ../projects/foreman_patch/app/assets/stylesheets/foreman_patch/calendar.scss */
6
+ .calendar .day {
7
+ padding: 2px;
8
+ height: 120px;
9
+ }
10
+
11
+ /* line 16, ../projects/foreman_patch/app/assets/stylesheets/foreman_patch/calendar.scss */
12
+ .calendar .today {
13
+ background: #ffffc0;
14
+ }
15
+
16
+ /* line 20, ../projects/foreman_patch/app/assets/stylesheets/foreman_patch/calendar.scss */
17
+ .calendar .past {
18
+ background: #f9f9f9;
19
+ }
20
+
21
+ /* line 28, ../projects/foreman_patch/app/assets/stylesheets/foreman_patch/calendar.scss */
22
+ .calendar .disabled {
23
+ background: #e8e8e8;
24
+ }
25
+
26
+ /* line 32, ../projects/foreman_patch/app/assets/stylesheets/foreman_patch/calendar.scss */
27
+ .calendar td.enabled:hover {
28
+ background: #def3ff;
29
+ }
30
+
31
+ /* line 36, ../projects/foreman_patch/app/assets/stylesheets/foreman_patch/calendar.scss */
32
+ .calendar h6 {
33
+ margin: 2px 3px;
34
+ }
35
+
36
+ /* line 40, ../projects/foreman_patch/app/assets/stylesheets/foreman_patch/calendar.scss */
37
+ .calendar div.day {
38
+ margin: 0;
39
+ height: inherit;
40
+ width: inherit;
41
+ display: block;
42
+ }
43
+
44
+ /* line 47, ../projects/foreman_patch/app/assets/stylesheets/foreman_patch/calendar.scss */
45
+ .calendar div.event {
46
+ margin: 2px, 10px;
47
+ border: 1px solid;
48
+ border-color: #d1d1d1;
49
+ padding: 2px 3px;
50
+ background: #ffffff;
51
+ }
52
+
53
+ /* line 56, ../projects/foreman_patch/app/assets/stylesheets/foreman_patch/calendar.scss */
54
+ .calendar .calendar-header button {
55
+ font-size: 20px;
56
+ width: 100%;
57
+ }
58
+
59
+ /* line 61, ../projects/foreman_patch/app/assets/stylesheets/foreman_patch/calendar.scss */
60
+ .calendar .calendar-header .calendar-title {
61
+ font-size: 24px;
62
+ text-align: center;
63
+ }
64
+
65
+ /* line 66, ../projects/foreman_patch/app/assets/stylesheets/foreman_patch/calendar.scss */
66
+ .calendar .calendar-header .previous {
67
+ padding-left: 0px;
68
+ padding-right: 20px;
69
+ }
70
+
71
+ /* line 71, ../projects/foreman_patch/app/assets/stylesheets/foreman_patch/calendar.scss */
72
+ .calendar .calendar-header .next {
73
+ padding-left: 20px;
74
+ padding-right: 0px;
75
+ }
76
+ /* line 1, ../projects/foreman_patch/app/assets/stylesheets/foreman_patch/cycle_plans.scss */
77
+ div.event {
78
+ margin: 2px 10px;
79
+ border: 1px solid black;
80
+ border-color: #d1d1d1;
81
+ padding: 2px 3px;
82
+ }
@@ -0,0 +1 @@
1
+ {"files":{"foreman_patch/foreman_patch-410cf04bf9b09e65fee034cc3f2dd74acf2524abf881c6d6e559d5c62a615faf.css":{"logical_path":"foreman_patch/foreman_patch.css","mtime":"2023-05-22T20:41:49+00:00","size":209,"digest":"4617ad50b4acfdbcac439e6e98890cf44ee4404a32997c83bd8c39efc6a63ba4","integrity":"sha256-RhetULSs/bysQ55umIkM9E7kQEoymXyDvYw578amO6Q="},"foreman_patch/cycle_plans-ff3d252119622a68828ff70f4a97328303963002237dbf850e92d6a706e93667.scss":{"logical_path":"foreman_patch/cycle_plans.scss","mtime":"2023-05-22T20:41:49+00:00","size":106,"digest":"aa7bb2d36a98d83776b4dd9dd93431ba648b84a37478f93c445eb9bda0f84006","integrity":"sha256-qnuy02qY2Dd2tN2d2TQxumSLhKN0ePk8RF65vaD4QAY="},"foreman_patch/plan_edit_windows-ddedd3e70fb6ef761f636be2b7b35286e86d68e126bfc37294f9365a5171a928.js":{"logical_path":"foreman_patch/plan_edit_windows.js","mtime":"2023-05-22T20:41:49+00:00","size":283,"digest":"f692a4baa15305b1be60ee3377d7460ebb5606ad8d7a907341b76bf05010991a","integrity":"sha256-9pKkuqFTBbG+YO4zd9dGDrtWBq2NepBzQbdr8FAQmRo="},"foreman_patch/calendar-b5391efda77239c4a4894e9f03f34610f6c8e2e748b2a147febfea814b857cdc.scss":{"logical_path":"foreman_patch/calendar.scss","mtime":"2023-07-11T17:43:02+00:00","size":954,"digest":"76d5588d09b6965ef0929bd626928c7ebb0563c66a062875a714edc90a60d9c9","integrity":"sha256-dtVYjQm2ll7wkpvWJpKMfrsFY8ZqBih1pxTtyQpg2ck="},"foreman_patch/foreman_patch-a76c5fd10a5795e97c5ae4c222bfdf4ab88da49d6a7659175dba79f8fc62ab47.css":{"logical_path":"foreman_patch/foreman_patch.css","mtime":"2023-07-11T17:43:02+00:00","size":2149,"digest":"81f5c52d7c9b7e29d8e2d0999fd1823c163e9ed4edaed4b60f9104e9f9a75aa4","integrity":"sha256-gfXFLXybfinY4tCZn9GCPBY+ntTtrtS2D5EE6fmnWqQ="},"foreman_patch/cycle_plans-e5667e178ba389908f5c815b24ec0ea77c340849d56bc39c5ce72bb626bd446a.scss":{"logical_path":"foreman_patch/cycle_plans.scss","mtime":"2023-07-19T20:44:56+00:00","size":106,"digest":"aa7bb2d36a98d83776b4dd9dd93431ba648b84a37478f93c445eb9bda0f84006","integrity":"sha256-qnuy02qY2Dd2tN2d2TQxumSLhKN0ePk8RF65vaD4QAY="},"foreman_patch/plan_edit_windows-2eb04c7e83fa62797b0a14364d3ff5b3c4336983603fdc5a276b5464eeba7e60.js":{"logical_path":"foreman_patch/plan_edit_windows.js","mtime":"2023-07-19T20:44:56+00:00","size":283,"digest":"f692a4baa15305b1be60ee3377d7460ebb5606ad8d7a907341b76bf05010991a","integrity":"sha256-9pKkuqFTBbG+YO4zd9dGDrtWBq2NepBzQbdr8FAQmRo="},"foreman_patch/foreman_patch-84845e54f06d3a11189828e656432d587c7312358cdf694753da7b78b7dabcee.css":{"logical_path":"foreman_patch/foreman_patch.css","mtime":"2023-07-19T20:44:56+00:00","size":209,"digest":"4617ad50b4acfdbcac439e6e98890cf44ee4404a32997c83bd8c39efc6a63ba4","integrity":"sha256-RhetULSs/bysQ55umIkM9E7kQEoymXyDvYw578amO6Q="}},"assets":{"foreman_patch/foreman_patch.css":"foreman_patch/foreman_patch-84845e54f06d3a11189828e656432d587c7312358cdf694753da7b78b7dabcee.css","foreman_patch/cycle_plans.scss":"foreman_patch/cycle_plans-e5667e178ba389908f5c815b24ec0ea77c340849d56bc39c5ce72bb626bd446a.scss","foreman_patch/plan_edit_windows.js":"foreman_patch/plan_edit_windows-2eb04c7e83fa62797b0a14364d3ff5b3c4336983603fdc5a276b5464eeba7e60.js","foreman_patch/calendar.scss":"foreman_patch/calendar-b5391efda77239c4a4894e9f03f34610f6c8e2e748b2a147febfea814b857cdc.scss"}}
@@ -0,0 +1,9 @@
1
+ function remove_window_plan(window_plan_id) {
2
+ $('#windowPlan' + window_plan_id).remove();
3
+ }
4
+
5
+ function edit_window_plan(window_plan_id) {
6
+ if (window_plan_id == null) form = null;
7
+ else form = $('#windowPlans #windowPlanHidden' + window_plan_id);
8
+ //show_window_plan_modal();
9
+ };
@@ -0,0 +1,9 @@
1
+ function remove_window_plan(window_plan_id) {
2
+ $('#windowPlan' + window_plan_id).remove();
3
+ }
4
+
5
+ function edit_window_plan(window_plan_id) {
6
+ if (window_plan_id == null) form = null;
7
+ else form = $('#windowPlans #windowPlanHidden' + window_plan_id);
8
+ //show_window_plan_modal();
9
+ };