Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 1 addition & 1 deletion charts/provisioner-config-local/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ apiVersion: v2
name: provisioner-config-local
description: Platform Provisioner local config
type: application
version: "1.13.11"
version: "1.13.13"
appVersion: "2.0.1"
home: https://github.com/TIBCOSoftware/tp-helm-charts
maintainers:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ recipe: |
guiEnv:
note: "config-coredns"
GUI_PIPELINE_LOG_DEBUG: false
GUI_TARGET_SERVICE: "ingress-nginx-controller.ingress-system.svc.cluster.local"
GUI_TARGET_SERVICE: "traefik.ingress-system.svc.cluster.local"
GUI_REGEX_PATTERN_BASE64: "KC4qKVwubG9jYWxob3N0XC5kYXRhcGxhbmVzXC5wcm8K"
globalEnvVariable:
REPLACE_RECIPE: true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ meta:
GUI_CP_DNS_DOMAIN: "localhost.dataplanes.pro"
GUI_TP_TLS_CERT: ""
GUI_TP_TLS_KEY: ""
GUI_CP_INGRESS_CLASSNAME: "nginx"
GUI_CP_INGRESS_CLASSNAME: "traefik"
GUI_CP_BOOTSTRAP_INGRESS_ROUTER: true
GUI_CP_BOOTSTRAP_INGRESS_HYBRID_PROXY: true
GUI_TP_GENERATE_CERTIFICATES: false
Expand Down Expand Up @@ -229,7 +229,7 @@ meta:
CP_MAIL_SERVER_GRAPH_SKIP_SENT_FOLDER: ${GUI_CP_MAIL_SERVER_GRAPH_SKIP_SENT_FOLDER:-false}

# CP ingress
CP_INGRESS_CLASSNAME: ${GUI_CP_INGRESS_CLASSNAME:-nginx} # the ingress for CP
CP_INGRESS_CLASSNAME: ${GUI_CP_INGRESS_CLASSNAME:-traefik} # the ingress for CP
CP_BOOTSTRAP_INGRESS_ROUTER: ${GUI_CP_BOOTSTRAP_INGRESS_ROUTER:-true} # set to false will create ingress for router and hybrid-proxy
CP_BOOTSTRAP_INGRESS_HYBRID_PROXY: ${GUI_CP_BOOTSTRAP_INGRESS_HYBRID_PROXY:-true} # set to false will create ingress for router and hybrid-proxy
CP_ALB_CERTIFICATE_ARN: "" # AWS ACM certificate ARN for ALB
Expand Down
2 changes: 1 addition & 1 deletion charts/provisioner-config-local/recipes/pp-o11y-full.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ meta:
GUI_TP_CHART_REPO_TOKEN: ""

# ingress
GUI_TP_INGRESS_CLASS: "nginx"
GUI_TP_INGRESS_CLASS: "traefik"
GUI_TP_DOMAIN: "localhost.dataplanes.pro"

# storage
Expand Down
28 changes: 14 additions & 14 deletions charts/provisioner-config-local/recipes/tp-automation-o11y.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@ meta:
note: "tp-automation-o11y"
GUI_PIPELINE_LOG_DEBUG: false

GUI_TP_CLUSTER_NAME: 'on-prem'
GUI_TP_CLUSTER_NAME: "on-prem"
GUI_GITHUB_TOKEN: ""

# automation setup
GUI_TP_AUTO_CP_VERSION: "" # keep it empty, unless you see an error with GUI_TP_AUTO_CP_VERSION in the logs
GUI_TP_AUTO_CP_VERSION: "" # keep it empty, unless you see an error with GUI_TP_AUTO_CP_VERSION in the logs
GUI_TP_AUTO_USE_LOCAL_SCRIPT: false
GUI_TP_AUTO_USE_GITHUB_SCRIPT: true
GUI_TP_AUTO_REPORT_PATH: "/tmp/auto/report"
Expand Down Expand Up @@ -70,11 +70,11 @@ meta:
GUI_TP_AUTO_K8S_DP_NAME: "k8s-auto-dp1"
GUI_TP_AUTO_K8S_DP_NAMESPACE: "k8s-auto-dp1ns"
GUI_TP_AUTO_K8S_DP_SERVICE_ACCOUNT: "k8s-auto-dp1sa"
GUI_TP_AUTO_INGRESS_CONTROLLER: "nginx"
GUI_TP_AUTO_INGRESS_CONTROLLER_CLASS_NAME: "nginx"
GUI_TP_INGRESS_CONTROLLER_SERVICE_NAME: "ingress-nginx-controller"
GUI_TP_AUTO_INGRESS_CONTROLLER: "traefik"
GUI_TP_AUTO_INGRESS_CONTROLLER_CLASS_NAME: "traefik"
GUI_TP_INGRESS_CONTROLLER_SERVICE_NAME: "traefik"
GUI_TP_INGRESS_CONTROLLER_SERVICE_NAMESPACE: "ingress-system"
GUI_TP_INGRESS_CONTROLLER_SERVICE_PORT: "443:https"
GUI_TP_INGRESS_CONTROLLER_SERVICE_PORT: "443:websecure"
GUI_TP_AUTO_STORAGE_CLASS: "hostpath"

