katello 3.9.1 → 3.10.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of katello might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/app/assets/javascripts/katello/hosts/host_and_hostgroup_edit.js +28 -12
- data/app/controllers/katello/api/rhsm/candlepin_dynflow_proxy_controller.rb +12 -3
- data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +4 -13
- data/app/controllers/katello/api/v2/content_credentials_controller.rb +1 -1
- data/app/controllers/katello/api/v2/content_view_filter_rules_controller.rb +1 -1
- data/app/controllers/katello/api/v2/content_view_versions_controller.rb +6 -4
- data/app/controllers/katello/api/v2/content_views_controller.rb +8 -3
- data/app/controllers/katello/api/v2/gpg_keys_controller.rb +2 -1
- data/app/controllers/katello/api/v2/host_module_streams_controller.rb +39 -0
- data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +20 -11
- data/app/controllers/katello/api/v2/module_streams_controller.rb +2 -1
- data/app/controllers/katello/api/v2/repository_sets_controller.rb +17 -8
- data/app/controllers/katello/application_controller.rb +0 -2
- data/app/controllers/katello/concerns/hosts_controller_extensions.rb +5 -2
- data/app/lib/actions/candlepin/consumer/attach_subscription.rb +0 -2
- data/app/lib/actions/candlepin/consumer/remove_subscription.rb +0 -2
- data/app/lib/actions/katello/capsule_content/create_repos.rb +1 -25
- data/app/lib/actions/katello/capsule_content/sync.rb +1 -1
- data/app/lib/actions/katello/content_view/promote.rb +2 -5
- data/app/lib/actions/katello/content_view/promote_to_environment.rb +2 -5
- data/app/lib/actions/katello/content_view/publish.rb +1 -4
- data/app/lib/actions/katello/content_view_puppet_environment/create.rb +6 -10
- data/app/lib/actions/katello/content_view_version/export.rb +0 -2
- data/app/lib/actions/katello/content_view_version/incremental_update.rb +19 -1
- data/app/lib/actions/katello/environment/publish_repositories.rb +2 -1
- data/app/lib/actions/katello/gpg_key/update.rb +17 -0
- data/app/lib/actions/katello/host/attach_subscriptions.rb +0 -2
- data/app/lib/actions/katello/host/erratum/install.rb +6 -0
- data/app/lib/actions/katello/host/generate_applicability.rb +0 -2
- data/app/lib/actions/katello/host/hypervisors_update.rb +11 -6
- data/app/lib/actions/katello/host/package/install.rb +6 -0
- data/app/lib/actions/katello/host/package/remove.rb +6 -0
- data/app/lib/actions/katello/host/package/update.rb +7 -1
- data/app/lib/actions/katello/host/package_group/install.rb +6 -0
- data/app/lib/actions/katello/host/package_group/remove.rb +6 -0
- data/app/lib/actions/katello/host/recalculate_errata_status.rb +0 -2
- data/app/lib/actions/katello/host/remove_subscriptions.rb +0 -2
- data/app/lib/actions/katello/host/update.rb +1 -0
- data/app/lib/actions/katello/host/update_content_overrides.rb +0 -2
- data/app/lib/actions/katello/host/upload_package_profile.rb +13 -12
- data/app/lib/actions/katello/host/upload_profiles.rb +70 -0
- data/app/lib/actions/katello/product/reindex_subscriptions.rb +0 -2
- data/app/lib/actions/katello/product/repositories_certs_reset.rb +4 -4
- data/app/lib/actions/katello/product/repositories_gpg_reset.rb +2 -2
- data/app/lib/actions/katello/repository/check_matching_content.rb +18 -6
- data/app/lib/actions/katello/repository/clone_deb_content.rb +1 -1
- data/app/lib/actions/katello/repository/clone_to_environment.rb +3 -5
- data/app/lib/actions/katello/repository/clone_to_version.rb +2 -3
- data/app/lib/actions/katello/repository/clone_yum_content.rb +1 -2
- data/app/lib/actions/katello/repository/clone_yum_metadata.rb +2 -2
- data/app/lib/actions/katello/repository/create.rb +1 -31
- data/app/lib/actions/katello/repository/destroy.rb +1 -2
- data/app/lib/actions/katello/repository/export.rb +0 -2
- data/app/lib/actions/katello/repository/fetch_pxe_files.rb +0 -2
- data/app/lib/actions/katello/repository/filtered_index_content.rb +0 -2
- data/app/lib/actions/katello/repository/finish_upload.rb +0 -2
- data/app/lib/actions/katello/repository/import_upload.rb +0 -2
- data/app/lib/actions/katello/repository/index_content.rb +0 -1
- data/app/lib/actions/katello/repository/index_package_groups.rb +0 -2
- data/app/lib/actions/katello/repository/instance_update.rb +21 -0
- data/app/lib/actions/katello/repository/remove_content.rb +0 -2
- data/app/lib/actions/katello/repository/sync.rb +0 -1
- data/app/lib/actions/katello/repository/update.rb +0 -2
- data/app/lib/actions/katello/upstream_subscriptions/bind_entitlement.rb +0 -2
- data/app/lib/actions/katello/upstream_subscriptions/bind_entitlements.rb +0 -2
- data/app/lib/actions/katello/upstream_subscriptions/remove_entitlement.rb +0 -1
- data/app/lib/actions/katello/upstream_subscriptions/remove_entitlements.rb +0 -2
- data/app/lib/actions/katello/upstream_subscriptions/update_entitlement.rb +0 -1
- data/app/lib/actions/katello/upstream_subscriptions/update_entitlements.rb +0 -2
- data/app/lib/actions/pulp/abstract.rb +13 -14
- data/app/lib/actions/pulp/repository/create.rb +13 -211
- data/app/lib/actions/pulp/repository/create_in_plan.rb +4 -18
- data/app/lib/actions/pulp/repository/refresh.rb +7 -70
- data/app/lib/actions/pulp/repository/sync.rb +1 -2
- data/app/lib/katello/capsule_content.rb +3 -3
- data/app/lib/katello/resources/candlepin/consumer.rb +1 -1
- data/app/lib/katello/resources/candlepin/product.rb +1 -1
- data/app/lib/katello/validators/hostgroup_kickstart_repository_validator.rb +1 -1
- data/app/models/katello/available_module_stream.rb +11 -0
- data/app/models/katello/concerns/content_facet_host_extensions.rb +1 -0
- data/app/models/katello/concerns/host_managed_extensions.rb +56 -0
- data/app/models/katello/concerns/hostgroup_extensions.rb +17 -0
- data/app/models/katello/concerns/redhat_extensions.rb +20 -6
- data/app/models/katello/concerns/search_by_repository_name.rb +0 -1
- data/app/models/katello/concerns/smart_proxy_extensions.rb +26 -12
- data/app/models/katello/content_facet_applicable_module_stream.rb +7 -0
- data/app/models/katello/content_view_puppet_environment.rb +14 -35
- data/app/models/katello/erratum.rb +54 -24
- data/app/models/katello/erratum_package.rb +6 -0
- data/app/models/katello/glue/pulp/repo.rb +5 -228
- data/app/models/katello/gpg_key.rb +1 -0
- data/app/models/katello/host/content_facet.rb +38 -83
- data/app/models/katello/host_available_module_stream.rb +47 -0
- data/app/models/katello/module_stream.rb +18 -0
- data/app/models/katello/module_stream_erratum_package.rb +6 -0
- data/app/models/katello/product.rb +0 -2
- data/app/models/katello/product_content.rb +1 -0
- data/app/models/katello/repository.rb +15 -6
- data/app/models/katello/root_repository.rb +1 -1
- data/app/models/katello/rpm.rb +5 -17
- data/app/services/katello/applicable_content_helper.rb +111 -0
- data/app/services/katello/managed_content_medium_provider.rb +7 -0
- data/app/services/katello/pulp/consumer.rb +13 -7
- data/app/services/katello/pulp/repository.rb +157 -4
- data/app/services/katello/pulp/repository/deb.rb +47 -0
- data/app/services/katello/pulp/repository/docker.rb +43 -0
- data/app/services/katello/pulp/repository/file.rb +31 -0
- data/app/services/katello/pulp/repository/ostree.rb +40 -0
- data/app/services/katello/pulp/repository/puppet.rb +43 -0
- data/app/services/katello/pulp/repository/yum.rb +61 -0
- data/app/services/katello/repository_type.rb +1 -1
- data/app/views/katello/api/v2/content_facet/base.json.rabl +1 -0
- data/app/views/katello/api/v2/content_view_versions/base.json.rabl +0 -1
- data/app/views/katello/api/v2/errata/_counts.json.rabl +0 -1
- data/app/views/katello/api/v2/errata/show.json.rabl +9 -3
- data/app/views/katello/api/v2/host_collections/delta_activation_keys.rabl +0 -1
- data/app/views/katello/api/v2/host_module_streams/base.json.rabl +8 -0
- data/app/views/katello/api/v2/host_module_streams/index.json.rabl +7 -0
- data/app/views/katello/api/v2/packages/backend.json.rabl +0 -1
- data/app/views/katello/api/v2/repositories/show.json.rabl +6 -6
- data/app/views/katello/layouts/react.html.erb +2 -2
- data/app/views/overrides/activation_keys/_host_synced_content_select.html.erb +0 -1
- data/config/routes/api/rhsm.rb +1 -0
- data/config/routes/overrides.rb +4 -0
- data/db/migrate/20181008201422_add_modules_to_errata_packages.rb +29 -0
- data/db/migrate/20181017181806_available_module_streams.rb +34 -0
- data/db/migrate/20181027014323_add_applicable_modules.rb +24 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/common/module-stream-actions.service.js +2 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/details/views/content-credential-info.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/new/views/new-content-credential.html +1 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-host-bulk-module-streams-modal.html +2 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-errata-modal.html +37 -22
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts.controller.js +4 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-module-streams.controller.js +27 -7
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-module-streams.html +29 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/errata-details.html +15 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-promotion.controller.js +0 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-publish.controller.js +1 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-versions.controller.js +3 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/histories/content-view-history.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-promotion.html +0 -15
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-publish.html +0 -14
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/erratum.controller.js +19 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/erratum-info.html +0 -12
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/erratum-packages.html +36 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/erratum.html +7 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/errata.routes.js +9 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/hosts/host-module-streams.factory.js +18 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +4 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +2 -2
- data/engines/bastion_katello/app/assets/stylesheets/bastion_katello/bastion_katello.scss +13 -0
- data/lib/katello/permissions/host_permissions.rb +3 -0
- data/lib/katello/repository_types/deb.rb +3 -1
- data/lib/katello/repository_types/docker.rb +3 -1
- data/lib/katello/repository_types/file.rb +1 -0
- data/lib/katello/repository_types/ostree.rb +3 -1
- data/lib/katello/repository_types/puppet.rb +3 -1
- data/lib/katello/repository_types/yum.rb +3 -1
- data/lib/katello/tasks/delete_orphaned_content.rake +1 -1
- data/lib/katello/tasks/reset.rake +1 -0
- data/lib/katello/tasks/test.rake +14 -0
- data/lib/katello/tasks/unify_hosts.rake +2 -0
- data/lib/katello/tasks/virt_who_report.rake +2 -1
- data/lib/katello/version.rb +1 -1
- data/locale/Makefile +52 -17
- data/locale/update-i18n +22 -0
- data/package.json +11 -1
- data/webpack/__mocks__/foremanReact/components/common/EmptyState.js +8 -0
- data/webpack/move_to_foreman/components/common/table/components/Table.js +2 -1
- data/webpack/move_to_pf/react-bootstrap-select/index.js +4 -2
- data/webpack/move_to_pf/test-utils/testHelpers.js +9 -0
- data/webpack/redux/OrganizationProducts/OrganizationProductsActions.js +24 -0
- data/webpack/redux/OrganizationProducts/OrganizationProductsConstants.js +5 -0
- data/webpack/redux/OrganizationProducts/OrganizationProductsReducer.js +38 -0
- data/webpack/redux/OrganizationProducts/OrganizationProductsSelectors.js +7 -0
- data/webpack/redux/OrganizationProducts/__tests__/OrganizationProductsActions.test.js +47 -0
- data/webpack/redux/OrganizationProducts/__tests__/OrganizationProductsReducer.test.js +33 -0
- data/webpack/redux/OrganizationProducts/__tests__/OrganizationProductsSelectors.test.js +19 -0
- data/webpack/redux/OrganizationProducts/__tests__/__snapshots__/OrganizationProductsActions.test.js.snap +49 -0
- data/webpack/redux/OrganizationProducts/__tests__/__snapshots__/OrganizationProductsReducer.test.js.snap +36 -0
- data/webpack/redux/OrganizationProducts/__tests__/__snapshots__/OrganizationProductsSelectors.test.js.snap +9 -0
- data/webpack/redux/OrganizationProducts/index.js +13 -0
- data/webpack/redux/actions/RedHatRepositories/enabled.js +7 -1
- data/webpack/redux/actions/RedHatRepositories/helpers.js +4 -0
- data/webpack/redux/actions/RedHatRepositories/sets.js +2 -0
- data/webpack/redux/reducers/RedHatRepositories/enabled.fixtures.js +8 -2
- data/webpack/redux/reducers/RedHatRepositories/enabled.js +1 -1
- data/webpack/redux/reducers/RedHatRepositories/sets.fixtures.js +12 -3
- data/webpack/redux/reducers/index.js +2 -0
- data/webpack/scenes/RedHatRepositories/components/SearchBar.js +68 -33
- data/webpack/scenes/RedHatRepositories/index.js +13 -2
- data/webpack/scenes/RedHatRepositories/index.scss +26 -0
- data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +1 -1
- data/webpack/scenes/Subscriptions/Manifest/__tests__/__snapshots__/ManageManifestModal.test.js.snap +1 -1
- data/webpack/scenes/Subscriptions/SubscriptionActions.js +18 -2
- data/webpack/scenes/Subscriptions/SubscriptionConstants.js +8 -0
- data/webpack/scenes/Subscriptions/SubscriptionHelpers.js +15 -0
- data/webpack/scenes/Subscriptions/SubscriptionReducer.js +22 -14
- data/webpack/scenes/Subscriptions/SubscriptionsPage.js +39 -90
- data/webpack/scenes/Subscriptions/SubscriptionsSelectors.js +14 -0
- data/webpack/scenes/Subscriptions/UpstreamSubscriptions/UpstreamSubscriptionsPage.js +1 -3
- data/webpack/scenes/Subscriptions/UpstreamSubscriptions/__tests__/__snapshots__/UpstreamSubscriptionsPage.test.js.snap +0 -1
- data/webpack/scenes/Subscriptions/__tests__/SubscriptionHelpers.test.js +84 -0
- data/webpack/scenes/Subscriptions/__tests__/SubscriptionsActions.test.js +26 -1
- data/webpack/scenes/Subscriptions/__tests__/SubscriptionsPage.test.js +5 -0
- data/webpack/scenes/Subscriptions/__tests__/SubscriptionsReducer.test.js +177 -75
- data/webpack/scenes/Subscriptions/__tests__/SubscriptionsSelectors.test.js +29 -0
- data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionHelpers.test.js.snap +31 -0
- data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsActions.test.js.snap +32 -0
- data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsPage.test.js.snap +18 -96
- data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsReducer.test.js.snap +511 -0
- data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsSelectors.test.js.snap +26 -0
- data/webpack/scenes/Subscriptions/__tests__/subscriptions.fixtures.js +6 -1
- data/webpack/scenes/Subscriptions/components/SubscriptionsTable/__tests__/__snapshots__/SubscriptionsTable.test.js.snap +3 -21
- data/webpack/scenes/Subscriptions/components/SubscriptionsToolbar/SubscriptionsToolbar.js +113 -0
- data/webpack/scenes/Subscriptions/components/SubscriptionsToolbar/SubscriptionsToolbar.test.js +47 -0
- data/webpack/scenes/Subscriptions/components/SubscriptionsToolbar/__snapshots__/SubscriptionsToolbar.test.js.snap +504 -0
- data/webpack/scenes/Subscriptions/components/SubscriptionsToolbar/index.js +1 -0
- data/webpack/scenes/Subscriptions/index.js +15 -4
- metadata +59 -14
- data/app/lib/actions/pulp/repository/associate_distributor.rb +0 -20
- data/app/lib/actions/pulp/repository/associate_importer.rb +0 -23
- data/app/lib/actions/pulp/repository/delete_distributor.rb +0 -18
- data/app/lib/actions/pulp/repository/refresh_distributor.rb +0 -19
- data/app/lib/actions/pulp/repository/update_importer.rb +0 -33
- data/app/lib/katello/bulk_actions.rb +0 -63
- data/webpack/move_to_foreman/components/common/EmptyState/index.js +0 -68
@@ -0,0 +1,34 @@
|
|
1
|
+
class AvailableModuleStreams < ActiveRecord::Migration[5.2]
|
2
|
+
def up
|
3
|
+
create_table :katello_available_module_streams do |t|
|
4
|
+
t.string :name
|
5
|
+
t.string :stream
|
6
|
+
end
|
7
|
+
|
8
|
+
create_table :katello_host_available_module_streams do |t|
|
9
|
+
t.references :host, :null => false, :index => true
|
10
|
+
t.references :available_module_stream, :null => false, :index => false
|
11
|
+
t.text :installed_profiles
|
12
|
+
t.string :status
|
13
|
+
end
|
14
|
+
|
15
|
+
add_index :katello_available_module_streams, [:name, :stream], :unique => true, :name => :katello_available_module_streams_name_stream
|
16
|
+
|
17
|
+
add_foreign_key :katello_host_available_module_streams, :hosts,
|
18
|
+
:name => :katello_hems_host_id_fk, :column => :host_id
|
19
|
+
|
20
|
+
add_foreign_key :katello_host_available_module_streams, :katello_available_module_streams,
|
21
|
+
:name => :katello_hems_available_module_stream_id_fk, :column => :available_module_stream_id
|
22
|
+
|
23
|
+
add_index :katello_host_available_module_streams, :available_module_stream_id,
|
24
|
+
name: :index_katello_hems_available_module_stream_id
|
25
|
+
end
|
26
|
+
|
27
|
+
def down
|
28
|
+
remove_foreign_key :katello_host_available_module_streams, name: :katello_hems_host_id_fk
|
29
|
+
remove_foreign_key :katello_host_available_module_streams, name: :katello_hems_available_module_stream_id_fk
|
30
|
+
|
31
|
+
drop_table :katello_host_available_module_streams
|
32
|
+
drop_table :katello_available_module_streams
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
class AddApplicableModules < ActiveRecord::Migration[5.2]
|
2
|
+
def change
|
3
|
+
create_table "katello_content_facet_applicable_module_streams" do |t|
|
4
|
+
t.references 'content_facet', :null => false, :index => { :name => :katello_cfams_cf_idx }
|
5
|
+
t.references 'module_stream', :null => false, :index => { :name => :katello_cfams_ms_idx }
|
6
|
+
end
|
7
|
+
|
8
|
+
add_foreign_key :katello_content_facet_applicable_module_streams,
|
9
|
+
:katello_module_streams,
|
10
|
+
column: :module_stream_id,
|
11
|
+
name: :katello_cfams_mod_stream_id_fk
|
12
|
+
|
13
|
+
add_foreign_key :katello_content_facet_applicable_module_streams,
|
14
|
+
:katello_content_facets,
|
15
|
+
column: :content_facet_id,
|
16
|
+
name: :katello_cfams_cf_fk
|
17
|
+
|
18
|
+
add_index "katello_content_facet_applicable_module_streams", ["module_stream_id", "content_facet_id"],
|
19
|
+
:name => "katello_content_facet_module_stream_rid_cfid", :unique => true
|
20
|
+
|
21
|
+
add_column :katello_content_facets, :applicable_module_stream_count, :integer, :null => false, :default => 0
|
22
|
+
add_column :katello_content_facets, :upgradable_module_stream_count, :integer, :null => false, :default => 0
|
23
|
+
end
|
24
|
+
end
|
@@ -16,7 +16,8 @@
|
|
16
16
|
{ action: 'disable', description: translate("Disable")},
|
17
17
|
{ action: 'install', description: translate("Install")},
|
18
18
|
{ action: 'update', description: translate("Update")},
|
19
|
-
{ action: 'remove', description: translate("Remove")}
|
19
|
+
{ action: 'remove', description: translate("Remove")},
|
20
|
+
{ action: 'reset', description: translate("Reset")}
|
20
21
|
];
|
21
22
|
};
|
22
23
|
}
|
@@ -12,7 +12,7 @@
|
|
12
12
|
<dd>{{ contentCredential.content_type | contentTypeFilter }}</dd>
|
13
13
|
|
14
14
|
<dt translate>Content</dt>
|
15
|
-
<dd bst-edit-custom="contentCredential.content"
|
15
|
+
<dd style="font-family: monospace" bst-edit-custom="contentCredential.content"
|
16
16
|
readonly="denied('edit_content_credentials', contentCredential)"
|
17
17
|
on-save="save(contentCredential)">
|
18
18
|
<form role="form"
|
@@ -9,7 +9,7 @@
|
|
9
9
|
<input type="hidden" name="remote_action" ng-value="moduleStreamActionFormValues.remoteAction"/>
|
10
10
|
<input type="hidden" name="module_stream_action" ng-value="moduleStreamActionFormValues.moduleStreamAction"/>
|
11
11
|
<input type="hidden" name="module_spec" ng-value="moduleStreamActionFormValues.moduleSpec"/>
|
12
|
-
<input type="hidden" name="scoped_search" ng-value="
|
12
|
+
<input type="hidden" name="scoped_search" ng-value="moduleStreamActionFormValues.search"/>
|
13
13
|
<input type="hidden" name="host_ids" ng-value="moduleStreamActionFormValues.hostIds"/>
|
14
14
|
<input type="hidden" name="customize" ng-value="moduleStreamActionFormValues.customize"/>
|
15
15
|
<input type="hidden" name="authenticity_token" ng-value="moduleStreamActionFormValues.authenticityToken"/>
|
@@ -67,4 +67,4 @@
|
|
67
67
|
<div data-block="modal-footer">
|
68
68
|
<button class="btn btn-default" ng-click="cancel()" translate>Cancel</button>
|
69
69
|
</div>
|
70
|
-
</div>
|
70
|
+
</div>
|
@@ -120,55 +120,70 @@
|
|
120
120
|
<section>
|
121
121
|
|
122
122
|
<div class="detail">
|
123
|
-
<span class="info-label" translate>Type</span>
|
123
|
+
<span class="info-label" translate><b>Type</b></span>
|
124
124
|
<span class="info-value">{{ erratum.type }}</span>
|
125
125
|
</div>
|
126
126
|
<div class="detail">
|
127
|
-
<span class="info-label" translate>Title</span>
|
127
|
+
<span class="info-label" translate><b>Title</b></span>
|
128
128
|
<span class="info-value">{{ erratum.title }}</span>
|
129
129
|
</div>
|
130
130
|
<div class="detail">
|
131
|
-
<span class="info-label" translate>Issued</span>
|
131
|
+
<span class="info-label" translate><b>Issued</b></span>
|
132
132
|
<span class="info-value">{{ erratum.issued }}</span>
|
133
133
|
</div>
|
134
134
|
<div class="detail">
|
135
|
-
<span class="info-label" translate>Updated</span>
|
135
|
+
<span class="info-label" translate><b>Updated</b></span>
|
136
136
|
<span class="info-value">{{ erratum.updated }}</span>
|
137
137
|
</div>
|
138
138
|
<div class="detail">
|
139
|
-
<span class="info-label" translate>Reboot Suggested</span>
|
139
|
+
<span class="info-label" translate><b>Reboot Suggested</b></span>
|
140
140
|
<span class="info-value">{{ erratum.reboot_suggested }}</span>
|
141
141
|
</div>
|
142
142
|
|
143
143
|
<div class="detail">
|
144
|
-
<span class="info-label" translate>Description</span>
|
144
|
+
<span class="info-label" translate><b>Description</b></span>
|
145
145
|
<span class="info-value">
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
146
|
+
<p ng-repeat="paragraph in erratum.description.split('\n\n')">
|
147
|
+
{{ paragraph }}
|
148
|
+
</p>
|
149
|
+
</span>
|
150
150
|
</div>
|
151
151
|
|
152
152
|
<div class="detail">
|
153
|
-
<span class="info-label" translate>Solution</span>
|
153
|
+
<span class="info-label" translate><b>Solution</b></span>
|
154
154
|
<span class="info-value">
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
155
|
+
<p ng-repeat="paragraph in erratum.solution.split('\n\n')">
|
156
|
+
{{ paragraph }}
|
157
|
+
</p>
|
158
|
+
</span>
|
159
159
|
</div>
|
160
160
|
|
161
161
|
<div class="detail">
|
162
|
-
<span class="info-label" translate>Packages</span>
|
162
|
+
<span class="info-label" translate><b>Packages</b></span>
|
163
163
|
<span class="info-value">
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
164
|
+
<ul>
|
165
|
+
<li ng-repeat="package in erratum.packages">
|
166
|
+
{{ package }}
|
167
|
+
</li>
|
168
|
+
</ul>
|
169
|
+
</span>
|
170
170
|
</div>
|
171
171
|
|
172
|
+
<div class="detail">
|
173
|
+
<span class="info-label" translate><b>Module Streams</b></span>
|
174
|
+
<span class="info-value">
|
175
|
+
<ul>
|
176
|
+
<li ng-repeat="moduleStream in erratum.module_streams">
|
177
|
+
{{ moduleStream.name + ":" + moduleStream.stream }}
|
178
|
+
<ul>
|
179
|
+
<li ng-repeat="package in moduleStream.packages">
|
180
|
+
{{ package }}
|
181
|
+
</li>
|
182
|
+
</ul>
|
183
|
+
</li>
|
184
|
+
</ul>
|
185
|
+
</span>
|
186
|
+
</div>
|
172
187
|
</section>
|
173
188
|
</div>
|
174
189
|
</div>
|
@@ -37,7 +37,10 @@ angular.module('Bastion.content-hosts').controller('ContentHostsController',
|
|
37
37
|
'sort_order': 'ASC'
|
38
38
|
};
|
39
39
|
|
40
|
-
$scope.csvQuery =
|
40
|
+
$scope.csvQuery = function () {
|
41
|
+
return $httpParamSerializer(params);
|
42
|
+
};
|
43
|
+
|
41
44
|
nutupane = new Nutupane(Host, params);
|
42
45
|
$scope.controllerName = 'hosts';
|
43
46
|
nutupane.masterOnly = true;
|
@@ -5,24 +5,24 @@
|
|
5
5
|
* @requires $scope
|
6
6
|
* @resource $timeout
|
7
7
|
* @resource $window
|
8
|
-
* @requires
|
8
|
+
* @requires HostModuleStream
|
9
9
|
* @requires Nutupane
|
10
10
|
* @requires ModuleStreamActions
|
11
|
+
* @requires translate
|
11
12
|
*
|
12
13
|
* @description
|
13
14
|
* Provides the functionality for the content host module streams list and actions.
|
14
15
|
*/
|
15
16
|
angular.module('Bastion.content-hosts').controller('ContentHostModuleStreamsController',
|
16
|
-
['$scope', '$timeout', '$window', '
|
17
|
-
function ($scope, $timeout, $window,
|
17
|
+
['$scope', '$timeout', '$window', 'HostModuleStream', 'Nutupane', 'BastionConfig', 'ModuleStreamActions', 'translate',
|
18
|
+
function ($scope, $timeout, $window, HostModuleStream, Nutupane, BastionConfig, ModuleStreamActions, translate) {
|
18
19
|
$scope.moduleStreamActions = ModuleStreamActions.getActions();
|
19
20
|
|
20
21
|
$scope.working = false;
|
21
22
|
|
22
|
-
$scope.
|
23
|
-
|
24
|
-
|
25
|
-
});
|
23
|
+
$scope.nutupaneParams = { id: $scope.$stateParams.hostId };
|
24
|
+
|
25
|
+
$scope.moduleStreamsNutupane = new Nutupane(HostModuleStream, $scope.nutupaneParams);
|
26
26
|
|
27
27
|
$scope.moduleStreamsNutupane.masterOnly = true;
|
28
28
|
$scope.table = $scope.moduleStreamsNutupane.table;
|
@@ -34,6 +34,17 @@ angular.module('Bastion.content-hosts').controller('ContentHostModuleStreamsCont
|
|
34
34
|
remoteAction: 'module_stream_action'
|
35
35
|
};
|
36
36
|
|
37
|
+
$scope.moduleStreamStatus = function(module) {
|
38
|
+
var statuses = [];
|
39
|
+
if (["enabled", "disabled"].includes(module.status)) {
|
40
|
+
statuses.push(translate(_.capitalize(module.status)));
|
41
|
+
}
|
42
|
+
if (module.installed_profiles.length) {
|
43
|
+
statuses.push(translate("Installed"));
|
44
|
+
}
|
45
|
+
return statuses.join(", ");
|
46
|
+
};
|
47
|
+
|
37
48
|
$scope.performViaRemoteExecution = function(moduleSpec, actionType) {
|
38
49
|
$scope.working = true;
|
39
50
|
$scope.moduleStreamActionFormValues.moduleSpec = moduleSpec;
|
@@ -44,5 +55,14 @@ angular.module('Bastion.content-hosts').controller('ContentHostModuleStreamsCont
|
|
44
55
|
angular.element('#moduleStreamActionForm').submit();
|
45
56
|
}, 0);
|
46
57
|
};
|
58
|
+
|
59
|
+
$scope.$watch(
|
60
|
+
function(scope) {
|
61
|
+
return scope.nutupaneParams.status;
|
62
|
+
},
|
63
|
+
function() {
|
64
|
+
$scope.moduleStreamsNutupane.refresh();
|
65
|
+
}
|
66
|
+
);
|
47
67
|
}
|
48
68
|
]);
|
@@ -8,6 +8,7 @@
|
|
8
8
|
</div>
|
9
9
|
|
10
10
|
<div ng-if="host && host.hasContent()">
|
11
|
+
|
11
12
|
<form id="moduleStreamActionForm" method="post" action="/katello/remote_execution">
|
12
13
|
<input type="hidden" name="remote_action" ng-value="moduleStreamActionFormValues.remoteAction"/>
|
13
14
|
<input type="hidden" name="module_stream_action" ng-value="moduleStreamActionFormValues.moduleStreamAction"/>
|
@@ -18,6 +19,23 @@
|
|
18
19
|
</form>
|
19
20
|
|
20
21
|
<div data-extend-template="layouts/partials/table.html">
|
22
|
+
<span data-block="filters">
|
23
|
+
<div class="kat-clearfix">
|
24
|
+
<div class="kat-inline">
|
25
|
+
<label translate>Filter by Status: </label>
|
26
|
+
</div>
|
27
|
+
<div class="kat-inline">
|
28
|
+
<select ng-model="nutupaneParams.status">
|
29
|
+
<option value="">All</option>
|
30
|
+
<option value="enabled" translate>Enabled</option>
|
31
|
+
<option value="installed" translate>Installed</option>
|
32
|
+
<option value="disabled" translate>Disabled</option>
|
33
|
+
<option value="unknown" translate>Unknown</option>
|
34
|
+
<option value="upgradable" translate>Upgrade Available</option>
|
35
|
+
</select>
|
36
|
+
</div>
|
37
|
+
</div>
|
38
|
+
</span>
|
21
39
|
|
22
40
|
<span data-block="no-rows-message" translate>
|
23
41
|
There are no Module Streams to display.
|
@@ -32,6 +50,8 @@
|
|
32
50
|
<tr bst-table-head>
|
33
51
|
<th bst-table-column translate>Name</th>
|
34
52
|
<th bst-table-column translate>Stream</th>
|
53
|
+
<th bst-table-column translate>Status</th>
|
54
|
+
<th bst-table-column translate>Installed Profile</th>
|
35
55
|
<th bst-table-column translate>Actions</th>
|
36
56
|
</tr>
|
37
57
|
</thead>
|
@@ -42,6 +62,15 @@
|
|
42
62
|
<a href="/module_streams?search=module_spec%3D{{ module.module_spec }}+and+host%3D{{ host.name }}">
|
43
63
|
{{ module.name }}</a></td>
|
44
64
|
<td bst-table-cell>{{ module.stream }}</td>
|
65
|
+
<td bst-table-cell>
|
66
|
+
{{ moduleStreamStatus(module) }}
|
67
|
+
<span ng-if="module.upgradable" class="pficon pficon-info"
|
68
|
+
uib-tooltip="{{ 'Upgrade Available' | translate }}"
|
69
|
+
> </span>
|
70
|
+
</td>
|
71
|
+
<td bst-table-cell>
|
72
|
+
{{ module.installed_profiles.join(", ") }}
|
73
|
+
</td>
|
45
74
|
<td bst-table-cell>
|
46
75
|
<div class="dropdown" ng-hide="!remoteExecutionPresent || denied('edit_content_hosts', contentHost)">
|
47
76
|
<button class="btn btn-default dropdown-toggle" ng-disabled="$scope.working" type="button" id="dropdownMenu1" data-toggle="dropdown"> Actions
|
@@ -34,10 +34,24 @@
|
|
34
34
|
|
35
35
|
<dt translate>Packages</dt>
|
36
36
|
<dd>
|
37
|
-
<ul
|
37
|
+
<ul>
|
38
38
|
<li ng-repeat="package in erratum.packages">
|
39
39
|
{{ package }}
|
40
40
|
</li>
|
41
41
|
</ul>
|
42
42
|
</dd>
|
43
|
+
|
44
|
+
<dt translate>Module Streams</dt>
|
45
|
+
<dd>
|
46
|
+
<ul>
|
47
|
+
<li ng-repeat="moduleStream in erratum.module_streams">
|
48
|
+
{{ moduleStream.name + ":" + moduleStream.stream }}
|
49
|
+
<ul>
|
50
|
+
<li ng-repeat="package in moduleStream.packages">
|
51
|
+
{{ package }}
|
52
|
+
</li>
|
53
|
+
</ul>
|
54
|
+
</li>
|
55
|
+
</ul>
|
56
|
+
</dd>
|
43
57
|
</dl>
|
@@ -7,7 +7,7 @@
|
|
7
7
|
</div>
|
8
8
|
|
9
9
|
<div data-block="list-actions">
|
10
|
-
<a href="/hosts/content_hosts.csv?{{csvQuery}}" class="btn btn-default" target="_self">
|
10
|
+
<a href="/hosts/content_hosts.csv?{{csvQuery()}}" class="btn btn-default" target="_self">
|
11
11
|
<span translate>Export</span>
|
12
12
|
</a>
|
13
13
|
<button class="btn btn-default"
|
@@ -99,7 +99,6 @@ angular.module('Bastion.content-views').controller('ContentViewPromotionControll
|
|
99
99
|
ContentViewVersion.promote({id: $scope.version.id,
|
100
100
|
'environment_id': $scope.selectedEnvironment.id,
|
101
101
|
'description': $scope.description,
|
102
|
-
'force_yum_metadata_regeneration': $scope.forceMetadataRegeneration,
|
103
102
|
force: true},
|
104
103
|
success, failure);
|
105
104
|
};
|
@@ -34,8 +34,7 @@ angular.module('Bastion.content-views').controller('ContentViewPublishController
|
|
34
34
|
|
35
35
|
$scope.publish = function (contentView) {
|
36
36
|
var description = $scope.version.description,
|
37
|
-
|
38
|
-
data = {'id': contentView.id, 'description': description, 'force_yum_metadata_regeneration': forceMetadataRegeneration};
|
37
|
+
data = {'id': contentView.id, 'description': description};
|
39
38
|
$scope.working = true;
|
40
39
|
ContentView.publish(data, success, failure);
|
41
40
|
};
|
@@ -170,7 +170,9 @@ angular.module('Bastion.content-views').controller('ContentViewVersionsControlle
|
|
170
170
|
|
171
171
|
$scope.status = function (version) {
|
172
172
|
var taskTypes = $scope.taskTypes,
|
173
|
-
deletionEvents = findTaskTypes(version['active_history'], taskTypes.deletion),
|
173
|
+
deletionEvents = _.filter(findTaskTypes(version['active_history'], taskTypes.deletion), function(history) {
|
174
|
+
return history.environment != null;
|
175
|
+
}),
|
174
176
|
promotionEvents = findTaskTypes(version['active_history'], taskTypes.promotion),
|
175
177
|
publishEvents = findTaskTypes(version['active_history'], taskTypes.publish),
|
176
178
|
messages = "";
|
@@ -16,7 +16,7 @@ angular.module('Bastion.content-views').controller('ContentViewHistoryController
|
|
16
16
|
|
17
17
|
nutupane = new Nutupane(ContentViewHistory, {
|
18
18
|
contentViewId: $scope.$stateParams.contentViewId,
|
19
|
-
'sort_by': '
|
19
|
+
'sort_by': 'content_view_version_id',
|
20
20
|
'sort_order': 'DESC'
|
21
21
|
});
|
22
22
|
$scope.controllerName = 'katello_content_views';
|
@@ -36,21 +36,6 @@
|
|
36
36
|
</textarea>
|
37
37
|
</div>
|
38
38
|
|
39
|
-
<div class="checkbox">
|
40
|
-
<label translate>
|
41
|
-
<input id="forceMetadataRegeneration"
|
42
|
-
name="forceMetadataRegeneration"
|
43
|
-
ng-model="forceMetadataRegeneration"
|
44
|
-
type="checkbox"/>
|
45
|
-
Force Yum Metadata Regeneration
|
46
|
-
</label>
|
47
|
-
<i class="fa fa-question-circle"
|
48
|
-
uib-tooltip="{{ 'Forces metadata regeneration on yum repos even if the contents of the repo have not changed' | translate }}"
|
49
|
-
tooltip-animation="false"
|
50
|
-
tooltip-append-to-body="true">
|
51
|
-
</i>
|
52
|
-
</div>
|
53
|
-
|
54
39
|
<div>
|
55
40
|
<button type="button" class="btn btn-primary btn-lg" ng-disabled="promoting || !selectedEnvironment" ng-click="verifySelection()" translate>
|
56
41
|
Promote Version
|
@@ -45,20 +45,6 @@
|
|
45
45
|
</textarea>
|
46
46
|
</div>
|
47
47
|
|
48
|
-
<div class="checkbox">
|
49
|
-
<label translate>
|
50
|
-
<input id="forceMetadataRegeneration"
|
51
|
-
name="forceMetadataRegeneration"
|
52
|
-
ng-model="version.forceMetadataRegeneration"
|
53
|
-
type="checkbox"/>
|
54
|
-
Force Yum Metadata Regeneration
|
55
|
-
</label>
|
56
|
-
<i class="fa fa-question-circle"
|
57
|
-
uib-tooltip="{{ 'Forces metadata regeneration on yum repos even if the contents of the repo have not changed' | translate }}"
|
58
|
-
tooltip-animation="false"
|
59
|
-
tooltip-append-to-body="true"></i>
|
60
|
-
</div>
|
61
|
-
|
62
48
|
<div bst-form-buttons
|
63
49
|
on-cancel="transitionTo('content-view.versions', {contentViewId: contentView.id})"
|
64
50
|
on-save="publish(contentView)"
|