Giter Club home page Giter Club logo

ondemand's Introduction

Open OnDemand

GitHub Release Build Status GitHub License Paper DOI Source DOI

Supercomputing. Seamlessly. Open, Interactive HPC Via the Web

This work is supported by the National Science Foundation of the United States under the award NSF SI2-SSE-1534949 and NSF CSSI-Frameworks-1835725.

Overview

Open OnDemand is an NSF-funded open-source HPC portal. The goal of Open OnDemand is to provide an easy way for system administrators to provide web access to their HPC resources, including, but not limited to:

  • Plugin-free web experience
  • Easy file management
  • Command-line shell access
  • Job management and monitoring across different batch servers and resource managers
  • Graphical desktop environments and desktop applications

Demo

Open ondemand demo demonstrating integration with Open XDMOD; interactive jobs with desktops, Jupyter and visual studio code; file browsing, creation, editing and deletion.

Installation

Installing Open OnDemand simple, use our .rpm or .deb packages. Get started by visiting the installation instructions in our documentation.

Container demos

You can use the hpc toolset tutorial to demonstrate Open OnDemand before installing on your systems. This docker-compose project has a full suite of applications like Slurm, Coldfront and of course Open OnDemand. It also includes tutorials on how to use and update the applications.

Architecture

Learn more about Open OnDemand's system architecture and request lifecycle by visiting our documentation.

Community

Open OnDemand has an active and growing community! Don't hesitate to reach out to the developers via our Discourse instance if you would like more information or need help installing or configuring Open OnDemand.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/OSC/ondemand. Please read our contributing guide to get started, or find us on our Discourse instance if you have any questions about contributing!

License

The code is available as open source under the terms of the MIT License.

Maintained by OSC

This project is maintained by the Ohio Supercomputer Center (OSC), a member of the Ohio Technology Consortium, the technology and information division of the Ohio Department of Higher Education.

ondemand's People

Contributors

abujeda avatar akuppa9 avatar ariettaz avatar ashton22305 avatar basilgohar avatar brianmcmichael avatar dependabot[bot] avatar dpavlos avatar ericfranz avatar gbyrket avatar gerald-byrket avatar hazelgrant avatar johrstrom avatar kinanalattar avatar laser505t avatar lukew3 avatar matt257 avatar matthu017 avatar morganrodgers avatar msquee avatar nickjer avatar oglopf avatar osc-bot avatar oscwiag avatar robinkar avatar samirmansour avatar saumyabhushan avatar treydock avatar wdpypere avatar zooley avatar

Stargazers

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

Watchers

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

ondemand's Issues

FileExplorer: Data integrity

Doug brought up a good point about verifying the integrity of the data that was transferred whether through an upload or download. I know in some zip formats there is a checksum built-in, but having something similar built into the file explorer may be worth exploring in the future.

┆Issue is synchronized with this Asana task by Unito

ActiveJobs: Change change the "group" used in the Group filter

An option for the future - lets not do this just yet though!

A dropdown that shows supplemental groups you are part of, perhaps as part of the middle "button" i.e.

screen shot 2015-10-12 at 2 34 04 pm

