|
25 | 25 | grant_iam_group_role, |
26 | 26 | UserService, |
27 | 27 | ) |
28 | | -from iam_groups_authn.sql_admin import get_instance_users, add_missing_db_users |
| 28 | +from iam_groups_authn.sql_admin import ( |
| 29 | + get_instance_users, |
| 30 | + add_missing_db_users, |
| 31 | + InstanceConnectionName, |
| 32 | +) |
29 | 33 | from iam_groups_authn.iam_admin import get_iam_users |
30 | 34 | from iam_groups_authn.mysql import init_connection_engine, RoleService, mysql_username |
31 | 35 |
|
|
34 | 38 | "https://www.googleapis.com/auth/admin.directory.group.member.readonly", |
35 | 39 | "https://www.googleapis.com/auth/sqlservice.admin", |
36 | 40 | ] |
| 41 | +# supported database types |
| 42 | +SUPPORTED_DATABASES = ["MYSQL_8_0"] |
37 | 43 |
|
38 | 44 | app = Quart(__name__) |
39 | 45 |
|
@@ -110,15 +116,31 @@ async def run_groups_authn(): |
110 | 116 |
|
111 | 117 | for instance in sql_instances: |
112 | 118 | instance_task = asyncio.create_task(get_instance_users(user_service, instance)) |
113 | | - instance_tasks[instance] = instance_task |
| 119 | + database_version_task = asyncio.create_task( |
| 120 | + user_service.get_database_version( |
| 121 | + InstanceConnectionName(*instance.split(":")) |
| 122 | + ) |
| 123 | + ) |
| 124 | + instance_tasks[instance] = (instance_task, database_version_task) |
114 | 125 |
|
115 | 126 | # create pairings of iam groups and instances |
116 | 127 | for group in iam_groups: |
117 | 128 | for instance in sql_instances: |
| 129 | + |
| 130 | + # get database version of instance and check if supported |
| 131 | + database_version = await instance_tasks[instance][1] |
| 132 | + if database_version not in SUPPORTED_DATABASES: |
| 133 | + raise ValueError( |
| 134 | + f"Unsupported database version for instance `{instance}`. Current supported versions are: {SUPPORTED_DATABASES}" |
| 135 | + ) |
| 136 | + |
118 | 137 | # add missing IAM group members to database |
119 | 138 | add_users_task = asyncio.create_task( |
120 | 139 | add_missing_db_users( |
121 | | - user_service, group_tasks[group], instance_tasks[instance], instance |
| 140 | + user_service, |
| 141 | + group_tasks[group], |
| 142 | + instance_tasks[instance][0], |
| 143 | + instance, |
122 | 144 | ) |
123 | 145 | ) |
124 | 146 |
|
|
0 commit comments