katello 3.4.4 → 3.4.5

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.

Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/katello/api/v2/api_controller.rb +1 -1
  3. data/app/controllers/katello/api/v2/host_collections_controller.rb +1 -1
  4. data/app/controllers/katello/concerns/api/v2/content_overrides_controller.rb +1 -1
  5. data/app/helpers/katello/concerns/dashboard_helper_extensions.rb +30 -0
  6. data/app/lib/actions/candlepin/owner/import_products.rb +3 -1
  7. data/app/lib/actions/katello/capsule_content/sync.rb +2 -1
  8. data/app/lib/actions/katello/host/hypervisors_update.rb +3 -1
  9. data/app/lib/actions/katello/host/register.rb +15 -8
  10. data/app/lib/actions/katello/organization/create.rb +2 -2
  11. data/app/lib/actions/katello/organization/manifest_refresh.rb +2 -1
  12. data/app/models/katello/glue/candlepin/pool.rb +6 -1
  13. data/app/models/katello/rhsm_fact_parser.rb +2 -1
  14. data/app/views/dashboard/_subscription_widget.html.erb +34 -12
  15. data/db/migrate/20161014133811_move_content_view_version_description_to_histories.rb +11 -10
  16. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-associations.controller.js +6 -2
  17. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-host-collections-table.html +1 -2
  18. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/common/views/select-action-dropdown.html +2 -2
  19. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-subscriptions-modal.controller.js +0 -1
  20. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-errata-modal.html +1 -3
  21. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html +1 -3
  22. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/filters.html +1 -2
  23. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/details/views/docker-tag-environments.html +1 -4
  24. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/erratum-content-hosts.html +1 -3
  25. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/erratum-repositories.html +1 -3
  26. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/details/views/file-content-views.html +1 -3
  27. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/details/views/file-repositories.html +1 -3
  28. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/gpg-keys/views/gpg-keys.html +1 -5
  29. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/host-collection-add-hosts.controller.js +5 -2
  30. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/host-collection-hosts.controller.js +6 -2
  31. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/views/host-collection-add-hosts.html +1 -3
  32. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/views/host-collection-hosts-list.html +1 -3
  33. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/views/host-collections.html +1 -3
  34. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ostree-branches/details/views/ostree-branch-repositories.html +1 -3
  35. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/details/views/package-repositories.html +1 -3
  36. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.controller.js +8 -11
  37. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/views/product-repositories.html +1 -2
  38. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/views/discovery-create.html +1 -3
  39. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/discovery/views/discovery.html +1 -4
  40. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/details/views/puppet-module-content-views.html +1 -3
  41. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/details/views/puppet-module-repositories.html +1 -3
  42. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/views/subscriptions.html +1 -1
  43. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/details/views/sync-plan-products.html +1 -2
  44. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/views/sync-plans.html +1 -3
  45. data/lib/katello/engine.rb +4 -0
  46. data/lib/katello/permission_creator.rb +361 -0
  47. data/lib/katello/permissions/user_permissions.rb +0 -8
  48. data/lib/katello/plugin.rb +6 -1
  49. data/lib/katello/tasks/upgrades/3.4/remove_unused_products.rake +28 -0
  50. data/lib/katello/version.rb +1 -1
  51. metadata +5 -11
  52. data/lib/katello/permissions/activation_key_permissions.rb +0 -28
  53. data/lib/katello/permissions/capsule_content_permissions.rb +0 -17
  54. data/lib/katello/permissions/content_view_permissions.rb +0 -82
  55. data/lib/katello/permissions/gpg_key_permissions.rb +0 -24
  56. data/lib/katello/permissions/host_collections_permissions.rb +0 -24
  57. data/lib/katello/permissions/lifecycle_environment_permissions.rb +0 -29
  58. data/lib/katello/permissions/product_permissions.rb +0 -80
  59. data/lib/katello/permissions/subscription_permissions.rb +0 -33
  60. data/lib/katello/permissions/sync_plan_permissions.rb +0 -25
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8751ffc813891b31dd245dcf1d489d100d1949ef
4
- data.tar.gz: 4d862eeda9bf7bfa65290774380d19f6efd69ca6
3
+ metadata.gz: 6decdc9453fd01ddb91c38c97e6404c2f34cc783
4
+ data.tar.gz: 73716c2989e80487d5adbe8cf9cf638296ab924f
5
5
  SHA512:
