Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
8bab8f5
chore: update installation url
Jun 13, 2025
34d6116
chore: update pyenv
NingLu Jun 18, 2025
085ef06
feat: support gcr
Jun 23, 2025
a86edb6
chore: update
NingLu Jun 23, 2025
9b0383c
chore: update
Jun 23, 2025
d32af2b
chore: update
Jun 23, 2025
00ef278
feat: update cdk
NingLu Jun 23, 2025
c1953ed
chore: update
NingLu Jun 23, 2025
9e56838
chore: update policies
NingLu Jun 23, 2025
63c3214
chore: update region
NingLu Jun 24, 2025
0d9d95f
chore: update
NingLu Jun 24, 2025
98a5f24
chore: update config
NingLu Jun 27, 2025
f06d9ea
chore: add mirror
NingLu Jun 27, 2025
25568d3
chore: update
NingLu Jul 1, 2025
4aa3588
feat: controller
NingLu Jul 2, 2025
9e62ee5
chore: update openpbs
NingLu Jul 2, 2025
d5907a8
feat: support openpbs in gcr
NingLu Jul 2, 2025
0912da4
chore: update
NingLu Jul 2, 2025
0e9dde0
chore: install nvm
NingLu Jul 3, 2025
a560197
fix: gcr issue
NingLu Jul 3, 2025
f047341
fix: update user data
NingLu Jul 4, 2025
9b38a53
chore: update
NingLu Jul 14, 2025
ed9928a
test: fsx
NingLu Jul 14, 2025
720bbe6
feat: update
NingLu Jul 14, 2025
439b1c2
chore: update config
NingLu Jul 21, 2025
f472d4e
chore: compute node user data
NingLu Jul 21, 2025
28a9f8d
fix: hwloc issue
NingLu Jul 21, 2025
fa19c57
chore: sync
NingLu Aug 11, 2025
e87ec8a
chore: remove region map
NingLu Aug 11, 2025
636cc28
chore: update
NingLu Aug 11, 2025
0923bc9
chore: update policy
NingLu Aug 11, 2025
a27ea25
chore: add conditions
NingLu Aug 11, 2025
6ccab49
chore: update
NingLu Aug 11, 2025
f70efb8
chore: compatibility
NingLu Aug 12, 2025
0268df9
chore: support cn regions in config
NingLu Aug 12, 2025
9a6bcd4
chore: format
NingLu Aug 12, 2025
788e17e
chore: update variable name
NingLu Aug 12, 2025
5fe74a4
fix: ses policy
NingLu Aug 12, 2025
a176494
Merge branch 'gcr-dev' of github.com:NingLu/scale-out-computing-on-aw…
NingLu Aug 12, 2025
aa7e4fc
fix: prerequisite issue
NingLu Aug 13, 2025
77349c8
chore: update AMI
NingLu Aug 13, 2025
9fe9949
chore: remove unused codes
NingLu Aug 13, 2025
19aa7ef
chore: update policy
NingLu Aug 18, 2025
9503e49
chore: remove unused code
NingLu Aug 18, 2025
5ea73f8
docs: update
NingLu Aug 22, 2025
82d69af
chore: update package
NingLu Aug 26, 2025
e3992c4
docs: update doc
NingLu Aug 26, 2025
66993a4
chore: update package
NingLu Aug 26, 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
624 changes: 624 additions & 0 deletions installer/default_config_cn.yml

Large diffs are not rendered by default.

