Code Monkey home page Code Monkey logo

gui's People

Contributors

brianjmurrell avatar greenkeeper[bot] avatar jgrund avatar johnsonw avatar petertix avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gui's Issues

Nested scrollbars in File System Detail

Installed RPMs:
python2-iml-manager-4.1.0.0-5131.30.g054a091.el7.noarch
iml-gui-6.4.0-827.1.el7.noarch

With enough MGS and OSS, the inner frame of the filesystem info has a scroll bar in addition to the file system detail:
screen

Client:
Linux (Arch - x86_64)
Firefox 62.0.3 (64-bit)

Make time configurable on the dashboard

The time on the dashboard is hard coded to UTC. Add the timezone picker component to the dashboard such that the user can select between utc and local time.

Convert disconnect modal to inferno component

The disconnect modal will display whenever the EventSource or realtime are disconnected. Converting it to an inferno component is the first step in syncing the two with the store.

Handle EventSource disconnects

With regards to #162, disconnects need to be handled such that the app attempts to reconnect to the EventSource. This can be tested by turning wifi off and then back on again.

Fix dispatch source usage with ALLOW_ANONYMOUS_READ

We currently gate dispatch source streams with ALLOW_ANONYMOUS_READ.

This is insufficient in the case that ALLOW_ANONYMOUS_READ is false.

In that case, the stream will never be called, regardless or whether the user has logged in or not.

Instead there should be an or check of ALLOW_ANONYMOUS_READ || CACHE_INITIAL_DATA.session.user

UI doesn't show volumes

image
I think, before there was some information to display.
However, nowadays it shows nothing but error in developer console:

Content Security Policy: The page’s settings blocked the loading of a resource at http://172.16.20.113:7443/api/volume/?limit=0&category=unused (“connect-src”). 

You(or browser) force to use HTTPs and the issue seems to be 301 to HTTP which is considered to be prohibited.
Also, some warning that might be interesting:

Content Security Policy: Directive ‘child-src’ has been deprecated. Please use directive ‘worker-src’ to control workers, or directive ‘frame-src’ to control frames respectively. 

Browser: Firefox ESR 60
IML version: latest docker images
Host: 172.16.20.113:7443

Update confirm modal to be an Inferno component

The confirm modal is written in angular. As we make updates for long polling and modify the action dropdown component the confirm modal will need to be written in Inferno. The approach should be as follows:

  1. Update action dropdown to be an inferno component and dispatch actions as they are selected
  2. Use the existing Inferno Modal component to build a confirm modal Inferno component.
  3. Add an entry for the confirm modal to the store
  4. Create the reducer and use immer to set the data. Should contain the following properties:
    • visible: boolean
    • message: string
    • modalPrompts: string[]
  5. Create a dispatcher. Visibility should initially be false.
  6. Add the reducer to the store
  7. Add the confirm modal to the top level of the app. When the visibility state changes to being visible, it will render itself on the page. The view width should be set to 95.
  8. The modal should close itself and not run any commands when canceled.
  9. When the confirm button is pressed:
    • The modal should dispatch:
      • Information about the command
      • A property that indicates that the command window should appear when information about the command is received.
    • The confirm modal should close itself.
  10. When the confirm and skip button is pressed:
    • The modal should dispatch:
      • Information about the command
      • A property that indicates that the command window should NOT appear when information about the command is received.
    • The confirm modal should close itself.
  11. Convert Exception modal to inferno component
    • Create Inferno Component for the modal
    • Hook exception modal into store
  12. Convert Add Server Modal to inferno components
    • Server and Authentication Screen
      • Convert Pdsh directive into inferno component
      • Convert SSH Authentication to inferno component
      • Create server status inferno component
      • Remove server status step angular component
      • Add spinner animation where server status component will display while servers are being tested
      • Integrate transition animations to status cells
      • Add in intermediary window between states
      • Remove get-add-server-manager file
      • Remove select-server-profile file
      • Enter when adding host should work without the tab.
      • Enable escape key to close modal (only when closing is allowed)
      • Do not allow a user to add a server that is currently deployed
      • Remove the second step and instead show the server status on the first screen. Get rid of the "override" button and do not let the user proceed until all checks have passed. This should be an inferno component.
      • Server status should be gray when a server is already deployed. Servers that are already deployed will be filtered out when going to the deploy agent and select profile steps.
      • - Provide a yellow state for servers on the query server screen. This will display when a server is deployed but a profile has not yet been selected. The first screen is the only screen in which a yellow state is possible.
      • - Tooltip for yellow state should read, " deployed but no server profile selected."
      • - Add a profile check on the select profile step. The result should be displayed on the server popover and can either be green or red.
      • - show close X on first screen
      • - show close X and close button on last screen.
      • - Reset the state when closing the modal
      • - The results screen should show the servers as green if they were configured correctly; red otherwise.
      • - Add a confirmation when clicking proceed on the first step.
      • - Use connect-to-store such that state flows from the store to the components
      • - Set modal title based on step
      • - Set modal tooltip based on step
      • - Create button dropdown component to be used on first step as we want confirmation.
    • Profile Selection Screen
      • Select server profile dropdown should be converted to an inferno component
      • Don't display the profile screen until the status of each server has been determined.
    • API Calls
      • - Check server status
      • - Deploy agent
      • - Kick off Install on servers
    • Waiting Screen
      • Detect when to display the waiting modal
      • Display the waiting modal when appropriate
      • Transition to the appropriate modal when waiting completes
    • Server Detail Screen
      • Update action dropdown buttons
  13. Disconnect modal should display at highest level
  14. Remove the Results screen for now and put it in a separate PR as it doesn't make sense to add it now that we are not adding in the "tray
  15. Cleanup command and step modals
  16. Prevent double step modal windows from popping up
  17. Make sure steps load instead of popping up on a delay
  18. Remove old step manager files
  19. Remove old steps modal code

