(
import_request: LaunchDarklyImportRequest,
)
| 1104 | |
| 1105 | |
| 1106 | def process_import_request( |
| 1107 | import_request: LaunchDarklyImportRequest, |
| 1108 | ) -> None: |
| 1109 | with _complete_import_request(import_request): |
| 1110 | ld_token = _unsign_ld_value( |
| 1111 | import_request.ld_token, |
| 1112 | import_request.created_by.id, |
| 1113 | ) |
| 1114 | ld_project_key = import_request.ld_project_key |
| 1115 | |
| 1116 | ld_client = LaunchDarklyClient(ld_token) |
| 1117 | |
| 1118 | with closing_stale_connections(): |
| 1119 | try: |
| 1120 | ld_environments = ld_client.get_environments(project_key=ld_project_key) |
| 1121 | ld_flags = ld_client.get_flags_by_envs( |
| 1122 | project_key=ld_project_key, |
| 1123 | environment_keys=[env["key"] for env in ld_environments], |
| 1124 | ) |
| 1125 | ld_flag_tags = ld_client.get_flag_tags() |
| 1126 | # ld_segment_tags = ld_client.get_segment_tags() |
| 1127 | # Keyed by (segment, environment) |
| 1128 | ld_segments: list[tuple[ld_types.UserSegment, str]] = [] |
| 1129 | for env in ld_environments: |
| 1130 | ld_segments_for_env = ld_client.get_segments( |
| 1131 | project_key=ld_project_key, |
| 1132 | environment_key=env["key"], |
| 1133 | ) |
| 1134 | for segment in ld_segments_for_env: |
| 1135 | ld_segments.append((segment, env["key"])) |
| 1136 | |
| 1137 | except RequestException as exc: |
| 1138 | _log_error( |
| 1139 | import_request=import_request, |
| 1140 | error_message=( |
| 1141 | f"{exc.__class__.__name__} " |
| 1142 | f"{str(exc.response.status_code) + ' ' if exc.response else ''}" |
| 1143 | + f"when requesting {getattr(exc.request, 'path_url', 'unknown')}" |
| 1144 | ), |
| 1145 | ) |
| 1146 | raise |
| 1147 | |
| 1148 | # Create environments |
| 1149 | environments_by_ld_environment_key = _create_environments_from_ld( |
| 1150 | ld_environments=ld_environments, |
| 1151 | project_id=import_request.project_id, |
| 1152 | ) |
| 1153 | |
| 1154 | # Create segments using `ld_segment_tags` |
| 1155 | # TODO populate with LD tags when https://github.com/Flagsmith/flagsmith/issues/3241 is done |
| 1156 | segment_tags_by_ld_tag: dict[str, Tag] = {} |
| 1157 | segments_by_ld_key = _create_segments_from_ld( |
| 1158 | import_request=import_request, |
| 1159 | ld_segments=ld_segments, |
| 1160 | environments_by_ld_environment_key=environments_by_ld_environment_key, |
| 1161 | tags_by_ld_tag=segment_tags_by_ld_tag, |
| 1162 | project_id=import_request.project_id, |
| 1163 | ) |
searching dependent graphs…