26 changes: 26 additions & 0 deletions installer/region_map.d/aws/000-cn-north-1.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---
# SOCA AMI List for commercial partition generated 2025-08-01 20:57:46 UTC
cn-north-1:
x86_64:
amazonlinux2: ami-044825ed7269ce5ae
amazonlinux2023: ami-07e6f3a55a0591957
rhel7: ami-03d8043294fea9aab
rhel8: ami-0a63ed58be40131a8
rhel9: ami-05c94ad454112ae74
rocky8: ami-0b45e59d7f20e48ab
rocky9: ami-07f5b7614f70a6c81
ubuntu2204: ami-0bb5b7a6a081b4071
ubuntu2404: ami-0a83c884ad208dfbc
windows2019: ami-0aced60d5a97d56c1
windows2022: ami-02862b4d551aae7ef
windows2025: ami-09b6bea2ea0353b56
arm64:
amazonlinux2: ami-0b6b5c2b39fbe6e25
amazonlinux2023: ami-0050bdea503afb267
rhel8: ami-057bc1aba4c81bbad
rhel9: ami-046deb8fe767796fa
# rocky8: not supported
rocky9: ami-05a30ad42a4562be2
ubuntu2204: ami-039b85aae4e82c275
ubuntu2404: ami-0a298ada2f151492b
# SOCA AMI List for commercial partition generated 2025-08-01 20:57:46 UTC
26 changes: 26 additions & 0 deletions installer/region_map.d/aws/000-cn-northwest-1.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---
# SOCA AMI List for commercial partition generated 2025-08-01 20:57:46 UTC
cn-northwest-1:
x86_64:
amazonlinux2: ami-074569be118d63cd3
amazonlinux2023: ami-0860d42a423b663c6
rhel7: ami-047eb9da7101b389f
rhel8: ami-099bfa7e6b651200b
rhel9: ami-0f03ab64a3798169d
rocky8: ami-03ef4ab38a835fa82
rocky9: ami-0d8859df92f1ff688
ubuntu2204: ami-0ee7890ada8cf3617
ubuntu2404: ami-01785c07ce58610d6
windows2019: ami-04de7b39d2aab1d8a
windows2022: ami-0774a48a7423faec4
windows2025: ami-0c1f49057ab497dd8
arm64:
amazonlinux2: ami-0c662664eb417cfe4
amazonlinux2023: ami-00c2a939d499dd3b9
rhel8: ami-0f5411e7d874d6a0e
rhel9: ami-084a9971dac348932
# rocky8: not supported
rocky9: ami-00c556f64bee59a22
ubuntu2204: ami-08e2c3633ffeab3e6
ubuntu2404: ami-04d9f0e389358b7b1
# SOCA AMI List for commercial partition generated 2025-08-01 20:57:46 UTC
44 changes: 5 additions & 39 deletions installer/resources/policies/ComputeNode.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,31 +7,11 @@
"s3:ListBucket"
],
"Resource": [
"arn:%%AWS_PARTITION%%:s3:::dcv-license.%%AWS_REGION%%/*",
"arn:%%AWS_PARTITION%%:s3:::ec2-linux-nvidia-drivers/*",
"arn:%%AWS_PARTITION%%:s3:::ec2-linux-nvidia-drivers",
"arn:%%AWS_PARTITION%%:s3:::nvidia-gaming/*",
"arn:%%AWS_PARTITION%%:s3:::nvidia-gaming-drivers",
"arn:%%AWS_PARTITION%%:s3:::ec2-amd-linux-drivers/*",
"arn:%%AWS_PARTITION%%:s3:::ec2-amd-linux-drivers",
"arn:%%AWS_PARTITION%%:s3:::ec2-amd-windows-drivers",
"arn:%%AWS_PARTITION%%:s3:::ec2-amd-windows-drivers/*",
"arn:%%AWS_PARTITION%%:s3:::ec2-windows-nvidia-drivers",
"arn:%%AWS_PARTITION%%:s3:::ec2-windows-nvidia-drivers/*",
"arn:%%AWS_PARTITION%%:s3:::%%BUCKET%%/*",
"arn:%%AWS_PARTITION%%:s3:::%%BUCKET%%"
"arn:%%AWS_PARTITION%%:s3:::%%BUCKET%%"%%COMPUTE_NODE_MANAGED_BUCKETS%%
],
"Effect": "Allow"
},
{
"Action": [
"ses:SendEmail"
],
"Resource": [
"arn:%%AWS_PARTITION%%:ses:*:%%AWS_ACCOUNT_ID%%:identity*"
],
"Effect": "Allow"
},
},%%SES_PERMISSIONS%%
{
"Action": [
"ec2:CreateTags"
Expand Down Expand Up @@ -69,21 +49,7 @@
"logs:PutLogEvents",
"logs:DescribeLogStreams"
],
"Resource": "arn:%%AWS_PARTITION%%:logs:%%AWS_REGION%%:*"
},
{
"Sid": "AllowSerialConsoleAccess",
"Action": [
"ec2-instance-connect:SendSerialConsoleSSHPublicKey",
"ec2-instance-connect:StartSerialConsoleSession"
],
"Resource": "arn:%%AWS_PARTITION%%:ec2:*:%%AWS_ACCOUNT_ID%%:instance/*",
"Effect": "Allow",
"Condition": {
"StringEquals": {
"ec2:ResourceTag/soca:ClusterId": "%%CLUSTER_ID%%"
}
}
}
"Resource": "*"
}%%EC2_INSTANCE_CONNECT_PERMISSIONS%%
]
}
}
24 changes: 4 additions & 20 deletions installer/resources/policies/LoginNode.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,27 +7,11 @@
"s3:ListBucket"
],
"Resource": [
"arn:%%AWS_PARTITION%%:s3:::dcv-license.%%AWS_REGION%%/*",
"arn:%%AWS_PARTITION%%:s3:::ec2-linux-nvidia-drivers/*",
"arn:%%AWS_PARTITION%%:s3:::ec2-linux-nvidia-drivers",
"arn:%%AWS_PARTITION%%:s3:::nvidia-gaming/*",
"arn:%%AWS_PARTITION%%:s3:::nvidia-gaming-drivers",
"arn:%%AWS_PARTITION%%:s3:::ec2-amd-linux-drivers/*",
"arn:%%AWS_PARTITION%%:s3:::ec2-amd-linux-drivers",
"arn:%%AWS_PARTITION%%:s3:::%%BUCKET%%/*",
"arn:%%AWS_PARTITION%%:s3:::%%BUCKET%%"
"arn:%%AWS_PARTITION%%:s3:::%%BUCKET%%"%%LOGIN_NODE_MANAGED_BUCKETS%%
],
"Effect": "Allow"
},
{
"Action": [
"ses:SendEmail"
],
"Resource": [
"arn:%%AWS_PARTITION%%:ses:*:%%AWS_ACCOUNT_ID%%:identity*"
],
"Effect": "Allow"
},
},%%SES_PERMISSIONS%%
{
"Action": [
"ec2:CreateTags"
Expand Down Expand Up @@ -65,7 +49,7 @@
"logs:PutLogEvents",
"logs:DescribeLogStreams"
],
"Resource": "arn:%%AWS_PARTITION%%:logs:%%AWS_REGION%%:*"
"Resource": "*"
}
]
}
}
42 changes: 4 additions & 38 deletions installer/resources/policies/TargetNode.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,31 +7,11 @@
"s3:ListBucket"
],
"Resource": [
"arn:%%AWS_PARTITION%%:s3:::dcv-license.%%AWS_REGION%%/*",
"arn:%%AWS_PARTITION%%:s3:::ec2-linux-nvidia-drivers/*",
"arn:%%AWS_PARTITION%%:s3:::ec2-linux-nvidia-drivers",
"arn:%%AWS_PARTITION%%:s3:::nvidia-gaming/*",
"arn:%%AWS_PARTITION%%:s3:::nvidia-gaming-drivers",
"arn:%%AWS_PARTITION%%:s3:::ec2-amd-linux-drivers/*",
"arn:%%AWS_PARTITION%%:s3:::ec2-amd-linux-drivers",
"arn:%%AWS_PARTITION%%:s3:::ec2-amd-windows-drivers",
"arn:%%AWS_PARTITION%%:s3:::ec2-amd-windows-drivers/*",
"arn:%%AWS_PARTITION%%:s3:::ec2-windows-nvidia-drivers",
"arn:%%AWS_PARTITION%%:s3:::ec2-windows-nvidia-drivers/*",
"arn:%%AWS_PARTITION%%:s3:::%%BUCKET%%/*",
"arn:%%AWS_PARTITION%%:s3:::%%BUCKET%%"
"arn:%%AWS_PARTITION%%:s3:::%%BUCKET%%"%%TARGET_NODE_MANAGED_BUCKETS%%
],
"Effect": "Allow"
},
{
"Action": [
"ses:SendEmail"
],
"Resource": [
"arn:%%AWS_PARTITION%%:ses:*:%%AWS_ACCOUNT_ID%%:identity*"
],
"Effect": "Allow"
},
},%%SES_PERMISSIONS%%
{
"Action": [
"ec2:CreateTags"
Expand Down Expand Up @@ -69,21 +49,7 @@
"logs:PutLogEvents",
"logs:DescribeLogStreams"
],
"Resource": "arn:%%AWS_PARTITION%%:logs:%%AWS_REGION%%:*"
},
{
"Sid": "AllowSerialConsoleAccess",
"Action": [
"ec2-instance-connect:SendSerialConsoleSSHPublicKey",
"ec2-instance-connect:StartSerialConsoleSession"
],
"Resource": "arn:%%AWS_PARTITION%%:ec2:*:%%AWS_ACCOUNT_ID%%:instance/*",
"Effect": "Allow",
"Condition": {
"StringEquals": {
"ec2:ResourceTag/soca:ClusterId": "%%CLUSTER_ID%%"
}
}
}
"Resource": "*"
}%%EC2_INSTANCE_CONNECT_PERMISSIONS%%
]
}
86 changes: 78 additions & 8 deletions installer/resources/src/cdk_construct.py
Original file line number Diff line number Diff line change
Expand Up @@ -3049,8 +3049,76 @@ def iam_roles(self):
)
)

