foreman_rh_cloud 2.0.17 → 3.0.14

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 (38) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +0 -13
  3. data/app/helpers/foreman_inventory_upload_host_helper.rb +1 -8
  4. data/app/models/setting/rh_cloud.rb +5 -5
  5. data/lib/foreman_inventory_upload.rb +1 -1
  6. data/lib/foreman_inventory_upload/generators/archived_report.rb +1 -1
  7. data/lib/foreman_inventory_upload/generators/slice.rb +3 -3
  8. data/lib/foreman_rh_cloud/engine.rb +4 -2
  9. data/lib/foreman_rh_cloud/version.rb +1 -1
  10. data/lib/tasks/rh_cloud_inventory.rake +0 -23
  11. data/package.json +1 -1
  12. data/test/unit/slice_generator_test.rb +3 -29
  13. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/AutoUploadSwitcher.js +1 -1
  14. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/__tests__/__snapshots__/AutoUploadSwitcher.test.js.snap +1 -1
  15. data/webpack/ForemanInventoryUpload/SubscriptionsPageExtension/InventoryAutoUpload/InventoryAutoUpload.js +92 -0
  16. data/webpack/ForemanInventoryUpload/SubscriptionsPageExtension/InventoryAutoUpload/__tests__/InventoryAutoUpload.test.js +17 -0
  17. data/webpack/ForemanInventoryUpload/SubscriptionsPageExtension/InventoryAutoUpload/__tests__/__snapshots__/InventoryAutoUpload.test.js.snap +106 -0
  18. data/webpack/ForemanInventoryUpload/SubscriptionsPageExtension/InventoryAutoUpload/components/AdvancedSettings/AdvancedSettings.js +60 -0
  19. data/webpack/ForemanInventoryUpload/SubscriptionsPageExtension/InventoryAutoUpload/components/AdvancedSettings/index.js +28 -0
  20. data/webpack/ForemanInventoryUpload/SubscriptionsPageExtension/InventoryAutoUpload/index.js +22 -0
  21. data/webpack/ForemanRhCloudFills.js +23 -0
  22. data/webpack/ForemanRhCloudPages.js +6 -1
  23. data/webpack/ForemanRhCloudReducers.js +10 -1
  24. data/webpack/InsightsHostDetailsTab/InsightsTab.js +5 -7
  25. data/webpack/InsightsHostDetailsTab/__tests__/InsightsTab.fixtures.js +12 -14
  26. data/webpack/InsightsHostDetailsTab/__tests__/__snapshots__/InsightsTabActions.test.js.snap +10 -12
  27. data/webpack/InsightsHostDetailsTab/__tests__/__snapshots__/InsightsTabReducer.test.js.snap +10 -12
  28. data/webpack/InsightsHostDetailsTab/__tests__/__snapshots__/InsightsTabSelectors.test.js.snap +10 -12
  29. data/webpack/__mocks__/foremanReact/common/MountingService.js +1 -0
  30. data/webpack/common/Switcher/index.js +79 -0
  31. data/webpack/global_index.js +5 -0
  32. data/webpack/index.js +4 -14
  33. metadata +25 -20
  34. data/config/Gemfile.lock.gh_test +0 -815
  35. data/config/database.yml.example +0 -17
  36. data/config/package-lock.json.gh_test +0 -36317
  37. data/webpack/ForemanInventoryUpload/SubscriptionsPageExtension/SubscriptionsPageExtensionActions.js +0 -34
  38. data/webpack/subscriptions_extension_index.js +0 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2b34803af6696737993eb885384efd806b443d28668c96734e175f2595ce4829
4
- data.tar.gz: e936612e09f71e9e3b351be01862763a4fae2f7caa29f6161547456416e8675f
3
+ metadata.gz: 1b0882515e038d95959e1926b002f3caebb0b38ed0bd05951208d33cea7748ae
4
+ data.tar.gz: 29d8594297d6c4ed6936d568c7c7a8547186ab7390d03b81448cc5c563f5031d
5
5
  SHA512:
