foreman_rh_cloud 0.9.11 → 0.9.12
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.
- checksums.yaml +4 -4
- data/lib/foreman_inventory_upload/async/upload_report_job.rb +2 -8
- data/lib/foreman_rh_cloud.rb +53 -0
- data/lib/foreman_rh_cloud/version.rb +1 -1
- data/lib/insights_cloud/async/insights_full_sync.rb +2 -0
- data/lib/inventory_sync/async/inventory_full_sync.rb +2 -0
- data/lib/tasks/rh_cloud_inventory.rake +12 -10
- data/package.json +1 -1
- data/test/unit/rh_cloud_http_proxy_test.rb +52 -0
- data/test/unit/slice_generator_test.rb +5 -0
- metadata +15 -13
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4410aae42d90d765e8b16d784c50196a52b86b828f59272bd21baf163e7ab7c5
|
|
4
|
+
data.tar.gz: cef39240dfcf09f438b003bb9a9cf3e802ffd23a863fe7dd98485cfc0cb0db7f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a2d171f326d72a4d0eb1070b431a476f9a7eb2857ee108f726aeac752f78236a269a2d7387857ae83a1f3be1fb1d07ddbeeec3d8c7934d6c22f750a2bf290c4e
|
|
7
|
+
data.tar.gz: 1d1afc18d5614e1160ee48bdce951dfc2275126dcd7e9b5cd8a9771c61f7651920326e9d4c6faf7374b365abd21ebb882dd13b330fc3fc45d2bd75697c7eb37e
|
|
@@ -47,6 +47,8 @@ module ForemanInventoryUpload
|
|
|
47
47
|
'FILES' => @filename,
|
|
48
48
|
'CER_PATH' => @cer_path
|
|
49
49
|
)
|
|
50
|
+
|
|
51
|
+
http_proxy_string = ForemanRhCloud.http_proxy_string(logger: logger)
|
|
50
52
|
if http_proxy_string
|
|
51
53
|
env_vars['http_proxy'] = http_proxy_string
|
|
52
54
|
env_vars['https_proxy'] = http_proxy_string
|
|
@@ -54,14 +56,6 @@ module ForemanInventoryUpload
|
|
|
54
56
|
env_vars
|
|
55
57
|
end
|
|
56
58
|
|
|
57
|
-
def http_proxy_string
|
|
58
|
-
@http_proxy_string ||= begin
|
|
59
|
-
if Setting[:content_default_http_proxy]
|
|
60
|
-
HttpProxy.unscoped.find_by(name: Setting[:content_default_http_proxy])&.full_url
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
59
|
def rh_credentials
|
|
66
60
|
@rh_credentials ||= begin
|
|
67
61
|
candlepin_id_certificate = @organization.owner_details['upstreamConsumer']['idCert']
|
data/lib/foreman_rh_cloud.rb
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
require 'foreman_rh_cloud/engine.rb'
|
|
2
|
+
require 'cgi'
|
|
3
|
+
require 'uri'
|
|
2
4
|
|
|
3
5
|
module ForemanRhCloud
|
|
4
6
|
def self.base_url
|
|
@@ -14,4 +16,55 @@ module ForemanRhCloud
|
|
|
14
16
|
def self.verify_ssl_method
|
|
15
17
|
@verify_ssl_method ||= ENV['SATELLITE_RH_CLOUD_URL'] ? OpenSSL::SSL::VERIFY_NONE : OpenSSL::SSL::VERIFY_PEER
|
|
16
18
|
end
|
|
19
|
+
|
|
20
|
+
def self.http_proxy_string(logger: Foreman::Logging.logger('background'))
|
|
21
|
+
ForemanRhCloud.proxy_setting(logger: logger)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def self.transformed_http_proxy_string(logger: Foreman::Logging.logger('background'))
|
|
25
|
+
ForemanRhCloud.transform_scheme(ForemanRhCloud.proxy_setting(logger: logger))
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def self.proxy_setting(logger: Foreman::Logging.logger('background'))
|
|
29
|
+
ForemanRhCloud.cdn_proxy(logger: logger) ||
|
|
30
|
+
ForemanRhCloud.global_foreman_proxy
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def self.cdn_proxy(logger: Foreman::Logging.logger('app'))
|
|
34
|
+
proxy_config = SETTINGS[:katello][:cdn_proxy]
|
|
35
|
+
return nil unless proxy_config
|
|
36
|
+
|
|
37
|
+
uri = URI('')
|
|
38
|
+
uri.host = proxy_config[:host]
|
|
39
|
+
uri.port = proxy_config[:port]
|
|
40
|
+
uri.scheme = proxy_config[:scheme] || 'http'
|
|
41
|
+
|
|
42
|
+
if proxy_config[:user]
|
|
43
|
+
uri.user = CGI.escape(proxy_config[:user])
|
|
44
|
+
uri.password = CGI.escape(proxy_config[:password])
|
|
45
|
+
end
|
|
46
|
+
uri.to_s
|
|
47
|
+
rescue URI::Error => e
|
|
48
|
+
logger.warn("cdn_proxy parsing failed: #{e}")
|
|
49
|
+
nil
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def self.global_foreman_proxy
|
|
53
|
+
Setting[:http_proxy]
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# This method assumes uri_string contains uri-encoded username and p@$$word:
|
|
57
|
+
# http://user:p%40%24%24word@localhost:8888
|
|
58
|
+
def self.transform_scheme(uri_string)
|
|
59
|
+
transformed_uri = URI.parse(uri_string)
|
|
60
|
+
|
|
61
|
+
case transformed_uri.scheme
|
|
62
|
+
when "http"
|
|
63
|
+
transformed_uri.scheme = 'proxy'
|
|
64
|
+
when "https"
|
|
65
|
+
transformed_uri.scheme = 'proxys'
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
transformed_uri.to_s
|
|
69
|
+
end
|
|
17
70
|
end
|
|
@@ -27,6 +27,7 @@ module InsightsCloud
|
|
|
27
27
|
method: :get,
|
|
28
28
|
url: InsightsCloud.hits_export_url,
|
|
29
29
|
verify_ssl: ForemanRhCloud.verify_ssl_method,
|
|
30
|
+
proxy: ForemanRhCloud.transformed_http_proxy_string(logger: logger),
|
|
30
31
|
headers: {
|
|
31
32
|
Authorization: "Bearer #{rh_credentials}",
|
|
32
33
|
}
|
|
@@ -40,6 +41,7 @@ module InsightsCloud
|
|
|
40
41
|
method: :post,
|
|
41
42
|
url: ForemanRhCloud.authentication_url,
|
|
42
43
|
verify_ssl: ForemanRhCloud.verify_ssl_method,
|
|
44
|
+
proxy: ForemanRhCloud.transformed_http_proxy_string(logger: logger),
|
|
43
45
|
payload: {
|
|
44
46
|
grant_type: 'refresh_token',
|
|
45
47
|
client_id: 'rhsm-api',
|
|
@@ -65,6 +65,7 @@ module InventorySync
|
|
|
65
65
|
method: :get,
|
|
66
66
|
url: ForemanInventoryUpload.inventory_export_url,
|
|
67
67
|
verify_ssl: ForemanRhCloud.verify_ssl_method,
|
|
68
|
+
proxy: ForemanRhCloud.transformed_http_proxy_string(logger: logger),
|
|
68
69
|
headers: {
|
|
69
70
|
Authorization: "Bearer #{rh_credentials}",
|
|
70
71
|
params: {
|
|
@@ -82,6 +83,7 @@ module InventorySync
|
|
|
82
83
|
method: :post,
|
|
83
84
|
url: ForemanRhCloud.authentication_url,
|
|
84
85
|
verify_ssl: ForemanRhCloud.verify_ssl_method,
|
|
86
|
+
proxy: ForemanRhCloud.transformed_http_proxy_string(logger: logger),
|
|
85
87
|
payload: {
|
|
86
88
|
grant_type: 'refresh_token',
|
|
87
89
|
client_id: 'rhsm-api',
|
|
@@ -12,17 +12,19 @@ namespace :rh_cloud_inventory do
|
|
|
12
12
|
puts "Must specify either portal_user or organization_id"
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
User.as_anonymous_admin do
|
|
16
|
+
if portal_user
|
|
17
|
+
puts "Generating report for all organizations associated with #{portal_user}"
|
|
18
|
+
base_folder = File.join(base_folder, portal_user)
|
|
19
|
+
organizations = ForemanInventoryUpload::Generators::Queries.organizations_for_user(portal_user).pluck(:id)
|
|
20
|
+
end
|
|
20
21
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
organizations.each do |organization|
|
|
23
|
+
target = File.join(base_folder, ForemanInventoryUpload.facts_archive_name(organization))
|
|
24
|
+
archived_report_generator = ForemanInventoryUpload::Generators::ArchivedReport.new(target, Logger.new(STDOUT))
|
|
25
|
+
archived_report_generator.render(organization: organization)
|
|
26
|
+
puts "Successfully generated #{target} for organization id #{organization}"
|
|
27
|
+
end
|
|
26
28
|
end
|
|
27
29
|
end
|
|
28
30
|
end
|
data/package.json
CHANGED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
require 'test_plugin_helper'
|
|
2
|
+
|
|
3
|
+
class RhCloudHttpProxyTest < ActiveSupport::TestCase
|
|
4
|
+
setup do
|
|
5
|
+
@global_foreman_proxy_mock = 'http://global:foreman@localhost:8888'
|
|
6
|
+
@katello_cdn_proxy_mock = {
|
|
7
|
+
host: 'localhost',
|
|
8
|
+
port: '8888',
|
|
9
|
+
user: 'katello',
|
|
10
|
+
password: 'cdn',
|
|
11
|
+
scheme: 'http',
|
|
12
|
+
}
|
|
13
|
+
@katello_cdn_proxy_string_mock = 'http://katello:cdn@localhost:8888'
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
test 'selects cdn proxy' do
|
|
17
|
+
setup_global_foreman_proxy
|
|
18
|
+
|
|
19
|
+
setup_cdn_proxy do
|
|
20
|
+
assert_equal @katello_cdn_proxy_string_mock, ForemanRhCloud.proxy_setting
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
test 'selects global foreman proxy' do
|
|
25
|
+
setup_global_foreman_proxy
|
|
26
|
+
|
|
27
|
+
assert_equal @global_foreman_proxy_mock, ForemanRhCloud.proxy_setting
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def setup_global_foreman_proxy
|
|
31
|
+
FactoryBot.create(:setting, :name => 'http_proxy', :value => @global_foreman_proxy_mock)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def setup_cdn_proxy
|
|
35
|
+
old_cdn_setting = SETTINGS[:katello][:cdn_proxy]
|
|
36
|
+
SETTINGS[:katello][:cdn_proxy] = @katello_cdn_proxy_mock
|
|
37
|
+
yield
|
|
38
|
+
ensure
|
|
39
|
+
SETTINGS[:katello][:cdn_proxy] = old_cdn_setting
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
test 'transform proxy scheme test' do
|
|
43
|
+
mock_http_proxy = 'http://user:password@localhost:8888'
|
|
44
|
+
mock_https_proxy = 'https://user:password@localhost:8888'
|
|
45
|
+
|
|
46
|
+
transformed_http_uri = URI.parse(ForemanRhCloud.transform_scheme(mock_http_proxy))
|
|
47
|
+
transformed_https_uri = URI.parse(ForemanRhCloud.transform_scheme(mock_https_proxy))
|
|
48
|
+
|
|
49
|
+
assert_equal 'proxy', transformed_http_uri.scheme
|
|
50
|
+
assert_equal 'proxys', transformed_https_uri.scheme
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -147,6 +147,10 @@ class ReportGeneratorTest < ActiveSupport::TestCase
|
|
|
147
147
|
end
|
|
148
148
|
|
|
149
149
|
test 'generates a report with satellite facts' do
|
|
150
|
+
hostgroup = FactoryBot.create(:hostgroup)
|
|
151
|
+
@host.hostgroup = hostgroup
|
|
152
|
+
@host.save!
|
|
153
|
+
|
|
150
154
|
Foreman.expects(:instance_id).twice.returns('satellite-id')
|
|
151
155
|
batch = Host.where(id: @host.id).in_batches.first
|
|
152
156
|
generator = create_generator(batch)
|
|
@@ -166,6 +170,7 @@ class ReportGeneratorTest < ActiveSupport::TestCase
|
|
|
166
170
|
assert_tag(@host.content_view.name, actual_host, 'content_view')
|
|
167
171
|
assert_tag(@host.location.name, actual_host, 'location')
|
|
168
172
|
assert_tag(@host.organization.name, actual_host, 'organization')
|
|
173
|
+
assert_tag(@host.hostgroup.name, actual_host, 'hostgroup')
|
|
169
174
|
|
|
170
175
|
assert_equal false, satellite_facts['is_hostname_obfuscated']
|
|
171
176
|
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: foreman_rh_cloud
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.9.
|
|
4
|
+
version: 0.9.12
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Foreman Red Hat Cloud team
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-09-
|
|
11
|
+
date: 2020-09-23 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: katello
|
|
@@ -146,6 +146,7 @@ files:
|
|
|
146
146
|
- test/unit/fact_helpers_test.rb
|
|
147
147
|
- test/unit/insights_facet_test.rb
|
|
148
148
|
- test/unit/metadata_generator_test.rb
|
|
149
|
+
- test/unit/rh_cloud_http_proxy_test.rb
|
|
149
150
|
- test/unit/shell_process_job_test.rb
|
|
150
151
|
- test/unit/slice_generator_test.rb
|
|
151
152
|
- webpack/ForemanInventoryUpload/Components/AccountList/AccountList.fixtures.js
|
|
@@ -494,24 +495,25 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
494
495
|
- !ruby/object:Gem::Version
|
|
495
496
|
version: '0'
|
|
496
497
|
requirements: []
|
|
497
|
-
rubygems_version: 3.0.
|
|
498
|
+
rubygems_version: 3.0.6
|
|
498
499
|
signing_key:
|
|
499
500
|
specification_version: 4
|
|
500
501
|
summary: Summary of ForemanRhCloud.
|
|
501
502
|
test_files:
|
|
503
|
+
- test/controllers/uploads_controller_test.rb
|
|
504
|
+
- test/controllers/insights_sync/settings_controller_test.rb
|
|
505
|
+
- test/controllers/accounts_controller_test.rb
|
|
506
|
+
- test/controllers/reports_controller_test.rb
|
|
502
507
|
- test/test_plugin_helper.rb
|
|
508
|
+
- test/jobs/upload_report_job_test.rb
|
|
509
|
+
- test/jobs/insights_full_sync_test.rb
|
|
510
|
+
- test/jobs/inventory_full_sync_test.rb
|
|
503
511
|
- test/factories/inventory_upload_factories.rb
|
|
504
512
|
- test/factories/insights_factories.rb
|
|
505
|
-
- test/controllers/reports_controller_test.rb
|
|
506
|
-
- test/controllers/uploads_controller_test.rb
|
|
507
|
-
- test/controllers/accounts_controller_test.rb
|
|
508
|
-
- test/controllers/insights_sync/settings_controller_test.rb
|
|
509
|
-
- test/unit/slice_generator_test.rb
|
|
510
|
-
- test/unit/metadata_generator_test.rb
|
|
511
513
|
- test/unit/shell_process_job_test.rb
|
|
514
|
+
- test/unit/metadata_generator_test.rb
|
|
512
515
|
- test/unit/insights_facet_test.rb
|
|
513
|
-
- test/unit/
|
|
516
|
+
- test/unit/rh_cloud_http_proxy_test.rb
|
|
514
517
|
- test/unit/fact_helpers_test.rb
|
|
515
|
-
- test/
|
|
516
|
-
- test/
|
|
517
|
-
- test/jobs/upload_report_job_test.rb
|
|
518
|
+
- test/unit/archived_report_generator_test.rb
|
|
519
|
+
- test/unit/slice_generator_test.rb
|