# Generate IAM inline policies
# Handle IAM policies in standard regions and GCR regions
compute_node_managed_buckets = ""
target_node_managed_buckets = ""
login_node_managed_buckets = ""
ses_permissions = ""
ec2_instance_connect_permissions = ""

if self._region.startswith("cn-"):
# GCR regions don't have StartSerialConsoleSession
ec2_instance_connect_permissions = ',{' \
'"Sid": "AllowSerialConsoleAccess",' \
'"Action": ["ec2-instance-connect:SendSerialConsoleSSHPublicKey"],' \
'"Resource": "arn:%%AWS_PARTITION%%:ec2:*:%%AWS_ACCOUNT_ID%%:instance/*",' \
'"Effect": "Allow",' \
'"Condition": {"StringEquals": {"ec2:ResourceTag/soca:ClusterId": "%%CLUSTER_ID%%"}}}'
else:
ec2_instance_connect_permissions = ',{' \
'"Sid": "AllowSerialConsoleAccess",' \
'"Action": ' \
'["ec2-instance-connect:SendSerialConsoleSSHPublicKey","ec2-instance-connect:StartSerialConsoleSession"],' \
'"Resource": "arn:%%AWS_PARTITION%%:ec2:*:%%AWS_ACCOUNT_ID%%:instance/*",' \
'"Effect": "Allow",' \
'"Condition": {"StringEquals": {"ec2:ResourceTag/soca:ClusterId": "%%CLUSTER_ID%%"}}}'

