{"id":19706132,"url":"https://github.com/llnl/tourrobotdance","last_synced_at":"2025-02-27T13:50:39.362Z","repository":{"id":66083046,"uuid":"96554309","full_name":"LLNL/TourRobotDance","owner":"LLNL","description":"Make your tape library robots dance for the delight of tour groups in your data center","archived":false,"fork":false,"pushed_at":"2017-10-07T15:07:37.000Z","size":24,"stargazers_count":2,"open_issues_count":2,"forks_count":1,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-01-10T12:26:56.222Z","etag":null,"topics":["datacenter-tour","shell","tape-library"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LLNL.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-07-07T15:57:32.000Z","updated_at":"2020-07-02T16:12:35.000Z","dependencies_parsed_at":"2023-11-19T17:00:21.127Z","dependency_job_id":null,"html_url":"https://github.com/LLNL/TourRobotDance","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LLNL%2FTourRobotDance","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LLNL%2FTourRobotDance/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LLNL%2FTourRobotDance/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LLNL%2FTourRobotDance/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LLNL","download_url":"https://codeload.github.com/LLNL/TourRobotDance/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241020726,"owners_count":19895483,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["datacenter-tour","shell","tape-library"],"created_at":"2024-11-11T21:34:17.913Z","updated_at":"2025-02-27T13:50:39.340Z","avatar_url":"https://github.com/LLNL.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Robot Dance\n\n## Motivation\n\nTours of high performance computer (HPC) data centers are an increasingly common activity. Most data centers aren't very dynamic: they're rows upon rows of similar racks of computing nodes and disk drawers. The most interesting visual component of these racks are either some blinking lights or large branding/logo skins applied to the outside rack row. Each cluster offers the same viewing experience. Essentially: you've seen one cluster, you've seen 'em all.\n\nRobotic tape libraries can stand out from the crowd in an HPC data center. Unfortunately, well-tuned robotic tape libraries aren't much more active than their compute cluster counterparts. A smoothly running tape library achieves efficiency by moving its robots as little as possible.\n\nSo, for tour groups, it's desirable to put the robotic tape libraries into a tour mode. This software package is that tour mode; it makes the robots \"dance\" and move about. It strives to create visually interesting patterns of movement for the tour groups to observe.\n\n## Pre-Reqs\n\n* Oracle StorageTek SL8500 tape libraries\n* Oracle StorageTek ACSLS library control software\n* [Expect](http://expect.nist.gov/)\n\n## Quick Start\n\nThere are three modules that make up this package:\n\n* `trd_dance.bash`: The user interface. It's meant to able to run on any node, as long as it shares a filesystem (NFS, etc.) with the ACSLS server.\n* `trd_cron.bash`: Run this in cron — frequently, say every five minutes — on the ACSLS server as user *acsss*. This module starts the robot dance, by spawning off individual `trd_move.exp` instances, and awaits the robot dance termination request. This module requires access to a filesystem (NFS, etc.) shared with the node used to run `trd_dance.bash`.\n* `trd_move.exp`: An Expect script that is responsible for moving a pair of cartridges around an SL8500 complex to generate robotic movement. Many of instances of this script are run in parallel by `trd_cron.bash` to create the overall robot dance. This module needs access to the same filesystem used by the two bash script modules.\n\nTo run the robot dance:\n\n    % /path/to/trd_dance.bash --start\n\nTo stop the robot dance:\n\n    % /path/to/trd_dance.bash --stop\n\n## Internals\n\n`trd_dance.bash` will place a sentinel file in the filesystem shared by its host and the ACSLS server. It will log to syslog and HPSS that the robot dance is starting. `trd_cron.bash` will look for the sentinel file and start up many instances of `trd_move.exp`. `trd_move.exp` uses the ACSLS command line processor (`cmd_proc`) to issue the robotic movement commands. When stopping the robot dance, `trd_dance.bash` removes the sentinel file and logs to HPSS and syslog that the robot dance is winding down. `trd_cron.bash` and `trd_move.exp` exit when the sentinel file disappears from the shared filesystem.\n\n## Known Issues \u0026 Limitations *(a.k.a. opportunities for pull requests and community contributions!)*\n\n* Various external dependencies — command line tools, file system paths, etc. — are hardcoded into this package's various modules\n* This package relies on a non-OSS LLNL software tool named `hpsssvc` that describes which servers provide which services\n* The tape volumes used by this package are hardcoded into the `trd_cron.bash` module\n* The number of tape libraries in use is hardcoded into the `trd_cron.bash` module\n* This package relies on use of [genders](https://github.com/chaos/genders) and a genders schema specific to LLNL\n* In addition to logging to syslog, this package attempts to log to [HPSS](http://www.hpss-collaboration.org). Usage of HPSS tools for this logging is hardcoded into `trd_dance.bash`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fllnl%2Ftourrobotdance","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fllnl%2Ftourrobotdance","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fllnl%2Ftourrobotdance/lists"}