Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixes #30044 - Host Details Page Redesign #7726

Merged
merged 10 commits into from
Jul 22, 2020
Merged

Conversation

amirfefer
Copy link
Member

This is an early stage and WIP PR of the new host details page redesign.
The page is based on react and is included in our client routing.
Also, it uses only PF4 components.

Short Demo:
localhost_5000_experimental_hosts_19

script_src: [webpack_server], connect_src: [webpack_server],
style_src: [webpack_server], img_src: [webpack_server],
font_src: ["data: #{webpack_server}"], default_src: [webpack_server]
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Layout/FirstHashElementIndentation: Indent the right brace the same as the start of the line where the left brace is.

@theforeman-bot
Copy link
Member

Issues: #30044

@amirfefer amirfefer changed the title Fixes #30044 - Host Detail Page Redesign Fixes #30044 - Host Details Page Redesign Jun 8, 2020
@timogoebel
Copy link
Member

Looks good. Let's just make sure we have appropriate extension points for plugins in place before this is considered the new default. Let's even try to just define a skeleton and that core uses these extension points.

@amirfefer
Copy link
Member Author

Let's just make sure we have appropriate extension points for plugins in place before this is considered the new default

Of course, it would take some time until this will be the new default, opinionated extension points will be an important part.

meanwhile, this new page can exist in our experimental lab for more feedback.

@tbrisker tbrisker self-assigned this Jun 10, 2020
@ekohl
Copy link
Member

ekohl commented Jun 22, 2020

I'd like to see wider tables. Right now it's hard to see an overview of all the host parameters and their values. I think plugins typically also need the horizontal space. REX is the first example that comes to my mind with an overview of recent tasks. Currently there are 3 columns but the job table might actually want to be 3 columns wide. Other plugins might want that too. The question is then whether it should be added at the bottom or rather a set of tabs.

Another thing I like about the current page is that I can perform actions. Again, REX is one that might add custom actions. The current drop down is probably not the best UX so that needs consideration.

@coveralls
Copy link

Coverage Status

Coverage decreased (-1.0%) to 74.157% when pulling 1b1611d on amirfefer:30044 into 9582dab on theforeman:develop.

@amirfefer
Copy link
Member Author

Rebased + Added a link from the hosts index page (will appear only if the experimental lab setting is on):

»Hosts« (6)

Copy link
Member

@tbrisker tbrisker left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See a couple of comments inline. Otherwise code looks like a good first step, I don't want to add more features or waste time in perfecting the code but would rather iterate on it in follow up prs.

app/registries/menu/loader.rb Outdated Show resolved Hide resolved
app/views/api/v2/hosts/main.json.rabl Outdated Show resolved Hide resolved
@amirfefer
Copy link
Member Author

amirfefer commented Jul 8, 2020

  • Adding tests
  • Adding Proptype
  • Improve skeleton loading (only the dynamic content shows loading bar)
  • Replacing ReactTimeAgo with RelativeDateTime
  • Moving the os icon URL generator to the client

Copy link
Member

@Ron-Lavi Ron-Lavi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work @amirfefer !
I like the style and feel of the new components,
left some top-level design inline-comments

see also there are some errors in the devtools

Comment on lines 122 to 124
<StatusAlert
status={response ? response.global_status_label : null}
/>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it feels like this status is taking too much space,
I think it should be on the page header line with the host name, and maybe some smaller way to show the status,
this component looks a bit like our toast notifications alerts.
badge

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The status is going to change to a multiple statuses card (we have more statuses to show, and the goal is to create aggregation card for it)

<br />
<Grid>
<GridItem span={2}>
<Title headingLevel="h5" size="2xl">
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Title can become really big, can you add ellipsis with tooltip to it? so it would still be a one liner?
Selection_336

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure if ellipsis fit titles from UX perspective, we have lots of space to keep it as a one-line (just a css issue)

<Properties hostData={response} />
</GridItem>
<GridItem style={{ marginLeft: '40px' }} span={3}>
<ParametersCard paramters={response.all_parameters} />
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's going to be in this parameters section? didn't see it on the original page
Selection_338

Copy link
Member Author

@amirfefer amirfefer Jul 21, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Parameters that are used by this host, but the list can be big, I wonder to move this section as a different tab with a dedicated table. in the details tab, we can have a high-level overview such as - last audits, last reports, last tasks last updated facts(?) and etc.