compute_node_managed_buckets = ',' \
'"arn:%%AWS_PARTITION%%:s3:::dcv-license.%%AWS_REGION%%/*",' \
'"arn:%%AWS_PARTITION%%:s3:::ec2-linux-nvidia-drivers/*",' \
'"arn:%%AWS_PARTITION%%:s3:::ec2-linux-nvidia-drivers",' \
'"arn:%%AWS_PARTITION%%:s3:::nvidia-gaming/*",' \
'"arn:%%AWS_PARTITION%%:s3:::nvidia-gaming-drivers",' \
'"arn:%%AWS_PARTITION%%:s3:::ec2-amd-linux-drivers/*",' \
'"arn:%%AWS_PARTITION%%:s3:::ec2-amd-linux-drivers",' \
'"arn:%%AWS_PARTITION%%:s3:::ec2-amd-windows-drivers",' \
'"arn:%%AWS_PARTITION%%:s3:::ec2-amd-windows-drivers/*",' \
'"arn:%%AWS_PARTITION%%:s3:::ec2-windows-nvidia-drivers",' \
'"arn:%%AWS_PARTITION%%:s3:::ec2-windows-nvidia-drivers/*"'

target_node_managed_buckets = ',' \
'"arn:%%AWS_PARTITION%%:s3:::dcv-license.%%AWS_REGION%%/*",' \
'"arn:%%AWS_PARTITION%%:s3:::ec2-linux-nvidia-drivers/*",' \
'"arn:%%AWS_PARTITION%%:s3:::ec2-linux-nvidia-drivers",' \
'"arn:%%AWS_PARTITION%%:s3:::nvidia-gaming/*",' \
'"arn:%%AWS_PARTITION%%:s3:::nvidia-gaming-drivers",' \
'"arn:%%AWS_PARTITION%%:s3:::ec2-amd-linux-drivers/*",' \
'"arn:%%AWS_PARTITION%%:s3:::ec2-amd-linux-drivers",' \
'"arn:%%AWS_PARTITION%%:s3:::ec2-amd-windows-drivers",' \
'"arn:%%AWS_PARTITION%%:s3:::ec2-amd-windows-drivers/*",' \
'"arn:%%AWS_PARTITION%%:s3:::ec2-windows-nvidia-drivers",' \
'"arn:%%AWS_PARTITION%%:s3:::ec2-windows-nvidia-drivers/*"'