6
- metadata.gz: b9b1d0659f08e44c3ccc28c322fa8ebfabc67fda376839b56a9abf55870f99946369cbbf1cde71ba32b0578486f7a3de3b82dccca3e3ae863aba479e6f2007b2
7
- data.tar.gz: 14531bc8de473c9cb8aa0d4b500119a944a1feac7461801c0def52b08839dd6137a22eef63e9e0f597849777c2bdb13f32e7ff5cd43c92d9f1edf148bea59c8a
6
+ metadata.gz: 7b47b7ced813970a5a2b46d993c076f10e4ea82be0952b9f39be28f1146f3b1b3f7c3088ee611451374a3f3f2f84b8267a42c2d01596111c89e715afdb569187
7
+ data.tar.gz: 01775bd60e7f80c929ad14c2328482d9ecd38f30224b0411c9b3f425a7d9b81ea41529105a9a644da68d212d3d7b3fe807c29bbf788f6b1ffa9e414ebd5505c3
@@ -88,7 +88,7 @@ module Katello
88
88
 
89
89
  scoped_search_results(query, sub_total, total, page, per_page)
90
90
  rescue ScopedSearch::QueryNotSupported => error
91
- return scoped_search_results(query, sub_total, total, page, per_page, error.message)
91
+ return scoped_search_results([], sub_total, total, page, per_page, error.message)
92
92
  end
93
93
 
94
94
  protected
@@ -34,7 +34,7 @@ module Katello
34
34
  param :available_for, String, :required => false,
35
35
  :desc => N_("Interpret specified object to return only Host Collections that can be associated with specified object. The value 'host' is supported.")
36
36
  def index
37
- respond(:collection => scoped_search(index_relation.uniq, :name, :asc))
37
+ respond(:collection => scoped_search(index_relation.uniq!, :name, :asc))
38
38
  end
39
39
 
40
40
  def index_relation
@@ -7,7 +7,7 @@ module Katello
7
7
  def validate_content_overrides_enabled(content_params, overriden_object = nil)
8
8
  name = content_params[:name] || "enabled"
9
9
  compare_value = content_params[:value].to_s.downcase
10
- remove = content_params.key?(:remove) ? Foreman::Cast.to_bool(content_params[:remove]) : nil
10
+ remove = content_params.key?(:remove) ? ::Foreman::Cast.to_bool(content_params[:remove]) : nil
11
11
  content_label = content_params[:content_label]
12
12
 
13
13
  if !remove && name == "enabled" &&
@@ -0,0 +1,30 @@
1
+ module Katello
2
+ module Concerns
3
+ module DashboardHelperExtensions
4
+ def total_host_count
5
+ total_host_count = ::Host::Managed.authorized('view_hosts', ::Host::Managed).where(:organization => Organization.current).size
6
+ return total_host_count || 0
7
+ end
8
+
9
+ def partial_consumer_count
10
+ partial_consumer_count = ::Host::Managed.authorized('view_hosts', ::Host::Managed).where(:organization => Organization.current).search_for("subscription_status = partial").size
11
+ return partial_consumer_count || 0
12
+ end
13
+
14
+ def valid_consumer_count
15
+ valid_consumer_count = ::Host::Managed.authorized('view_hosts', ::Host::Managed).where(:organization => Organization.current).search_for("subscription_status = valid").size
16
+ return valid_consumer_count || 0
17
+ end
18
+
19
+ def invalid_consumer_count
20
+ invalid_consumer_count = ::Host::Managed.authorized('view_hosts', ::Host::Managed).where(:organization => Organization.current).search_for("subscription_status = invalid").size
21
+ return invalid_consumer_count || 0
22
+ end
23
+
24
+ def unknown_consumer_count
25
+ unknown_consumer_count = ::Host::Managed.authorized('view_hosts', ::Host::Managed).where(:organization => Organization.current).search_for("subscription_status = unknown").size
26
+ return unknown_consumer_count || 0
27
+ end
28
+ end
29
+ end
30
+ end
@@ -8,7 +8,9 @@ module Actions
8
8
 
