Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Test Workflow

  1. Create an Account
  2. Sign In
  3. Create a New Stack: DataVerse

Use Cases

Login View

Create an Account

...

Login

...

  • DISCLAIMER: This function is for demos and local development, and may not show up during production use
  • User is prompted to enter information about their new project:
    • username: required (aka Kubernetes namespace)
    • password: required
    • confirm password: required
    • project name: optional
    • description: optional

Sign In

  • User can enter their credentials here
    • Valid credentials should log the user in, allowing them to access the REST API functions
    • Invalid credentials will yield a special error message
    • Unknown (network/server) errors will yield a generic error message
  • After logging in, user should be automatically taken to the /home view.

Logout

Sign Out

  • At any time the user can choose to "Sign Out", which will end their session by deleting the token from their browser
  • The user's session will remain open in the backend until their token expires

...

Home View

Auto Refresh

...

  • Open 2 different browser windows to the GUI
  • Log in to the same account on both
    • This simulates simultaneous access to a single account by multiple users
  • Create a stack on one windowSwitch , then switch to the other window
    • Notice that the second window does not have the new stack
  • Toggle and toggle Auto Refresh on by clicking the button at the top-right
    • You should see the new stack the was added by the other window appear like magic

Search Service Specs

  • On the Services Pane (left-hand side for desktop, or at the top on mobile) you should see a list of services that you can add
  • The input at the top of this list allows the user to filter the list of specs.
  • Search for "Clowder" 
  • The results below should yield all components of the Clowder stack

Add a New Stack of Services: Simple

  • Click the "Add" button next to "Image Preview Extractor" on the Services Pane
  • A wizard should pop up allowing the user to add and configure the new service
  • Requirements Page:
    • This page should display a description of the stack that will be added
    • All required services should be listed
    • Any services that require volumes should make this requirement known
    • User must enter a name for the stack before clicking "Next"
      • User cannot click "Next" without entering a name
      • Name must be between 0 and 20 characters
  • Confirmation Page:
    • Since this service has no options or volume requirements, the user should be taken directly to confirmation
    • Confirmation Page lists any Services / Volumes that will be added with this operation
    • User can review the total operation before clicking "Confirm"
  • Upon clicking "Confirm" the new stack should appear in the "Stacks" tab of the Content Pane (right-side on desktop, or bottom on mobile)

Add a New Stack of Services: Intermediate

  • Click the "Add" button next to "Kibana" on the Services Pane
  • A wizard should pop up allowing the user to add and configure the new service
  • Requirements Page:
    • This page should display a description of the stack that will be added
    • All required services should be listed
    • Any services that require volumes should make this requirement known
    • User must enter a name for the stack before clicking "Next"
      • User cannot click "Next" without entering a name
      • Name must be between 0 and 20 characters
  • Volumes Page:
    • Since this stack contains a service that
    •  require will require a Volume, user should be taken to the Volumes Page
    • User should be shown their volume storage quota
    • User should be shown how adding the necessary volumes will affect their storage quota
      • User may choose to reattach an orphaned volume, of they would like to reuse the data on it
      • Orphaned volumes do not affect projected storage quota, since the are already factored into current usage
    • User may not allocate more space than their quota
      • Quota must be >= current usage + projected usage
    • User must enter a name, size, and unit for each necessary new volume before clicking "Next"
      • Name should be defaulted to a sensible default
      • Size should be defaulted to to 10 GB
  • Confirmation Page:
    • Since this service has no dependencies, options, or volume requirements, the user should be taken directly to confirmation
    • Confirmation Page lists any Services / Volumes that will be added with this operation
    • User can review the total operation before clicking "Confirm"
  • Upon clicking "Confirm" the new stack should appear in the "Stacks" tab of the Content Pane (right-side on desktop, or bottom on mobile)

