Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
f44019d
Add support for Altair PBS Professional
wolfgang-desalvador Jan 8, 2023
1311c85
Add pbs_license.erb
wolfgang-desalvador Jan 8, 2023
3eb4403
Remove unused variable from default.rb
wolfgang-desalvador Jan 8, 2023
81cb2a0
Update README.md
wolfgang-desalvador Jan 8, 2023
dcec766
Fix template description for pbspro
wolfgang-desalvador Jan 8, 2023
9e49a3d
Fix typo in Altair PBS Professional
wolfgang-desalvador Jan 9, 2023
aa7f773
Fix blob location in Readme
wolfgang-desalvador Jan 9, 2023
702832a
Fix typo in RPMs version
wolfgang-desalvador Jan 9, 2023
90d1b4a
Update template welcome text.
wolfgang-desalvador Apr 3, 2023
a1675ba
Update template welcome text.
wolfgang-desalvador Apr 3, 2023
36e1fcf
Review splash screen and license logic
wolfgang-desalvador Apr 4, 2023
7940ab0
Update pbspro template to version 2.0.20
Jan 15, 2024
e9c442c
Update pbspro.txt
wolfgang-desalvador Jan 15, 2024
6344184
Add management of UID and GID for PBS Data
Apr 27, 2024
3bf3fcd
Change UID and GID default values
Apr 27, 2024
0b47f5e
Fix setuptools version to allow dashed name
Apr 27, 2024
6930e7e
Fix pip syntax for version
Apr 27, 2024
e9b7963
add a GitHub Actions workflow for CodeQL analysis
bwatrous Jun 3, 2024
e276c17
Update githup checkout action - v2 was deprecated
bwatrous Jun 4, 2024
246a0fc
bump version to 2.0.22 and use scalelib 1.0.4
Jul 3, 2024
1dcc40c
remove requests from setup
Jul 9, 2024
523fa0d
Bump zipp from 3.6 to 3.19.1 in /pbspro
dependabot[bot] Jul 10, 2024
bb1e0f3
bump version to 2.0.23
Jul 15, 2024
59afcd7
allow underscore or dash for sdist file
Jul 15, 2024
d49e649
remove zipp as a dependency
Jul 15, 2024
fa86e2a
Bump version to 2.0.24
ryanhamel Oct 21, 2024
435a457
Use scalelib 1.0.5 to eliminate create_nodes json error
ryanhamel Oct 21, 2024
9ce0a5b
Removed ganglia references
Nov 18, 2024
016b9e7
Removed remaining cganglia reference (#77)
emilylo3 Jan 3, 2025
e0c8260
Add build script and documentation (#76)
emilylo3 Jan 13, 2025
853939b
Bump version to 2.0.25 (#78)
emilylo3 Jan 13, 2025
efdc1c5
Bump missed version to 2.0.25 (#80)
emilylo3 Jan 13, 2025
2bd084e
Merge remote-tracking branch 'upstream/master' into add-support-for-l…
wolfgang-desalvador Mar 13, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 73 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -296,6 +296,79 @@ By default, `azpbs` will use `/opt/cycle/pbspro/logging.conf`, as defined in `/o
Every `autoscale` iteration, `azpbs` prints out a table of all of the nodes, their resources, their assigned jobs and more. This log
contains these values and nothing else.

## Using Altair PBS Professional in CycleCloud

CycleCloud project for OpenPBS uses opensource version of OpenPBS. You may use your own
[Altair PBS Professional](https://www.altair.com/pbs-professional/) licenses and installers according to your Altair PBS Professional license agreement.
This section documents how to use Altair PBS Professional with the CycleCloud OpenPBS project.

### Prerequisites

This example will use the 2022.1.1 version, which has been tested with the template.

1. Users must provide Altair PBS Professional binaries (the same works with RHEL 8.x with _.el8.x86_64.rpm_)

* pbspro-client-2022.1.1.el7.x86_64.rpm
* pbspro-execution-2022.1.1.el7.x86_64.rpm
* pbspro-server-2022.1.1.el7.x86_64.rpm

2. A license server reachable from Azure CycleCloud Altair PBS Professional head node and execution nodes

3. (Optional to tune avilable versions) The cyclecloud cli must be configured. Documentation is available [here](https://docs.microsoft.com/en-us/azure/cyclecloud/install-cyclecloud-cli)


### Copy the binaries into the cloud locker

To copy the installer with _azcopy_ to the Azure CycleCloud storage account, use the following commands (the same works with RHEL 8.x with _.el8.x86_64.rpm_):

```bash

$ azcopy cp pbspro-client-2022.1.1.el7.x86_64.rpm https://<storage-account-name>.blob.core.windows.net/cyclecloud/blobs/pbspro
$ azcopy cp pbspro-execution-2022.1.1.el7.x86_64.rpm https://<storage-account-name>.blob.core.windows.net/cyclecloud/blobs/pbspro
$ azcopy cp pbspro-server-2022.1.1.el7.x86_64.rpm https://<storage-account-name>.blob.core.windows.net/cyclecloud/blobs/pbspro
```

### Define license server

In Altair PBS Professional cluster template, a specific parameter in Advanced Settings allows the definition of license server IP and port.

### Adding other versions to the cluster template

Make a local copy of the Altair PBS Professional template and modify it to use other versions of the installers
instead of the default 2022.1.1.

```bash
wget https://raw.githubusercontent.com/Azure/cyclecloud-pbspro/master/templates/pbspro.txt
```

In the _pbspro.txt_ file, locate the `PBSVersion` definition and
insert the desired version in the options. For example for version

> NOTE:
> The version should match the one in installer file name.

```ini
[[[parameter PBSVersion]]]
Label = Altair PBS Version
Config.Plugin = pico.form.Dropdown
Config.Entries := {[Label="Altair PBS Pro 2021.1"; Value="2021.1.4"]}
DefaultValue = 2021.1.4

```

These configs will make the additional versions available in the UI

### Import the cluster template file

Using the cyclecloud cli, import a cluster template from the new cluster template file.

```bash
cyclecloud import_template -f pbspro.txt --force
```

Similar to this [tutorial](https://docs.microsoft.com/en-us/azure/cyclecloud/tutorials/modify-cluster-template) in the documentation, new Altair PBS Professional cluster is now available in the *Create Cluster* menu in the UI.

Configure and create the cluster in the UI, save it, and start it.

# Contributing

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@
default[:pbspro][:autoscale_installer] = "cyclecloud-pbspro-pkg-#{node[:pbspro][:autoscale_version]}.tar.gz"
default[:pbspro][:cron_method] = "pbs_cron"
default[:pbspro][:version] = "20.0.1-0"
default[:pbspro][:license] = ""
default[:pbspro][:professional] = false
default[:pbspro][:pbsdata_uid] = 11100
default[:pbspro][:pbsdata_gid] = 11100
default[:pbspro][:slots] = nil
default[:pbspro][:idle_timeout] = 300
default[:pbspro][:boot_timeout] = 3600
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@
source "#{node['jetpack']['downloads']}/#{hwlocs_lib_el8}"
action :install
end
end
end
18 changes: 12 additions & 6 deletions specs/default/chef/site-cookbooks/pbspro/recipes/execute.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,18 @@
platform = node['platform_family']
pbsdist = "el#{plat_ver}"
package_name = node[:pbspro][:package]

if package_name == nil
if pbsprover.to_i < 20
package_name = "pbspro-execution-#{pbsprover}.x86_64.rpm"
else
package_name = "openpbs-execution-#{pbsprover}.x86_64.rpm"
pbs_professional = node[:pbspro][:professional]


if pbs_professional
package_name = "pbspro-execution-#{pbsprover}.#{pbsdist}.x86_64.rpm"
else
if package_name == nil
if pbsprover.to_i < 20
package_name = "pbspro-execution-#{pbsprover}.x86_64.rpm"
else
package_name = "openpbs-execution-#{pbsprover}.x86_64.rpm"
end
end
end

Expand Down
12 changes: 9 additions & 3 deletions specs/default/chef/site-cookbooks/pbspro/recipes/login.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,19 @@
pbsprover = node[:pbspro][:version]
plat_ver = node['platform_version'].to_i
pbsdist = "el#{plat_ver}"
pbs_professional = node[:pbspro][:professional]
package_name = node[:pbspro][:package]


if package_name.nil?
if pbsprover.to_i < 20
package_name = "pbspro-client-#{pbsprover}.x86_64.rpm"
if pbs_professional
package_name = "pbspro-client-#{pbsprover}.#{pbsdist}.x86_64.rpm"
else
package_name = "openpbs-client-#{pbsprover}.x86_64.rpm"
if pbsprover.to_i < 20
package_name = "pbspro-client-#{pbsprover}.x86_64.rpm"
else
package_name = "openpbs-client-#{pbsprover}.x86_64.rpm"
end
end
end

Expand Down
41 changes: 38 additions & 3 deletions specs/default/chef/site-cookbooks/pbspro/recipes/server.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@
pbsprover = node[:pbspro][:version]
plat_ver = node['platform_version'].to_i
pbsdist = "el#{plat_ver}"
pbs_professional = node[:pbspro][:professional]
pbsdata_uid = node[:pbspro][:pbsdata_uid]
pbsdata_gid = node[:pbspro][:pbsdata_gid]

cron_method = node[:pbspro][:cron_method] || "pbs_cron"
package_name = node[:pbspro][:package]

Expand All @@ -29,17 +33,37 @@
end

if package_name.nil?
if pbsprover.to_i < 20
package_name = "pbspro-server-#{pbsprover}.x86_64.rpm"
if pbs_professional
package_name = "pbspro-server-#{pbsprover}.#{pbsdist}.x86_64.rpm"
else
package_name = "openpbs-server-#{pbsprover}.x86_64.rpm"
if pbsprover.to_i < 20
package_name = "pbspro-server-#{pbsprover}.x86_64.rpm"
else
package_name = "openpbs-server-#{pbsprover}.x86_64.rpm"
end
end
end

jetpack_download package_name do
project 'pbspro'
end

if pbs_professional
group 'pbsdata' do
gid pbsdata_gid
system true
end

user 'pbsdata' do
system true
uid pbsdata_uid
gid 'pbsdata'
manage_home true
home '/home/pbsdata'
shell '/bin/bash'
end
end

if plat_ver < 8
yum_package package_name do
source "#{node['jetpack']['downloads']}/#{package_name}"
Expand Down Expand Up @@ -80,6 +104,17 @@
action [:enable, :start]
end

if pbs_professional
pbspro_license = node[:pbspro][:license]
bash 'setup license cyclecloud-pbspro' do
code <<-EOH
/opt/pbs/bin/qmgr -c 'set server pbs_license_info=#{pbspro_license}'
EOH
Comment on lines +110 to +112
Copy link

Copilot AI Sep 18, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's trailing whitespace at the end of line 110. This should be removed for consistency.

Copilot uses AI. Check for mistakes.

action :run
end
end

file "/etc/profile.d/azpbs_autocomplete.sh" do
content 'eval "$(/opt/cycle/pbspro/venv/bin/register-python-argcomplete azpbs)" || echo "Warning: Autocomplete is disabled" 1>&2'
mode '0755'
Expand Down
1 change: 1 addition & 0 deletions templates/openpbs.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ Autoscale = $Autoscale

[[[configuration]]]
pbspro.version = $PBSVersion
pbspro.professional = false
# For fast spin-up after Deallocate, force an immediate re-converge on boot
cyclecloud.converge_on_boot = true

Expand Down
Loading