9
9
  def run
10
10
  organization = ::Organization.find(input[:organization_id])
11
- organization.redhat_provider.import_products_from_cp
11
+ User.as_anonymous_admin do
12
+ organization.redhat_provider.import_products_from_cp
13
+ end
12
14
  end
13
15
  end
14
16
  end
@@ -51,7 +51,8 @@ module Actions
51
51
  concurrence do
52
52
  repository_ids.each do |repo_id|
53
53
  sequence do
54
- repo = ::Katello::Repository.find_by(pulp_id: repo_id)
54
+ repo = ::Katello::Repository.find_by(pulp_id: repo_id) ||
55
+ ::Katello::ContentViewPuppetEnvironment.find_by(pulp_id: repo_id)
55
56
  if repo && ['yum', 'puppet'].exclude?(repo.content_type)
56
57
  # we unassociate units in non-yum/puppet repos in order to avoid version conflicts
57
58
  # during publish. (i.e. two versions of a unit in the same repo)
@@ -16,7 +16,9 @@ module Actions
16
16
  hypervisors = input[:hypervisors]
17
17
 
18
18
  if hypervisors
19
- hypervisors.each { |hypervisor| update_or_create_hypervisor(hypervisor) }
19
+ User.as_anonymous_admin do
20
+ hypervisors.each { |hypervisor| update_or_create_hypervisor(hypervisor) }
21
+ end
20
22
  end
21
23
  end
22
24
 
@@ -16,7 +16,6 @@ module Actions
16
16
  content_view_environment ||= lookup_content_view_environment(activation_keys)
17
17
  set_host_collections(host, activation_keys)
18
18
  end
19
-
20
19
  fail _('Content View and Environment not set for registration.') if content_view_environment.nil?
21
20
 
22
21
  host.save!
@@ -33,6 +32,13 @@ module Actions
33
32
  plan_self(uuid: cp_create.output[:response][:uuid], host_id: host.id, hostname: host.name,
34
33
  user_id: User.current.id, :facts => consumer_params[:facts])
35
34
  plan_action(Pulp::Consumer::Create, uuid: cp_create.output[:response][:uuid], name: host.name)
35
+
36
+ begin
37
+ set_content_and_subscription_uuids(host, cp_create.input[:response][:uuid])
38
+ rescue => e
39
+ ::Katello::Resources::Candlepin::Consumer.destroy(cp_create.input[:response][:uuid])
40
+ raise e
41
+ end
36
42
  end
37
43
  end
38
44
 
@@ -57,13 +63,6 @@ module Actions
57
63
  def finalize
58
64
  User.as_anonymous_admin do
59
65
  host = ::Host.find(input[:host_id])
60
- host.content_facet.uuid = input[:uuid]
61
- host.subscription_facet.uuid = input[:uuid]
62
-
63
- user = ::User.find(input[:user_id])
64
- host.subscription_facet.user = user unless user.nil? || user.hidden?
65
-
66
- host.content_facet.save!
67
66
  host.subscription_facet.update_from_consumer_attributes(host.subscription_facet.candlepin_consumer.
68
67
  consumer_attributes.except(:installedProducts, :guestIds, :facts))
69
68
  host.subscription_facet.save!