Make log time configurable

After making the status time configurable between local time and UTC time, a user can click on the begin or end date and be brought to the log page. On the log page, we need to ensure a few things:

  1. The timestamp in the parser box should always have UTC appended to the end of the string.
  2. The timezone picker component should be displayed
  3. The timestamp on the log should reflect the time based on the selected timezone

Re-write storage plugin screen

The storage plugin screen is the last place in the GUI where we are using highcharts.

Highcharts is a paid dependency and is not open source friendly.

Re-write the storage plugin screen to remove highcharts.

Demo

Storage page demo


  • Create basic storage page
    • Add the basic routing functionality for storage
    • Create a storage-module, storage-component and storage-states
    • Remove code that implemented the storage route in the old way
    • Wire up the data path for storage
    • Create storage resource class select component.
    • Populate storage plugin table correctly - manage data streams
    • Create storage types
    • Add column sorting
    • Handle Alerts
    • Modify popover code to work in the Inferno framework
    • Add view-loader spinner when data is loading prior to displaying page
    • Add button to Add Devices
    • Create Pagination Components

  • Create page to Add Storage Devices

  • Create detail storage page
    • Create route for detail pages
    • Create component for storage detail info
      • Implement alias editing
      • Implement resource deleting
    • Create component for time series charts
      • Implement multi series support
      • Implement y axis label
      • Implement x axis label
      • Implement no data support
      • Implement Legend
    • Create component for histogram charts
      • Implement multi series support
      • Implement y axis label
      • Implement x axis label
      • Implement no data support
      • Implement Legend

  • Remove all old storage page code.

Upgrade to latest version of flow-bin

Now that Inferno and babel have been upgraded we need to upgrade flow-bin to allow us to use some of the new features in the gui (such as fragments).

Create reducer for locks

As follow-on for #162, take the output from iml-warp-drive (currently just locks) and place it into a reducer.

The current format of lock changes is:

{
  "49:1": [
    {
      "job_id": 541,
      "content_type_id": 49,
      "item_id": 1,
      "description": "Stop Pacemaker on mds1.local",
      "lock_type": "write",
      "action": "add"
    },
    {
      "job_id": 542,
      "content_type_id": 49,
      "item_id": 1,
      "description": "Stop Corosync on mds1.local",
      "lock_type": "read",
      "action": "add"
    }
  ],
  "43:1": [
    {
      "job_id": 542,
      "content_type_id": 43,
      "item_id": 1,
      "description": "Stop Corosync on mds1.local",
      "lock_type": "write",
      "action": "add"
    }
  ]
}

"An unexpected error" throwed in case of button "next" pushed and more than 50 disks available on server

Description

"Volumes" widget (which is under "Servers") throws "An unexpected error" in case of more than 50 disks available on the system (any number of disks which allows to push button "next>").