Add a New Stack of Services: Complex

  • Click the "Add" button next to "DataVerse" on the Services Pane
  • A wizard should pop up allowing the user to add and configure the new stack of services
  • Requirements Page:
    • This page should display a description of the stack that will be added
    • All required services should be listed
    • Any services that require volumes should make this requirement known
    • User must enter a name for the stack before clicking "Next"
      • User cannot click "Next" without entering a name
      • Name must be between 0 and 20 characters
  • Options Page:
    • This page present the user with optional services for this stack
    • Any services that require other services (dependencies) should make their requirements known.
    • User may choose any optional services before clicking "Next"
  • Volumes Page:
    • Since this stack contains a service multiple services that will require a Volume, user should be taken to the Volumes Page
    • User should be shown their volume storage quota
    • User should be shown how adding the necessary volumes will affect their
    • storage quotaUser
    • storage quota
      • User may choose to reattach an orphaned volume, of they would like to reuse the data on it
      • Orphaned volumes do not affect projected storage quota, since the are already factored into current usage
    • User may not allocate more space than their quota
      • Quota must be >= current usage + projected usage
    • User must enter a name, size, and unit for each
    • necessary
    • new volume before clicking "Next"
      • Name should be defaulted to a sensible default
      • Size should be defaulted to 10 GB
  • Confirmation Page:
    • Since this service has no dependencies, options, or volume requirements, the user should be taken directly to confirmation
    • Confirmation Page lists any Services / Volumes that will be added with this operation
    • User can review the total operation before clicking "Confirm"
  • Upon clicking "Confirm" the new stack should appear in the "Stacks" tab of the Content Pane (right-side on desktop, or bottom on mobile)

View Stack Status

  • User should see their stacks listed in the "Stacks" tab of the Content Pane (right-side on desktop, or bottom on mobile)
  • Clicking the stack name (accordion header) will expand the accordion, showing the status of all services within the stack
  • From here, user should see options to:
    • startStart / stop Stop a stack
    • addAdd / remove Remove optional services to/from stack

Add Service

  • User should see "Add Service" next to any optional services that have not been added to this stack
  • Clicking "Add Service" should add that service to the stack
  • Any services that the newly-added service requires are automatically added to the stack
  • The new service(s) will be started the with the stack

Remove Service

  • User should see "Remove Service" next to any optional services that have been added to this stack
    • User cannot delete required dependencies of optional services
    • For example: In the "Clowder" stack, user should not be able to remove "RabbitMQ" without first removing all extractors
  • Clicking "Remove Service" should remove that service from the stack

Start Stack

  • User should be able to start a stopped stack
  • Upon starting a stack, its status should change to "starting"
  • User user should see GUI update with new altered service statuses as they are received:
    • Expected Order: Stopped -> Waiting -> Starting -> Ready
    • Click the "View Logs" Logs button allows the user to View Logs of any services that are "Starting" or "Ready"
    • Log Viewer is automatically refreshed, allowing the user to watch the logs in real-time
  • Once all services in the stack are "Ready", the stack has been fully started"Started"
    • User is presented with endpoints Endpoint Links to any services that offer an interface
    • Upon clicking an endpoint link, user is directed to the web interface offered there

View Logs

Stop Stack

  • User should be able to stop a started stack
  • Upon stopping a stack, its status should change to "stopping"
  • User should see GUI update with altered service statuses as they are received:
    • Expected Order: Ready -> Stopping -> Stopped
  • Once all services in the stack are "Stopped", the stack has been fully User can view the logs of any service that is not "Stopped"

...

Delete Stack

...

  • User should be able to delete a stopped stack
  • Upon removing a stack with no volumes, user should be prompted for a simple Yes / No confirmation
  • Upon removing a stack with one or more volumes, user should be prompted for confirmation
    • User should be given the option to:
      • Retain the data volumes of the stack
        • this should delete ONLY the stack, and leave the volumes in a Detached state
      • Destroy all data from the stack
        • this should delete the volumes along with the stack
  • If the user chooses one of the "Yes" options, the stack is deleted and removed from the GUI
    • If "Destroy all data" option was chosen, the volumes should also be deleted

Delete Volume

  • View the "Volumes" tab of the Content Pane (right-side on desktop or bottom on mobile)
  • User should see a list of all their allocated volumes
  • User should be able to delete a detached volume (orphan)
    • User is prompted for confirmation of this deletion
    • User is warned that this data will be UNRECOVERABLE
  • If the user chooses "Yes", the volume is deleted and removed from the GUI