@@ -119,6 +118,14 @@ module Actions
119
118
  subscription_facet.activation_keys = activation_keys
120
119
  subscription_facet
121
120
  end
121
+
122
+ def set_content_and_subscription_uuids(host, uuid)
123
+ host.content_facet.uuid = uuid
124
+ host.subscription_facet.uuid = uuid
125
+ host.subscription_facet.user = User.current unless User.current.nil? || User.current.hidden?
126
+ host.content_facet.save!
127
+ host.subscription_facet.save!
128
+ end
122
129
  end
123
130
  end
124
131
  end
@@ -5,8 +5,8 @@ module Actions
5
5
  def plan(organization)
6
6
  organization.setup_label_from_name
7
7
  organization.create_library
8
- organization.create_anonymous_provider
9
- organization.create_redhat_provider
8
+ organization.create_anonymous_provider unless organization.anonymous_provider
9
+ organization.create_redhat_provider unless organization.redhat_provider
10
10
  cp_create = nil
11
11
 
12
12
  organization.save!
@@ -31,7 +31,8 @@ module Actions
31
31
  import_products = plan_action(Candlepin::Owner::ImportProducts, :organization_id => organization.id, :dependency => owner_import.output)
32
32
 
33
33
  if manifest_update && SETTINGS[:katello][:use_pulp]
34
- organization.products.redhat.flat_map(&:repositories).each do |repo|
34
+ repositories = ::Katello::Repository.in_default_view.where(:product_id => ::Katello::Product.redhat.in_org(organization))
35
+ repositories.each do |repo|
35
36
  plan_action(Katello::Repository::RefreshRepository, repo, :dependency => import_products.output)
36
37
  end
37
38
  end
@@ -93,6 +93,7 @@ module Katello
93
93
  subscription
94
94
  end
95
95
 
96
+ # rubocop:disable MethodLength
96
97
  def import_data
97
98
  pool_attributes = {}.with_indifferent_access
98
99
  pool_json = self.backend_data
@@ -126,7 +127,11 @@ module Katello
126
127
  pool_attributes[:unmapped_guest] = true
127
128
  end
128
129
 
129
- pool_attributes[:virt_who] = pool_attributes['virt_limit'] != "0" && !pool_attributes['virt_limit'].nil? && subscription.try(:redhat?)
130
+ if subscription.try(:redhat?)
131
+ pool_attributes[:virt_who] = pool_attributes['virt_limit'] != "0" && pool_attributes['virt_limit'].present?
132
+ else
133
+ pool_attributes[:virt_who] = false
134
+ end
130
135
 
131
136
  exceptions = pool_attributes.keys.map(&:to_sym) - self.attribute_names.map(&:to_sym)
132
137
  self.update_attributes(pool_attributes.except!(*exceptions))
@@ -1,8 +1,9 @@
1
1
  module Katello
2
2
  class RhsmFactParser < ::FactParser
3
3
  def architecture
4
- name = facts['lscpu.architecture']
4
+ name = facts['lscpu.architecture'] || facts['uname.machine']
5
5
  name = "x86_64" if name == "amd64"
6
+ name = "i386" if name == "i686"
6
7
  Architecture.where(:name => name).first_or_create unless name.blank?
7
8
  end
8
9
 
@@ -5,12 +5,14 @@
5
5
  <% unless Organization.current.present? %>
6
6
  <p class="ca"><%= _("Please select an organization to view subscription status.") %></p>
7
7
  <% else %>