Issue occurred somewhere between:
[root@c003 ~]# date Thu Feb 21 08:14:21 MST 2019 [root@c003 ~]# date Thu Feb 21 08:16:15 MST 2019
Logs in attachment:
`
Your sosreport has been generated and saved in:
/var/tmp/sosreport-c003-2019-02-21-abtalkk.tar.xz

The checksum is: 19f1cfdcbffa2aa953afb96360093153
`

Repro

Create/add 50+ disks to the server, wait until all of the will be visible in GUI, click (left drop-down menu) Servers -> Volumes -> next

server_volumes_widget_0

server_volumes_widget_1

Version

Operating System - CentOS 7.6

python2-iml-manager-libs-4.1.0.0-5149.48.gdd6fb32.el7.noarch
iml-device-scanner-aggregator-2.2.0-198.el7.x86_64
iml-srcmap-reverse-3.0.7-1.el7.noarch
python2-iml-manager-cli-4.1.0.0-5149.48.gdd6fb32.el7.noarch
python2-iml-common1.4-1.4.4-43.2.el7.noarch
iml-gui-6.4.1-835.1.el7.noarch
iml_sos_plugin-2.2.2-1.el7.noarch
iml-view-server-8.0.4-1.el7.noarch
iml-update-handler-1.0.0-28.16.g0aa8322.el7.noarch
iml-socket-worker-4.0.2-1.el7.noarch
python2-iml-manager-4.1.0.0-5149.48.gdd6fb32.el7.noarch
iml-online-help-2.5.2-1.el7.noarch
iml-old-gui-3.0.1-43.el7.noarch
iml-realtime-7.0.1-1.el7.x86_64

iml-diagnostics

sosreport-c003-2019-02-21-abtalkk.tar.zip

HSM modal never goes away when configuring HSM

After configuring HSM and closing the configure modal, the grey modal in the background never disappears. Pulling up the console reveals an error in get-agent-vs-copytool-chart.js here:

const getMax = fp.flow(fp.map(getNumbers), xs => [].concat(...xs), d3.max);

Refreshing the page solves the problem.

Action required: Greenkeeper could not be activated 🚨

🚨 You need to enable Continuous Integration on all branches of this repository. 🚨

To enable Greenkeeper, you need to make sure that a commit status is reported on all branches. This is required by Greenkeeper because it uses your CI build statuses to figure out when to notify you about breaking changes.

Since we didn’t receive a CI status on the greenkeeper/initial branch, it’s possible that you don’t have CI set up yet. We recommend using Travis CI, but Greenkeeper will work with every other CI service as well.

If you have already set up a CI for this repository, you might need to check how it’s configured. Make sure it is set to run on all new branches. If you don’t want it to run on absolutely every branch, you can whitelist branches starting with greenkeeper/.

Once you have installed and configured CI on this repository correctly, you’ll need to re-trigger Greenkeeper’s initial pull request. To do this, please delete the greenkeeper/initial branch in this repository, and then remove and re-add this repository to the Greenkeeper App’s white list on Github. You'll find this list on your repo or organization’s settings page, under Installed GitHub Apps.

Command modal is loading the app inside the command modal window

When adding a server I noticed that the command modal is re-loading the app inside the command modal window. I believe this is due to the following line in command-modal-ctrl.js:

<div ng-repeat="job in jobTree.jobs track by job.id" ng-include="'job.html'"></div>

This code should instead read:

<div ng-repeat="job in jobTree.jobs track by job.id" ng-include="'/gui/job.html'"></div>

Furthermore, job.html must update its line as well from:

<div ng-repeat="job in job.children track by job.id" ng-include="'job.html'"></div>

to

<div ng-repeat="job in job.children track by job.id" ng-include="'/gui/job.html'"></div>

Before:
i115 pimgpsh_fullsize_distr

After:
image

Upgrade Dependencies in GUI

Setting up mutability and preparing the front end for the changes that remove long polling require that the dependencies be upgraded. This includes the following:

  1. Webpack -> 4.0.x
  2. Babel -> 7.0.x
  3. Inferno -> 6.0.x
  4. babel transformation plugins
  5. jest