# network policy
Expand Down Expand Up @@ -183,11 +183,11 @@ meta:
TP_AUTO_K8S_DP_NAME: ${GUI_TP_AUTO_K8S_DP_NAME:-"k8s-auto-dp1"}
TP_AUTO_K8S_DP_NAMESPACE: ${GUI_TP_AUTO_K8S_DP_NAMESPACE:-"k8s-auto-dp1ns"}
TP_AUTO_K8S_DP_SERVICE_ACCOUNT: ${GUI_TP_AUTO_K8S_DP_SERVICE_ACCOUNT:-"k8s-auto-dp1sa"}
TP_AUTO_INGRESS_CONTROLLER: ${GUI_TP_AUTO_INGRESS_CONTROLLER:-"nginx"}
TP_AUTO_INGRESS_CONTROLLER_CLASS_NAME: ${GUI_TP_AUTO_INGRESS_CONTROLLER_CLASS_NAME:-"nginx"}
TP_INGRESS_CONTROLLER_SERVICE_NAME: ${GUI_TP_INGRESS_CONTROLLER_SERVICE_NAME:-"ingress-nginx-controller"}
TP_AUTO_INGRESS_CONTROLLER: ${GUI_TP_AUTO_INGRESS_CONTROLLER:-"traefik"}
TP_AUTO_INGRESS_CONTROLLER_CLASS_NAME: ${GUI_TP_AUTO_INGRESS_CONTROLLER_CLASS_NAME:-"traefik"}
TP_INGRESS_CONTROLLER_SERVICE_NAME: ${GUI_TP_INGRESS_CONTROLLER_SERVICE_NAME:-"traefik"}
TP_INGRESS_CONTROLLER_SERVICE_NAMESPACE: ${GUI_TP_INGRESS_CONTROLLER_SERVICE_NAMESPACE:-"ingress-system"}
TP_INGRESS_CONTROLLER_SERVICE_PORT: ${GUI_TP_INGRESS_CONTROLLER_SERVICE_PORT:-"443:https"}
TP_INGRESS_CONTROLLER_SERVICE_PORT: ${GUI_TP_INGRESS_CONTROLLER_SERVICE_PORT:-"443:websecure"}
TP_AUTO_STORAGE_CLASS: ${GUI_TP_AUTO_STORAGE_CLASS:-"hostpath"}

# network policies
Expand Down Expand Up @@ -236,7 +236,7 @@ meta:
PYTHON_FILE_ENTRY_POINT: page_dp.py
PYTHON_FILE_ENTRY_POINT_BMDP: page_bmdp.py
PYTHON_FILE_ENTRY_POINT_O11Y: page_o11y.py
PYTHON_FILE_ENTRY_POINT_TOKEN: page_token.py
PYTHON_FILE_ENTRY_POINT_SETTING: page_setting.py
PYTHON_FILE_ENV_POINT: page_env.py
TP_OVERWRITE_DNS: ${GUI_TP_OVERWRITE_DNS:-false}
TP_PORT_FORWARD: ${GUI_TP_PORT_FORWARD:-true}
Expand Down Expand Up @@ -437,11 +437,11 @@ tasks:
fi
fi