8
- <% owner_info = Organization.current.owner_info %>
9
- <% invalid_consumer_count = owner_info.total_invalid_compliance_consumers %>
10
- <% partial_consumer_count = owner_info.total_partial_compliance_consumers %>
11
- <% valid_consumer_count = owner_info.total_valid_compliance_consumers %>
12
- <% total_count = owner_info.total_consumers %>
13
- <% subscription_status_url = '/content_hosts?search=' + ERB::Util.url_encode('subscription_status = ') %>
8
+ <% total_count = total_host_count() %>
9
+ <% partial_consumer_count = partial_consumer_count() %>
10
+ <% valid_consumer_count = valid_consumer_count()%>
11
+ <% invalid_consumer_count = invalid_consumer_count()%>
12
+ <% unknown_consumer_count = unknown_consumer_count() %>
13
+ <% unregistered_consumer_count = total_count-partial_consumer_count-valid_consumer_count-invalid_consumer_count%>
14
+ <% subscription_status_url = '/content_hosts?search='%>
15
+ <% registered_subscription_url = subscription_status_url + ERB::Util.url_encode('subscription_status = ') %>
14
16
 
15
17
  <table class="table table-fixed table-striped table-bordered">
16
18
  <thead>
@@ -22,32 +24,52 @@
22
24
  <tbody>
23
25
  <tr>
24
26
  <td>
25
- <%= link_to("#{subscription_status_url}" + 'invalid') do %>
27
+ <%= link_to("#{registered_subscription_url}" + 'invalid') do %>
26
28
  <i class="label label-danger" style="margin-right: 6px">&nbsp;</i><%= _("Invalid") %>
27
29
  <% end %>
28
30
  </td>
29
31
  <td style="text-align:right">
30
- <%= link_to( "#{invalid_consumer_count}", "#{subscription_status_url}" + 'invalid')%>
32
+ <%= link_to( "#{invalid_consumer_count}", "#{registered_subscription_url}" + 'invalid')%>
31
33
  </td>
32
34
  </tr>
33
35
  <tr>
34
36
  <td>
35
- <%= link_to("#{subscription_status_url}" + 'partial') do %>
37
+ <%= link_to("#{registered_subscription_url}" + 'partial') do %>
36
38
  <i class="label label-warning" style="margin-right: 6px">&nbsp;</i><%= _("Partial") %>
37
39
  <% end %>
38
40
  </td>
39
41
  <td style="text-align:right">
40
- <%= link_to( "#{partial_consumer_count}", "#{subscription_status_url}" + 'partial')%>
42
+ <%= link_to( "#{partial_consumer_count}", "#{registered_subscription_url}" + 'partial')%>
41
43
  </td>
42
44
  </tr>
43
45
  <tr>
44
46
  <td>
45
- <%= link_to("#{subscription_status_url}" + 'valid') do %>
47
+ <%= link_to("#{registered_subscription_url}" + 'valid') do %>
46
48
  <i class="label label-success" style="margin-right: 6px">&nbsp;</i><%= _("Valid") %>
47
49
  <% end %>
48
50
  </td>
49
51
  <td style="text-align:right">
50
- <%= link_to( "#{valid_consumer_count}", "#{subscription_status_url}" + 'valid')%>
52
+ <%= link_to( "#{valid_consumer_count}", "#{registered_subscription_url}" + 'valid')%>
53
+ </td>
54
+ </tr>
55
+ <tr>
56
+ <td>
57
+ <%= link_to("#{registered_subscription_url}" + 'unknown') do %>
58
+ <i class="label label-warning" style="margin-right: 6px">&nbsp;</i><%= _("Unknown") %>
59
+ <% end %>
60
+ </td>
61
+ <td style="text-align:right">
62
+ <%= link_to( "#{unknown_consumer_count}", "#{registered_subscription_url}" + 'unknown')%>
63
+ </td>
64
+ </tr>
65
+ <tr>
66
+ <td>
67
+ <%= link_to("#{subscription_status_url}" + 'null? subscription_uuid') do %>
68
+ <i class="label label-danger" style="margin-right: 6px">&nbsp;</i><%= _("Unregistered") %>
69
+ <% end %>
70
+ </td>
71
+ <td style="text-align:right">
72
+ <%= link_to( "#{unregistered_consumer_count}", "#{subscription_status_url}" + 'null? subscription_uuid')%>
51
73
  </td>