login_node_managed_buckets = ',' \
'"arn:%%AWS_PARTITION%%:s3:::dcv-license.%%AWS_REGION%%/*",' \
'"arn:%%AWS_PARTITION%%:s3:::ec2-linux-nvidia-drivers/*",' \
'"arn:%%AWS_PARTITION%%:s3:::ec2-linux-nvidia-drivers",' \
'"arn:%%AWS_PARTITION%%:s3:::nvidia-gaming/*",' \
'"arn:%%AWS_PARTITION%%:s3:::nvidia-gaming-drivers",' \
'"arn:%%AWS_PARTITION%%:s3:::ec2-amd-linux-drivers/*",' \
'"arn:%%AWS_PARTITION%%:s3:::ec2-amd-linux-drivers"'

ses_permissions = '{' \
'"Action": ["ses:SendEmail"],' \
'"Resource": ["arn:%%AWS_PARTITION%%:ses:*:%%AWS_ACCOUNT_ID%%:identity*"],' \
'"Effect": "Allow"},'

policy_substitutes = {
"%%COMPUTE_NODE_MANAGED_BUCKETS%%": compute_node_managed_buckets,
"%%TARGET_NODE_MANAGED_BUCKETS%%": target_node_managed_buckets,
"%%LOGIN_NODE_MANAGED_BUCKETS%%": login_node_managed_buckets,
"%%SES_PERMISSIONS%%": ses_permissions,
"%%EC2_INSTANCE_CONNECT_PERMISSIONS%%": ec2_instance_connect_permissions,
"%%AWS_ACCOUNT_ID%%": Aws.ACCOUNT_ID,
"%%AWS_PARTITION%%": Aws.PARTITION,
"%%AWS_URL_SUFFIX%%": Aws.URL_SUFFIX,
Expand Down Expand Up @@ -3950,6 +4018,8 @@ def get_fsx_pricing_data(region: Optional[str]) -> list:
_pricing_region = "ap-south-1"
elif region.startswith("eu"):
_pricing_region = "eu-central-1"
elif region.startswith("cn"):
_pricing_region = "cn-northwest-1"
else:
# default to us-east-1
_pricing_region = "us-east-1"
Expand Down Expand Up @@ -7649,13 +7719,13 @@ def is_networking_af_enabled(self, address_family: str):
}

principals_suffix = {
"backup": f"backup.{Aws.URL_SUFFIX}",
"cloudwatch": f"cloudwatch.{Aws.URL_SUFFIX}",
"ec2": f"ec2.{Aws.URL_SUFFIX}",
"lambda": f"lambda.{Aws.URL_SUFFIX}",
"sns": f"sns.{Aws.URL_SUFFIX}",
"spotfleet": f"spotfleet.{Aws.URL_SUFFIX}",
"ssm": f"ssm.{Aws.URL_SUFFIX}",
"backup": "backup.amazonaws.com",
"cloudwatch": "cloudwatch.amazonaws.com",
"ec2": "ec2.amazonaws.com",
"lambda": "lambda.amazonaws.com",
"sns": "sns.amazonaws.com",
"spotfleet": "spotfleet.amazonaws.com",
"ssm": "ssm.amazonaws.com",
}

# Apply default tag to all taggable resources
Expand Down
13 changes: 11 additions & 2 deletions installer/resources/src/install_soca.py
Original file line number Diff line number Diff line change
Expand Up @@ -2363,12 +2363,21 @@ def override_keys(keys_to_override, install_properties):
type=str,
help="AWS region where you want to deploy your SOCA environment.",
)
# Determine default config file based on AWS region
def get_default_config_path():
aws_region = os.environ.get('AWS_DEFAULT_REGION', '')
base_path = f"{os.path.dirname(os.path.realpath(__file__))}/../../"
if aws_region in ['cn-north-1', 'cn-northwest-1']:
return f"{base_path}default_config_cn.yml"
else:
return f"{base_path}default_config.yml"