6
- metadata.gz: bb8e4f801f862736c5a4a93b3fe4b259067a1f7d44d1c81b5b11432e61b6047614c7ba7ec4e9d97af352fe85ee6a972ce1c7bcc5ac97b8602526750b0ff7018b
7
- data.tar.gz: 59c87465077fbc67aac9e71076cc7f70ede3a577aa3cb37af8e257e78ee12f9955a77f2dfdf4a11fe84c76be073c6f84503e3a2b4178dda1bbe13bad458abf1d
6
+ metadata.gz: 71d58183a48ca30f148138bb036ba0cd7bea80dd1ce087b13605e884b763035b674207f91c359f193d658211f2e742f54b2f7e4fadac3f7bc723eb10dbd85f6e
7
+ data.tar.gz: ef3740403be8ab6cc6bb2848666833b424b41cabbc7fac78b06af573db3e59cfed40b01dad2deb88d3bfcba6b8ef86a5c7fe16f8dc48d6b68e821d8f5f2c3ddf
data/README.md CHANGED
@@ -19,23 +19,10 @@ In UI: Configure -> Inventory Upload -> Restart
19
19
 
20
20
  From command-line:
21
21
 
22
- # generate and upload report for all organizations
23
- /usr/sbin/foreman-rake rh_cloud_inventory:report:generate_upload
24
-
25
- # generate and upload report for specific organization
26
- export organization_id=1
27
- /usr/sbin/foreman-rake rh_cloud_inventory:report:generate_upload
28
-
29
- # generate report for specific organization (don't upload)
30
22
  export organization_id=1
31
23
  export target=/var/lib/foreman/red_hat_inventory/generated_reports/
32
24
  /usr/sbin/foreman-rake rh_cloud_inventory:report:generate
33
25
 
34
- # upload previously generated report (needs to be named 'report_for_#{organization_id}.tar.gz')
35
- export organization_id=1
36
- export target=/var/lib/foreman/red_hat_inventory/generated_reports/
37
- /usr/sbin/foreman-rake rh_cloud_inventory:report:upload
38
-
39
26
  #### Fetch hosts remediation data
40
27
 
41
28
  In UI: Configure -> Insights -> Sync now
@@ -6,14 +6,7 @@ module ForemanInventoryUploadHostHelper
6
6
  def hits_counts_cell(host)
7
7
  host_hits = hits_counts[host.id]
8
8
  tag.td class: ['hidden-xs', 'ellipsis', 'text-center'] do
9
- if host_hits
10
- link_to(
11
- host_hits,
12
- InsightsCloud::WebUi.system_url(InsightsCloud::WebUi::ADVISOR, host.insights.uuid),
13
- :rel => 'external noopener noreferrer',
14
- :target => '_blank'
15
- )
16
- end
9
+ link_to(host_hits, "#{host_path(host)}#insights") if host_hits
17
10
  end
18
11
  end
19
12
  end
@@ -3,12 +3,12 @@ class Setting::RhCloud < Setting
3
3
  return unless ActiveRecord::Base.connection.table_exists?('settings')
4
4
  return unless super
5
5
  [
6
- set('allow_auto_inventory_upload', N_('Allow automatic upload of the host inventory to the Red Hat cloud'), false, N_('Allow automatic inventory uploads')),
7
- set('allow_auto_insights_sync', N_('Allow recommendations synchronization from Red Hat cloud'), false, N_('Allow recommendations synchronization')),
8
- set('obfuscate_inventory_hostnames', N_('Obfuscate host names sent to Red Hat cloud'), false, N_('Obfuscate host names')),
9
- set('obfuscate_inventory_ips', N_('Obfuscate ip addresses sent to Red Hat cloud'), false, N_('Obfuscate IPs')),
6
+ set('allow_auto_inventory_upload', N_('Allow automatic upload of the host inventory to the Red Hat cloud'), false),
7
+ set('allow_auto_insights_sync', N_('Allow recommendations synchronization from Red Hat cloud'), false),
8
+ set('obfuscate_inventory_hostnames', N_('Obfuscate host names sent to Red Hat cloud'), false),
9
+ set('obfuscate_inventory_ips', N_('Obfuscate ip addresses sent to Red Hat cloud'), false),
10
10
  set('rh_cloud_token', N_('Authentication token to Red Hat cloud services. Used to authenticate requests to cloud APIs'), 'DEFAULT', N_('Red Hat Cloud token'), nil, encrypted: true),
11
- set('exclude_installed_packages', N_('Exclude installed packages from Red Hat cloud inventory report'), false, N_("Don't upload installed packages")),
11
+ set('exclude_installed_packages', N_('Exclude installed packages from Red Hat cloud inventory report'), false),
12
12
  ]
13
13
  end
14
14
 
@@ -48,7 +48,7 @@ module ForemanInventoryUpload
48
48
  end
49
49
 
50
50
  def self.facts_archive_name(organization)
51
- "report_for_#{organization}.tar.xz"
51
+ "report_for_#{organization}.tar.gz"
52
52
  end