52
74
  </tr>
53
75
  <tr>
@@ -1,12 +1,13 @@
1
1
  class MoveContentViewVersionDescriptionToHistories < ActiveRecord::Migration
2
- class Katello::ContentViewVersion < ActiveRecord::Base
3
- has_many :history, :class_name => "Katello::CVHistory", :inverse_of => :content_view_version,
2
+ class FakeContentViewVersion < ActiveRecord::Base
3
+ self.table_name = 'katello_content_view_versions'
4
+ has_many :history, :class_name => "CVHistory", :inverse_of => :content_view_version,
4
5
  :dependent => :destroy, :foreign_key => :katello_content_view_version_id
5
6
  end
6
7
 
7
- class Katello::CVHistory < ActiveRecord::Base
8
+ class CVHistory < ActiveRecord::Base
8
9
  self.table_name = 'katello_content_view_histories'
9
- belongs_to :content_view_version, :class_name => "Katello::ContentViewVersion", :foreign_key => :katello_content_view_version_id, :inverse_of => :history
10
+ belongs_to :content_view_version, :class_name => "FakeContentViewVersion", :foreign_key => :katello_content_view_version_id, :inverse_of => :history
10
11
  SUCCESSFUL = 'successful'.freeze
11
12
  scope :successful, -> { where(:status => SUCCESSFUL) }
12
13
 
@@ -19,14 +20,14 @@ class MoveContentViewVersionDescriptionToHistories < ActiveRecord::Migration
19
20
  end
20
21
 
21
22
  def up
22
- Katello::ContentViewVersion.find_each do |version|
23
+ FakeContentViewVersion.find_each do |version|
23
24
  publish_history = version.history.publish.successful.first
24
25
  unless publish_history
25
- publish_history = Katello::CVHistory.create!(action: Katello::CVHistory.actions[:publish],
26
- katello_content_view_version_id: version.id,
27
- status: 'successful',
28
- user: ''
29
- )
26
+ publish_history = CVHistory.create!(action: CVHistory.actions[:publish],
27
+ katello_content_view_version_id: version.id,
28
+ status: 'successful',
29
+ user: ''
30
+ )
30
31
  end
31
32
 
32
33
  publish_history.update_attributes!(notes: version[:description])