<ParametersCard paramters={response.all_parameters} />
</GridItem>
<GridItem style={{ marginLeft: '40px' }} span={3} rowSpan={2}>
<AuditCard hostName={response.name} />
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When shifted down, it moves also the interfaces downwards
Selection_337

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I use the pf4 grid system, so I assume it has some issues.
BTW I added scrolling so cards have max height, above it, a scroll bar will automatically be added

};
return (
<>
<PageSection className="header" variant={PageSectionVariants.light}>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There seem to be a lot of extra space on the right side, and a bit crowded on the left side:
Selection_341

@amirfefer
Copy link
Member Author

amirfefer commented Jul 16, 2020

  • Reverting os icon
  • PF4 new looks:
    new pf4

Copy link
Member

@tbrisker tbrisker left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure why, but looks like when loading, the LayoutContainer component has prop isCollapsed=true even if the nav bar isn't collapsed:
image

@ekohl
Copy link
Member

ekohl commented Jul 16, 2020

Maybe all the 12 actual logos should actually live in /public. Other than the one time RH changed its logo, I don't think we've ever had any of them change, and for the one time in a decade a logo changes we can probably handle it with a new file name.

@tbrisker the problem I have with this is that it sets a precedent. Anything temporary sticks around and others will copy it. That means at some point there will be a resource that is important and more dynamic but we'll fail on it. If we do this, IMHO it needs a big fat TODO comment saying this is not right and should not be taken as a good practice.

@MariaAga
Copy link
Member

@tbrisker I think this PR: #7821 is fixing it

@tbrisker
Copy link
Member

Maybe all the 12 actual logos should actually live in /public. Other than the one time RH changed its logo, I don't think we've ever had any of them change, and for the one time in a decade a logo changes we can probably handle it with a new file name.

@tbrisker the problem I have with this is that it sets a precedent. Anything temporary sticks around and others will copy it. That means at some point there will be a resource that is important and more dynamic but we'll fail on it. If we do this, IMHO it needs a big fat TODO comment saying this is not right and should not be taken as a good practice.

Let's continue this discussion on the separate pr for the icons implementation.

}, [match.params.id, dispatch]);