echo "===== Task Name: create-oauth-token, Running file ${PYTHON_FILE_ENTRY_POINT_TOKEN} ====="
echo "===== Task Name: create-oauth-token, Running file ${PYTHON_FILE_ENTRY_POINT_SETTING} ====="
if command -v uv >/dev/null 2>&1; then
uv run --active ${PYTHON_FILE_ENTRY_POINT_TOKEN}
uv run --active ${PYTHON_FILE_ENTRY_POINT_SETTING}
else
python ${PYTHON_FILE_ENTRY_POINT_TOKEN}
python ${PYTHON_FILE_ENTRY_POINT_SETTING}
fi
_result=$?
echo "python return code: ${_result}"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ meta:
GUI_TP_DNS_DOMAIN: localhost.dataplanes.pro
GUI_TP_TLS_CERT: ""
GUI_TP_TLS_KEY: ""
GUI_TP_INSTALL_NGINX_INGRESS: true
GUI_TP_INSTALL_TRAEFIK_INGRESS: false
GUI_TP_INSTALL_NGINX_INGRESS: false
GUI_TP_INSTALL_TRAEFIK_INGRESS: true
GUI_TP_INGRESS_SERVICE_TYPE: LoadBalancer

# storage
Expand Down Expand Up @@ -48,7 +48,7 @@ meta:
GUI_TP_CONTAINER_REGISTRY_PASSWORD: ""

# third party
GUI_TP_PROVISIONER_UI_INGRESS_CLASSNAME: nginx
GUI_TP_PROVISIONER_UI_INGRESS_CLASSNAME: traefik
GUI_TP_PROVISIONER_UI_NAMESPACE: tekton-tasks
GUI_TP_AUTOMATION_INSTALL: false
GUI_TP_AUTOMATION_NAMESPACE: automation
Expand All @@ -69,7 +69,7 @@ meta:

# CP automation
GUI_TP_AUTOMATION_DOCKER_IMAGE_REPO: "ghcr.io/tibcosoftware/platform-provisioner/platform-provisioner"
GUI_TP_AUTOMATION_DOCKER_IMAGE_TAG: 1.6.11-auto-on-prem-jammy
GUI_TP_AUTOMATION_DOCKER_IMAGE_TAG: 1.6.12-auto-on-prem-jammy

# flow control
GUI_TP_INSTALL_PROVISIONER_UI: false
Expand All @@ -96,8 +96,8 @@ meta:
TP_CLUSTER_NAME: ${GUI_TP_CLUSTER_NAME:-"on-prem"}

# domain
TP_INSTALL_NGINX_INGRESS: ${GUI_TP_INSTALL_NGINX_INGRESS:-"true"}
TP_INSTALL_TRAEFIK_INGRESS: ${GUI_TP_INSTALL_TRAEFIK_INGRESS:-"false"}
TP_INSTALL_NGINX_INGRESS: ${GUI_TP_INSTALL_NGINX_INGRESS:-"false"}
TP_INSTALL_TRAEFIK_INGRESS: ${GUI_TP_INSTALL_TRAEFIK_INGRESS:-"true"}
TP_INGRESS_NAMESPACE: ingress-system
TP_DNS_DOMAIN: ${GUI_TP_DNS_DOMAIN:-"localhost.dataplanes.pro"}
TP_INGRESS_SERVICE_TYPE: ${GUI_TP_INGRESS_SERVICE_TYPE:-"ClusterIP"} # LoadBalancer used for minikube with tunel, NodePort used for kind, ClusterIP used for kubectl port-forward
Expand All @@ -124,7 +124,7 @@ meta:
TP_EXT_NAMESPACE: tibco-ext
TP_INSTALL_PROVISIONER_UI: ${GUI_TP_INSTALL_PROVISIONER_UI:-"false"}
TP_PROVISIONER_UI_NAMESPACE: ${GUI_TP_PROVISIONER_UI_NAMESPACE:-"tekton-tasks"}
TP_PROVISIONER_UI_INGRESS_CLASSNAME: ${GUI_TP_PROVISIONER_UI_INGRESS_CLASSNAME:-"nginx"}
TP_PROVISIONER_UI_INGRESS_CLASSNAME: ${GUI_TP_PROVISIONER_UI_INGRESS_CLASSNAME:-"traefik"}
TP_AUTOMATION_INSTALL: ${GUI_TP_AUTOMATION_INSTALL:-false}
TP_AUTOMATION_NAMESPACE: ${GUI_TP_AUTOMATION_NAMESPACE:-"automation"}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ meta:

# CP automation
GUI_TP_AUTOMATION_DOCKER_IMAGE_REPO: "ghcr.io/tibcosoftware/platform-provisioner/platform-provisioner"
GUI_TP_AUTOMATION_DOCKER_IMAGE_TAG: 1.6.11-auto-on-prem-jammy
GUI_TP_AUTOMATION_DOCKER_IMAGE_TAG: 1.6.12-auto-on-prem-jammy

# flow control
GUI_TP_INSTALL_PROVISIONER_UI: false
Expand Down
10 changes: 10 additions & 0 deletions charts/provisioner-config-local/recipes/tp-deploy-bw5dm.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ meta:
GUI_TP_ACTIVATION_SERVER_CERT_HOSTNAME: ""
GUI_TP_ACTIVATION_SERVER_FINGER_PRINT: ""

# ingress
GUI_TP_INGRESS_CLASS: "traefik"
GUI_TP_CP_DNS_DOMAIN: "localhost.dataplanes.pro"

# BW5DM
GUI_BW5_CHART_VERSION: "^1.1.0"
GUI_TP_BWDM_NAMESPACE: "bw5dm"
Expand Down Expand Up @@ -62,6 +66,10 @@ meta:

TP_CLUSTER_NAME: ${GUI_TP_CLUSTER_NAME:-"on-prem"}

# ingress
TP_INGRESS_CLASS: ${GUI_TP_INGRESS_CLASS:-"traefik"}
TP_DNS_DOMAIN: ${GUI_TP_CP_DNS_DOMAIN:-"localhost.dataplanes.pro"}