@@ -16,7 +16,7 @@
16
16
  angular.module('Bastion.activation-keys').controller('ActivationKeyAssociationsController',
17
17
  ['$scope', '$location', 'translate', 'Nutupane', 'ActivationKey', 'ContentHostsHelper', 'CurrentOrganization', 'Host',
18
18
  function ($scope, $location, translate, Nutupane, ActivationKey, ContentHostsHelper, CurrentOrganization, Host) {
19
- var contentHostsNutupane, params = {
19
+ var contentHostsNutupane, nutupaneParams, params = {
20
20
  'organization_id': CurrentOrganization,
21
21
  'search': $location.search().search || "",
22
22
  'page': 1,
@@ -25,7 +25,11 @@ angular.module('Bastion.activation-keys').controller('ActivationKeyAssociationsC
25
25
  'paged': true
26
26
  };
27
27
 
28
- contentHostsNutupane = new Nutupane(Host, params);
28
+ nutupaneParams = {
29
+ 'disableAutoLoad': true
30
+ };
31
+
32
+ contentHostsNutupane = new Nutupane(Host, params, undefined, nutupaneParams);
29
33
  $scope.controllerName = 'hosts';
30
34
  contentHostsNutupane.searchTransform = function (term) {
31
35
  var searchQuery, addition = "activation_key_id=" + $scope.$stateParams.activationKeyId;
@@ -29,8 +29,7 @@
29
29
  </div>
30
30
 
31
31
  <div data-block="table">
32
- <table ng-show="table.rows.length > 0"
33
- ng-class="{'table-mask': table.working}" class="table table-bordered table-striped">
32
+ <table ng-class="{'table-mask': table.working}" class="table table-bordered table-striped">
34
33
  <thead>
35
34
  <tr bst-table-head row-select="hostCollection">
36
35
  <th bst-table-column="name" translate>Name</th>
@@ -3,8 +3,8 @@
3
3
  <span translate>Select Action</span>
4
4
  </button>
5
5
 
6
- <button type="button" class="btn btn-default" uib-dropdown-toggle>
6
+ <button type="button" class="btn btn-default" ng-click="toggleDropdown($event)">
7
7
  <span class="caret"></span>
8
8
  <span class="sr-only" translate>Toggle Dropdown</span>
9
9
  </button>
10
- </div>
10
+ </div>
@@ -21,7 +21,6 @@ angular.module('Bastion.content-hosts').controller('ContentHostsBulkSubscription
21
21
  function ($scope, $location, $uibModalInstance, Nutupane, CurrentOrganization, HostBulkAction, Subscription, SubscriptionsHelper, GlobalNotification, hostIds) {
22
22
  var success, error, params = {
23
23
  'organization_id': CurrentOrganization,
24
- 'search': $location.search().search || "",
25
24
  'sort_order': 'ASC',
26
25
  'available_for': 'host',
27
26
  'host_id': $scope.$stateParams.hostId
@@ -61,9 +61,7 @@
61
61
  </span>
62
62
 
63
63
  <div data-block="table">
64
- <table class="table table-striped table-bordered"
65
- ng-class="{'table-mask': table.working}"
66
- ng-show="table.rows.length > 0">
64
+ <table class="table table-striped table-bordered" ng-class="{'table-mask': table.working}">
67
65
  <thead>
68
66
  <tr bst-table-head row-select>
69
67
  <th bst-table-column="type" translate>Type</th>
@@ -53,9 +53,7 @@
53
53
  </span>
54
54
 
55
55
  <div data-block="table">
56
- <table class="table table-striped table-bordered"
57
- ng-class="{'table-mask': table.working}"
58
- ng-show="table.rows.length > 0">
56
+ <table class="table table-striped table-bordered" ng-class="{'table-mask': table.working}">
59
57
  <thead>
60
58
  <tr bst-table-head row-select>
61
59
  <th bst-table-column="name" sortable><span translate>Name</span></th>
@@ -29,8 +29,7 @@
29
29
  </span>
30
30
 
31
31
  <div data-block="table">
32
- <table class="table table-striped table-bordered" ng-show="table.rows.length > 0"
33
- ng-class="{'table-mask': table.working}">
32
+ <table class="table table-striped table-bordered" ng-class="{'table-mask': table.working}">
34
33
 
35
34
  <thead>
36
35
  <tr bst-table-head row-select>
@@ -16,10 +16,7 @@
16
16
  </span>
17
17
 
18
18
  <div data-block="table">
19
- <table bst-table="table"
20
- class="table table-striped table-bordered"
21
- ng-class="{'table-mask': table.working}"
22
- ng-show="table.rows.length > 0">
19
+ <table bst-table="table" class="table table-striped table-bordered" ng-class="{'table-mask': table.working}">
23
20
  <thead>
24
21
  <tr bst-table-head>
25
22
  <th bst-table-column="environment" translate>Environment</th>
@@ -46,9 +46,7 @@
46
46
  <span translate>The Content View or Lifecycle Environment needs to be updated in order to make errata available to these hosts.</span>
47
47
  </p>
48
48
 
49
- <table class="table table-striped table-bordered"
50
- ng-class="{'table-mask': table.working}"
51
- ng-show="table.rows.length > 0">
49
+ <table class="table table-striped table-bordered" ng-class="{'table-mask': table.working}">
52
50
  <thead>
53
51
  <tr bst-table-head row-select>
54
52
  <th bst-table-column="name"><span translate>Name</span></th>