proxstar/HACKING
Willard Nilges 2c17d6988f
Update VNC functionality for Proxmox 7 (#148)
Chown `targets`, Add run and kill scripts

Lol Joe figured it out

* Dude it works holy shit

We need to fix some logistical bugs, probably, and also like remove dead
code lol

* Open VNC session on the node that the VM belongs

Figured out why I couldn't open a session on anything but 01. It was
because I was making the API call on proxmox01-nrh. So that's where the
session opened. I hope that by doing this, it will balance the load
(what little there is) from VNC sessions.

* Update websockify-related tasks

* Remove SSH key from build

* Add option to specify VNC port.

Should be 443 for OKD, probably 8081 for development.

This hosts a smattering of fixes, acutally uses gunicorn properly(?),
launches websockify correctly, and introduces MORE DEAD CODE!

TODO: Fix the scheduling system

* Make things not crash as much :)

* Remove obviously dead code

There's still some code in here that may require more careful
extraction, testing, and review, so I'm saving that for another PR.

* Fix Joe's complaints

* Replace hardcoded URL
2022-07-29 20:56:00 -04:00
..
proxstar-postgres Move schema, clean up postgres dockerfile 2022-06-25 22:09:50 -04:00
.env.template Make proxstar work in Podman 2022-06-25 21:43:42 -04:00
.gitignore Update VNC functionality for Proxmox 7 (#148) 2022-07-29 20:56:00 -04:00
launch_env.sh Update VNC functionality for Proxmox 7 (#148) 2022-07-29 20:56:00 -04:00
README.md Update VNC functionality for Proxmox 7 (#148) 2022-07-29 20:56:00 -04:00
stop_env.sh Update VNC functionality for Proxmox 7 (#148) 2022-07-29 20:56:00 -04:00

Contributing

  1. Fork this repository
  • Optionally create a new git branch if your change is more than a small tweak (git checkout -b BRANCH-NAME-HERE)
  1. Follow the Podman Environment Instructions to set up a Podman dev environment. If you'd like to run Proxstar entirely on your own hardware, check out Setting up a full dev environment

  2. Create a Virtualenv to do your linting in

mkdir venv
python3.8 -m venv venv
source venv/bin/activate
  1. Make your changes locally, commit, and push to your fork
  • If you want to test locally, you should copy HACKING/.env.sample to HACKING/.env, and talk to an RTP about filling in secrets.
  • Lint and format your local changes with pylint proxstar and black proxstar
    • You'll need dependencies installed locally to do this. You should do that in a venv of some sort to keep your system clean. All the dependencies are listed in requirements.txt, so you can install everything with pip install -r requirements.txt. You'll need python 3.6 at minimum, though things should work up to python 3.8.
  1. Create a Pull Request on this repo for our Webmasters to review

Podman Environment Instructions

  1. Build your containers. The proxstar container serves as proxstar, rq, rq-scheduler, and VNC. The proxstar-postgres container sets up the database schema.

mkdir HACKING/proxstar-postgres/volume

podman build . --tag=proxstar

podman build HACKING/proxstar-postgres --tag=proxstar-postgres

  1. Configure your environment variables. I'd recommend setting up a .env file and passing that into your container. Check .env.template for more info.

  2. Run it. This sets up redis, postgres, rq, and proxstar.

./HACKING/launch_env.sh

  1. To stop all containers, use the provided script

./HACKING/stop_env.sh

Setting up a full dev environment

If you want to work on Proxstar using a 1:1 development setup, there are a couple things you're going to need

  • A machine you can
    • SSH into
      • With portforwarding (see man ssh for info on the -L option)
    • and run
      • Podman
      • Flask
      • Redis
      • Postgres
      • RQ
  • At least one (1) Proxmox host running Proxmox >6.3
  • A CSH account
  • An RTP (to tell you secrets)
  1. Configure your Proxmox node (Not required if you're using the CSH cluster)

I would recommend setting up a development account on your Proxmox node. Name it anything. (Maybe proxstartest?). This is necessary to grab authentication tokens and the like. It should have the same permissions as root@pam. You can accomplish this by creating a group in Datacenter > Permissions > Groups and adding Administrator permissions to the group, then adding your user to the group. If you do this, then it's easy to enable/disable it for development. You should also generate an SSH key for the user.

When you log into your Proxstar instance, it should auto-create the pool. If for some reason it doesn't, you can set up a pool on your Proxmox node with your CSH username. To do this, go into Datacenter > Permissions > Pools > Create.

  1. Set up your environment

If you're trying to run this all on a VM without a graphical web browser, you can forward traffic to your computer using SSH.

ssh example@dev-server.csh.rit.edu -L 8000:localhost:8000