Skip to content

Commit dd61ad2

Browse files
Dixit SathwaraDixit Sathwara
authored andcommitted
add pre-install for saas
1 parent 16c1061 commit dd61ad2

2 files changed

Lines changed: 102 additions & 0 deletions

File tree

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
#!/usr/bin/env python3
2+
3+
# *****************************************************************************
4+
# Copyright (c) 2024 IBM Corporation and other Contributors.
5+
#
6+
# All rights reserved. This program and the accompanying materials
7+
# are made available under the terms of the Eclipse Public License v1.0
8+
# which accompanies this distribution, and is available at
9+
# http://www.eclipse.org/legal/epl-v10.html
10+
#
11+
# *****************************************************************************
12+
13+
from mas.devops.pre_install import applyPreInstallMASRBAC
14+
from kubernetes import client, config
15+
from kubernetes.config.config_exception import ConfigException
16+
from openshift.dynamic import DynamicClient
17+
import sys
18+
import argparse
19+
import logging
20+
import urllib3
21+
urllib3.disable_warnings()
22+
23+
24+
if __name__ == "__main__":
25+
parser = argparse.ArgumentParser(description='Apply Pre-Install MAS RBAC')
26+
27+
parser.add_argument("--mas-instance-id", required=True, help="MAS Instance ID")
28+
parser.add_argument("--mas-version", required=True, help="MAS Version (e.g., 9.2)")
29+
parser.add_argument("--admin-mode", required=False, default="namespaced",
30+
choices=["cluster", "namespaced", "minimal"],
31+
help="Admin mode: cluster, namespaced, or minimal")
32+
parser.add_argument("--selected-apps", required=False, default="core",
33+
help="Comma-separated list of apps (e.g., core,manage,iot)")
34+
parser.add_argument("--rbac-root-dir", required=False, default="/opt/app-root/rbac",
35+
help="Root directory containing RBAC manifests")
36+
parser.add_argument("--log-level", required=False,
37+
choices=["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"],
38+
default="INFO")
39+
40+
args = parser.parse_args()
41+
42+
# Setup logging
43+
log_level = getattr(logging, args.log_level)
44+
logger = logging.getLogger()
45+
logger.setLevel(log_level)
46+
47+
ch = logging.StreamHandler()
48+
ch.setLevel(log_level)
49+
chFormatter = logging.Formatter(
50+
"%(asctime)-25s %(name)-50s %(levelname)-8s %(message)s"
51+
)
52+
ch.setFormatter(chFormatter)
53+
logger.addHandler(ch)
54+
55+
mas_instance_id = args.mas_instance_id
56+
mas_version = ".".join(args.mas_version.split(".")[:2])
57+
admin_mode = args.admin_mode
58+
selected_apps_str = args.selected_apps
59+
rbac_root_dir = args.rbac_root_dir
60+
61+
# Parse selected apps
62+
selected_apps = None
63+
if selected_apps_str:
64+
selected_apps = [app.strip() for app in selected_apps_str.split(',') if app.strip()]
65+
66+
logger.info("Configuration:")
67+
logger.info("--------------")
68+
logger.info(f"mas_instance_id: {mas_instance_id}")
69+
logger.info(f"mas_version: {mas_version}")
70+
logger.info(f"admin_mode: {admin_mode}")
71+
logger.info(f"selected_apps: {selected_apps}")
72+
logger.info(f"rbac_root_dir: {rbac_root_dir}")
73+
logger.info(f"log_level: {log_level}")
74+
logger.info("")
75+
76+
try:
77+
# Try to load in-cluster configuration
78+
config.load_incluster_config()
79+
logger.debug("Loaded in-cluster configuration")
80+
except ConfigException:
81+
# If that fails, fall back to kubeconfig file
82+
config.load_kube_config()
83+
logger.debug("Loaded kubeconfig file")
84+
85+
try:
86+
dynClient = DynamicClient(client.api_client.ApiClient())
87+
applyPreInstallMASRBAC(
88+
dynClient=dynClient,
89+
masVersion=mas_version,
90+
masInstanceId=mas_instance_id,
91+
adminMode=admin_mode,
92+
selectedApps=selected_apps,
93+
rbacRootDir=rbac_root_dir
94+
)
95+
logger.info("Pre-Install MAS RBAC applied successfully")
96+
sys.exit(0)
97+
except Exception as e:
98+
logger.error(f"Error applying Pre-Install MAS RBAC: {e}")
99+
import traceback
100+
traceback.print_exc()
101+
sys.exit(1)

setup.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,5 +94,6 @@ def get_version(rel_path):
9494
'bin/mas-devops-create-initial-users-for-saas',
9595
'bin/mas-devops-saas-job-cleaner',
9696
'bin/mas-devops-notify-slack',
97+
'bin/mas-devops-apply-preinstall-rbac-for-saas',
9798
]
9899
)

0 commit comments

Comments
 (0)