parser.add_argument(
"--config",
"-c",
type=str,
default=f"{os.path.dirname(os.path.realpath(__file__))}/../../default_config.yml",
help="Path of custom config file(s). Defaults to default_config.yml .",
default=get_default_config_path(),
help="Path of custom config file(s). Defaults to default_config.yml or default_config_cn.yml based on AWS region.",
)
parser.add_argument(
"--region-map",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ log_info "EC2 UserData script is being executed, check logs in /var/log/cloud-in
{% if context.get("/configuration/Region") in ("us-gov-east-1', 'us-gov-west-1") %}
S3_BUCKET_REGION=$(curl -s --head {{ context.get("/configuration/S3Bucket") }}.s3.{{ context.get("/configuration/Region") }}.amazonaws.com | grep bucket-region | awk '{print $2}' | tr -d '\r\n')
{% elif context.get("/configuration/Region") in ("cn-north-1", "cn-northwest-1") %}
S3_BUCKET_REGION=$(curl -s --head {{ context.get("/configuration/S3Bucket") }}.s3.amazonaws.com.cn | grep bucket-region | awk '{print $2}' | tr -d '\r\n')
S3_BUCKET_REGION=$(curl -s --head {{ context.get("/configuration/S3Bucket") }}.s3.{{ context.get("/configuration/Region") }}.amazonaws.com.cn | grep bucket-region | awk '{print $2}' | tr -d '\r\n')
{% else %}
S3_BUCKET_REGION=$(curl -s --head {{ context.get("/configuration/S3Bucket") }}.s3.amazonaws.com | grep bucket-region | awk '{print $2}' | tr -d '\r\n')
{% endif %}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ mkdir -p ${SOCA_HOME}
# Retrieve the region of the bucket specified at install time
{% if context.get("/configuration/Region") in ('us-gov-east-1', 'us-gov-west-1') %}
S3_BUCKET_REGION=$(curl -s --head {{ context.get("/configuration/S3Bucket") }}.s3.{{ context.get("/configuration/Region") }}.amazonaws.com | grep bucket-region | awk '{print $2}' | tr -d '\r\n')
{% elif context.get("/configuration/Region") in ("cn-north-1", "cn-northwest-1") %}
S3_BUCKET_REGION=$(curl -s --head {{ context.get("/configuration/S3Bucket") }}.s3.{{ context.get("/configuration/Region") }}.amazonaws.com.cn | grep bucket-region | awk '{print $2}' | tr -d '\r\n')
{% else %}
S3_BUCKET_REGION=$(curl -s --head {{ context.get("/configuration/S3Bucket") }}.s3.amazonaws.com | grep bucket-region | awk '{print $2}' | tr -d '\r\n')
{% endif %}
Expand Down
21 changes: 19 additions & 2 deletions installer/resources/user_data/controller/03_setup.sh.j2
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,22 @@ set_environment_variable "SOCA_CONTROLLER_IP" "$(hostname -I)"
# Install NodeJS
{% include "templates/linux/nodejs.sh.j2" %}

# Install required Node modules
${SOCA_BOOTSTRAP_ASSETS_FOLDER}/node/bin/npm install --prefix "/opt/soca/{{ context.get("/configuration/ClusterId") }}/cluster_manager/web_interface/static" [email protected]
{% if context.get("/configuration/Region") in ("cn-north-1", "cn-northwest-1") %}
# Ensure Node.js environment is available and install required Node modules
if command -v npm >/dev/null 2>&1; then
npm install --prefix "/opt/soca/{{ context.get("/configuration/ClusterId") }}/cluster_manager/web_interface/static" [email protected]
else
# If npm is not in PATH, try to source NVM environment
if [ -f "${SOCA_BOOTSTRAP_ASSETS_FOLDER}/nvm/*/.*nvm/nvm.sh" ]; then
source "${SOCA_BOOTSTRAP_ASSETS_FOLDER}/nvm/*/.*nvm/nvm.sh"
npm install --prefix "/opt/soca/{{ context.get("/configuration/ClusterId") }}/cluster_manager/web_interface/static" [email protected]
else
log_warning "npm not available, skipping monaco-editor installation"
fi
fi
{% else %}
${SOCA_BOOTSTRAP_ASSETS_FOLDER}/node/bin/npm install --prefix "/opt/soca/{{ context.get("/configuration/ClusterId") }}/cluster_manager/web_interface/static" [email protected]
{% endif %}

# Reload OpenPBS
systemctl restart pbs
Expand Down Expand Up @@ -146,6 +160,9 @@ IFS="-" read name sanitized_cluster_name <<< "echo {{ context.get("/configuratio
sed -i "s/__SOCA_CLUSTER__NAME__/${sanitized_cluster_name}/g" /opt/soca/{{ context.get("/configuration/ClusterId") }}/cluster_manager/web_interface/templates/common/horizontal_menu_bar.html

# Start Web UI
{% if context.get("/configuration/Region") in ("cn-north-1", "cn-northwest-1") %}
chmod +x /opt/soca/{{ context.get("/configuration/ClusterId") }}/python/latest/bin/uwsgi
{% endif %}
chmod +x /opt/soca/{{ context.get("/configuration/ClusterId") }}/cluster_manager/web_interface/socawebui.sh
./socawebui.sh start

Expand Down
Loading