foreman_rh_cloud 1.0.17 → 1.0.18
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/foreman_inventory_upload/accounts_controller.rb +2 -2
- data/app/controllers/foreman_inventory_upload/uploads_controller.rb +1 -8
- data/lib/foreman_inventory_upload.rb +2 -1
- data/lib/foreman_inventory_upload/generators/json_stream.rb +1 -1
- data/lib/foreman_rh_cloud/version.rb +1 -1
- data/package.json +1 -1
- data/test/controllers/accounts_controller_test.rb +1 -1
- data/test/unit/slice_generator_test.rb +1 -1
- data/webpack/ForemanInventoryUpload/Components/AccountList/AccountList.fixtures.js +3 -3
- data/webpack/ForemanInventoryUpload/Components/AccountList/AccountList.js +7 -7
- data/webpack/ForemanInventoryUpload/Components/AccountList/AccountListHelper.js +6 -6
- data/webpack/ForemanInventoryUpload/Components/AccountList/Components/ListItem/ListItem.fixtures.js +10 -1
- data/webpack/ForemanInventoryUpload/Components/AccountList/Components/ListItem/ListItem.js +7 -7
- data/webpack/ForemanInventoryUpload/Components/AccountList/Components/ListItem/__tests__/__snapshots__/ListItem.test.js.snap +11 -8
- data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountListHelper.test.js +3 -3
- data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/__snapshots__/AccountList.test.js.snap +6 -6
- data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/__snapshots__/AccountListActions.test.js.snap +3 -3
- data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/__snapshots__/AccountListReducer.test.js.snap +3 -3
- data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/__snapshots__/AccountListSelectors.test.js.snap +6 -6
- data/webpack/ForemanInventoryUpload/Components/Dashboard/DashboardActions.js +1 -1
- data/webpack/ForemanInventoryUpload/Components/Dashboard/__tests__/DashboardActions.test.js +14 -1
- metadata +16 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 222e7f5392e6276d4c38fdeb9bdbbf1078bcbbbc10bbf4aa3eb841ed1395bff9
|
4
|
+
data.tar.gz: 746a4388499f65ad2691188ccb36e0936486222ed7a278bb90e35ce27adff85f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 19504446398f9dca2bee75c9a89265fc9b67b24e43b018c516a0fbc8351f7e4f888f3c4295606049ea15390b8291599401913cfc8d974ca0d86be9029ff2a5f8
|
7
|
+
data.tar.gz: ce53ae2e0a0b1eba451d8e7b498fbd7c50257416c5604ae57df4cfbab6e5815e2cf91ddfd1f3ffa0b89933201dd01f68904fe7e50514a042a4685ddffdbc35f7
|
@@ -10,11 +10,11 @@ module ForemanInventoryUpload
|
|
10
10
|
upload_report_status = status_for(id, ForemanInventoryUpload::Async::UploadReportJob)
|
11
11
|
|
12
12
|
[
|
13
|
-
|
13
|
+
label,
|
14
14
|
{
|
15
15
|
generate_report_status: generate_report_status,
|
16
16
|
upload_report_status: upload_report_status,
|
17
|
-
|
17
|
+
id: id,
|
18
18
|
},
|
19
19
|
]
|
20
20
|
end
|
@@ -14,14 +14,7 @@ module ForemanInventoryUpload
|
|
14
14
|
files = Dir["{#{ForemanInventoryUpload.uploads_file_path(filename)},#{ForemanInventoryUpload.done_file_path(filename)}}"]
|
15
15
|
|
16
16
|
return send_file files.first, disposition: 'attachment', filename: filename unless files.empty?
|
17
|
-
|
18
|
-
end
|
19
|
-
|
20
|
-
def throw_flash_error(message)
|
21
|
-
process_error(
|
22
|
-
:redirect => foreman_inventory_upload_index_path,
|
23
|
-
:error_msg => message
|
24
|
-
)
|
17
|
+
raise ::Foreman::Exception.new("The report file doesn't exist")
|
25
18
|
end
|
26
19
|
|
27
20
|
def auto_upload
|
@@ -62,6 +62,7 @@ module ForemanInventoryUpload
|
|
62
62
|
end
|
63
63
|
|
64
64
|
def self.inventory_export_url
|
65
|
-
|
65
|
+
tags = URI.encode("satellite/satellite_instance_id=#{Foreman.instance_id}")
|
66
|
+
ForemanRhCloud.base_url + "/api/inventory/v1/hosts?tags=#{tags}"
|
66
67
|
end
|
67
68
|
end
|
data/package.json
CHANGED
@@ -21,7 +21,7 @@ class AccountsControllerTest < ActionController::TestCase
|
|
21
21
|
|
22
22
|
assert_response :success
|
23
23
|
actual = JSON.parse(response.body)
|
24
|
-
actual_account_statuses = actual['accounts'][test_org.
|
24
|
+
actual_account_statuses = actual['accounts'][test_org.label]
|
25
25
|
assert_equal 'generate_status_test', actual_account_statuses['generate_report_status']
|
26
26
|
assert_equal 'upload_status_test', actual_account_statuses['upload_report_status']
|
27
27
|
|
@@ -290,7 +290,7 @@ class SliceGeneratorTest < ActiveSupport::TestCase
|
|
290
290
|
end
|
291
291
|
|
292
292
|
test 'generates a report with satellite facts' do
|
293
|
-
hostgroup = FactoryBot.create(:hostgroup)
|
293
|
+
hostgroup = FactoryBot.create(:hostgroup, name: 'Special"name')
|
294
294
|
@host.hostgroup = hostgroup
|
295
295
|
@host.save!
|
296
296
|
|
@@ -2,17 +2,17 @@ import { noop } from 'patternfly-react';
|
|
2
2
|
|
3
3
|
export const accounts = {
|
4
4
|
Account1: {
|
5
|
-
|
5
|
+
id: 1,
|
6
6
|
upload_report_status: 'running',
|
7
7
|
generate_report_status: 'running',
|
8
8
|
},
|
9
9
|
Account2: {
|
10
|
-
|
10
|
+
id: 2,
|
11
11
|
upload_report_status: 'unknown',
|
12
12
|
generate_report_status: 'failure',
|
13
13
|
},
|
14
14
|
Account3: {
|
15
|
-
|
15
|
+
id: 3,
|
16
16
|
upload_report_status: 'success',
|
17
17
|
generate_report_status: 'running',
|
18
18
|
},
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import React, { Component } from 'react';
|
2
2
|
import { ListView, noop } from 'patternfly-react';
|
3
|
+
import { isEmpty } from 'lodash';
|
3
4
|
import PropTypes from 'prop-types';
|
4
5
|
import ListItem from './Components/ListItem';
|
5
6
|
import EmptyState from './Components/EmptyState';
|
@@ -23,24 +24,23 @@ class AccountList extends Component {
|
|
23
24
|
|
24
25
|
render() {
|
25
26
|
const { accounts, error, filterTerm } = this.props;
|
26
|
-
const
|
27
|
-
const filteredAccountIds = filterAccounts(accounts, accountIds, filterTerm);
|
27
|
+
const filteredAccount = filterAccounts(accounts, filterTerm);
|
28
28
|
|
29
29
|
if (error) {
|
30
30
|
return <ErrorState error={error} />;
|
31
31
|
}
|
32
32
|
|
33
|
-
if (
|
33
|
+
if (isEmpty(accounts)) {
|
34
34
|
return <EmptyState />;
|
35
35
|
}
|
36
36
|
|
37
|
-
if (
|
37
|
+
if (isEmpty(filteredAccount)) {
|
38
38
|
return <EmptyResults />;
|
39
39
|
}
|
40
40
|
|
41
|
-
const items =
|
42
|
-
const account = accounts[
|
43
|
-
return <ListItem key={index}
|
41
|
+
const items = Object.keys(filteredAccount).map((label, index) => {
|
42
|
+
const account = accounts[label];
|
43
|
+
return <ListItem key={index} label={label} account={account} />;
|
44
44
|
});
|
45
45
|
return <ListView className="account_list">{items}</ListView>;
|
46
46
|
}
|
@@ -1,10 +1,10 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
import { pickBy } from 'lodash';
|
2
|
+
|
3
|
+
export const filterAccounts = (accounts, filterTerm) => {
|
4
|
+
if (!filterTerm) return accounts;
|
5
5
|
|
6
6
|
const filterTermLowerCased = filterTerm.toLowerCase();
|
7
|
-
return
|
8
|
-
|
7
|
+
return pickBy(accounts, (value, key) =>
|
8
|
+
key.toLowerCase().includes(filterTermLowerCased)
|
9
9
|
);
|
10
10
|
};
|
@@ -4,26 +4,26 @@ import PropTypes from 'prop-types';
|
|
4
4
|
import ListItemStatus from '../ListItemStatus';
|
5
5
|
import Dashboard from '../../../Dashboard';
|
6
6
|
|
7
|
-
const ListItem = ({
|
7
|
+
const ListItem = ({ label, account }) => (
|
8
8
|
<ListView.Item
|
9
9
|
leftContent={<ListView.Icon name="user" />}
|
10
|
-
heading={
|
10
|
+
heading={label}
|
11
11
|
additionalInfo={[
|
12
|
-
<ListItemStatus key={`${
|
12
|
+
<ListItemStatus key={`${label}_status`} account={account} />,
|
13
13
|
]}
|
14
14
|
stacked
|
15
15
|
hideCloseIcon
|
16
16
|
>
|
17
|
-
<Dashboard accountID={
|
17
|
+
<Dashboard accountID={account.id} account={account} />
|
18
18
|
</ListView.Item>
|
19
19
|
);
|
20
20
|
|
21
21
|
ListItem.propTypes = {
|
22
|
-
|
22
|
+
label: PropTypes.string.isRequired,
|
23
23
|
account: PropTypes.shape({
|
24
24
|
generate_report_status: PropTypes.string,
|
25
25
|
upload_report_status: PropTypes.string,
|
26
|
-
|
26
|
+
id: PropTypes.number,
|
27
27
|
}),
|
28
28
|
};
|
29
29
|
|
@@ -31,7 +31,7 @@ ListItem.defaultProps = {
|
|
31
31
|
account: {
|
32
32
|
generate_report_status: 'unknown',
|
33
33
|
upload_report_status: 'unknown',
|
34
|
-
|
34
|
+
id: 0,
|
35
35
|
},
|
36
36
|
};
|
37
37
|
|
@@ -8,9 +8,11 @@ exports[`ListItem rendering render with Props 1`] = `
|
|
8
8
|
<ListItemStatus
|
9
9
|
account={
|
10
10
|
Object {
|
11
|
-
"
|
12
|
-
|
13
|
-
|
11
|
+
"test": Object {
|
12
|
+
"generate_report_status": "unknown",
|
13
|
+
"id": 1,
|
14
|
+
"upload_report_status": "unknown",
|
15
|
+
},
|
14
16
|
}
|
15
17
|
}
|
16
18
|
/>,
|
@@ -20,7 +22,7 @@ exports[`ListItem rendering render with Props 1`] = `
|
|
20
22
|
compoundExpand={false}
|
21
23
|
compoundExpanded={false}
|
22
24
|
description={null}
|
23
|
-
heading="
|
25
|
+
heading="test"
|
24
26
|
hideCloseIcon={true}
|
25
27
|
initExpanded={false}
|
26
28
|
leftContent={
|
@@ -39,12 +41,13 @@ exports[`ListItem rendering render with Props 1`] = `
|
|
39
41
|
<Connect(Dashboard)
|
40
42
|
account={
|
41
43
|
Object {
|
42
|
-
"
|
43
|
-
|
44
|
-
|
44
|
+
"test": Object {
|
45
|
+
"generate_report_status": "unknown",
|
46
|
+
"id": 1,
|
47
|
+
"upload_report_status": "unknown",
|
48
|
+
},
|
45
49
|
}
|
46
50
|
}
|
47
|
-
accountID="1"
|
48
51
|
/>
|
49
52
|
</ListViewItem>
|
50
53
|
`;
|
data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountListHelper.test.js
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
import { filterAccounts } from '../AccountListHelper';
|
2
|
-
import { accounts
|
2
|
+
import { accounts } from '../AccountList.fixtures';
|
3
3
|
|
4
4
|
describe('AccountList helpers', () => {
|
5
5
|
it('account ids filter should return all accounts where label contains "test"', () => {
|
6
|
-
expect(filterAccounts(accounts,
|
6
|
+
expect(filterAccounts(accounts, 'AcCoUnT')).toEqual(accounts);
|
7
7
|
});
|
8
8
|
|
9
9
|
it('account ids filter should not match', () => {
|
10
|
-
expect(filterAccounts(accounts,
|
10
|
+
expect(filterAccounts(accounts, 'no_match')).toEqual({});
|
11
11
|
});
|
12
12
|
});
|
@@ -8,34 +8,34 @@ exports[`AccountList rendering render with props 1`] = `
|
|
8
8
|
account={
|
9
9
|
Object {
|
10
10
|
"generate_report_status": "running",
|
11
|
-
"
|
11
|
+
"id": 1,
|
12
12
|
"upload_report_status": "running",
|
13
13
|
}
|
14
14
|
}
|
15
|
-
accountID="Account1"
|
16
15
|
key="0"
|
16
|
+
label="Account1"
|
17
17
|
/>
|
18
18
|
<ListItem
|
19
19
|
account={
|
20
20
|
Object {
|
21
21
|
"generate_report_status": "failure",
|
22
|
-
"
|
22
|
+
"id": 2,
|
23
23
|
"upload_report_status": "unknown",
|
24
24
|
}
|
25
25
|
}
|
26
|
-
accountID="Account2"
|
27
26
|
key="1"
|
27
|
+
label="Account2"
|
28
28
|
/>
|
29
29
|
<ListItem
|
30
30
|
account={
|
31
31
|
Object {
|
32
32
|
"generate_report_status": "running",
|
33
|
-
"
|
33
|
+
"id": 3,
|
34
34
|
"upload_report_status": "success",
|
35
35
|
}
|
36
36
|
}
|
37
|
-
accountID="Account3"
|
38
37
|
key="2"
|
38
|
+
label="Account3"
|
39
39
|
/>
|
40
40
|
</ListView>
|
41
41
|
`;
|
@@ -8,17 +8,17 @@ Array [
|
|
8
8
|
"accounts": Object {
|
9
9
|
"Account1": Object {
|
10
10
|
"generate_report_status": "running",
|
11
|
-
"
|
11
|
+
"id": 1,
|
12
12
|
"upload_report_status": "running",
|
13
13
|
},
|
14
14
|
"Account2": Object {
|
15
15
|
"generate_report_status": "failure",
|
16
|
-
"
|
16
|
+
"id": 2,
|
17
17
|
"upload_report_status": "unknown",
|
18
18
|
},
|
19
19
|
"Account3": Object {
|
20
20
|
"generate_report_status": "running",
|
21
|
-
"
|
21
|
+
"id": 3,
|
22
22
|
"upload_report_status": "success",
|
23
23
|
},
|
24
24
|
},
|
@@ -23,17 +23,17 @@ Object {
|
|
23
23
|
"accounts": Object {
|
24
24
|
"Account1": Object {
|
25
25
|
"generate_report_status": "running",
|
26
|
-
"
|
26
|
+
"id": 1,
|
27
27
|
"upload_report_status": "running",
|
28
28
|
},
|
29
29
|
"Account2": Object {
|
30
30
|
"generate_report_status": "failure",
|
31
|
-
"
|
31
|
+
"id": 2,
|
32
32
|
"upload_report_status": "unknown",
|
33
33
|
},
|
34
34
|
"Account3": Object {
|
35
35
|
"generate_report_status": "running",
|
36
|
-
"
|
36
|
+
"id": 3,
|
37
37
|
"upload_report_status": "success",
|
38
38
|
},
|
39
39
|
},
|
@@ -4,17 +4,17 @@ exports[`AccountList selectors should return AccountList accounts 1`] = `
|
|
4
4
|
Object {
|
5
5
|
"Account1": Object {
|
6
6
|
"generate_report_status": "running",
|
7
|
-
"
|
7
|
+
"id": 1,
|
8
8
|
"upload_report_status": "running",
|
9
9
|
},
|
10
10
|
"Account2": Object {
|
11
11
|
"generate_report_status": "failure",
|
12
|
-
"
|
12
|
+
"id": 2,
|
13
13
|
"upload_report_status": "unknown",
|
14
14
|
},
|
15
15
|
"Account3": Object {
|
16
16
|
"generate_report_status": "running",
|
17
|
-
"
|
17
|
+
"id": 3,
|
18
18
|
"upload_report_status": "success",
|
19
19
|
},
|
20
20
|
}
|
@@ -35,17 +35,17 @@ Object {
|
|
35
35
|
"accounts": Object {
|
36
36
|
"Account1": Object {
|
37
37
|
"generate_report_status": "running",
|
38
|
-
"
|
38
|
+
"id": 1,
|
39
39
|
"upload_report_status": "running",
|
40
40
|
},
|
41
41
|
"Account2": Object {
|
42
42
|
"generate_report_status": "failure",
|
43
|
-
"
|
43
|
+
"id": 2,
|
44
44
|
"upload_report_status": "unknown",
|
45
45
|
},
|
46
46
|
"Account3": Object {
|
47
47
|
"generate_report_status": "running",
|
48
|
-
"
|
48
|
+
"id": 3,
|
49
49
|
"upload_report_status": "success",
|
50
50
|
},
|
51
51
|
},
|
@@ -67,7 +67,7 @@ export const setActiveTab = (accountID, tabName) => ({
|
|
67
67
|
});
|
68
68
|
|
69
69
|
export const downloadReports = accountID => {
|
70
|
-
window.
|
70
|
+
window.open(inventoryUrl(`${accountID}/uploads/file`), '_blank');
|
71
71
|
return {
|
72
72
|
type: INVENTORY_REPORTS_DOWNLOAD,
|
73
73
|
payload: {
|
@@ -35,4 +35,17 @@ const fixtures = {
|
|
35
35
|
runWithGetState({ activeTab: 'reports' }, toggleFullScreen, accountID),
|
36
36
|
};
|
37
37
|
|
38
|
-
describe('Dashboard actions', () =>
|
38
|
+
describe('Dashboard actions', () => {
|
39
|
+
const { location } = window;
|
40
|
+
|
41
|
+
beforeAll(() => {
|
42
|
+
delete window.location;
|
43
|
+
window.location = { href: jest.fn() };
|
44
|
+
});
|
45
|
+
|
46
|
+
afterAll(() => {
|
47
|
+
window.location = location;
|
48
|
+
});
|
49
|
+
|
50
|
+
return testActionSnapshotWithFixtures(fixtures);
|
51
|
+
});
|
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: 1.0.
|
4
|
+
version: 1.0.18
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Foreman Red Hat Cloud team
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-03-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: katello
|
@@ -535,7 +535,7 @@ homepage: https://github.com/theforeman/foreman_rh_cloud
|
|
535
535
|
licenses:
|
536
536
|
- GPL-3.0
|
537
537
|
metadata: {}
|
538
|
-
post_install_message:
|
538
|
+
post_install_message:
|
539
539
|
rdoc_options: []
|
540
540
|
require_paths:
|
541
541
|
- lib
|
@@ -550,25 +550,25 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
550
550
|
- !ruby/object:Gem::Version
|
551
551
|
version: '0'
|
552
552
|
requirements: []
|
553
|
-
rubygems_version: 3.
|
554
|
-
signing_key:
|
553
|
+
rubygems_version: 3.2.3
|
554
|
+
signing_key:
|
555
555
|
specification_version: 4
|
556
556
|
summary: Summary of ForemanRhCloud.
|
557
557
|
test_files:
|
558
|
-
- test/controllers/uploads_controller_test.rb
|
559
|
-
- test/controllers/insights_sync/settings_controller_test.rb
|
560
558
|
- test/controllers/accounts_controller_test.rb
|
559
|
+
- test/controllers/insights_sync/settings_controller_test.rb
|
561
560
|
- test/controllers/reports_controller_test.rb
|
562
|
-
- test/
|
563
|
-
- test/
|
561
|
+
- test/controllers/uploads_controller_test.rb
|
562
|
+
- test/factories/insights_factories.rb
|
563
|
+
- test/factories/inventory_upload_factories.rb
|
564
564
|
- test/jobs/insights_full_sync_test.rb
|
565
565
|
- test/jobs/inventory_full_sync_test.rb
|
566
|
-
- test/
|
567
|
-
- test/
|
568
|
-
- test/unit/
|
569
|
-
- test/unit/
|
566
|
+
- test/jobs/upload_report_job_test.rb
|
567
|
+
- test/test_plugin_helper.rb
|
568
|
+
- test/unit/archived_report_generator_test.rb
|
569
|
+
- test/unit/fact_helpers_test.rb
|
570
570
|
- test/unit/insights_facet_test.rb
|
571
|
+
- test/unit/metadata_generator_test.rb
|
571
572
|
- test/unit/rh_cloud_http_proxy_test.rb
|
572
|
-
- test/unit/
|
573
|
-
- test/unit/archived_report_generator_test.rb
|
573
|
+
- test/unit/shell_process_job_test.rb
|
574
574
|
- test/unit/slice_generator_test.rb
|