screen shot 2015-10-12 at 2 33 53 pm

  • The filter would be by the Group selected
  • The filter chosen would be stored in a cookie (along with the current state of the other controls)
  • The text would display: "Your Jobs", then "PAW0003's Jobs", then
  • Or if the group name is not known by the user, maybe "Your Group's Jobs" (these users aren't going to be using a terminal by default)

Adding the dropdown inside the input selection is a little tricky though - styles will have to be modified with custom CSS.

┆Issue is synchronized with this Asana task by Unito

FileExplorer: File list doesn't reflect changes made outside file explorer

If I edit a file in file-editor or create new files/folders in the shell app I don't see changes reflected in the file explorer app without refreshing the whole browser tab. Refreshing the browser tab has its own issues, i.e., the tree view is reset.

Possibly adding a refresh button in the web app would be the simplest fix.

┆Issue is synchronized with this Asana task by Unito

FileExplorer: Consider finer grained cache busting in future

In this commit we essentially bust the cache of all files: 8a1d5b9

We will test and see if this has any negative implications in the perception of startup time when using the file explorer. If it does, we might want to revisit this and use a more appropriate client side cache management solution, such as including a fixed constant (timestamp) in the asset URLs which could be set when the app is started.

OSC/ood-fileexplorer#24 for a complete list of files to cache bust

┆Issue is synchronized with this Asana task by Unito

FileExplorer: Show "clipboard" contents (copy paste)

CloudCommander offers a "copy/paste" ability which lets you copy to a "clipboard a list of files so you can "paste" i.e. do a copy of those files from one location of the file system to another.

Since you can't see the clipboard contents, this feature is difficult to use.

If the clipboard contains contents, a "modal" should float above the right side of the panel that can be closed (which would clear the clipboard contents, thus hiding the display).

This is probably a feature best for when we rewrite the file explorer in ember.js

It might look something like this (but with pronounced dropshadow and bottom border):

one

┆Issue is synchronized with this Asana task by Unito

FileExplorer: Allow user to chmod files.

Currently cloudcmd displays file permissions, but does not allow you to change them.

I've submitted an issue at coderaiser/cloudcmd#63

Additionally, node.js uses default file permissions of 0666 for uploads. This is unacceptable and will need to be changed to a default of at least 0644.

┆Issue is synchronized with this Asana task by Unito

FileExplorer: Better handling of "view file" option

When viewing a file in cloud commander, we get a simple text only popup view of the file. Instead, it would be better to open to a new window and have the browser handle the file appropriately. We could even handle files differently based on file type. This could be a separate route in Express that we add to handle this.

┆Issue is synchronized with this Asana task by Unito

ActiveJobs: Merge job status app into the dashboard

i.e. /jobs or a JobsController added to the dashboard

This will partly address AweSim-OSC/osc-ondemand#81 because the dashboard menu will be above this view. The javascript may need to be adjusted so that it affects only appropriate divs etc. on this page - of course it can be loaded on any other page.

Add a more detailed design/plan of integrating and any modifications required before proceeding.

JobComposer: Send stdout to log file

As the user can't qpeek to observe status of running job. It might be best to have the templates send output to a log file instead of the batch output. That way the user can observe progress through the File Explorer app.

┆Issue is synchronized with this Asana task by Unito

JobComposer: Feature Upgrade: Convert script <pre> into editable pane.

Right now we show a preview of the script content for the selected submission script.

This would be more useful if it were an editable panel incorporating the Ace editor.

This feature currently GET's file content via the cloudcmd API. It could be saved by adding a button that PUT's edited content back to the API.

script

┆Issue is synchronized with this Asana task by Unito

Feature Request: Node/Core specific data visualization

Dave demonstrated a feature in Eclipse Parallel Tools that shows a view consisting of all of the nodes in a cluster. Each of those nodes is divided up into cores and they are color-coded and selectable based on the running jobs on that system.

He suggested an enhancement to the Job Status page that performs similar behavior.

ptp-trestles-0318

Display disk space usage per project

When worrying about disk space usage, it would be nice to see and/or sort jobs disk usage in human readable format. This would allow the user to see jobs that need to be archived or deleted to more quickly free up space.

┆Issue is synchronized with this Asana task by Unito

JobComposer: Improve folder content display.

Files are currently displayed in an unordered list.

Make a recursive algorithm to nest subfolders in the list, rather than displaying them all in one line.

Bonus points: format the list a little nicer.

files

┆Issue is synchronized with this Asana task by Unito

FileExplorer: Investigate the feasibility of writing a separate interface that uses cloud commander's API

The cloud commander UI uses its own API. It is mostly:

  1. A list view of files and directories that you can select, double click, etc.
  2. Context menus to do initiate various actions with the selected file or directory
  3. Accept drops from the desktop to initiate file upload
  4. Drag and drop from one commander view to another to cause some action to occur

1 & 2 probably very easy to implement using EmberJS or similar. 3 & 4 are big questions marks. But a clearer separation between the interface that we want to control and the cloud commander code we use would be very helpful.

┆Issue is synchronized with this Asana task by Unito

JobComposer: Support import of job metadata from database of previous app to new app

Needs design

Proposed design:

Add an indexed boolean column to the simulation or workflow model: legacy. Then do this on each request to the index page:

#pseudo code
unless Simulation.where(legacy: true).any?
  display "import" button if (File.exist?("~/crimson_files/JobConstructor") && Dir.glob("~/crimson_files/JobConstructor").length > 0)
end

Import button would be at top of page. The user can import old jobs by clicking the import button which will connect to mysql to read the user's information about their jobs and create corresponding database records. No files will be moved - the legacy jobs staged data would remain under ~/crimson_files/JobConstructor

┆Issue is synchronized with this Asana task by Unito

JobComposer: Custom, user defined template sources

A template source is a directory whose subdirectories are job templates.

Currently there are two template sources: OSC Templates and My Templates. Alongside these fixed locations to find templates, let the user add extra paths to new template sources.

CustomSource and Source would share functionality. Ideally CustomSource would be a type of Source but also be ActiveRecord - so we would need to put some thought into the implementation to make this clean. The list of all templates would be extended to include Source.my.templates + Source.osc.templates + CustomSource.all.map(&templates) (pseudocode)

This would involve five UI changes:

  1. Add /sources/new to create a new template source:

jobconstructor!UNITO-UNDERSCORE!sources!UNITO-UNDERSCORE!new

2.Add /sources/edit to edit a template source (that is not OSC or My Templates - ignore the fact that this screenshot shows editing that - it would actually only allow you to edit custom template sources):

jobconstructor!UNITO-UNDERSCORE!sources!UNITO-UNDERSCORE!edit

  1. Source dropdown would be added to the new job page with the options for adding or editing template sources added to this. Source dropdown would have (and default) to "All) showing all templates (as new job page currently does) or allow you to select a specific template source to view that. The edit button would be enabled if you select a custom template source. The add button would always be there:

jobconstructor!UNITO-UNDERSCORE!templates

Unfortunately, this would involve a schema change.

┆Issue is synchronized with this Asana task by Unito

ActiveJobs: Use scrollspy to fix the expanded row at top when it scrolls out of view

When I expand a row and then scroll down, I lose the context of the job:

screen shot 2016-06-03 at 1 02 20 pm

screen shot 2016-06-03 at 1 02 24 pm

We can use scrollspy to temporarily apply a "currently-viewing" class to when we scroll past the row so its out of view - this way the information in that row could be displayed:

screen shot 2016-06-03 at 1 02 24 pm copy

You can do this if the "currently-viewing" class applies "position fixed" to the row, but determining the correct style modifications after you do that will take a little bit of time. This screenshot shows a quick example where I pop the row contents out, but it doesn't look ideal:

screen shot 2016-06-03 at 1 06 35 pm

Though even this might be good enough. The styles I used to apply to this would be:

.currently-viewing {
    position: fixed;
    top: 0;
    z-index: 2000;
    background-color: white;
    border: 1px solid #ddd;

    /* round corner and add dropshadow */
    -webkit-box-shadow: 1px 1px 5px 0px rgba(0,0,0,0.75);
    -moz-box-shadow: 1px 1px 5px 0px rgba(0,0,0,0.75);
    box-shadow: 1px 1px 5px 0px rgba(0,0,0,0.75);
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    border-radius: 5px;
}

┆Issue is synchronized with this Asana task by Unito

Shell: Dashboard menu above shell app?

This is possible, as the bootstrap styles don't conflict with the terminal.

However, the bright red is bothersome with the default black/dark colors - your eyes can't adjust well.

screen shot 2016-05-14 at 6 24 35 pm

screen shot 2016-05-14 at 6 23 56 pm

Could use the grey background like in the other apps but keep the ondemand menu. Easier on the eyes:

screen shot 2016-05-14 at 6 32 34 pm
screen shot 2016-05-14 at 6 34 24 pm

Yep. Gray is the best. I have modifications to add this cleanly.

FileExplorer: Add project space directories to tree

So that you can change the "root" of the tree to be project space OR the home directory

We might want to think through this a little more because you might want to select some files and drag it to a project space directory in the tree. So you might want to be able to expand the root of the project space while looking in your home directory. But it could work like an accordion control, in that only one tree is open at a time.

screen shot 2016-06-03 at 11 31 41 am
screen shot 2016-06-03 at 11 31 43 am

FileExplorer: Design File Explorer 2.0 (which uses our own codebase)

Opening an issue to collect some ideas for a 2.0 version that we will open source with Open OnDemand.

We should identify features from these apps that would be helpful to include:

For example, some features we should consider:

  • drag and drop in the window and between window and tree

  • favorites (like in Apple's finder)

  • "actions" like "new folder" and "new file" or other things that work on the "current directory" (not the selection) could go in an actions button dropdown similar to apple's finder:

    screen shot 2016-05-31 at 10 19 14 am

  • embeddable "file picker" mode that we can use with other apps

JobComposer: /jobs/new - add "Prefix" and "Suffix: increment by number" fields

jobconstructor!UNITO-UNDERSCORE!templates!UNITO-UNDERSCORE!prefix

  • by adding a prefix, this puts the text before the number
  • by unchecking the "increment by number" the name of the job directory is the name specified in "prefix" without any number following it
  • Because the default is to name the directory a number "incremented by 1" the next unique number needs to be determined before this view is rendered.
  • When submitting the form (after the user presses "Use selected template") the path we are copying to needs to be verified to not exist yet (i.e. unique) and a form validation error should be thrown if it does (i.e. a conflict) so the user can change this

┆Issue is synchronized with this Asana task by Unito

FileExplorer: Double-click on file behavior?

Currently double-clicking a folder with open the folder, however, double-clicking a file will cause no event.

It may not be difficult to implement a double click listener for files that triggers the view action.

There may be unintended consequenses though. What happens if I 'view' a very large file?

JobComposer: Customizable project directory paths

Along with customizing the directory names of the jobs themselves, a feature request was made by Kate to customize the project directory path. So every project directory would not appear in a subdirectory of ~/ondemand/data/sys/myjobs/projects but could be in the user's home directory, or perhaps even in shared project space.

The fact that we store absolute paths to scripts etc. right now means we would need to consider changing this to storing relative paths - relative to the project directories that contain them (or perhaps with the project directories in the path). But if the user could change the project directory name after the fact, this also creates possible complications. So there are some edge cases that need to be thought through for this.

┆Issue is synchronized with this Asana task by Unito

JobComposer: Filesystem#validate_path_is_copy_safe needs unit tests

Commandline tests I did: OSC/ood-myjobs#26 (comment)

Some of these would make easy unit tests. Such as:

irb(main):025:0> Filesystem.new.validate_path_is_copy_safe "/"
=> [false, "Timeout occurred when trying to determine directory size. Size must be computable in less than 10 seconds. Either directory has too many files or the file system is currently slow (if so, please try again later)."]

You would want to create one directory whose permissions were temporarily modified so that du might throw an error similar to what I did here:

irb(main):024:0> Filesystem.new.validate_path_is_copy_safe "/nfs/17/efranz/process/tmp/p4trunk"
=> [false, "Error with status pid 18730 exit 1 occurred when trying to determine directory size: du: cannot access `/nfs/17/efranz/process/tmp/p4trunk/.svn': Permission denied\ndu: cannot access `/nfs/17/efranz/process/tmp/p4trunk/p4_calico': Permission denied\ndu: cannot access `/nfs/17/efranz/process/tmp/p4trunk/p4': Permission denied\ndu: cannot access `/nfs/17/efranz/process/tmp/p4trunk/README': Permission denied\n"]And you would want a directory where you created some arbitrary file size and manually set the Filesystem `max_copy_safe_dir_size` to 1 byte and verified that it failed:```irb(main):026:0> Filesystem.new.validate_path_is_copy_safe "/nfs/17/efranz/crimson_files/FanPortal/fans"=> [false, "The directory is too large to copy. The directory should be less than 1073741824 bytes."]```And finally a directory that passed the test.Four simple tests would be sufficient.

┆Issue is synchronized with this Asana task by Unito

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.