Upgrading these dependencies will require some work within the code base. The following items will be required:

  1. - Update webpack config with new babel transforms and other updates
  2. - Replace ExtractTextPlugin with MiniCssExtractPlugin (official replacement for webpack 4)
  3. - Create babel.config.js and setup transformations for jest tests. This is only used for testing.
  4. - Remove .babelrc as it is no longer used in Babel 7
  5. - Update tests to account for changes. Most of the tests should be the same but i've noticed some of them have additional new properties, especially with d3 components.
  6. - Manual testing
  7. - Performance evaluation
  8. - Upgrade and fix flow errors
  9. - Apply jsx fragments in place of 's where necessary

File information not showing on dashboard page

File information is not being displayed on the dashboard page (this was tested on a managed ZFS install). Notice the file information on the filesystem details page:

image

But it is not on the dashboard:
image

This file information should display on the dashboard as well.

Cannot stop filesystem

IML Version: 4.0.9.1
OS: EL 7.6
Lustre: 2.10.6

While attempting to stop a filesystem using IML the following error occurred on the web console:

Error: The json mask disk not match the angular.js:14199 response and as a result returned null.  Examine the mask:"undefined" From PUT request to /api/filesystem/1/

Increase NIDs on server detail page

Fox-13 shows a customer who needs support for 32 nids. We would like to put in a better interface but for now, we will add support for 50 nids.

UI doesn't load when deploying in Docker from latest images

All I see is a warning and an error:

`WebAssembly.instantiateStreaming` failed. Assuming this is because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:
 LinkError: import object field '__wbg_call_0492299fb1f5901e' is not a Function package.js:936:17

TypeError: Body has already been consumed.
Stack trace:
init/result</<@https://172.16.20.113:7443/wasm-components/package.js:938:28
 angular-ui-router.js:5857

TypeError
columnNumber: 28
fileName: "https://172.16.20.113:7443/wasm-components/package.js"
lineNumber: 938
message: "Body has already been consumed."
stack: "init/result</<@https://172.16.20.113:7443/wasm-components/package.js:938:28\n"
__proto__: Object { stack: "", … }
init/result</<@https://172.16.20.113:7443/wasm-components/package.js:938:28
 angular-ui-router.js:5858

Create basic storage page


  • Create basic storage page

  • Add the basic routing functionality for storage
  • Create a storage-module, storage-component and storage-states
  • Create basic test cases for storage-component and storage-states
  • Remove code that implemented the storage route in the old way
  • Wire up the data path for storage
  • Create an initial table with test data
  • Filter plugin data by HostTime, HostTimeReference, HostTimePresence
  • Add filter for number of devices to display
  • Add button and link to form when plugins found to Add Devices
  • Create form to Add Storage Devices
  • Create unit tests for basic storage page

Command modal not showing all jobs or links

The command modal is no longer showing all jobs and displaying links for active jobs.

Instead it is showing the first job which sometimes does not appear as clickable.

Consider the following:

Screen Shot 2019-04-05 at 2 40 21 PM

Even though this command has 18 child jobs listed, only one is being displayed and it's not clickable even though it has steps.

Target IDs shown on charts instead of names

When you draw charts, if user points out to data associated with one target or another, a number is shown which seems to be a primary key for this target.
However, elsewhere in UI names show instead. I even believe it cannot be seen elsewhere besides looking on URLs.
It would be good if you make it least bit user friendly.
Unfortunately, hard to screenshot that.

Browser: Firefox ESR 60
IML version: latest docker images

create iml-warp-drive handler

Background

As part of removing long-polling we've created a new service iml-warp-drive. This service uses Server-Sent Events (SSE) to push changes to the GUI over a HTTP(S) connection.

The backend for this currently lives in whamcloud/integrated-manager-for-lustre#780 and can be built / deployed locally in iml-sandbox.

Change

Create a SSE connection / handler that consumes the connection and returns a highland stream. The connection can be created roughly like:

const sse = new EventSource("https://localhost:8443/messaging");

sse.onopen = function () {
  console.log("connected");
};

sse.addEventListener("user", function(msg) {
  console.log("I am user", msg);
});

sse.onmessage = function (msg) {
  console.log(msg.data);
};

Note that there is hopefully a better way to setup than overwriting handlers directly.

At a minimum the module will need to handle errors and disconnects transparently.

scrolling not working on step modal

Scrolling for longer items is non-functional on the step modal. The modal itself can scroll, but the nested log sections cannot. Highlighting the text and dragging will cause scrolling to work, but this is the only way to scroll the longer sections.

scrolling

alert-indicator not filtering.

The alert indicator needs to filter by affected id. It currently is not due to us not ajusting function arity when removing currying.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.