useEffect(() => {
document.body.classList.add('transprenet-border');
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This causes navigation to other react pages from the host detail page to remain with this styling. why not set the class on the main component for this page instead?
Also, there's a typo - it should be transparent-border, but wouldn't a more descriptive name be grey-background? is there no pf4 class for setting this background?

Copy link
Member

@tbrisker tbrisker left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @amirfefer and all reviewers, since this is experimental page and is in progress initial implementation, i'm going to merge now and we can continue to iterate and improve it in follow-up prs.

@tbrisker tbrisker merged commit 1e42be6 into theforeman:develop Jul 22, 2020
@tbrisker
Copy link
Member

Looks like RPM builds are now failing, probably some missing dependency :

ModuleNotFoundError: Module not found: Error: Can't resolve '@patternfly/react-styles/css/components/DataList/data-list' in '/builddir/build/BUILD/foreman-2.2.0-develop/webpack/assets/javascripts/react_app/components/HostDetails/Properties'
    at factoryCallback (/opt/theforeman/tfm/root/usr/lib/node_modules/webpack/lib/Compilation.js:282:40)
    at factory (/opt/theforeman/tfm/root/usr/lib/node_modules/webpack/lib/NormalModuleFactory.js:237:20)
    at resolver (/opt/theforeman/tfm/root/usr/lib/node_modules/webpack/lib/NormalModuleFactory.js:60:20)
    at asyncLib.parallel (/opt/theforeman/tfm/root/usr/lib/node_modules/webpack/lib/NormalModuleFactory.js:127:20)
    at /opt/theforeman/tfm/root/usr/lib/node_modules/webpack/node_modules/async/dist/async.js:3888:9
    at /opt/theforeman/tfm/root/usr/lib/node_modules/webpack/node_modules/async/dist/async.js:473:16
    at iteratorCallback (/opt/theforeman/tfm/root/usr/lib/node_modules/webpack/node_modules/async/dist/async.js:1062:13)
    at /opt/theforeman/tfm/root/usr/lib/node_modules/webpack/node_modules/async/dist/async.js:969:16
    at /opt/theforeman/tfm/root/usr/lib/node_modules/webpack/node_modules/async/dist/async.js:3885:13
    at resolvers.normal.resolve (/opt/theforeman/tfm/root/usr/lib/node_modules/webpack/lib/NormalModuleFactory.js:119:22)
    at onError (/opt/theforeman/tfm/root/usr/lib/node_modules/webpack/node_modules/enhanced-resolve/lib/Resolver.js:65:10)
    at loggingCallbackWrapper (/opt/theforeman/tfm/root/usr/lib/node_modules/webpack/node_modules/enhanced-resolve/lib/createInnerCallback.js:31:19)
    at runAfter (/opt/theforeman/tfm/root/usr/lib/node_modules/webpack/node_modules/enhanced-resolve/lib/Resolver.js:158:4)
    at innerCallback (/opt/theforeman/tfm/root/usr/lib/node_modules/webpack/node_modules/enhanced-resolve/lib/Resolver.js:146:3)
    at loggingCallbackWrapper (/opt/theforeman/tfm/root/usr/lib/node_modules/webpack/node_modules/enhanced-resolve/lib/createInnerCallback.js:31:19)
    at next (/opt/theforeman/tfm/root/usr/lib/node_modules/webpack/node_modules/tapable/lib/Tapable.js:252:11)
    at /opt/theforeman/tfm/root/usr/lib/node_modules/webpack/node_modules/enhanced-resolve/lib/UnsafeCachePlugin.js:40:4
    at loggingCallbackWrapper (/opt/theforeman/tfm/root/usr/lib/node_modules/webpack/node_modules/enhanced-resolve/lib/createInnerCallback.js:31:19)
    at runAfter (/opt/theforeman/tfm/root/usr/lib/node_modules/webpack/node_modules/enhanced-resolve/lib/Resolver.js:158:4)
    at innerCallback (/opt/theforeman/tfm/root/usr/lib/node_modules/webpack/node_modules/enhanced-resolve/lib/Resolver.js:146:3)
    at loggingCallbackWrapper (/opt/theforeman/tfm/root/usr/lib/node_modules/webpack/node_modules/enhanced-resolve/lib/createInnerCallback.js:31:19)
    at next (/opt/theforeman/tfm/root/usr/lib/node_modules/webpack/node_modules/tapable/lib/Tapable.js:252:11)
    at innerCallback (/opt/theforeman/tfm/root/usr/lib/node_modules/webpack/node_modules/enhanced-resolve/lib/Resolver.js:144:11)
    at loggingCallbackWrapper (/opt/theforeman/tfm/root/usr/lib/node_modules/webpack/node_modules/enhanced-resolve/lib/createInnerCallback.js:31:19)
    at next (/opt/theforeman/tfm/root/usr/lib/node_modules/webpack/node_modules/tapable/lib/Tapable.js:249:35)
    at resolver.doResolve.createInnerCallback (/opt/theforeman/tfm/root/usr/lib/node_modules/webpack/node_modules/enhanced-resolve/lib/DescriptionFilePlugin.js:44:6)
    at loggingCallbackWrapper (/opt/theforeman/tfm/root/usr/lib/node_modules/webpack/node_modules/enhanced-resolve/lib/createInnerCallback.js:31:19)
    at afterInnerCallback (/opt/theforeman/tfm/root/usr/lib/node_modules/webpack/node_modules/enhanced-resolve/lib/Resolver.js:166:11)
    at loggingCallbackWrapper (/opt/theforeman/tfm/root/usr/lib/node_modules/webpack/node_modules/enhanced-resolve/lib/createInnerCallback.js:31:19)
    at next (/opt/theforeman/tfm/root/usr/lib/node_modules/webpack/node_modules/tapable/lib/Tapable.js:249:35)
resolve '@patternfly/react-styles/css/components/DataList/data-list' in '/builddir/build/BUILD/foreman-2.2.0-develop/webpack/assets/javascripts/react_app/components/HostDetails/Properties'
  Parsed request is a module
  using description file: /builddir/build/BUILD/foreman-2.2.0-develop/package.json (relative path: ./webpack/assets/javascripts/react_app/components/HostDetails/Properties)
    Field 'browser' doesn't contain a valid alias configuration
  after using description file: /builddir/build/BUILD/foreman-2.2.0-develop/package.json (relative path: ./webpack/assets/javascripts/react_app/components/HostDetails/Properties)
    resolve as module
      looking for modules in /builddir/build/BUILD/foreman-2.2.0-develop/webpack
        using description file: /builddir/build/BUILD/foreman-2.2.0-develop/package.json (relative path: ./webpack)
          Field 'browser' doesn't contain a valid alias configuration
        after using description file: /builddir/build/BUILD/foreman-2.2.0-develop/package.json (relative path: ./webpack)
          using description file: /builddir/build/BUILD/foreman-2.2.0-develop/package.json (relative path: ./webpack/@patternfly/react-styles/css/components/DataList/data-list)
            no extension
              Field 'browser' doesn't contain a valid alias configuration
              /builddir/build/BUILD/foreman-2.2.0-develop/webpack/@patternfly/react-styles/css/components/DataList/data-list doesn't exist
            .js
              Field 'browser' doesn't contain a valid alias configuration
              /builddir/build/BUILD/foreman-2.2.0-develop/webpack/@patternfly/react-styles/css/components/DataList/data-list.js doesn't exist
            .json
              Field 'browser' doesn't contain a valid alias configuration
              /builddir/build/BUILD/foreman-2.2.0-develop/webpack/@patternfly/react-styles/css/components/DataList/data-list.json doesn't exist
            as directory
              /builddir/build/BUILD/foreman-2.2.0-develop/webpack/@patternfly/react-styles/css/components/DataList/data-list doesn't exist
      looking for modules in /builddir/build/BUILD/foreman-2.2.0-develop/node_modules
        using description file: /builddir/build/BUILD/foreman-2.2.0-develop/package.json (relative path: ./node_modules)
          Field 'browser' doesn't contain a valid alias configuration
        after using description file: /builddir/build/BUILD/foreman-2.2.0-develop/package.json (relative path: ./node_modules)
          using description file: /builddir/build/BUILD/foreman-2.2.0-develop/package.json (relative path: ./node_modules/@patternfly/react-styles/css/components/DataList/data-list)
            no extension
              Field 'browser' doesn't contain a valid alias configuration
              resolved symlink to /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list
                No description file found
              after resolved symlink to /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list
                no extension
                  Field 'browser' doesn't contain a valid alias configuration
                  /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list doesn't exist
                .js
                  Field 'browser' doesn't contain a valid alias configuration
                  /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list.js doesn't exist
                .json
                  Field 'browser' doesn't contain a valid alias configuration
                  /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list.json doesn't exist
                as directory
                  /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list doesn't exist
              /builddir/build/BUILD/foreman-2.2.0-develop/node_modules/@patternfly/react-styles/css/components/DataList/data-list doesn't exist
            .js
              Field 'browser' doesn't contain a valid alias configuration
              resolved symlink to /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list.js
                No description file found
              after resolved symlink to /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list.js
                no extension
                  Field 'browser' doesn't contain a valid alias configuration
                  /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list.js doesn't exist
                .js
                  Field 'browser' doesn't contain a valid alias configuration
                  /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list.js.js doesn't exist
                .json
                  Field 'browser' doesn't contain a valid alias configuration
                  /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list.js.json doesn't exist
                as directory
                  /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list.js doesn't exist
              /builddir/build/BUILD/foreman-2.2.0-develop/node_modules/@patternfly/react-styles/css/components/DataList/data-list.js doesn't exist
            .json
              Field 'browser' doesn't contain a valid alias configuration
              resolved symlink to /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list.json
                No description file found
              after resolved symlink to /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list.json
                no extension
                  Field 'browser' doesn't contain a valid alias configuration
                  /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list.json doesn't exist
                .js
                  Field 'browser' doesn't contain a valid alias configuration
                  /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list.json.js doesn't exist
                .json
                  Field 'browser' doesn't contain a valid alias configuration
                  /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list.json.json doesn't exist
                as directory
                  /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list.json doesn't exist
              /builddir/build/BUILD/foreman-2.2.0-develop/node_modules/@patternfly/react-styles/css/components/DataList/data-list.json doesn't exist
            as directory
              /builddir/build/BUILD/foreman-2.2.0-develop/node_modules/@patternfly/react-styles/css/components/DataList/data-list doesn't exist
      /builddir/build/BUILD/foreman-2.2.0-develop/webpack/assets/javascripts/react_app/components/HostDetails/Properties/node_modules/ doesn't exist or is not a directory
      /builddir/build/BUILD/foreman-2.2.0-develop/webpack/assets/javascripts/react_app/components/HostDetails/node_modules/ doesn't exist or is not a directory
      /builddir/build/BUILD/foreman-2.2.0-develop/webpack/assets/javascripts/react_app/components/node_modules/ doesn't exist or is not a directory
      /builddir/build/BUILD/foreman-2.2.0-develop/webpack/assets/javascripts/react_app/node_modules/ doesn't exist or is not a directory
      /builddir/build/BUILD/foreman-2.2.0-develop/webpack/assets/javascripts/node_modules/ doesn't exist or is not a directory
      /builddir/build/BUILD/foreman-2.2.0-develop/webpack/assets/node_modules/ doesn't exist or is not a directory
      /builddir/build/BUILD/foreman-2.2.0-develop/webpack/node_modules/ doesn't exist or is not a directory
      /builddir/build/BUILD/node_modules/ doesn't exist or is not a directory
      /builddir/build/node_modules/ doesn't exist or is not a directory
      /builddir/node_modules/ doesn't exist or is not a directory
      /node_modules/ doesn't exist or is not a directory
      looking for modules in /builddir/build/BUILD/foreman-2.2.0-develop/node_modules/
        using description file: /builddir/build/BUILD/foreman-2.2.0-develop/package.json (relative path: ./node_modules/)
          Field 'browser' doesn't contain a valid alias configuration
        after using description file: /builddir/build/BUILD/foreman-2.2.0-develop/package.json (relative path: ./node_modules/)
          using description file: /builddir/build/BUILD/foreman-2.2.0-develop/package.json (relative path: ./node_modules/@patternfly/react-styles/css/components/DataList/data-list)
            no extension
              Field 'browser' doesn't contain a valid alias configuration
              resolved symlink to /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list
                No description file found
              after resolved symlink to /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list
                no extension
                  Field 'browser' doesn't contain a valid alias configuration
                  /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list doesn't exist
                .js
                  Field 'browser' doesn't contain a valid alias configuration
                  /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list.js doesn't exist
                .json
                  Field 'browser' doesn't contain a valid alias configuration
                  /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list.json doesn't exist
                as directory
                  /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list doesn't exist
              /builddir/build/BUILD/foreman-2.2.0-develop/node_modules/@patternfly/react-styles/css/components/DataList/data-list doesn't exist
            .js
              Field 'browser' doesn't contain a valid alias configuration
              resolved symlink to /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list.js
                No description file found
              after resolved symlink to /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list.js
                no extension
                  Field 'browser' doesn't contain a valid alias configuration
                  /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list.js doesn't exist
                .js
                  Field 'browser' doesn't contain a valid alias configuration
                  /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list.js.js doesn't exist
                .json
                  Field 'browser' doesn't contain a valid alias configuration
                  /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list.js.json doesn't exist
                as directory
                  /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list.js doesn't exist
              /builddir/build/BUILD/foreman-2.2.0-develop/node_modules/@patternfly/react-styles/css/components/DataList/data-list.js doesn't exist
            .json
              Field 'browser' doesn't contain a valid alias configuration
              resolved symlink to /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list.json
                No description file found
              after resolved symlink to /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list.json
                no extension
                  Field 'browser' doesn't contain a valid alias configuration
                  /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list.json doesn't exist
                .js
                  Field 'browser' doesn't contain a valid alias configuration
                  /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list.json.js doesn't exist
                .json
                  Field 'browser' doesn't contain a valid alias configuration
                  /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list.json.json doesn't exist
                as directory
                  /opt/theforeman/tfm/root/usr/lib/node_modules/@patternfly/react-styles/css/components/DataList/data-list.json doesn't exist
              /builddir/build/BUILD/foreman-2.2.0-develop/node_modules/@patternfly/react-styles/css/components/DataList/data-list.json doesn't exist
            as directory
              /builddir/build/BUILD/foreman-2.2.0-develop/node_modules/@patternfly/react-styles/css/components/DataList/data-list doesn't exist

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants