From ef1de90d672ff8480876096aef36e134819b98f5 Mon Sep 17 00:00:00 2001 From: treydock Date: Sat, 17 Jun 2023 11:50:52 -0400 Subject: [PATCH 01/16] Document ondemand_use_smtp SELinux boolean (#822) Fixes #816 --- source/installation/modify-system-security.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/source/installation/modify-system-security.rst b/source/installation/modify-system-security.rst index 34efb5412..e2a157b83 100644 --- a/source/installation/modify-system-security.rst +++ b/source/installation/modify-system-security.rst @@ -36,6 +36,7 @@ The custom SELinux booleans provided by the OnDemand SELinux policy: * ``ondemand_use_kubernetes`` (**default=off**): Allow OnDemand to interact with Kubernetes. * ``ondemand_use_ldap`` (**default=off**): Allows OnDemand to interact with remote LDAP servers. This does not affect Apache LDAP authentication. This is only necessary if the PUN is interacting with LDAP ports. * ``ondemand_use_kerberos`` (**default=off**): Allow OnDemand to interact with Kerberos. +* ``ondemand_use_smtp`` (**default=off**): Allow OnDemand to interact with SMTP for sending emails. The following SELinux booleans are enabled by the ``ondemand-selinux`` package: From 1c725ad5d8869686f06c0db9c650555e4d22aaec Mon Sep 17 00:00:00 2001 From: Jeff Ohrstrom Date: Thu, 6 Jul 2023 10:56:24 -0400 Subject: [PATCH 02/16] add automation for syncing latest branch w development (#829) --- .github/workflows/publish.yml | 2 +- .github/workflows/sync.yml | 36 +++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/sync.yml diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 8496110e8..445808768 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -16,7 +16,7 @@ jobs: steps: - name: checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Make Html run: | diff --git a/.github/workflows/sync.yml b/.github/workflows/sync.yml new file mode 100644 index 000000000..c5191e309 --- /dev/null +++ b/.github/workflows/sync.yml @@ -0,0 +1,36 @@ +name: Sync latest + +on: + push: + branches: [develop] + +defaults: + run: + shell: bash + +jobs: + publish: + runs-on: ubuntu-latest + + steps: + - name: checkout + uses: actions/checkout@v3 + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Merge Branches + run: | + git config user.name github-actions + git config user.email github-actions@github.com + git fetch + git checkout develop + git pull + git checkout latest + git pull + git merge develop + + # note that this shouldn't run if 'merge branches' fails, which it will happen when + # there are merge conflicts. + - name: Sync latest + if: contains(github.event.pull_request.labels.*.name, 'sync-latest') + run: | + git push From e896435507be4b86365b728bffaefc018a483af0 Mon Sep 17 00:00:00 2001 From: Jeff Ohrstrom Date: Thu, 6 Jul 2023 11:26:37 -0400 Subject: [PATCH 03/16] fix sync workflow (#833) --- .github/workflows/sync.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/sync.yml b/.github/workflows/sync.yml index c5191e309..315111940 100644 --- a/.github/workflows/sync.yml +++ b/.github/workflows/sync.yml @@ -15,7 +15,8 @@ jobs: steps: - name: checkout uses: actions/checkout@v3 - token: ${{ secrets.GITHUB_TOKEN }} + with: + token: ${{ secrets.GITHUB_TOKEN }} - name: Merge Branches run: | From 7f09f969baf73b167bf47577cad87565e37b15de Mon Sep 17 00:00:00 2001 From: Jeff Ohrstrom Date: Thu, 6 Jul 2023 11:38:13 -0400 Subject: [PATCH 04/16] Test sync (#834) change the name of this step and fetch all commits --- .github/workflows/sync.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/sync.yml b/.github/workflows/sync.yml index 315111940..89db76d6d 100644 --- a/.github/workflows/sync.yml +++ b/.github/workflows/sync.yml @@ -9,7 +9,7 @@ defaults: shell: bash jobs: - publish: + sync: runs-on: ubuntu-latest steps: @@ -17,6 +17,7 @@ jobs: uses: actions/checkout@v3 with: token: ${{ secrets.GITHUB_TOKEN }} + fetch-depth: 0 - name: Merge Branches run: | From 43209b3b3efe23be2ab21a80b811229515c404e1 Mon Sep 17 00:00:00 2001 From: David Kelly Date: Thu, 13 Jul 2023 11:28:11 -0500 Subject: [PATCH 05/16] Add reference documentation for the globus_endpoints parameter (#819) * Add reference documentation for the globus_endpoints parameter, to enable the Globus button (https://github.com/OSC/ondemand/pull/2858) * Updated with new format of globus_endpoints property * Add an example using the home directory of the current user * use etc instead of currentuser Etc.getpwnam(Etc.getlogin).dir is safer to use than currentuser at the moment. --------- Co-authored-by: David Kelly Co-authored-by: Jeff Ohrstrom --- source/reference/files/ondemand-d-ymls.rst | 53 ++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/source/reference/files/ondemand-d-ymls.rst b/source/reference/files/ondemand-d-ymls.rst index c3e311066..c9c1b407d 100644 --- a/source/reference/files/ondemand-d-ymls.rst +++ b/source/reference/files/ondemand-d-ymls.rst @@ -728,3 +728,56 @@ Configuration Properties .. code-block:: yaml hide_app_version: true + +.. describe:: globus_endpoints (Array, null) + + Add a Globus button to the file browser that opens the current directory + in the Globus transfer web app. + + Default + Null, do not enable the Globus button + + Example + Use a single endpoint for the whole filesystem. + + .. code-block:: yaml + + globus_endpoints: + - path "/" + endpoint: "716de4ac-xxxx-xxxx-xxxx-xxxxxxxxxxxx" + endpoint_path "/" + + Example + Use multiple endpoints. + + .. code-block:: yaml + + globus_endpoints: + - path: "/home" + endpoint: "716de4ac-xxxx-xxxx-xxxx-xxxxxxxxxxxx" + endpoint_path: "/home" + + - path: "/project" + endpoint: "9f1fe759-xxxx-xxxx-xxxx-xxxxxxxxxxxx" + endpoint_path: "/project" + + Example + When pathnames differ between the filesystem and endpoint. + + .. code-block:: yaml + + globus_endpoints: + - path: "/project" + endpoint: "9f1fe759-xxxx-xxxx-xxxx-xxxxxxxxxxxx" + endpoint_path: "/" + + Example + Reference the home directory of the current user. + + .. code-block:: yaml + + globus_endpoints: + - path: "<%= Etc.getpwnam(Etc.getlogin).dir %>" + endpoint: "9f1fe759-xxxx-xxxx-xxxx-xxxxxxxxxxxx" + endpoint_path: "/" + From 9e5c6c0ec69ebb7e0ae173c5d8b2a3b6f9fac2f5 Mon Sep 17 00:00:00 2001 From: treydock Date: Mon, 23 Oct 2023 13:14:38 -0400 Subject: [PATCH 06/16] Documentation updates around 3.1 packaging changes (#827) * Documentation updates around 3.1 packaging changes Document architectures and new release package naming Fixes #826 #825 #823 #821 #820 * Fix up the Prometheus monitoring docs * Document Ruby 3.1 and NodeJS 18 updates Fixes #832 * Document Debian 12 support - fixes #879 --- source/authentication/dex.rst | 17 +- source/conf.py | 4 +- source/how-tos/debug/debug-apache.rst | 4 +- source/how-tos/monitoring/prometheus.rst | 39 ++-- source/installation.rst | 2 +- source/installation/add-ssl.rst | 4 +- source/installation/install-software.rst | 83 ++++++-- source/release-notes.rst | 1 + source/release-notes/v3.1-release-notes.rst | 206 ++++++++++++++++++++ source/requirements.rst | 23 ++- 10 files changed, 334 insertions(+), 49 deletions(-) create mode 100644 source/release-notes/v3.1-release-notes.rst diff --git a/source/authentication/dex.rst b/source/authentication/dex.rst index 48d3ec1f0..371208195 100644 --- a/source/authentication/dex.rst +++ b/source/authentication/dex.rst @@ -10,11 +10,22 @@ Installing OnDemand Dex package First the OnDemand yum repos must be enabled, see :ref:`install-software`. -Install the ``ondemand-dex`` RPM: +Install the ``ondemand-dex`` package: - .. code-block:: sh +.. tabs:: + + .. tab:: yum/dnf + + .. code-block:: sh + + sudo yum install ondemand-dex + + + .. tab:: apt + + .. code-block:: sh - sudo yum install ondemand-dex + sudo apt-get install ondemand-dex Installing OnDemand Dex from source ----------------------------------- diff --git a/source/conf.py b/source/conf.py index b29179111..e34feff2c 100644 --- a/source/conf.py +++ b/source/conf.py @@ -68,9 +68,9 @@ # built documents. # # The short X.Y version. -version = u'3.0' +version = u'3.1' # The full version, including alpha/beta/rc tags. -release = u'3.0.3' +release = u'3.1.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/source/how-tos/debug/debug-apache.rst b/source/how-tos/debug/debug-apache.rst index a364d1c9c..2aa0eed6b 100644 --- a/source/how-tos/debug/debug-apache.rst +++ b/source/how-tos/debug/debug-apache.rst @@ -36,7 +36,7 @@ Restart services sudo systemctl try-restart httpd - .. tab:: Ubuntu + .. tab:: Ubuntu & Debian .. code-block:: sh @@ -73,7 +73,7 @@ Or you're using the wrong hostname in your browser. sudo /sbin/httpd -S - .. tab:: Ubuntu + .. tab:: Ubuntu & Debian .. code-block:: sh diff --git a/source/how-tos/monitoring/prometheus.rst b/source/how-tos/monitoring/prometheus.rst index 035461b86..05d53b049 100644 --- a/source/how-tos/monitoring/prometheus.rst +++ b/source/how-tos/monitoring/prometheus.rst @@ -25,7 +25,7 @@ Dependencies: Install via RPM -------------------------- -For RHEL/CentOS 7 and RHEL/Rocky 8 systems the `ondemand_exporter`_ can be installed via RPM. +For yum/dnf based systems the `ondemand_exporter`_ can be installed via RPM. .. code-block:: sh @@ -34,22 +34,24 @@ For RHEL/CentOS 7 and RHEL/Rocky 8 systems the `ondemand_exporter`_ can be insta The RPM will install the following files that should work out of the box: - **RHEL/CentOS 7 only**: /opt/rh/httpd24/root/etc/httpd/conf.d/ondemand_exporter.conf -- **RHEL/Rocky 8 only**: /etc/httpd/conf.d/ondemand_exporter.conf +- **RHEL/Rocky/AlmaLinux 8 & 9 only**: /etc/httpd/conf.d/ondemand_exporter.conf - /etc/sudoers.d/ondemand_exporter Ensure that the new Apache configuration is loaded by restarting Apache -RHEL/CentOS 7 +.. tabs:: - .. code-block:: sh + .. tab:: RHEL/CentOS 7 - sudo systemctl restart httpd24-httpd + .. code-block:: sh -RHEL/Rocky 8 + sudo systemctl restart httpd24-httpd - .. code-block:: sh + .. tab:: RHEL/Rocky/Alma Linux 8 & 9 - sudo systemctl restart httpd + .. code-block:: sh + + sudo systemctl restart httpd Start the service @@ -69,7 +71,7 @@ Check for the `ondemand_exporter Latest Release`_ version number. Replace ``VER .. code-block:: sh - VERSION="0.8.0" + VERSION="0.10.0" ARCHIVE="ondemand_exporter-${VERSION}.linux-amd64" wget -O /tmp/${ARCHIVE}.tar.gz https://github.com/OSC/ondemand_exporter/releases/download/v${VERSION}/${ARCHIVE}.tar.gz tar xf /tmp/${ARCHIVE}.tar.gz -C /tmp @@ -78,19 +80,21 @@ Check for the `ondemand_exporter Latest Release`_ version number. Replace ``VER sudo install -o root -g root -m 0644 /tmp/${ARCHIVE}/files/ondemand_exporter.service /etc/systemd/system/ sudo systemctl daemon-reload -RHEL/CentOS 7 +.. tabs:: - .. code-block:: sh + .. tab:: RHEL/CentOS 7 - sudo install -o root -g root -m 0440 /tmp/${ARCHIVE}/files/apache.conf /opt/rh/httpd24/root/etc/httpd/conf.d/ondemand_exporter.conf - sudo systemctl restart httpd24-httpd + .. code-block:: sh -RHEL/Rocky 8 + sudo install -o root -g root -m 0440 /tmp/${ARCHIVE}/files/apache.conf /opt/rh/httpd24/root/etc/httpd/conf.d/ondemand_exporter.conf + sudo systemctl restart httpd24-httpd - .. code-block:: sh + .. tab:: RHEL/Rocky/Alma Linux 8 & 9 + + .. code-block:: sh - sudo install -o root -g root -m 0440 /tmp/${ARCHIVE}/files/apache.conf /etc/httpd/conf.d/ondemand_exporter.conf - sudo systemctl restart httpd + sudo install -o root -g root -m 0440 /tmp/${ARCHIVE}/files/apache.conf /etc/httpd/conf.d/ondemand_exporter.conf + sudo systemctl restart httpd **(Optional)** If Passenger was not installed via ``ondemand-passenger`` RPM. Adjust the path to ``passenger-status`` as needed @@ -101,6 +105,7 @@ RHEL/Rocky 8 [Service] Environment="PASSENGER_STATUS=/usr/sbin/passenger-status" EOF + sudo systemctl daemon-reload Start the service diff --git a/source/installation.rst b/source/installation.rst index bdc5586a3..050853fcb 100644 --- a/source/installation.rst +++ b/source/installation.rst @@ -6,7 +6,7 @@ Installation The OnDemand host machine needs to be setup *similarly* to a login node. This means that it will need: -- RedHat/CentOS 7+ or Ubuntu 20.04-22.04 +- RedHat/CentOS 7+ or Ubuntu 20.04-22.04 or Debian 12 or Amazon Linux 2023 - the resource manager (e.g., Torque, Slurm, or LSF) client binaries and libraries used by the batch servers installed - configuration on both OnDemand node **and batch servers** to be able to diff --git a/source/installation/add-ssl.rst b/source/installation/add-ssl.rst index a33df8b41..356a8460b 100644 --- a/source/installation/add-ssl.rst +++ b/source/installation/add-ssl.rst @@ -76,7 +76,7 @@ authority. sudo yum update ca-certificates - .. tab:: Ubuntu + .. tab:: Ubuntu & Debian .. code:: sh @@ -96,7 +96,7 @@ authority you're using and run these commands to copy it to the appropriate plac sudo cp /etc/pki/ca-trust/source/anchors/ sudo update-ca-trust - .. tab:: Ubuntu + .. tab:: Ubuntu & Debian .. code:: sh diff --git a/source/installation/install-software.rst b/source/installation/install-software.rst index 7f6f7305b..df24ef781 100644 --- a/source/installation/install-software.rst +++ b/source/installation/install-software.rst @@ -6,7 +6,7 @@ Install Software Open OnDemand uses these packages, among many others. - `Apache HTTP Server 2.4`_ -- Ruby 2.7 with :command:`rake`, :command:`bundler`, and development +- Ruby 3.0 with :command:`rake`, :command:`bundler`, and development libraries - Node.js 14 @@ -19,8 +19,8 @@ Some operating systems use `Software Collections`_ to satisfy these. .. warning:: - Be sure to check :ref:`Supported Operating Systems ` before proceeding with install to verify - you are on a supported operating system. + Be sure to check :ref:`Supported Operating Systems and Architectures ` before proceeding with install to verify + you are on a supported operating system and architecture. .. warning:: @@ -40,20 +40,21 @@ Some operating systems use `Software Collections`_ to satisfy these. sudo yum install centos-release-scl epel-release - .. tab:: RockyLinux 8 + .. tab:: RockyLinux/Alma Linux 8 .. code-block:: sh sudo dnf config-manager --set-enabled powertools sudo dnf install epel-release - sudo dnf module enable ruby:3.0 nodejs:14 + sudo dnf module enable ruby:3.1 nodejs:18 - .. tab:: RockyLinux 9 + .. tab:: RockyLinux/Alma Linux 9 .. code-block:: sh sudo dnf config-manager --set-enabled crb sudo dnf install epel-release + sudo dnf module enable ruby:3.1 nodejs:18 .. tab:: RHEL 7 @@ -74,7 +75,7 @@ Some operating systems use `Software Collections`_ to satisfy these. .. code-block:: sh sudo dnf install epel-release - sudo dnf module enable ruby:3.0 nodejs:14 + sudo dnf module enable ruby:3.1 nodejs:18 sudo subscription-manager repos --enable codeready-builder-for-rhel-8-x86_64-rpms @@ -83,7 +84,7 @@ Some operating systems use `Software Collections`_ to satisfy these. .. code-block:: sh sudo dnf install epel-release - sudo dnf module enable ruby:3.0 nodejs:16 + sudo dnf module enable ruby:3.1 nodejs:18 sudo subscription-manager repos --enable codeready-builder-for-rhel-9-x86_64-rpms 2. Add repository and install @@ -91,26 +92,71 @@ Some operating systems use `Software Collections`_ to satisfy these. .. tabs:: - .. tab:: yum/dnf + .. tab:: RedHat/CentOS 7 .. code-block:: sh - sudo yum install https://yum.osc.edu/ondemand/{{ ondemand_version }}/ondemand-release-web-{{ ondemand_version }}-1.noarch.rpm + sudo yum install https://yum.osc.edu/ondemand/{{ ondemand_version }}/ondemand-release-web-{{ ondemand_version }}-1.el7.noarch.rpm sudo yum install ondemand + .. tab:: RedHat/Rocky Linux/AlmaLinux 8 - .. tab:: apt + .. code-block:: sh + + sudo dnf install https://yum.osc.edu/ondemand/{{ ondemand_version }}/ondemand-release-web-{{ ondemand_version }}-1.el8.noarch.rpm + + sudo dnf install ondemand + + .. tab:: RedHat/Rocky Linux/AlmaLinux 9 + + .. code-block:: sh + + sudo dnf install https://yum.osc.edu/ondemand/{{ ondemand_version }}/ondemand-release-web-{{ ondemand_version }}-1.el9.noarch.rpm + + sudo dnf install ondemand + + .. tab:: Ubuntu 20.04 + + .. code-block:: sh + + sudo apt install apt-transport-https ca-certificates + wget -O /tmp/ondemand-release-web_{{ ondemand_version }}.0-focal_all.deb https://apt.osc.edu/ondemand/{{ ondemand_version }}/ondemand-release-web_{{ ondemand_version }}.0-focal_all.deb + sudo apt install /tmp/ondemand-release-web_{{ ondemand_version }}.0-focal_all.deb + sudo apt update + + sudo apt install ondemand + + .. tab:: Ubuntu 22.04 + + .. code-block:: sh + + sudo apt install apt-transport-https ca-certificates + wget -O /tmp/ondemand-release-web_{{ ondemand_version }}.0-jammy_all.deb https://apt.osc.edu/ondemand/{{ ondemand_version }}/ondemand-release-web_{{ ondemand_version }}.0-jammy_all.deb + sudo apt install /tmp/ondemand-release-web_{{ ondemand_version }}.0-jammy_all.deb + sudo apt update + + sudo apt install ondemand + + .. tab:: Debian 12 .. code-block:: sh sudo apt install apt-transport-https ca-certificates - wget -O /tmp/ondemand-release-web_{{ ondemand_version }}.0_all.deb https://apt.osc.edu/ondemand/{{ ondemand_version }}/ondemand-release-web_{{ ondemand_version }}.0_all.deb - sudo apt install /tmp/ondemand-release-web_{{ ondemand_version }}.0_all.deb + wget -O /tmp/ondemand-release-web_{{ ondemand_version }}.0-bookworm_all.deb https://apt.osc.edu/ondemand/{{ ondemand_version }}/ondemand-release-web_{{ ondemand_version }}.0-bookworm_all.deb + sudo apt install /tmp/ondemand-release-web_{{ ondemand_version }}.0-bookworm_all.deb sudo apt update sudo apt install ondemand + .. tab:: Amazon Linux 2023 + + .. code-block:: sh + + sudo dnf install https://yum.osc.edu/ondemand/{{ ondemand_version }}/ondemand-release-web-{{ ondemand_version }}-1.amzn2023.noarch.rpm + + sudo dnf install ondemand + 3. Start services ----------------- @@ -131,13 +177,20 @@ Some operating systems use `Software Collections`_ to satisfy these. sudo systemctl start httpd sudo systemctl enable httpd - .. tab:: Ubuntu + .. tab:: Ubuntu & Debian .. code-block:: sh sudo systemctl start apache2 sudo systemctl enable apache2 + .. tab:: Amazon Linux 2023 + + .. code-block:: sh + + sudo systemctl start httpd + sudo systemctl enable httpd + 4. Verify installation ---------------------- @@ -152,7 +205,7 @@ After adding authentication, but before actually testing that it works, you shou You may also want to :ref:`enable SELinux `. -If you're seeing the default Apache page (Ubuntu users will) you will have to :ref:`debug virtualhosts ` +If you're seeing the default Apache page (Ubuntu & Debian users will) you will have to :ref:`debug virtualhosts ` and likely :ref:`configure a servername `. Building From Source diff --git a/source/release-notes.rst b/source/release-notes.rst index 69d1c6f16..a645b7e8a 100644 --- a/source/release-notes.rst +++ b/source/release-notes.rst @@ -6,6 +6,7 @@ Release Notes .. toctree:: :maxdepth: 2 + release-notes/v3.1-release-notes release-notes/v3.0-release-notes release-notes/v2.0-release-notes release-notes/v1.8-release-notes diff --git a/source/release-notes/v3.1-release-notes.rst b/source/release-notes/v3.1-release-notes.rst new file mode 100644 index 000000000..c51a6299f --- /dev/null +++ b/source/release-notes/v3.1-release-notes.rst @@ -0,0 +1,206 @@ +.. _v3.1-release-notes: + +v3.1 Release Notes +================== + +Administrative changes +---------------------- + +- `Deprecations`_ +- `Dependency updates`_ +- `Upgrade directions`_ + +New Features +------------ + +- `aarch64/arm64 and ppc64le packages`_ +- `Amazon Linux 2023 packages`_ +- `Debian 12 packages`_ + +Details of administrative changes +--------------------------------- + +Deprecations +............ + +RedHat/CentOS 7 packages deprecated +*********************************** + +OnDemand 3.1 will be the last OnDemand release to support RedHat/CentOS 7. + +Dependency updates +.................. + +This release updates the following dependencies: + +- Ruby 3.1 **(RHEL 8 & 9 only)** + + .. warning:: The change in Ruby version means any Ruby based apps that are not provided by the OnDemand RPM must be rebuilt or supply their own ``bin/ruby`` to use the older version of ruby. + +- NodeJS 18 **(All OSes except RHEL 7)** + + .. warning:: The change in Node version means any Node based apps that are not provided by the OnDemand RPM must be rebuilt. + +- Passenger 6.0.17 +- NGINX 1.22.1 +- ondemand-dex 2.36.0 +- mod_auth_openidc 2.4.14.1 (RHEL 7 & 8 only) + +Upgrade directions +.................. + +.. warning:: + + As always please update the *development* or *test* instances of OnDemand installed at your center first to test and verify before you modify the *production* instance. + +.. warning:: + + The OnDemand upgrade has only been tested going from 3.0.x to 3.1.x. + +#. Update OnDemand release RPM + + .. tabs:: + + .. tab:: RedHat/CentOS 7 + + .. code-block:: sh + + sudo yum install -y https://yum.osc.edu/ondemand/3.1/ondemand-release-web-3.1-1.el7.noarch.rpm + + + .. tab:: RedHat/Rocky Linux/AlmaLinux 8 + + .. code-block:: sh + + sudo yum install -y https://yum.osc.edu/ondemand/3.1/ondemand-release-web-3.1-1.el8.noarch.rpm + + .. tab:: RedHat/Rocky Linux/AlmaLinux 8 + + .. code-block:: sh + + sudo yum install -y https://yum.osc.edu/ondemand/3.1/ondemand-release-web-3.1-1.el9.noarch.rpm + + .. tab:: Ubuntu 20.04 + + .. code-block:: sh + + wget -O /tmp/ondemand-release-web_3.1.0-focal_all.deb https://apt.osc.edu/ondemand/3.1/ondemand-release-web_3.1.0-focal_all.deb + sudo apt install /tmp/ondemand-release-web_3.1.0-focal_all.deb + sudo apt update + + .. tab:: Ubuntu 22.04 + + .. code-block:: sh + + wget -O /tmp/ondemand-release-web_3.1.0-jammy_all.deb https://apt.osc.edu/ondemand/3.1/ondemand-release-web_3.1.0-jammy_all.deb + sudo apt install /tmp/ondemand-release-web_3.1.0-jammy_all.deb + sudo apt update + +#. Enable dependencies + + **RHEL/Rocky/AlmaLinux 8 & 9 only** + + .. code-block:: sh + + sudo dnf module reset nodejs + sudo dnf module enable nodejs:18 + sudo dnf module reset ruby + sudo dnf module enable ruby:3.1 + +#. Update OnDemand + + .. tabs:: + + .. tab:: yum/dnf + + .. code-block:: sh + + sudo yum clean all + sudo yum update ondemand + + + .. tab:: apt + + .. code-block:: sh + + sudo apt-get --only-upgrade install ondemand + +#. (Optional) If using Dex based authentiction, update the ``ondemand-dex`` package. + + .. tabs:: + + .. tab:: yum/dnf + + .. code-block:: sh + + sudo yum update ondemand-dex + + + .. tab:: apt + + .. code-block:: sh + + sudo apt-get --only-upgrade install ondemand-dex + +#. Update Apache configuration and restart Apache. + + .. code-block:: sh + + sudo /opt/ood/ood-portal-generator/sbin/update_ood_portal + + .. tabs:: + + .. tab:: RedHat/CentOS 7 + + .. code-block:: sh + + sudo systemctl try-restart httpd24-httpd.service + + .. tab:: RedHat/Rocky Linux/AlmaLinux 8 & 9 + + .. code-block:: sh + + sudo systemctl try-restart httpd + + .. tab:: Ubuntu 20.04 & 22.04 + + .. code-block:: sh + + sudo systemctl try-restart apache2 + +#. (Optional) If ``ondemand-dex`` was installed, restart the ``ondemand-dex`` service. + + .. code-block:: sh + + sudo systemctl try-restart ondemand-dex.service + +#. (Optional) If ``ondemand-selinux`` was installed, see :ref:`ood_selinux_updates` + +#. Force all PUNs to restart + + .. code-block:: sh + + sudo /opt/ood/nginx_stage/sbin/nginx_stage nginx_clean -f + +Details of new features +----------------------- + +aarch64/arm64 and ppc64le packages +.................................. + +Added aarch64/arm64 and ppc64le packages for some operating systems. +See :ref:`Supported Operating Systems and Architectures ` +for a full list of which operating systems support aarch64 and ppc64le. + + +Amazon Linux 2023 packages +.......................... + +Added Amazon Linux 2023 packages. +See :ref:`install-software` for installation instructions. + +Debian 12 packages +.................. + +Added Debian 12 packages. +See :ref:`install-software` for installation instructions. diff --git a/source/requirements.rst b/source/requirements.rst index a5d2ff10e..bd2a85997 100644 --- a/source/requirements.rst +++ b/source/requirements.rst @@ -8,13 +8,22 @@ Supported Operating Systems .. _os-support: -At this time OnDemand only supports the following operating systems: - -- RedHat/CentOS 7 -- RedHat/Rocky Linux/AlmaLinux 8 -- RedHat/Rocky Linux/AlmaLinux 9 -- Ubuntu 20.04 -- Ubuntu 22.04 +At this time OnDemand only supports the following operating systems and architectures: + +.. role:: raw-html(raw) + :format: html + +.. csv-table:: Operating System and Architecture Support + :header: "","x86_64","aarch64/arm64","ppc64le" + :stub-columns: 1 + + "RedHat/CentOS 7",:raw-html:`✅`,:raw-html:`✅`,:raw-html:`✅` + "RedHat/Rocky Linux/AlmaLinux 8",:raw-html:`✅`,:raw-html:`✅`,:raw-html:`✅` + "RedHat/Rocky Linux/AlmaLinux 9",:raw-html:`✅`,:raw-html:`✅`,:raw-html:`✅` + "Ubuntu 20.04",:raw-html:`✅`,:raw-html:`✅`,:raw-html:`❌` + "Ubuntu 22.04",:raw-html:`✅`,:raw-html:`✅`,:raw-html:`❌` + "Debian 12",:raw-html:`✅`,:raw-html:`✅`,:raw-html:`✅` + "Amazon Linux 2023",:raw-html:`✅`,:raw-html:`✅`,:raw-html:`❌` Software Requirements --------------------- From 6e43cfa33689c992d1426fc244b058bb60fa6c29 Mon Sep 17 00:00:00 2001 From: Jeff Ohrstrom Date: Tue, 12 Dec 2023 10:23:08 -0500 Subject: [PATCH 07/16] add docs for custom_javascript_files (#910) --- source/reference/files/ondemand-d-ymls.rst | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/source/reference/files/ondemand-d-ymls.rst b/source/reference/files/ondemand-d-ymls.rst index 04bba3842..e25f1a0b3 100644 --- a/source/reference/files/ondemand-d-ymls.rst +++ b/source/reference/files/ondemand-d-ymls.rst @@ -245,6 +245,27 @@ Configuration Properties with profile support custom_css_files: ["/myfolder/navigation.css", "/myfolder/pinned_apps.css"] +.. describe:: custom_javascript_files (Array, []) + + List of relative URLs to custom javascript files to include in all Dashboard pages. + These javascript files can be used to customize the behavior of the Dashboard. + + The relative path will be prefixed with the value of the ``public_url`` property. + + Default + Empty list, no custom javascript files will be included. + + .. code-block:: yaml + + custom_javascript_files: [] + + Example + Add two custom Javascript files: ``/myfolder/navigation.js`` and ``/myfolder/pinned_apps.js`` to the Dashboard. + + .. code-block:: yaml + + custom_javascript_files: ["/myfolder/navigation.js", "/myfolder/pinned_apps.js"] + .. describe:: dashboard_title (String, 'Open OnDemand') The text to use as the main navigation logo. If the ``dashboard_header_img_logo`` property is defined, From 24b5bf4731cfcbc7eda09682dd60975befccf5f2 Mon Sep 17 00:00:00 2001 From: Jeff Ohrstrom Date: Tue, 12 Dec 2023 12:24:08 -0500 Subject: [PATCH 08/16] update documentation for google analytics (#911) --- source/how-tos/analytics/google-analytics.rst | 69 ++----------------- source/reference/files/ondemand-d-ymls.rst | 20 ++++++ 2 files changed, 27 insertions(+), 62 deletions(-) diff --git a/source/how-tos/analytics/google-analytics.rst b/source/how-tos/analytics/google-analytics.rst index 8254a322f..f33c25880 100644 --- a/source/how-tos/analytics/google-analytics.rst +++ b/source/how-tos/analytics/google-analytics.rst @@ -20,76 +20,21 @@ If you wish you can setup your Open-OnDemand instance to send usage data to Goog Configure Open OnDemand -------------------------- -Add your google analytics id your ood_portal.yml file. -.. code-block:: yaml +Refer to the :ref:`ondemand.d configuration property google_analytics_tag_id ` +on how to configure this feature. - # /etc/ood/config/ood_portal.yml - --- - - analytics: - # the id will be specific to your account, but url is likely the same - id: UA-99999999-1 - url: "http://www.google-analytics.com/collect" - -This configuration will generate a block similar to this in your apache's -``ood-portal.conf`` file (after running the ood-portal-generator). - -.. code-block:: apache - - - ... - - SetEnv OOD_ANALYTICS_TRACKING_URL "http://www.google-analytics.com/collect" - SetEnv OOD_ANALYTICS_TRACKING_ID "UA-99999999-1" - LuaHookLog analytics.lua analytics_handler - - -Configure Google Analytics ------------------------------- - -You'll need to create all of these custom dimensions and custom metrics in the appropriate GA -account(s). - -.. warning:: - - Order matters here! Index numbers are given to ensure you create and define these - items in the correct order. Otherwise Google Analytics will be incorrectly indexing - these metrics. - - As an example say Username gets index 3 instead of index 1. Now when you query for - `dimension3` thinking it's timestamps, you'll get back usernames instead! - -.. table:: GA custom dimensions - :widths: auto - - =================== ======== ============ - Name Index Scope - =================== ======== ============ - Username 1 User - Session ID 2 Session - Timestamp 3 Hit - Remote Username 4 Hit - Request Method 5 Hit - Request Status 6 Hit - Document Referrer 7 Hit - =================== ======== ============ - -.. table:: GA custom metrics - :widths: auto - - =================== ======== ============ ================ - Name Index Scope Formatting Type - =================== ======== ============ ================ - Proxy Time 1 Hit Integer - User Map Time 2 Hit Integer - =================== ======== ============ ================ Querying Google Analytics --------------------------- .. _GA client libraries: https://developers.google.com/analytics/devguides/reporting/core/v3/libraries +.. warning:: + This documentation is for GA version 3. With the newer versions of GA this may not + work as intended. As OSC does not use GA we're unable to update these examples + ourselves, but would accept updates for the same. + Now that you have Open-OnDemand sending information to GA and it's all configured correctly, you can now query GA for this information, parse it and present it in any fashion you like. diff --git a/source/reference/files/ondemand-d-ymls.rst b/source/reference/files/ondemand-d-ymls.rst index e25f1a0b3..0ceb04731 100644 --- a/source/reference/files/ondemand-d-ymls.rst +++ b/source/reference/files/ondemand-d-ymls.rst @@ -806,3 +806,23 @@ Configuration Properties endpoint: "9f1fe759-xxxx-xxxx-xxxx-xxxxxxxxxxxx" endpoint_path: "/" +.. _google_analytics_tag_id: + +.. describe:: google_analytics_tag_id (String, nil) + + Configure Google Analytics by supplying a tag id. + + Default + Google Analytics is disabled. + + .. code-block:: yaml + + google_analytics_tag_id: nil + + Example + Google Analytics is enabled and will upload data to the + tag id ``abc123``. + + .. code-block:: yaml + + google_analytics_tag_id: 'abc123' From 4fb2e742b4510fc480732236235ee9d55903d318 Mon Sep 17 00:00:00 2001 From: Jeff Ohrstrom Date: Wed, 13 Dec 2023 10:29:29 -0500 Subject: [PATCH 09/16] add docs for passenger_log_file (#913) --- source/reference/files/nginx-stage-yml.rst | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/source/reference/files/nginx-stage-yml.rst b/source/reference/files/nginx-stage-yml.rst index 985a9d131..9658b0cd1 100644 --- a/source/reference/files/nginx-stage-yml.rst +++ b/source/reference/files/nginx-stage-yml.rst @@ -324,6 +324,28 @@ Configuration Options passenger_pool_idle_time: 900 +.. describe:: passenger_log_file (String) + + The log file that passenger will write standard out and standard + error to. + + .. note:: + You may use the variable ``%{user}`` to write user specific files. + + Default + Write to a per user location in ``/var/log/ondemand-nginx/``. + + .. code-block:: yaml + + passenger_log_file: '/var/log/ondemand-nginx/%{user}/error.log' + + Example + Write to a per user location in ``/some/other/location/``. + + .. code-block:: yaml + + passenger_log_file: '/some/other/location/%{user}/error.log' + .. describe:: passenger_options (Hash) A Hash of additional Passenger options From d4f349daa410c7db17d4410db6f06a514376f979 Mon Sep 17 00:00:00 2001 From: Jeff Ohrstrom Date: Wed, 13 Dec 2023 11:35:21 -0500 Subject: [PATCH 10/16] add documentation for remote file validaton (#914) --- source/reference/files/ondemand-d-ymls.rst | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/source/reference/files/ondemand-d-ymls.rst b/source/reference/files/ondemand-d-ymls.rst index 0ceb04731..6e82d4d05 100644 --- a/source/reference/files/ondemand-d-ymls.rst +++ b/source/reference/files/ondemand-d-ymls.rst @@ -736,6 +736,26 @@ Configuration Properties remote_files_enabled: true + +.. describe:: remote_files_validation (Boolean, false) + + Enable validating remote files on startup. + + Default + Remote file systems will not be validated on startup. + + .. code-block:: yaml + + remote_files_validation: false + + Example + Remote file systems will be validated on startup. + + .. code-block:: yaml + + remote_files_validation: true + + .. describe:: hide_app_version (Boolean, false) Hide the interactive application's version. From cdfb57dc9b67a2fc30d04204b6c31302f162a095 Mon Sep 17 00:00:00 2001 From: Jeff Ohrstrom Date: Thu, 14 Dec 2023 10:02:13 -0500 Subject: [PATCH 11/16] add docs on motd_render_html (#915) Add docs on motd_render_html. --- source/customizations.rst | 6 ++++++ source/reference/files/ondemand-d-ymls.rst | 22 ++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/source/customizations.rst b/source/customizations.rst index dfddc0bf0..203a9b3f6 100644 --- a/source/customizations.rst +++ b/source/customizations.rst @@ -73,6 +73,12 @@ To display a MOTD file on the Dashboard ensure that the environment variables `` .. tip:: The ``_erb`` formats support ERB rendering to generate more dynamic messages. +.. warning:: + Some MOTD formats like ``rss``, ``markdown`` and ``markdown_erb`` can contain malicous + HTML content. For your safety, by default, the Open OnDemand system will not render + HTML. We provide :ref:`a configuration to enable HTML rendering in MOTD ` + should you need to render HTML. + .. figure:: /images/dashboard_motd.png :align: center diff --git a/source/reference/files/ondemand-d-ymls.rst b/source/reference/files/ondemand-d-ymls.rst index 6e82d4d05..87f6b574a 100644 --- a/source/reference/files/ondemand-d-ymls.rst +++ b/source/reference/files/ondemand-d-ymls.rst @@ -846,3 +846,25 @@ Configuration Properties .. code-block:: yaml google_analytics_tag_id: 'abc123' + + +.. _motd_render_html: +.. describe:: motd_render_html (Boolean, false) + + Render HTML in the Message of the Day (MOTD). This + configuration was added because some MOTD formats like + RSS can generate HTML that is potentially unsafe. + + Default + The Message of the day will not render HTML. + + .. code-block:: yaml + + motd_render_html: false + + Example + The Message of the day will render HTML. + + .. code-block:: yaml + + motd_render_html: true From d434a63bc49d8e3ba3dc65a83efb912b6165f182 Mon Sep 17 00:00:00 2001 From: Jeff Ohrstrom Date: Thu, 14 Dec 2023 12:26:10 -0500 Subject: [PATCH 12/16] add docs for dynamic check boxes (#916) --- .../interactive/dynamic-form-widgets.rst | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/source/how-tos/app-development/interactive/dynamic-form-widgets.rst b/source/how-tos/app-development/interactive/dynamic-form-widgets.rst index 9e46df628..9d094e486 100644 --- a/source/how-tos/app-development/interactive/dynamic-form-widgets.rst +++ b/source/how-tos/app-development/interactive/dynamic-form-widgets.rst @@ -95,6 +95,24 @@ instructs the webpage to hide the ``cuda_version`` when the ``standard`` - 'gpu' +Additionally, you can use ``check_box`` widgets to hide elements. +Here we have a checkbox ``enable_cuda_version`` that will show +``cuda_version`` when checked and hide it when it's not checked. + +.. tip:: + Checkboxes respond to ``when-checked: true`` and ``when-unchecked: true`` + for hiding elements when checked or unchecked. + +.. code-block:: yaml + :emphasize-lines: 6 + + attributes: + enable_cuda_version: + widget: 'check_box' + html_options: + data: + hide-cuda-version-when-unchecked: true + Dynamic Min and Maxes ********************* @@ -149,22 +167,31 @@ account automatically based on the selection of node type. In this example, when ``standard`` ``node_type`` is chosen, the ``charge_account`` element will be automatically set to ``standard-charge-code``. +In addition to setting strings, option choices can also set check boxes. +You will see in this example that when you change the ``node_type`` selection +the ``enable_gpu`` check box will either be checked or unchecked. + .. code-block:: yaml form: + - enable_gpu - charge_account - node_type attributes: + enable_gpu: + widget: check_box node_type: widget: select options: - [ 'standard', 'standard', - data-set-charge-account: 'standard-charge-code' + data-set-charge-account: 'standard-charge-code', + data-set-enable-gpu: 0 ] - [ 'gpu', 'gpu', data-set-charge-account: 'gpu-charge-code', + data-set-enable-gpu: 1 ] From 2165f5e406719dad02ec3de3859a12488a8d8351 Mon Sep 17 00:00:00 2001 From: Jeff Ohrstrom Date: Fri, 12 Jan 2024 09:46:38 -0500 Subject: [PATCH 13/16] 3.1 rns (#922) Update release notes for 3.1. This adds: * adds globus to the release notes * adds documentattion for path_selector. * add ga4 to release notes. * add dynamic checkboxes to release notes. * adds documentation for disabling uploads & downloads and adds it to the release notes. * add custom_javascript_files to release notes. * add docs for completed.html.erb and restructure this a bit to accommodate it. --- .../how-tos/app-development/interactive.rst | 11 +- .../interactive/additional-info.rst | 47 +++ .../interactive/form-widgets.rst | 285 ++++++++++-------- .../app-development/interactive/view.rst | 24 -- source/reference/files/ondemand-d-ymls.rst | 41 +++ source/release-notes/v3.1-release-notes.rst | 65 ++++ 6 files changed, 318 insertions(+), 155 deletions(-) create mode 100644 source/how-tos/app-development/interactive/additional-info.rst diff --git a/source/how-tos/app-development/interactive.rst b/source/how-tos/app-development/interactive.rst index 8f1608206..10f09e0e0 100644 --- a/source/how-tos/app-development/interactive.rst +++ b/source/how-tos/app-development/interactive.rst @@ -9,12 +9,14 @@ currently provided for all Open OnDemand applications but requires further An Interactive App is a plugin that follows a custom file/directory structure and API that can be described by the five stages: -:ref:`app-development-manifest` +:ref:`app-development-manifest`, :ref:`app-development-interactive-form`, :ref:`app-development-interactive-template`, -:ref:`app-development-interactive-submit`, and +:ref:`app-development-interactive-submit` and :ref:`app-development-interactive-view`. +Additionally, there is :ref:`app-development-interactive-additional-info`. + A typical file/directory structure for an Interactive App can look like:: my_app/ @@ -24,7 +26,9 @@ A typical file/directory structure for an Interactive App can look like:: ├── template │ ├── before.sh.erb │ └── script.sh.erb - └── view.html.erb + ├── view.html.erb + ├── info.{md,html}.erb + └── completed.{md,html}.erb Each of these files/directories are described below in their respective stage. @@ -41,3 +45,4 @@ Each of these files/directories are described below in their respective stage. interactive/view interactive/sub-apps interactive/conn-params + interactive/additional-info diff --git a/source/how-tos/app-development/interactive/additional-info.rst b/source/how-tos/app-development/interactive/additional-info.rst new file mode 100644 index 000000000..94a4d60fb --- /dev/null +++ b/source/how-tos/app-development/interactive/additional-info.rst @@ -0,0 +1,47 @@ +.. _app-development-interactive-additional-info: + +Adding Additional Information to the session cards +================================================== + +.. _bc_info_html_md_erb: + +info.{md,html}.erb +------------------ + +It's possible for you to add additional information to this session's card. + +You can do so by creating a Markdown file ``info.md.erb`` or an html file +``info.html.erb`` in the applications folder. Markdown files get generated +into html with # turning into an

and ## turning into an

and so on. + +Again, they're `eRuby (Embedded Ruby)`_ files so you can add some dynamic behavior +to them. Along with any library you may choose to use you can also access these +variables directly. + +id + The session UUID of the job +cluster_id + The cluster the job was submitted to +job_id + The job id from the scheduler +created_at + The time the session was created + + +.. _bc_completed_html_md_erb: + +completed.{md,html}.erb +------------------------ + +:ref:`bc_info_html_md_erb` above will display on the session's card +regardless of the state of the job - it will always be displayed. + +``completed.{md,html}.erb`` on the other hand, will only display +once the job has reached the ``completed`` state. + +You may want to add this to the session's card to display information +to the user when the job is completed. Again, as it's `eRuby (Embedded Ruby)`_ +files so you can add some dynamic behavior to them. + + +.. _eruby (embedded ruby): https://en.wikipedia.org/wiki/ERuby diff --git a/source/how-tos/app-development/interactive/form-widgets.rst b/source/how-tos/app-development/interactive/form-widgets.rst index c69da5d9d..b2df20bd5 100755 --- a/source/how-tos/app-development/interactive/form-widgets.rst +++ b/source/how-tos/app-development/interactive/form-widgets.rst @@ -1,128 +1,157 @@ -.. _form-widgets: - -Form Widgets -============ - Checkbox (check_box) - A checkbox. Note that you can change the checked and unchecked values. For example changing - them from ``1`` and ``0`` to ``yes`` and ``no``. - - .. code-block:: yaml - - test_checkbox: - widget: check_box - checked_value: 1 - unchecked_value: 0 - label: "Test Checkbox" - help: | - Your help message - -================================================================== - - Hidden Field (hidden_field) - A hidden field that will not be shown, but will still be in the HTML. - - .. code-block:: yaml - - test_hidden_field: - widget: "hidden_field" - value: "Test Hidden Field Value" - -================================================================== - - Number Field (number_field) - A number field. - - .. code-block:: yaml - - num_cores: - widget: "number_field" - label: "Number of cores" - value: 1 - help: | - Your help message - min: 1 - max: 28 - step: 1 - -================================================================== - - Radio Button (radio_button) - Note that in the options below, the text to display is on the left of the comma, and the select value is on the right of the comma. - The value: key represents the default selection. - - .. code-block:: yaml - - mode: - widget: "radio_button" - value: "1" - help: | - Your help message - options: - - ["Jupyter Lab", "1"] - - ["Jupyter Notebook", "0"] - -================================================================== - - Resolution Field (resolution_field) - Change the resolution for interactive applications that use VNC. - - .. code-block:: yaml - - test_resolution_field: - widget: "resolution_field" - label: "Test Resolution Field" - required: true - help: | - Your help message - -================================================================== - - Select Field (select) - Note that in the options below, the text to display is on the left of the comma, and the select value is on the right of the comma. - - .. code-block:: yaml - - version: - widget: "select" - label: "JupyterLab Version" - options: - - [ "3.0", "app_jupyter/3.0.17" ] - - [ "2.3", "app_jupyter/2.3.2" ] - - [ "2.2", "app_jupyter/2.2.10" ] - - [ "1.2", "app_jupyter/1.2.21" ] - help: | - Your help message - -================================================================== - - TextArea Field (text_area) - A text area. This allows for multiple lines of text input. - - .. code-block:: yaml - - test_text_area: - widget: "text_area" - label: "Test Text Area" - value: "Test Text Area Value" - help: | - Your help message - -================================================================== - - Text Field (text_field) - A text field. This only allows for a single line of text input. - - .. code-block:: yaml - - test_text_field: - widget: "text_field" - label: "Test Text Field" - value: "Test Text Value" - help: | - Your help message - -================================================================== - - - -.. _markdown: https://en.wikipedia.org/wiki/Markdown +.. _form-widgets: + +Form Widgets +============ + Checkbox (check_box) + A checkbox. Note that you can change the checked and unchecked values. For example changing + them from ``1`` and ``0`` to ``yes`` and ``no``. + + .. code-block:: yaml + + test_checkbox: + widget: check_box + checked_value: 1 + unchecked_value: 0 + label: "Test Checkbox" + help: | + Your help message + +================================================================== + + Hidden Field (hidden_field) + A hidden field that will not be shown, but will still be in the HTML. + + .. code-block:: yaml + + test_hidden_field: + widget: "hidden_field" + value: "Test Hidden Field Value" + +================================================================== + + Number Field (number_field) + A number field. + + .. code-block:: yaml + + num_cores: + widget: "number_field" + label: "Number of cores" + value: 1 + help: | + Your help message + min: 1 + max: 28 + step: 1 + +================================================================== + + Radio Button (radio_button) + Note that in the options below, the text to display is on the left of the comma, and the select value is on the right of the comma. + The value: key represents the default selection. + + .. code-block:: yaml + + mode: + widget: "radio_button" + value: "1" + help: | + Your help message + options: + - ["Jupyter Lab", "1"] + - ["Jupyter Notebook", "0"] + +================================================================== + + Resolution Field (resolution_field) + Change the resolution for interactive applications that use VNC. + + .. code-block:: yaml + + test_resolution_field: + widget: "resolution_field" + label: "Test Resolution Field" + required: true + help: | + Your help message + +================================================================== + + Select Field (select) + Note that in the options below, the text to display is on the left of the comma, and the select value is on the right of the comma. + + .. code-block:: yaml + + version: + widget: "select" + label: "JupyterLab Version" + options: + - [ "3.0", "app_jupyter/3.0.17" ] + - [ "2.3", "app_jupyter/2.3.2" ] + - [ "2.2", "app_jupyter/2.2.10" ] + - [ "1.2", "app_jupyter/1.2.21" ] + help: | + Your help message + +================================================================== + + TextArea Field (text_area) + A text area. This allows for multiple lines of text input. + + .. code-block:: yaml + + test_text_area: + widget: "text_area" + label: "Test Text Area" + value: "Test Text Area Value" + help: | + Your help message + +================================================================== + + Text Field (text_field) + A text field. This only allows for a single line of text input. + + .. code-block:: yaml + + test_text_field: + widget: "text_field" + label: "Test Text Field" + value: "Test Text Value" + help: | + Your help message + +.. _path_selector: + +================================================================== + + Path Selector (path_selector) + A Path Selector. This is a special OnDemand feature that is not + directly an HTML input type. It builds a ``text_field`` input + type, but also provides a button that will provide a modal that + allows users to navigate through directories to select a path. + + This is useful in forms where a path must be selected and you + want to allow your users to choose an arbirary path. + + ``directory`` is the initial directory the path selector will open + to when the users opens the modal. This defaults to the users' HOME. + + ``show_hidden`` is a boolean flag to show hidden files or not. This + defaults to false - it will not show hidden files. + + ``show_files`` is a boolean flag to show files or not. This defaults + to true - it will show files. + + .. code-block:: yaml + + path: + widget: "path_selector" + directory: "/fs/ess/project" + show_hidden: true + show_files: false + +================================================================== + + +.. _markdown: https://en.wikipedia.org/wiki/Markdown diff --git a/source/how-tos/app-development/interactive/view.rst b/source/how-tos/app-development/interactive/view.rst index 2f5bbc568..5f91bada7 100644 --- a/source/how-tos/app-development/interactive/view.rst +++ b/source/how-tos/app-development/interactive/view.rst @@ -189,30 +189,6 @@ In this example, the password is stored in a hidden input field that the user doesn't see and it gets communicated to the Jupyter server in the ``POST`` request. -.. _bc_info_html_md_erb: - -Adding Additional Information to the panel ------------------------------------------- - -It's possible for you to add additional information to this connection view. - -You can do so by creating a Markdown file ``info.md.erb`` or an html file -``info.html.erb`` in the applications folder. Markdown files get generated -into html with # turning into an

and ## turning into an

and so on. - -Again, they're `eRuby (Embedded Ruby)`_ files so you can add some dynamic behavior -to them. Along with any library you may choose to use you can also access these -variables directly. - -id - The session UUID of the job -cluster_id - The cluster the job was submitted to -job_id - The job id from the scheduler -created_at - The time the session was created - .. _bc_native_vnc_view: Adding Native VNC instructions to the panel diff --git a/source/reference/files/ondemand-d-ymls.rst b/source/reference/files/ondemand-d-ymls.rst index 87f6b574a..e19849d3b 100644 --- a/source/reference/files/ondemand-d-ymls.rst +++ b/source/reference/files/ondemand-d-ymls.rst @@ -245,6 +245,7 @@ Configuration Properties with profile support custom_css_files: ["/myfolder/navigation.css", "/myfolder/pinned_apps.css"] +.. _custom_javascript_files: .. describe:: custom_javascript_files (Array, []) List of relative URLs to custom javascript files to include in all Dashboard pages. @@ -755,6 +756,45 @@ Configuration Properties remote_files_validation: true +.. _upload_enabled: +.. describe:: upload_enabled (Boolean, true) + + Enable uploading files. + + Default + File uploads are enabled. + + .. code-block:: yaml + + upload_enabled: true + + Example + File uploads are disabled. Users will not be able to upload + files through Open OnDemand. + + .. code-block:: yaml + + upload_enabled: false + +.. _downlad_enabled: +.. describe:: download_enabled (Boolean, true) + + Enable downloading files. + + Default + File downloads are enabled. + + .. code-block:: yaml + + download_enabled: true + + Example + File downloads are disabled. Users will not be able to download + files through Open OnDemand. + + .. code-block:: yaml + + download_enabled: false .. describe:: hide_app_version (Boolean, false) @@ -774,6 +814,7 @@ Configuration Properties hide_app_version: true +.. _globus_endpoints: .. describe:: globus_endpoints (Array, null) Add a Globus button to the file browser that opens the current directory diff --git a/source/release-notes/v3.1-release-notes.rst b/source/release-notes/v3.1-release-notes.rst index c51a6299f..0ad1415b3 100644 --- a/source/release-notes/v3.1-release-notes.rst +++ b/source/release-notes/v3.1-release-notes.rst @@ -13,6 +13,12 @@ Administrative changes New Features ------------ +- `Globus integration`_ +- `Path Selector widget`_ +- `Google Analytics 4 support`_ +- `Dynamic Checkboxes`_ +- `Disabling uploads and downloads`_ +- `Custom Javascript files`_ - `aarch64/arm64 and ppc64le packages`_ - `Amazon Linux 2023 packages`_ - `Debian 12 packages`_ @@ -185,6 +191,65 @@ Upgrade directions Details of new features ----------------------- +Globus integration +.................. + +The files application will now provide a link to Globus endpoints +when users navigate to a directory that is within that endpoint. + +Administrators need to configure OnDemand to map directories +to Globus endpoints. Refer to the +:ref:`configuration entry for enabling globus endpoints `. + +Path Selector widget +.................... + +Open OnDemand now ships it's own ``path_selector`` form widet. +This replaces the library at https://github.com/osc/bc_js_filepicker +for centers that have or do use this library. + +You can go here to find :ref:`details on the path selector `. + +Google Analytics 4 support +.......................... + +Google Analytics has updated since version 3.0 and 3.1 has support now for +this update. + +Refer to the :ref:`google analytics configuration ` +for how to configure this. + +Dynamic Checkboxes +.................. + +``check_box`` form widgets can now be used with dynamic ``data-set`` and +``data-hide`` directives. + +Refer to :ref:`dynamic-bc-apps` for more details. + +Disabling uploads and downloads +............................... + +Sites can now disable uploads and downloads through the file +browser. See the configuration for :ref:`disabling downloads ` +and :ref:`disabling uploads ` for how to configure this. + +Custom Javascript files +....................... + +Sites can now add custom javascript files that will get loaded on every +page of the dashboard application. Refer to the +:ref:`custom_javascript_files configuration property ` +for more information. + +Support added for completed.{md,html}.erb +......................................... + +Sites can now add a ``completed.{md,html}.erb`` to interactive applications +to display information on the session's card when the job has completed. + +See :ref:`bc_completed_html_md_erb` for more information. + aarch64/arm64 and ppc64le packages .................................. From 87f1fe9a93d0ab1ce25c827fa8dffebc2dcd3406 Mon Sep 17 00:00:00 2001 From: Travis Ravert Date: Fri, 19 Jan 2024 08:39:37 -0800 Subject: [PATCH 14/16] add docs to develop dashboard and shell apps within ood itself (#912) --- .../develop_dashboard_grey_background.png | Bin 0 -> 78864 bytes .../images/develop_dashboard_pinned_apps.png | Bin 0 -> 155723 bytes source/index.rst | 1 + source/tutorials/tutorials-dashboard-apps.rst | 20 +++ .../tutorials-dashboard-apps/dashboard.rst | 145 ++++++++++++++++++ .../tutorials-dashboard-apps/shell-app.rst | 50 ++++++ 6 files changed, 216 insertions(+) create mode 100644 source/images/develop_dashboard_grey_background.png create mode 100644 source/images/develop_dashboard_pinned_apps.png create mode 100644 source/tutorials/tutorials-dashboard-apps.rst create mode 100644 source/tutorials/tutorials-dashboard-apps/dashboard.rst create mode 100644 source/tutorials/tutorials-dashboard-apps/shell-app.rst diff --git a/source/images/develop_dashboard_grey_background.png b/source/images/develop_dashboard_grey_background.png new file mode 100644 index 0000000000000000000000000000000000000000..8b5d636fd0dab865ce9f940f203c5a1edd2fe40c GIT binary patch literal 78864 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

nn%xO8xov?}fyUWW!Oi1CJ+^7B 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