53
53
 
54
54
  def self.upload_url
@@ -28,7 +28,7 @@ module ForemanInventoryUpload
28
28
 
29
29
  @logger.info 'Archiving generated report'
30
30
  # success = system('tar', '-zcvf', @target, '-C', tmpdir, '.')
31
- Open3.popen2e('tar', '-Jcvf', @target, '-C', tmpdir, '.') do |_in, out, wait_thr|
31
+ Open3.popen2e('tar', '-zcvf', @target, '-C', tmpdir, '.') do |_in, out, wait_thr|
32
32
  @logger.info("tar: #{out.read}")
33
33
 
34
34
  if wait_thr.value.success?
@@ -103,10 +103,10 @@ module ForemanInventoryUpload
103
103
  @stream.simple_field('cores_per_socket', fact_value(host, 'cpu::core(s)_per_socket')) { |v| v.to_i }
104
104
  @stream.simple_field('system_memory_bytes', fact_value(host, 'memory::memtotal')) { |v| kilobytes_to_bytes(v.to_i) }
105
105
  @stream.array_field('network_interfaces') do
106
- @stream.raw(host.interfaces.reject { |nic| nic.identifier.empty? }.map do |nic|
106
+ @stream.raw(host.interfaces.map do |nic|
107
107
  {
108
- 'ipv4_addresses': [host_ips_cache[nic.ip]].reject(&:empty?),
109
- 'ipv6_addresses': [nic.ip6].reject(&:empty?),
108
+ 'ipv4_addresses': [host_ips_cache[nic.ip]].compact,
109
+ 'ipv6_addresses': [nic.ip6].compact,
110
110
  'mtu': nic.try(:mtu) && nic.mtu.to_i,
111
111
  'mac_address': nic.mac,
112
112
  'name': nic.identifier,
@@ -27,7 +27,7 @@ module ForemanRhCloud
27
27
 
28
28
  initializer 'foreman_rh_cloud.register_plugin', :before => :finisher_hook do |_app|
29
29
  Foreman::Plugin.register :foreman_rh_cloud do
30
- requires_foreman '> 1.24'
30
+ requires_foreman '>= 2.3'
31
31
 
32
32
  # Add permissions
33
33
  security_block :foreman_rh_cloud do
@@ -64,7 +64,7 @@ module ForemanRhCloud
64
64
  end
65
65
  end
66
66
 
67
- register_global_js_file 'subscriptions_extension'
67
+ register_global_js_file 'global'
68
68
 
69
69
  register_custom_status(InventorySync::InventoryStatus)
70
70
 
@@ -72,6 +72,7 @@ module ForemanRhCloud
72
72
  context.add_pagelet :main_tabs,
73
73
  partial: 'hosts/insights_tab',
74
74
  name: _('Insights'),
75
+ id: 'insights',
75
76
  onlyif: proc { |host| host.insights }
76
77
  end
77
78
  end
@@ -79,6 +80,7 @@ module ForemanRhCloud
79
80
  ::Katello::UINotifications::Subscriptions::ManifestImportSuccess.include ForemanInventoryUpload::Notifications::ManifestImportSuccessNotificationOverride if defined?(Katello)
80
81
 
81
82
  ::Host::Managed.include RhCloudHost
83
+ ::Host::Base.include RhCloudHost
82
84
  end
83
85
 
84
86
  initializer "foreman_rh_cloud.set_dynflow.config.on_init", :before => :finisher_hook do |_app|
@@ -1,3 +1,3 @@
1
1
  module ForemanRhCloud
2
- VERSION = '2.0.17'.freeze
2
+ VERSION = '3.0.14'.freeze
3
3
  end
@@ -2,21 +2,6 @@ require 'tempfile'
2
2
 
3
3
  namespace :rh_cloud_inventory do
4
4
  namespace :report do
5
- desc 'Generate inventory report and send it to Red Hat cloud'
6
- task generate_upload: [:environment, 'dynflow:client'] do
7
- unless ENV['organization_id'].nil?
8
- organizations = [ Organization.where(:id => ENV['organization_id']).first ]
9
- else
10
- organizations = Organization.unscoped.all
11
- end
12
-
13
- User.as_anonymous_admin do
14
- organizations.each do |organization|
15
- ForemanInventoryUpload::Async::GenerateReportJob.perform_now(ForemanInventoryUpload.generated_reports_folder, organization.id)
16
- puts "Generated and uploaded inventory report for organization '#{organization.name}'"
17
- end
18
- end
19
- end
20
5
  desc 'Generate inventory report to be sent to Red Hat cloud'
21
6
  task generate: :environment do
22
7
  portal_user = ENV['portal_user']
@@ -42,14 +27,6 @@ namespace :rh_cloud_inventory do
42
27
  end
43
28
  end
44
29
  end
45
- desc 'Upload generated inventory report to Red Hat cloud'
46
- task upload: [:environment, 'dynflow:client'] do
47
- base_folder = ENV['target'] || ForemanInventoryUpload.generated_reports_folder
48
- organization_id = ENV['organization_id']
49
- report_file = ForemanInventoryUpload.facts_archive_name(organization_id)
50
- ForemanInventoryUpload::Async::QueueForUploadJob.perform_now(base_folder, report_file, organization_id)
51
- puts "Uploaded #{report_file}"
52
- end
53
30
  end
54
31
 
55
32
  desc "Synchronize Insights hosts hits"
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "foreman_rh_cloud",
3
- "version": "2.0.17",
3
+ "version": "3.0.14",
4
4
  "description": "Inventory Upload =============",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -18,8 +18,6 @@ class SliceGeneratorTest < ActiveSupport::TestCase
18
18
  )
19
19
 
20
20
  @host.organization.pools << FactoryBot.create(:katello_pool, account_number: '1234', cp_id: 1)
21
- @host.interfaces.first.identifier = 'test_nic1'
22
- @host.save!
23
21
 
24
22
  ForemanInventoryUpload::Generators::Queries.instance_variable_set(:@fact_names, nil)
25
23
  end
@@ -83,7 +81,7 @@ class SliceGeneratorTest < ActiveSupport::TestCase
83
81
  assert_not_nil(actual_nic = actual_network_interfaces.first)
84
82
  refute actual_nic.key?('mtu')
85
83
  refute actual_nic.key?('mac_address')
86
- assert_equal 'test_nic1', actual_nic['name']
84
+ refute actual_nic.key?('name')
87
85
  end
88
86
 
89
87
  test 'hosts report fields should be present if fact exist' do
@@ -125,10 +123,8 @@ class SliceGeneratorTest < ActiveSupport::TestCase
125
123
  end
126
124
 
127
125
  test 'generates nic fields' do
128
- empty_nic = FactoryBot.build(:nic_managed, ip6: '', identifier: 'empty_nic')
129
- @host.interfaces << empty_nic
130
126
  ip6 = Array.new(4) { '%x' % rand(16**4) }.join(':') + '::' + '5'
131
- nic = FactoryBot.build(:nic_managed, ip6: ip6, identifier: 'good_nic')
127
+ nic = FactoryBot.build(:nic_managed, ip6: ip6)
132
128
  nic.attrs['mtu'] = '1500'
133
129
  @host.interfaces << nic
134
130
  batch = Host.where(id: @host.id).in_batches.first
@@ -143,9 +139,7 @@ class SliceGeneratorTest < ActiveSupport::TestCase
143
139
  assert_equal @host.interfaces.where.not(mac: nil).first.mac, actual_host['mac_addresses'].first
144
140
  assert_not_nil(actual_system_profile = actual_host['system_profile'])
145
141
  assert_not_nil(actual_network_interfaces = actual_system_profile['network_interfaces'])
146
- assert_not_nil(actual_empty_nic = actual_network_interfaces.find { |actual_nic| actual_nic['name'] == 'empty_nic' })
147
- assert actual_empty_nic['ipv6_addresses'].empty?
148
- assert_not_nil(actual_nic = actual_network_interfaces.find { |actual_nic| actual_nic['name'] == 'good_nic' })
142
+ assert_not_nil(actual_nic = actual_network_interfaces.first)
149
143
  assert_equal nic.ip, actual_nic['ipv4_addresses'].first
150
144
  assert_equal nic.ip6, actual_nic['ipv6_addresses'].first
151
145
  assert_equal 1500, actual_nic['mtu']
@@ -156,26 +150,6 @@ class SliceGeneratorTest < ActiveSupport::TestCase
156
150
  assert_equal 1, generator.hosts_count
157
151
  end
158
152
 
159
- test 'skips nameless nics' do
160
- ip6 = Array.new(4) { '%x' % rand(16**4) }.join(':') + '::' + '5'
161
- nic = FactoryBot.build(:nic_managed, ip6: ip6, identifier: '')
162
- nic.attrs['mtu'] = '1500'
163
- @host.interfaces << nic
164
- batch = Host.where(id: @host.id).in_batches.first
165
- generator = create_generator(batch)
166
-
167
- json_str = generator.render
168
- actual = JSON.parse(json_str.join("\n"))
169
-
170
- assert_equal 'slice_123', actual['report_slice_id']
171
- assert_not_nil(actual_host = actual['hosts'].first)
172
- assert_equal @host.interfaces.where.not(ip: nil).first.ip, actual_host['ip_addresses'].first
173
- assert_equal @host.interfaces.where.not(mac: nil).first.mac, actual_host['mac_addresses'].first
174
- assert_not_nil(actual_system_profile = actual_host['system_profile'])
175
- assert_not_nil(actual_network_interfaces = actual_system_profile['network_interfaces'])
176
- assert_nil actual_network_interfaces.find { |actual_nic| actual_nic['name'].empty? }
177
- end
178
-
179
153
  test 'generates obfuscated ip_address fields without inisghts-client' do
180
154
  FactoryBot.create(:setting, :name => 'obfuscate_inventory_ips', :value => true)
181
155
 
@@ -9,7 +9,7 @@ const AutoUploadSwitcher = ({ autoUploadEnabled, handleToggle }) => (
9
9
  <span>Auto upload</span>
10
10
  <FieldLevelHelp
11
11
  content={__(
12
- 'Enable automatic upload of your host inventory to the Red Hat cloud'
12
+ 'Enable automatic upload of your hosts inventory to the Red Hat cloud'
13
13
  )}
14
14
  />
15
15
  <Switch
@@ -9,7 +9,7 @@ exports[`AutoUploadSwitcher rendering render with props 1`] = `
9
9
  </span>
10
10
  <FieldLevelHelp
11
11
  buttonClass=""
12
- content="Enable automatic upload of your host inventory to the Red Hat cloud"
12
+ content="Enable automatic upload of your hosts inventory to the Red Hat cloud"
13
13
  placement="top"
14
14
  rootClose={true}
15
15
  />
@@ -0,0 +1,92 @@
1
+ import React, { useEffect } from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { Text, TextVariants, Popover, Button } from '@patternfly/react-core';
4
+ import { InfoAltIcon, CaretRightIcon } from '@patternfly/react-icons';
5
+ import { FormGroup, Grid } from 'patternfly-react';
6
+ import { translate as __ } from 'foremanReact/common/I18n';
7
+ import { foremanUrl } from '../../../ForemanRhCloudHelpers';
8
+ import Switcher from '../../../common/Switcher';
9
+ import AdvancedSettings from './components/AdvancedSettings';
10
+
11
+ const InventoryAutoUploadSwitcher = ({
12
+ autoUploadEnabled,
13
+ handleToggle,
14
+ fetchSettings,
15
+ }) => {
16
+ useEffect(() => {
17
+ fetchSettings();
18
+ }, [fetchSettings]);
19
+
20
+ return (
21
+ <FormGroup>
22
+ <Grid>
23
+ <h3>{__('Red Hat Cloud Inventory')}</h3>
24
+ <hr />
25
+ <Grid.Row>
26
+ <Switcher
27
+ id="auto-upload"
28
+ label={__('Inventory Auto Upload')}
29
+ tooltip={__(
30
+ 'Enable automatic upload of your hosts inventory to the Red Hat cloud'
31
+ )}
32
+ isChecked={autoUploadEnabled}
33
+ onChange={() => handleToggle(autoUploadEnabled)}
34
+ labelCol={5}
35
+ />
36
+
37
+ <Grid.Col sm={5}>
38
+ <Popover
39
+ headerContent={<strong>Advanced Inventory Settings</strong>}
40
+ bodyContent={
41
+ <AdvancedSettings
42
+ autoUploadEnabled={autoUploadEnabled}
43
+ handleToggle={handleToggle}
44
+ />
45
+ }
46
+ position="right"
47
+ >
48
+ <Button
49
+ variant="secondary"
50
+ style={{ fontSize: 'small', marginTop: '-4px' }}
51
+ >
52
+ {__('Show Advanced Settings')} <CaretRightIcon />
53
+ </Button>
54
+ </Popover>
55
+ </Grid.Col>
56
+ </Grid.Row>
57
+ <br />
58
+ <Grid.Row>
59
+ <Grid.Col sm={12}>
60
+ <Text component={TextVariants.p}>
61
+ <InfoAltIcon /> {__('More details can be found in')}{' '}
62
+ <Text
63
+ component={TextVariants.a}
64
+ href={foremanUrl('/foreman_rh_cloud/inventory_upload')}
65
+ target="_blank"
66
+ rel="noopener noreferrer"
67
+ >
68
+ <strong>
69
+ {__('Configure')}
70
+ {' > '}
71
+ {__('Inventory Upload')}
72
+ </strong>
73
+ </Text>
74
+ </Text>
75
+ </Grid.Col>
76
+ </Grid.Row>
77
+ </Grid>
78
+ </FormGroup>
79
+ );
80
+ };
81
+
82
+ InventoryAutoUploadSwitcher.propTypes = {
83
+ autoUploadEnabled: PropTypes.bool,
84
+ handleToggle: PropTypes.func.isRequired,
85
+ fetchSettings: PropTypes.func.isRequired,
86
+ };
87
+
88
+ InventoryAutoUploadSwitcher.defaultProps = {
89
+ autoUploadEnabled: true,
90
+ };
91
+
92
+ export default InventoryAutoUploadSwitcher;
@@ -0,0 +1,17 @@
1
+ import { testComponentSnapshotsWithFixtures } from '@theforeman/test';
2
+ import { noop } from 'patternfly-react';
3
+
4
+ import InventoryAutoUpload from '../InventoryAutoUpload';
5
+
6
+ const fixtures = {
7
+ 'render with props': {
8
+ autoUploadEnabled: true,
9
+ handleToggle: noop,
10
+ fetchSettings: noop,
11
+ },
12
+ };
13
+
14
+ describe('InventoryAutoUpload', () => {
15
+ describe('rendering', () =>
16
+ testComponentSnapshotsWithFixtures(InventoryAutoUpload, fixtures));
17
+ });
@@ -0,0 +1,106 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`InventoryAutoUpload rendering render with props 1`] = `
4
+ <FormGroup
5
+ bsClass="form-group"
6
+ >
7
+ <Grid
8
+ bsClass="container"
9
+ componentClass="div"
10
+ fluid={false}
11
+ >
12
+ <h3>
13
+ Red Hat Cloud Inventory
14
+ </h3>
15
+ <hr />
16
+ <Row
17
+ bsClass="row"
18
+ componentClass="div"
19
+ >
20
+ <Switcher
21
+ SwitchCol={2}
22
+ id="auto-upload"
23
+ isChecked={true}
24
+ label="Inventory Auto Upload"
25
+ labelCol={5}
26
+ onChange={[Function]}
27
+ tooltip="Enable automatic upload of your hosts inventory to the Red Hat cloud"
28
+ />
29
+ <Col
30
+ bsClass="col"
31
+ componentClass="div"
32
+ sm={5}
33
+ >
34
+ <Popover
35
+ bodyContent={
36
+ <UNDEFINED
37
+ autoUploadEnabled={true}
38
+ handleToggle={[Function]}
39
+ />
40
+ }
41
+ headerContent={
42
+ <strong>
43
+ Advanced Inventory Settings
44
+ </strong>
45
+ }
46
+ position="right"
47
+ >
48
+ <Button
49
+ style={
50
+ Object {
51
+ "fontSize": "small",
52
+ "marginTop": "-4px",
53
+ }
54
+ }
55
+ variant="secondary"
56
+ >
57
+ Show Advanced Settings
58
+
59
+ <CaretRightIcon
60
+ color="currentColor"
61
+ noVerticalAlign={false}
62
+ size="sm"
63
+ />
64
+ </Button>
65
+ </Popover>
66
+ </Col>
67
+ </Row>
68
+ <br />
69
+ <Row
70
+ bsClass="row"
71
+ componentClass="div"
72
+ >
73
+ <Col
74
+ bsClass="col"
75
+ componentClass="div"
76
+ sm={12}
77
+ >
78
+ <Text
79
+ component="p"
80
+ >
81
+ <InfoAltIcon
82
+ color="currentColor"
83
+ noVerticalAlign={false}
84
+ size="sm"
85
+ />
86
+
87
+ More details can be found in
88
+
89
+ <Text
90
+ component="a"
91
+ href="/foreman_rh_cloud/inventory_upload"
92
+ rel="noopener noreferrer"
93
+ target="_blank"
94
+ >
95
+ <strong>
96
+ Configure
97
+ &gt;
98
+ Inventory Upload
99
+ </strong>
100
+ </Text>
101
+ </Text>
102
+ </Col>
103
+ </Row>
104
+ </Grid>
105
+ </FormGroup>
106
+ `;