# BW5DM
BW5_CHART_VERSION: ${GUI_BW5_CHART_VERSION:-"^1.1.0"}
TP_BWDM_NAMESPACE: ${GUI_TP_BWDM_NAMESPACE:-bw5dm}
Expand Down Expand Up @@ -109,6 +117,8 @@ helmCharts:
containerRegistry: "${TP_CONTAINER_REGISTRY}"
containerRegistryUsername: "${TP_CONTAINER_REGISTRY_USERNAME}"
containerRegistryPassword: "${TP_CONTAINER_REGISTRY_PASSWORD}"
ingressClassName: ${TP_INGRESS_CLASS}
tpDNSDomainName: ${TP_DNS_DOMAIN}
secret:
enabled: true
ems-server:
Expand Down
12 changes: 11 additions & 1 deletion docs/recipes/automation/on-prem/adjust-ingress.sh
Original file line number Diff line number Diff line change
Expand Up @@ -55,10 +55,15 @@ function adjust_ingress() {
yq eval -i '(.meta.guiEnv.GUI_TP_INGRESS_CLASS = env(TP_INGRESS_CLASS_NAME))' "$_recipe_file_name"
fi

_recipe_file_name="07-tp-bw5-stack.yaml"
if [[ -f "${_recipe_file_name}" ]]; then
yq eval -i '(.meta.guiEnv.GUI_TP_INGRESS_CLASS = env(TP_INGRESS_CLASS_NAME))' "$_recipe_file_name"
fi

break
;;
2)
echo "Adjusting ingress for treafik..."
echo "Adjusting ingress for traefik..."
_recipe_file_name="01-tp-on-prem.yaml"
export TP_INGRESS_CLASS_NAME="traefik"
if [[ -f "${_recipe_file_name}" ]]; then
Expand Down Expand Up @@ -95,6 +100,11 @@ function adjust_ingress() {
yq eval -i '(.meta.guiEnv.GUI_TP_INGRESS_CLASS = env(TP_INGRESS_CLASS_NAME))' "$_recipe_file_name"
fi

_recipe_file_name="07-tp-bw5-stack.yaml"
if [[ -f "${_recipe_file_name}" ]]; then
yq eval -i '(.meta.guiEnv.GUI_TP_INGRESS_CLASS = env(TP_INGRESS_CLASS_NAME))' "$_recipe_file_name"
fi

break
;;
0)
Expand Down
2 changes: 1 addition & 1 deletion docs/recipes/automation/on-prem/connect-ins.sh
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ function connect_ins() {
export INGRESS_SERVICE_NAMESPACE_LOCAL=${INGRESS_SERVICE_NAMESPACE_LOCAL:-"ingress-system"}
export INGRESS_SERVICE_NAME_INSTANCE=${INGRESS_SERVICE_NAME_INSTANCE:-"ingress-nginx-controller"} # for nginx ingress use ingress-nginx-controller, for traefik ingress use traefik
export INGRESS_SERVICE_NAMESPACE_INSTANCE=${INGRESS_SERVICE_NAMESPACE_INSTANCE:-"ingress-system"}
export INGRESS_SERVICE_PORT_INSTANCE=${INGRESS_SERVICE_PORT_INSTANCE:-"443:https"} # for nginx ingress use 443:https, for traefik ingress use 443:websecure
export INGRESS_SERVICE_PORT_INSTANCE=${INGRESS_SERVICE_PORT_INSTANCE:-"443:websecure"} # for nginx ingress use 443:https, for traefik ingress use 443:websecure

if [ -z "$1" ]; then
show_help
Expand Down
13 changes: 8 additions & 5 deletions docs/recipes/automation/on-prem/update-recipe-tokens.sh
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,6 @@ function set_github_token() {
echo "Update GitHub token for ${_recipe_file_name}..."
yq eval -i '(.meta.guiEnv.GUI_GITHUB_TOKEN = env(GITHUB_TOKEN))' ${_recipe_file_name}
fi
local _recipe_file_name="07-tp-bw5-stack.yaml"
if [[ -f "${CURRENT_PATH}/${_recipe_file_name}" ]]; then
echo "Update GitHub token for ${_recipe_file_name}..."
yq eval -i '(.meta.guiEnv.GUI_BW5_CHART_REPO_TOKEN = env(GITHUB_TOKEN))' ${_recipe_file_name}
fi
fi
}

Expand Down Expand Up @@ -144,6 +139,14 @@ function set_jfrog_token() {
export GUI_CP_CONTAINER_REGISTRY_PASSWORD
yq eval -i '(.meta.guiEnv.GUI_BW5_CONTAINER_REGISTRY_PASSWORD = env(GUI_CP_CONTAINER_REGISTRY_PASSWORD))' "$_recipe_file_name"
fi
if [ -z "$GUI_BW5_CHART_REPO_TOKEN" ]; then
read -rp "Enter JFrog Chart Repo Token for BW5 (Press Enter to skip): " GUI_BW5_CHART_REPO_TOKEN
fi
if [ -n "$GUI_BW5_CHART_REPO_TOKEN" ]; then
echo "Update JFrog Chart Repo Token for ${_recipe_file_name}..."
export GUI_BW5_CHART_REPO_TOKEN
yq eval -i '(.meta.guiEnv.GUI_BW5_CHART_REPO_TOKEN = env(GUI_BW5_CHART_REPO_TOKEN))' "$_recipe_file_name"
fi
}

# set_ssl_cert sets the SSL certificate for TP
Expand Down
17 changes: 11 additions & 6 deletions docs/recipes/automation/tp-setup/bootstrap/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
## [12/08/2025 22:30]
### Added
- Support for config MCP Server in settings page before creating OAuth Token
- Print more helm chart information in "Show Current Environment" automation case

## [12/05/2025 19:12]
### Fixed
- The automation support for 1.13 release
- Fix issue after BMDP creation UI changed
-

## [12/02/2025 22:35]
### Fixed
- The automation support for 1.13 release
Expand All @@ -11,17 +16,17 @@

## [11/18/2025 13:06]
### Fixed
- Windows Docker + Git Bash need double slash for mounting local folder into pod.
- Windows Docker and Git Bash need double slash for mounting local folder into pod.
- Browser launch failure due to --single-process issue in windows VDI environment.

## [10/14/2025 14:58]
### Fixed
- Fix bug: ems and tibcohub do not deployed by default
- Fix bug: ems and tibcohub do not deploy by default
- Remove deploy Pussar by default

## [10/07/2025 13:51]
### Fixed
- If button "Use Global Activation URL" is disabled, skip config it.
- If the button "Use Global Activation URL" is disabled, skip config it.

## [10/04/2025 22:17]
### Added
Expand All @@ -45,7 +50,7 @@

## [09/19/2025 14:30]
### Fixed
- In select "Force Run Automation" in One-Click Setup UI
- Select "Force Run Automation" in One-Click Setup UI
- will automatically switch dataplane to use global activation url.
- will automatically switch dataplane to use global dataplane configuration.

Expand Down Expand Up @@ -80,7 +85,7 @@
- Fix provision bwce automation issue after bwce UI is changed.
- Fixed config flogo issue after flogo UI(set Endpoint visibility to Public dialog) is changed
- Change name "BW5 Adapters" to BW5 for bmdp
- Update capability status to "Running" in report yaml if it is running
- Update capability status to "Running" in report YAML if it is running

### Added
- Add reset password steps if admin user did not receive active email
Expand Down
11 changes: 11 additions & 0 deletions docs/recipes/automation/tp-setup/bootstrap/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,17 @@ export GITHUB_TOKEN=""
python page_dp.py
```

## Build and push docker image to GHCR Public repo
1. Go to [github Actions page](https://github.com/tibco/platform-provisioner/actions/workflows/docker-image-ghcr-build-push-public.yml)
2. Run the workflow manually
1. update image tag: 1.x.x-auto-on-prem-jammy
2. git branch name: your_branch_name
3. click "Run workflow" button
3. After the workflow is done, search `-auto-on-prem-jammy` in all files, then update it, currently in the following files:
* in `charts/provisioner-config-local/recipes/tp-base-on-prem-https.yaml` file
* in `charts/provisioner-config-local/recipes/tp-base-on-prem.yaml` file
* in `docs/recipes/tp-base/tp-base-on-prem-https.yaml` file
* in `docs/recipes/tp-base/tp-base-on-prem.yaml` file

## FAQ
1. If pod `dp-config-es-es-default-0` is pending.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -136,3 +136,47 @@ def set_oauth_token(self):
else:
ColorLogger.error(f"Failed to create kubernetes secret {ENV.TP_AUTO_TOKEN_NAME} in namespace {ENV.TP_AUTO_TOKEN_NAMESPACE}.")
ReportYaml.set(".ENV.REPORT_OAUTH_TOKEN", False)

def set_mcp_server(self):
print("Start set MCP Server...")
self.page.locator("#nav-bar-menu-item-settings").click()
print("Clicked left navbar 'Settings' menu")
self.page.locator(".left-sub-menu ul.menu-items").wait_for(state="visible")
print("'Sub-menu' page is visible")

if Util.check_dom_visibility(self.page, self.page.locator("#mcp-servers-menu-item"), 2, 2):
self.page.locator("#mcp-servers-menu-item").click()
print("Clicked 'MCP Server' submenu")

self.page.locator(".settings-mcp-servers").wait_for(state="visible")
print("'MCP Server' page is visible")

self.page.locator(".mcp-header-row .select-button", has_text="Select all").wait_for(state="visible")
self.page.locator(".mcp-header-row .select-button", has_text="Select all").click()
print("Clicked 'Select all' button to select all MCP servers")
self.page.wait_for_timeout(1000)

if self.page.locator(".settings-mcp-servers .mcp-footer button", has_text="Save").is_disabled():
ColorLogger.info(f"'Save' button is disabled, no changes to save for MCP server settings.")
ColorLogger.success(f"'MCP Server' has been enabled.")
ReportYaml.set(".ENV.ENABLE_MCP_SERVER", True)
return

self.page.locator(".settings-mcp-servers .mcp-footer button", has_text="Save").click()
print("Clicked 'Save' button to save MCP server settings")
self.page.wait_for_timeout(1000)

if self.page.locator(".pl-modal__heading", has_text="Update MCP Servers Configuration").is_visible():
ColorLogger.success(f"'Update MCP Server' confirmation dialog is visible")
self.page.locator(".pl-modal__container #confirm-button", has_text="Update").click()
print("Clicked 'Update' button on confirmation dialog")

if Util.check_dom_visibility(self.page, self.page.locator(".pl-notification__message", has_text="MCP servers updated successfully"), 2, 6):
ColorLogger.success(f"'MCP Server' settings are updated successfully.")
ReportYaml.set(".ENV.ENABLE_MCP_SERVER", True)
else:
ColorLogger.warning(f"Failed to update MCP Server settings.")
else:
ColorLogger.warning(f"Failed to load 'MCP Server' page.")
else:
ColorLogger.warning(f"'MCP Server' submenu is not available in 'Settings' page.")
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
po_auth.login_check()

po_settings = PageObjectSettings(page)
po_settings.set_mcp_server()
po_settings.set_oauth_token()
except Exception as e:
current_filename = Path(__file__).stem
Expand Down
Loading