N=xD8nlW>FnsUEw;jnRBzkJvSF*Ds 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 vHx7Tt1K!_x@pBsdjl_C=3J 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

    32-m^>cfcqKV`YE~q0{`r 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 X=J%`W;}UAW4_-}GJr(4`e_#C{M6#P~ literal 0 HcmV?d00001 diff --git a/source/index.rst b/source/index.rst index 3c0858082..cb76b64b7 100644 --- a/source/index.rst +++ b/source/index.rst @@ -73,6 +73,7 @@ These are institutions who were early adopters or provided HPC resources for dev install-ihpc-apps tutorials/tutorials-interactive-apps tutorials/tutorials-passenger-apps + tutorials/tutorials-dashboard-apps .. toctree:: :maxdepth: 2 diff --git a/source/tutorials/tutorials-dashboard-apps.rst b/source/tutorials/tutorials-dashboard-apps.rst new file mode 100644 index 000000000..6f6d47873 --- /dev/null +++ b/source/tutorials/tutorials-dashboard-apps.rst @@ -0,0 +1,20 @@ +.. _app-development-tutorials-dashboard-apps: + +Developing The OOD Dashboard +============================ + +.. warning:: + :ref:`enabling-development-mode` must be completed first for this tutorial to work. + +Open OnDemand is composed of several apps, one of which is the ``dashboard`` app. +You can see some of the other apps that make up OOD `here. `__ + +This tutorial aims to equip admins with the knowledge and tools for developing the Open OnDemand +``dashboard`` and ``shell`` apps directly from *within* OnDemand itself. + +.. toctree:: + :maxdepth: 2 + :caption: Tutorials + + tutorials-dashboard-apps/dashboard + tutorials-dashboard-apps/shell-app diff --git a/source/tutorials/tutorials-dashboard-apps/dashboard.rst b/source/tutorials/tutorials-dashboard-apps/dashboard.rst new file mode 100644 index 000000000..754ea6549 --- /dev/null +++ b/source/tutorials/tutorials-dashboard-apps/dashboard.rst @@ -0,0 +1,145 @@ +.. _app-development-tutorials-dashboard-apps-dashboard: + +Developing the Dashboard App +============================ + +.. warning:: + You muse have followed :ref:`enabling-development-mode` for any part of this tutorial to work. + +Things To Know +-------------- + +We are going to be using ``bundler`` through a script which comes with OOD located in the root of the +dashboard at ``bin/setup``. What this will do for us is essentially run ``bundler`` and ``npm`` to ensure +are environment is correct. This is all being pulled from the dashboard ``Gemfile``. You could, in theory, +add whatever you like to this ``Gemfile`` and rebuild OOD with that new gem for development work, as an +example. + +Also, it is recommended to set this to your local app environment so that ``bundler`` does not try and install +the gems on the system, as unlike ``npm`` which starts builds locally by default, ``bundler`` attempts +system installs by default. + +Create a Dev Dashboard +---------------------- +#. ``clone`` the OOD repo into: ``cd ~/ondemand/misc`` then ``git clone git@github.com:OSC/ondemand.git`` +#. Work out of the ``dev`` directory/space: ``cd ~/ondemand/dev/``. +#. Symlink to the ``dashboard`` app in the cloned repo: ``ln -s ../misc/ondemand/apps/dashboard/dashboard/ dashboard`` +#. Make a branch and to begin word on your dev dashboard: ``git checkout -b dev_work`` +#. Rebuild the ood dashboard app: ``bin/setup``. +#. Navigate to the Sandbox and launch your ``dashboard`` app to use the ``dev_work``. + +Notice the ``url`` for this ``/pun/dev/dashboard`` app. No longer do +you see ``/pun/sys/dashboard/`` but instead ``/pun/dev/dashboard/``. + +Add ``.env.local`` File +----------------------- +Now that we have a our dev dashboard running, a good first step is to next ensure it +looks different from the production dashboard. This will help ensure not ending up in the wrong tab, +using ``sys/dashboard`` instead of ``dev/dashboard``, and possibly causing confusion. + +Use an editor or IDE and do the following: + +.. code-block:: sh + + cd ~/ondemand/dev/dashboard + touch .env.local + vim .env.local + +The idea here is to make sure the dev dashboard *looks* different so we don't have to check that ``url`` in the +browser to know which dashboard we are in. + +Inside the ``.env.local`` we can add an environment variable to change the color of the dev dashboard like so: + +.. code-block:: sh + + # .env.local file + OOD_BRAND_BG_COLOR='grey' + +Now click the ``Develop`` dropdown menu on the upper right corner and click ``Restart Web Server``. After a few moments +you should now see the dashboard with a grey background in the banner. This will help to distinguish your dev +environment from the production. + + +.. figure:: ../../images/develop_dashboard_grey_background.png + :align: center + + Different banner color for the dev dashboard + + +Set Dev Configuration Directory +------------------------------- +Our dev dashboard is still using the same configuration files as the system dashboard, but we can change this. + +Go back into ``.env.local`` and set a new path for *the dev dashboard to pick up its own +configurations* using the ``OOD_CONFIG_D_DIRECTORY`` environment variable like so: + +.. code-block:: sh + + # .env.local file + OOD_CONFIG_D_DIRECTORY="~/ondemand/dev/dashboard/config/ondemand.d/" + +We need to *restart the PUN when we add or change environment variables* with ``bin/setup``. + +Add Dev Configurations +---------------------- +Now, we can begin to set our own configurations in our new ``ondemand.d`` directory for +the dev dashboard and see the changes. Let's add some configs to our dev dashboard to get +an idea what can be done and play with the layout. + +We will add ``pinned_apps`` to our dev dashboard as an example to see how this works. + +Create a file in the ``~/ondemand/dev/dashboard/config/ondemand.d/`` directory named ``ondemand.yml`` then +open the file and add the following: + +.. code-block:: yaml + + pinned_apps: + - sys/* + pinned_apps_menu_length: 4 + pinned_apps_group_by: category + +Assuming youre restarted the PUN when you set the new config directory above, you *should* be able to simply +refresh the browser and see the new pinned apps layout take effect. If not though, simply restart the PUN +as usual to force the changes. + +.. figure:: ../../images/develop_dashboard_pinned_apps.png + :align: center + + Dev dashboard with its own pinned apps configuration + +Now, we can begin to add other configurations to this new ``ondemand.yml`` and keep restarting +the PUN to see our changes. + +This is a great way to test out new features, or play with any features you may be interested in with OOD before +making the changes in production or spinning up a whole dev environment with a VM. + +At this point you have all the pieces needed to use the :ref:`customizations` page and play with those changes +in your dev dashboard. + +But, what if we want to add something to Open OnDemand? + +Develop OOD in OOD +------------------ +With all the above in place, you can also begin to add features and functionality to OOD in this development +setting to then see how this will actually run and work. + +Suppose you see a feature being worked on in the OOD repo on the branch ``new_feature``. How could you pull +this work down and see its current state while also trying to build it out? + +First, launch the ``shell`` and go into your dev ``dashboard`` root then: + +#. ``git pull`` +#. ``git checkout new_feature`` +#. ``bin/setup`` + +After the build you now have the feature ready to be worked right there in your dev dashboard. + +Go ahead and enter you Sandbox and launch the dev dashboard. What you are in once that is done is the current +state the feature is in. + +If you are not making any changes to the configurations, as the steps above mostly do, then each change to the code +simply requires page refreshes to see the feature work. + + + + diff --git a/source/tutorials/tutorials-dashboard-apps/shell-app.rst b/source/tutorials/tutorials-dashboard-apps/shell-app.rst new file mode 100644 index 000000000..e36c0ca9a --- /dev/null +++ b/source/tutorials/tutorials-dashboard-apps/shell-app.rst @@ -0,0 +1,50 @@ +.. _app-development-tutorials-dashboard-apps-shell-app: + +Developing the Shell App +======================== + +The ``shell`` app is significantly different from the dashboard app. It is purely a ``node.js`` app. +This means that we only need to use ``npm`` to build and do dev work. + +Create a Dev Shell +------------------ +#. ``clone`` the OOD repo into: ``cd ~/ondemand/misc`` then ``git clone git@github.com:OSC/ondemand.git`` +#. Work out of the ``dev`` directory/space: ``cd ~/ondemand/dev/``. +#. Symlink to the ``shell`` app in the cloned repo: ``ln -s ../misc/ondemand/apps/dashboard/shell/ shell`` +#. Make a branch and to begin word on your dev dashboard: ``git checkout -b dev_work`` +#. Rebuild the ``shell`` app: ``bin/setup``. +#. Navigate to the Sandbox and launch your dev ``shell`` app to use the ``dev_work`` branch. + +Notice the ``url`` for this app. No longer do you see ``*/sys/shell`` but instead ``*/dev/shell``. + +Build Old Version of Shell +.......................... + +#. pull down ondemand in ``~/ondemand/misc`` +#. then list versions with ``git tags`` +#. run ``git checkout `` +#. now make a branch with your changes and use ``bin/setup`` to rebuild if needed + +Then for the **shell app** from a login terminal run: + +#. ``cd dev`` +#. ``ln -s ../misc/ondemand/apps/dashboard/shell/ shell-18`` + +And then step into that symlinked directory and run: +#. ``bin/setup`` + +If you go start this app from sandbox you'll notice a different url than before, +showing you are in a dev shell: ``pun/dev/shell-1.8`` + +Issues and Errors +................. +Ensure you are using the correct version of Node when you go to build using ``nvm`` if possible. Sometimes +this can be set automatically for you in your ``.bashrc`` so just ensure you are on the version you should +be when you run ``bin/setup``. + + +Develop the Shell +----------------- + +At this point we have a working dev ``shell`` and can start to make changes to this code and issue rebuilds +for ``npm`` with ``bin/setup`` when needed. \ No newline at end of file From b2404169810c10b1a467dbcbe6887056d6bbb3d5 Mon Sep 17 00:00:00 2001 From: Jeff Ohrstrom Date: Tue, 23 Jan 2024 12:07:11 -0500 Subject: [PATCH 15/16] More release notes work (#925) * fix globus example * add custom directives to release notes --- source/reference/files/ondemand-d-ymls.rst | 7 ++- source/reference/files/ood-portal-yml.rst | 64 +++++++++++++++++++++ source/release-notes/v3.1-release-notes.rst | 14 +++++ 3 files changed, 83 insertions(+), 2 deletions(-) diff --git a/source/reference/files/ondemand-d-ymls.rst b/source/reference/files/ondemand-d-ymls.rst index e19849d3b..71b0a54f5 100644 --- a/source/reference/files/ondemand-d-ymls.rst +++ b/source/reference/files/ondemand-d-ymls.rst @@ -820,6 +820,9 @@ Configuration Properties Add a Globus button to the file browser that opens the current directory in the Globus transfer web app. + Note that ``endpoint_path`` is the path that Globus will initialize to + and is very likely to be ``/`` regardless of the actual storage path. + Default Null, do not enable the Globus button @@ -829,9 +832,9 @@ Configuration Properties .. code-block:: yaml globus_endpoints: - - path "/" + - path: "/" endpoint: "716de4ac-xxxx-xxxx-xxxx-xxxxxxxxxxxx" - endpoint_path "/" + endpoint_path: "/" Example Use multiple endpoints. diff --git a/source/reference/files/ood-portal-yml.rst b/source/reference/files/ood-portal-yml.rst index 9c183d0f1..0180a2a5d 100644 --- a/source/reference/files/ood-portal-yml.rst +++ b/source/reference/files/ood-portal-yml.rst @@ -126,6 +126,7 @@ Configure General Options ssl: null Example + Supply ssl information. .. code-block:: yaml @@ -135,6 +136,27 @@ Configure General Options - SSLCertificateChainFile /etc/letsencrypt/live/change-me/chain.pem +.. _disable_logs: +.. describe:: disable_logs (Boolean, false) + + Disable logs in favor of supplying log directives in some other + configuration file. + + Default + Logs are enabled and defined in this virtual host. + + .. code-block:: yaml + + disable_logs: false + + Example + Disable logs in favor of supplying log directives in some other + configuration file. + + .. code-block:: yaml + + disable_logs: true + .. describe:: logroot (String) the root directory where log files are stored (can be relative to @@ -475,6 +497,48 @@ Configure General Options - "AuthType openid-connect" - "Require valid-user" +.. _custom_vhost_directives: +.. describe:: custom_vhost_directives (Array, []) + + Supply custom directives at the virtual host level. + + Default + No custom virtual host directives. + + .. code-block:: yaml + + custom_vhost_directives: [] + + Example + Add a single custom virutal host directive + to set an environment variable. + + .. code-block:: yaml + + custom_vhost_directives: + - SetEnv FOO BAR + +.. _custom_location_directives: +.. describe:: custom_location_directives (Array, []) + + Supply custom directives for every ``Location`` in the virtual host. + + Default + No custom location directives. + + .. code-block:: yaml + + custom_location_directives: [] + + Example + Add a single custom location directive + to set an environment variable. + + .. code-block:: yaml + + custom_location_directives: + - SetEnv FOO BAR + .. describe:: root_uri (String) the URI a user is redirected to when they access the root of the website diff --git a/source/release-notes/v3.1-release-notes.rst b/source/release-notes/v3.1-release-notes.rst index 0ad1415b3..9ebf71efa 100644 --- a/source/release-notes/v3.1-release-notes.rst +++ b/source/release-notes/v3.1-release-notes.rst @@ -19,6 +19,7 @@ New Features - `Dynamic Checkboxes`_ - `Disabling uploads and downloads`_ - `Custom Javascript files`_ +- `Updated Apache options`_ - `aarch64/arm64 and ppc64le packages`_ - `Amazon Linux 2023 packages`_ - `Debian 12 packages`_ @@ -250,6 +251,19 @@ to display information on the session's card when the job has completed. See :ref:`bc_completed_html_md_erb` for more information. +Updated Apache options +...................... + +We've updated ``ood_portal.yml`` for two common apache configurations +sites may wish to enable. + +The first is to :ref:`disable apache logging ` in favor of +supplying a global log configuration in a seperate file. + +The second is to alllow for custom directives. You can now supply +:ref:`custom location directives ` +and :ref:`custom virtual host directives `. + aarch64/arm64 and ppc64le packages .................................. From 0cfa52d292174a287202366e9e82e7cb7922fe63 Mon Sep 17 00:00:00 2001 From: Jeff Ohrstrom Date: Wed, 7 Feb 2024 10:07:16 -0500 Subject: [PATCH 16/16] add a note about this chagne to the RNs (#929) --- source/reference/files/ondemand-d-ymls.rst | 13 +++++++------ source/release-notes/v3.1-release-notes.rst | 20 ++++++++++++++++++++ 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/source/reference/files/ondemand-d-ymls.rst b/source/reference/files/ondemand-d-ymls.rst index 71b0a54f5..f3da82c52 100644 --- a/source/reference/files/ondemand-d-ymls.rst +++ b/source/reference/files/ondemand-d-ymls.rst @@ -637,25 +637,26 @@ Configuration Properties module_file_dir: "/etc/reporting/modules" +.. _user_settings_file: .. describe:: user_settings_file (String, '.ood') - The name of the file to store user settings. This file is used to store the selected profile. - The path to the file is managed by the configuration variable ``Configuration.dataroot``. - This is usually: ``~/ondemand/data/sys/dashboard`` + The full path of the file to store user settings. This file is used to store + any user defined settings. Default A file called '.ood'. .. code-block:: yaml - user_settings_file: ".ood" + user_settings_file: "~/.config/ondemand/settings.yml" Example - Use ``user_settings.txt`` as the file name for user settings. + Use ``user_settings.txt`` as the file name for user settings + and change the path slightly. .. code-block:: yaml - user_settings_file: "user_settings.txt" + user_settings_file: "~/.config/local/open-ondemand/user_settings.txt" .. describe:: facl_domain (String, null) diff --git a/source/release-notes/v3.1-release-notes.rst b/source/release-notes/v3.1-release-notes.rst index 9ebf71efa..d7db53307 100644 --- a/source/release-notes/v3.1-release-notes.rst +++ b/source/release-notes/v3.1-release-notes.rst @@ -6,6 +6,7 @@ v3.1 Release Notes Administrative changes ---------------------- +- `Breaking Changes`_ - `Deprecations`_ - `Dependency updates`_ - `Upgrade directions`_ @@ -27,6 +28,25 @@ New Features Details of administrative changes --------------------------------- +Breaking Changes +................ + +User Settings File Change +************************* + +We had to change the location of the :ref:`user settings file ` +off of the ``DATAROOT`` which is cluster specific and problematic for sites that +have separate HOME directories for each cluster. + +The new default location is under the ``XDG_CONFIG_HOME``. This change was made +to accomidate sites that have separate HOME directories for each cluster. + +Sites who have never used this configuration do not need to do anything. + +Sites that have reconfigured the :ref:`user settings file ` +need to provide the full path for this file. It's recommended that you do not +use a path in the ``DATAROOT`` as that is cluster specific. + Deprecations ............