86 lines
5.1 KiB
Python
86 lines
5.1 KiB
Python
def generate_sql_queries(teams, environments):
|
|
privilege_values = ["manifest:{}:{}:.*:read", "manifest:{}:{}:.*:write",
|
|
"manifest:{}:{}:.*:clone", "manifest:{}:{}:.*:secret_read",
|
|
"manifest:{}:{}:.*:secret_write", "manifest:{}:{}:.*:supersecret_read",
|
|
"manifest:{}:{}:.*:supersecret_write", "kube:{}:{}:.*:restart",
|
|
"kube:{}:{}:.*:delete",
|
|
"manifest:{}:{}:.*:approval_read",
|
|
"manifest:{}:{}:.*:delete",
|
|
"manifest:{}:{}:.*:manage",
|
|
"manifest:{}:{}:.*:approval_write", ]
|
|
|
|
role_values = ["<TEAM>_<ENV>_VIEWER", "<TEAM>_<ENV>_MAINTAINER", "<TEAM>_<ENV>_MANAGER", ]
|
|
|
|
roles_privileges_mapping = {"{}_{}_VIEWER": ["manifest:{}:{}:.*:read"],
|
|
"{}_{}_MAINTAINER": ['manifest:{}:{}:.*:read',
|
|
'manifest:{}:{}:.*:write',
|
|
'manifest:{}:{}:.*:clone',
|
|
'manifest:{}:{}:.*:secret_read',
|
|
'manifest:{}:{}:.*:secret_write',
|
|
'manifest:{}:{}:.*:supersecret_write',
|
|
'kube:{}:{}:.*:restart',
|
|
'kube:{}:{}:.*:delete',
|
|
'manifest:{}:{}:.*:approval_read'],
|
|
"{}_{}_MANAGER": ['manifest:{}:{}:.*:read',
|
|
'manifest:{}:{}:.*:write',
|
|
'manifest:{}:{}:.*:clone',
|
|
'manifest:{}:{}:.*:secret_read',
|
|
'manifest:{}:{}:.*:secret_write',
|
|
'manifest:{}:{}:.*:supersecret_write',
|
|
'kube:{}:{}:.*:restart',
|
|
'kube:{}:{}:.*:delete',
|
|
'manifest:{}:{}:.*:approval_read',
|
|
'manifest:{}:{}:.*:delete',
|
|
'manifest:{}:{}:.*:manage',
|
|
'manifest:{}:{}:.*:approval_write']
|
|
}
|
|
|
|
sql_queries = ""
|
|
for team in teams:
|
|
for env, env_privilege_value in environments.items():
|
|
privileges_insert_query = f"""INSERT INTO privilege (created_at, updated_at, name) VALUES {", ".join([f"(now(), now(), '{value.format(team, env_privilege_value)}')" for value in privilege_values])};"""
|
|
roles_insert_query = f"""INSERT INTO role (created_at, updated_at, name) VALUES {", ".join([f"(now(), now(), '{value.replace('<TEAM>', team).replace('<ENV>', env)}')" for value in role_values])};"""
|
|
|
|
roles_privileges_insert_queries = ""
|
|
for role, privileges in roles_privileges_mapping.items():
|
|
privilege_conditions = ", ".join(
|
|
[f"'{privilege.format(team, env_privilege_value)}'" for privilege in privileges])
|
|
roles_privileges_insert_query = f"""INSERT INTO roles_privileges (role_id, privilege_id) SELECT role.id AS role_id, privilege.id AS privilege_id FROM role, privilege WHERE role.name = '{role.format(team, env)}' AND privilege.name IN ( {privilege_conditions} );"""
|
|
roles_privileges_insert_queries += roles_privileges_insert_query + "\n"
|
|
sql_queries += f"""{privileges_insert_query}
|
|
{roles_insert_query}
|
|
{roles_privileges_insert_queries}
|
|
"""
|
|
return sql_queries
|
|
|
|
|
|
def main():
|
|
teams = ["AMC", "App", "Borrowings", "CBP", "CRM", "Claims", "Co-Lending", "Collections",
|
|
"Communication", "DataPlatform", "DataScience", "Frameworks", "GI-Conversions",
|
|
"GrowthAndEngagement", "HL-Conversions", "Infra", "KYC", "LMSAndAccounting",
|
|
"Navi-Pay", "Navi-Saas", "Navi-Website", "PAXCore", "PL-Conversions", "PL-Operations",
|
|
"Payments", "Security", "UnderwritingAndFraudDetection", "insurance-operations",
|
|
"lending-operations", "SDET-Frameworks", "AppX-Bridge", "Cosmos", "Digital-Gold",
|
|
"Generative-AI", "Edge", "RAndR", "GI-Operations", "HL-Operations",
|
|
"InsurancePlatform", "Post-Purchase-Experience", "IT", "CRM-Ops", "Camunda", "GI",
|
|
"LoanOrigination", "PLOrigination", "Android"]
|
|
environments = {
|
|
"cmd": "cmd",
|
|
"prod": "prod",
|
|
"dev": "dev",
|
|
"qa": "qa",
|
|
"perf": "perf",
|
|
"uat": "uat",
|
|
"data-platform-prod": "data-platform-prod",
|
|
"data-platform-nonprod": "data-platform-nonprod",
|
|
"local": "local",
|
|
"ALL": ".*",
|
|
}
|
|
sql_queries = generate_sql_queries(teams, environments)
|
|
with open("output.sql", "w") as file:
|
|
file.write(sql_queries)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|