goe-framework 1.0.8.dev0__tar.gz → 1.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {goe_framework-1.0.8.dev0/src/goe_framework.egg-info → goe_framework-1.1.0}/PKG-INFO +6 -6
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/README.md +2 -2
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/pyproject.toml +4 -4
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/config/config_validation_functions.py +11 -2
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/config/orchestration_config.py +12 -4
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/config/orchestration_defaults.py +13 -4
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/connect/connect.py +1 -2
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/connect/connect_frontend.py +3 -31
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/connect/connect_transport.py +3 -3
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/asgi.py +1 -1
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/exceptions/base.py +9 -6
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/factory/offload_transport_factory.py +3 -3
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/offload_source_data.py +4 -4
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/offload_transport_functions.py +3 -4
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/oracle/oracle_frontend_api.py +39 -50
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/oracle/oracle_offload_source_table.py +4 -7
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/oracle/oracle_offload_transport_rdbms_api.py +4 -4
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/spark/dataproc_offload_transport.py +23 -16
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/orchestration/orchestration_runner.py +1 -1
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/persistence/oracle/oracle_orchestration_repo_client.py +4 -5
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/avro_encoder.py +1 -1
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/ora_query.py +27 -28
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0/src/goe_framework.egg-info}/PKG-INFO +6 -6
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe_framework.egg-info/requires.txt +1 -1
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/AUTHORS +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/LICENSE +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/setup.cfg +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/conductor/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/conductor/hybrid_view_service.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/config/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/config/config_file.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/config/option_descriptions.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/connect/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/connect/connect_backend.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/connect/connect_constants.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/connect/connect_functions.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/exceptions.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/filesystem/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/filesystem/cli_hdfs.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/filesystem/goe_azure.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/filesystem/goe_dfs.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/filesystem/goe_dfs_factory.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/filesystem/goe_gcs.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/filesystem/goe_s3.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/filesystem/web_hdfs.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/goe.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/__main__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/api/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/api/routes/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/api/routes/docs.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/api/routes/orchestration.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/api/routes/system.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/config/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/config/application.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/config/gunicorn.conf.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/config/logging.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/config/router.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/core/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/core/enum.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/core/events.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/core/middleware/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/core/middleware/compression.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/core/middleware/cors.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/core/middleware/secure_headers.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/core/security.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/core/worker.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/exceptions/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/exceptions/errors.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/heartbeat.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/prestart.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/schemas/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/schemas/base.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/schemas/error.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/schemas/generics.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/schemas/orchestration.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/schemas/system.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/services/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/services/heartbeat.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/services/hybrid_view.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/services/orchestrate.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/services/periodic_tasks.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/services/system.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/utils/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/utils/cache.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/utils/group_by.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/utils/orchestrate.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/utils/ping.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/utils/system.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/worker.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/wsgi.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/backend_api.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/backend_table.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/bigquery/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/bigquery/bigquery_backend_api.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/bigquery/bigquery_backend_table.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/bigquery/bigquery_column.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/bigquery/bigquery_literal.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/bigquery/bigquery_predicate.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/column_metadata.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/factory/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/factory/backend_api_factory.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/factory/backend_table_factory.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/factory/frontend_api_factory.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/factory/offload_source_table_factory.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/factory/offload_transport_rdbms_api_factory.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/factory/query_import_factory.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/factory/staging_file_factory.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/format_literal.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/frontend_api.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/hadoop/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/hadoop/hadoop_backend_api.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/hadoop/hadoop_backend_table.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/hadoop/hadoop_column.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/hadoop/hadoop_predicate.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/hadoop/hive_backend_api.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/hadoop/hive_backend_table.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/hadoop/hive_literal.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/hadoop/impala_backend_api.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/hadoop/impala_backend_table.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/hadoop/impala_literal.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/hadoop/sqoop_offload_transport.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/microsoft/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/microsoft/mssql_column.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/microsoft/mssql_frontend_api.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/microsoft/mssql_offload_source_table.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/microsoft/mssql_offload_transport_rdbms_api.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/microsoft/synapse_backend_api.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/microsoft/synapse_backend_table.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/microsoft/synapse_column.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/microsoft/synapse_constants.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/microsoft/synapse_literal.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/microsoft/synapse_predicate.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/offload.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/offload_constants.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/offload_functions.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/offload_messages.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/offload_metadata_functions.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/offload_source_table.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/offload_status_report.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/offload_transport.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/offload_transport_rdbms_api.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/offload_validation.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/offload_xform_functions.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/operation/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/operation/data_type_controls.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/operation/ddl_file.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/operation/not_null_columns.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/operation/partition_controls.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/operation/sort_columns.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/operation/stats_controls.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/operation/table_structure_checks.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/operation/transport.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/option_validation.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/oracle/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/oracle/oracle_column.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/oracle/oracle_literal.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/oracle/oracle_predicate.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/predicate_offload.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/query_import_interface.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/snowflake/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/snowflake/snowflake_backend_api.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/snowflake/snowflake_backend_table.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/snowflake/snowflake_column.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/snowflake/snowflake_literal.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/snowflake/snowflake_predicate.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/spark/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/spark/livy_offload_transport.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/spark/offload_transport_livy_requests.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/spark/pyspark_literal.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/spark/spark_thrift_backend_api.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/staging/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/staging/avro/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/staging/avro/avro_column.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/staging/avro/avro_staging_file.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/staging/parquet/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/staging/parquet/parquet_column.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/staging/parquet/parquet_staging_file.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/staging/staging_file.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/synthetic_partition_literal.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/teradata/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/teradata/teradata_column.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/teradata/teradata_frontend_api.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/teradata/teradata_literal.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/teradata/teradata_offload_source_table.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/teradata/teradata_offload_transport_rdbms_api.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/teradata/teradata_partition_expression.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/teradata/teradata_predicate.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/orchestration/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/orchestration/cli_entry_points.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/orchestration/command_steps.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/orchestration/execution_id.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/orchestration/orchestration_constants.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/orchestration/orchestration_lock.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/persistence/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/persistence/factory/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/persistence/factory/orchestration_repo_client_factory.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/persistence/oracle/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/persistence/orchestration_metadata.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/persistence/orchestration_repo_client.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/persistence/teradata/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/persistence/teradata/teradata_orchestration_repo_client.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/schema_sync/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/schema_sync/schema_sync.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/schema_sync/schema_sync_analyzer.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/schema_sync/schema_sync_command_file.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/schema_sync/schema_sync_constants.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/schema_sync/schema_sync_processor.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/schema_sync/schema_sync_step.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/schema_sync/steps/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/schema_sync/steps/add_backend_column.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/schema_sync/steps/add_oracle_column.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/schema_sync/steps/step_builder.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/scripts/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/scripts/agg_validate.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/__init__.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/better_impyla.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/exception_trigger.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/goe_log.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/goe_log_fh.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/goe_version.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/hive_ddl_transform.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/hive_table_stats.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/hs2_connection.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/json_tools.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/local_cache.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/misc_functions.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/parallel_exec.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/parquet_encoder.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/password_tools.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/polling_thread.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/redis_tools.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/retry_logic.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/simple_timer.py +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe_framework.egg-info/SOURCES.txt +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe_framework.egg-info/dependency_links.txt +0 -0
- {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe_framework.egg-info/top_level.txt +0 -0
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: goe-framework
|
|
3
|
-
Version: 1.0
|
|
3
|
+
Version: 1.1.0
|
|
4
4
|
Maintainer-email: Neil Johnson <neiljohnson@google.com>
|
|
5
5
|
Project-URL: Homepage, https://github.com/gluent/goe
|
|
6
6
|
Project-URL: Issues, https://github.com/gluent/goe/issues
|
|
7
7
|
Classifier: Development Status :: 4 - Beta
|
|
8
|
-
Classifier: Programming Language :: Python :: 3.7
|
|
9
8
|
Classifier: Programming Language :: Python :: 3.8
|
|
10
9
|
Classifier: Programming Language :: Python :: 3.9
|
|
11
10
|
Classifier: Programming Language :: Python :: 3.10
|
|
12
11
|
Classifier: Programming Language :: Python :: 3.11
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
13
13
|
Classifier: Operating System :: OS Independent
|
|
14
|
-
Requires-Python: >=3.
|
|
14
|
+
Requires-Python: >=3.8
|
|
15
15
|
Description-Content-Type: text/markdown
|
|
16
16
|
License-File: LICENSE
|
|
17
17
|
License-File: AUTHORS
|
|
@@ -33,7 +33,7 @@ Requires-Dist: google-cloud-storage
|
|
|
33
33
|
Requires-Dist: boto3
|
|
34
34
|
Requires-Dist: azure-common
|
|
35
35
|
Requires-Dist: azure-storage-blob
|
|
36
|
-
Requires-Dist:
|
|
36
|
+
Requires-Dist: oracledb
|
|
37
37
|
Requires-Dist: google-cloud-bigquery
|
|
38
38
|
Requires-Dist: google-cloud-kms
|
|
39
39
|
Requires-Dist: python-dotenv
|
|
@@ -124,12 +124,12 @@ Variables you will want to pay attention to are:
|
|
|
124
124
|
- OFFLOAD_FS_CONTAINER
|
|
125
125
|
- OFFLOAD_FS_PREFIX
|
|
126
126
|
|
|
127
|
-
If using
|
|
127
|
+
If using Google Managed Service for Apache Spark:
|
|
128
128
|
- GOOGLE_DATAPROC_CLUSTER
|
|
129
129
|
- GOOGLE_DATAPROC_SERVICE_ACCOUNT
|
|
130
130
|
- GOOGLE_DATAPROC_REGION
|
|
131
131
|
|
|
132
|
-
If using
|
|
132
|
+
If using Google Managed Service for Apache Spark serverless:
|
|
133
133
|
- GOOGLE_DATAPROC_BATCHES_VERSION
|
|
134
134
|
- GOOGLE_DATAPROC_SERVICE_ACCOUNT
|
|
135
135
|
- GOOGLE_DATAPROC_REGION
|
|
@@ -53,12 +53,12 @@ Variables you will want to pay attention to are:
|
|
|
53
53
|
- OFFLOAD_FS_CONTAINER
|
|
54
54
|
- OFFLOAD_FS_PREFIX
|
|
55
55
|
|
|
56
|
-
If using
|
|
56
|
+
If using Google Managed Service for Apache Spark:
|
|
57
57
|
- GOOGLE_DATAPROC_CLUSTER
|
|
58
58
|
- GOOGLE_DATAPROC_SERVICE_ACCOUNT
|
|
59
59
|
- GOOGLE_DATAPROC_REGION
|
|
60
60
|
|
|
61
|
-
If using
|
|
61
|
+
If using Google Managed Service for Apache Spark serverless:
|
|
62
62
|
- GOOGLE_DATAPROC_BATCHES_VERSION
|
|
63
63
|
- GOOGLE_DATAPROC_SERVICE_ACCOUNT
|
|
64
64
|
- GOOGLE_DATAPROC_REGION
|
|
@@ -14,19 +14,19 @@
|
|
|
14
14
|
|
|
15
15
|
[project]
|
|
16
16
|
name = "goe-framework"
|
|
17
|
-
version = "1.0
|
|
17
|
+
version = "1.1.0"
|
|
18
18
|
readme = "README.md"
|
|
19
|
-
requires-python = ">=3.
|
|
19
|
+
requires-python = ">=3.8"
|
|
20
20
|
maintainers = [
|
|
21
21
|
{name = "Neil Johnson", email = "neiljohnson@google.com"},
|
|
22
22
|
]
|
|
23
23
|
classifiers = [
|
|
24
24
|
"Development Status :: 4 - Beta",
|
|
25
|
-
"Programming Language :: Python :: 3.7",
|
|
26
25
|
"Programming Language :: Python :: 3.8",
|
|
27
26
|
"Programming Language :: Python :: 3.9",
|
|
28
27
|
"Programming Language :: Python :: 3.10",
|
|
29
28
|
"Programming Language :: Python :: 3.11",
|
|
29
|
+
"Programming Language :: Python :: 3.12",
|
|
30
30
|
"Operating System :: OS Independent"
|
|
31
31
|
]
|
|
32
32
|
dependencies = [
|
|
@@ -53,7 +53,7 @@ dependencies = [
|
|
|
53
53
|
"azure-storage-blob",
|
|
54
54
|
|
|
55
55
|
# For Oracle frontend
|
|
56
|
-
"
|
|
56
|
+
"oracledb",
|
|
57
57
|
|
|
58
58
|
# For BigQuery backend
|
|
59
59
|
"google-cloud-bigquery",
|
{goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/config/config_validation_functions.py
RENAMED
|
@@ -14,12 +14,12 @@
|
|
|
14
14
|
# See the License for the specific language governing permissions and
|
|
15
15
|
# limitations under the License.
|
|
16
16
|
|
|
17
|
-
"""
|
|
18
|
-
"""
|
|
17
|
+
"""config_validation_functions: Library of functions used in goe.py and OrchestrationConfig"""
|
|
19
18
|
|
|
20
19
|
import json
|
|
21
20
|
import random
|
|
22
21
|
import re
|
|
22
|
+
import oracledb
|
|
23
23
|
|
|
24
24
|
from goe.config import orchestration_defaults
|
|
25
25
|
from goe.filesystem.goe_dfs import (
|
|
@@ -417,6 +417,15 @@ def normalise_rdbms_oracle_options(options, exc_cls=OrchestrationConfigException
|
|
|
417
417
|
silent is required when this is called before options has been defined, we don't want to try logging anything
|
|
418
418
|
before logging is ready.
|
|
419
419
|
"""
|
|
420
|
+
if options.oracledb_thick_mode:
|
|
421
|
+
if oracledb.is_thin_mode():
|
|
422
|
+
try:
|
|
423
|
+
oracledb.init_oracle_client()
|
|
424
|
+
except Exception as exc:
|
|
425
|
+
raise exc_cls(
|
|
426
|
+
f"Failed to initialize oracledb thick mode: {exc}"
|
|
427
|
+
) from exc
|
|
428
|
+
|
|
420
429
|
if not options.oracle_dsn:
|
|
421
430
|
raise exc_cls("Oracle connection options required")
|
|
422
431
|
elif not options.use_oracle_wallet and (
|
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
# See the License for the specific language governing permissions and
|
|
15
15
|
# limitations under the License.
|
|
16
16
|
|
|
17
|
-
"""
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
"""OrchestrationConfig: Class of configuration attributes for Orchestration commands.
|
|
18
|
+
These are not attributes we expect an end user to change/provide on a command by command basis,
|
|
19
|
+
it is config coming from configuration files.
|
|
20
20
|
"""
|
|
21
21
|
|
|
22
22
|
import logging
|
|
@@ -47,7 +47,6 @@ from goe.offload.offload_messages import OffloadMessages
|
|
|
47
47
|
from goe.offload.offload_transport_functions import hs2_connection_log_message
|
|
48
48
|
from goe.util.password_tools import PasswordToolsException
|
|
49
49
|
|
|
50
|
-
|
|
51
50
|
logger = logging.getLogger(__name__)
|
|
52
51
|
# Disabling logging by default
|
|
53
52
|
logger.addHandler(logging.NullHandler())
|
|
@@ -201,6 +200,7 @@ EXPECTED_CONFIG_ARGS = [
|
|
|
201
200
|
"teradata_repo_user",
|
|
202
201
|
"use_ssl",
|
|
203
202
|
"use_oracle_wallet",
|
|
203
|
+
"oracledb_thick_mode",
|
|
204
204
|
"webhdfs_host",
|
|
205
205
|
"webhdfs_port",
|
|
206
206
|
"verbose",
|
|
@@ -288,6 +288,7 @@ class OrchestrationConfig:
|
|
|
288
288
|
offload_transport_spark_submit_executable: Optional[str]
|
|
289
289
|
offload_transport_spark_thrift_host: Optional[str]
|
|
290
290
|
use_oracle_wallet: bool
|
|
291
|
+
oracledb_thick_mode: bool
|
|
291
292
|
|
|
292
293
|
def __init__(self, do_not_connect=False, **kwargs):
|
|
293
294
|
"""Do not expect to construct directly via __init__.
|
|
@@ -591,6 +592,13 @@ class OrchestrationConfig:
|
|
|
591
592
|
orchestration_defaults.use_oracle_wallet_default(),
|
|
592
593
|
),
|
|
593
594
|
),
|
|
595
|
+
oracledb_thick_mode=config_dict.get(
|
|
596
|
+
"oracledb_thick_mode",
|
|
597
|
+
orchestration_defaults.bool_option_from_string(
|
|
598
|
+
"ORACLEDB_THICK_MODE",
|
|
599
|
+
orchestration_defaults.oracledb_thick_mode_default(),
|
|
600
|
+
),
|
|
601
|
+
),
|
|
594
602
|
offload_transport_auth_using_oracle_wallet=config_dict.get(
|
|
595
603
|
"offload_transport_auth_using_oracle_wallet",
|
|
596
604
|
orchestration_defaults.bool_option_from_string(
|
|
@@ -14,10 +14,10 @@
|
|
|
14
14
|
# See the License for the specific language governing permissions and
|
|
15
15
|
# limitations under the License.
|
|
16
16
|
|
|
17
|
-
"""
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
"""OrchestrationDefaults: Library of functions providing default values for command line options.
|
|
18
|
+
This is a temporary measure in order to get the code out of goe.py and into a single location, in the
|
|
19
|
+
future we expect to refactor all option processing, including defaults, and this module will hopefully become
|
|
20
|
+
redundant at that time.
|
|
21
21
|
"""
|
|
22
22
|
|
|
23
23
|
# Standard Library
|
|
@@ -738,6 +738,15 @@ def use_oracle_wallet_default() -> bool:
|
|
|
738
738
|
return bool_option_from_string("USE_ORACLE_WALLET", str_val)
|
|
739
739
|
|
|
740
740
|
|
|
741
|
+
def oracledb_thick_mode_default() -> bool:
|
|
742
|
+
str_val = (
|
|
743
|
+
os.environ.get("ORACLEDB_THICK_MODE")
|
|
744
|
+
or os.environ.get("USE_ORACLE_WALLET")
|
|
745
|
+
or "false"
|
|
746
|
+
)
|
|
747
|
+
return bool_option_from_string("ORACLEDB_THICK_MODE", str_val)
|
|
748
|
+
|
|
749
|
+
|
|
741
750
|
def offload_transport_auth_using_oracle_wallet_default() -> bool:
|
|
742
751
|
str_val = os.environ.get("OFFLOAD_TRANSPORT_AUTH_USING_ORACLE_WALLET") or "false"
|
|
743
752
|
return bool_option_from_string(
|
|
@@ -69,7 +69,6 @@ from goe.util.goe_log import log_exception
|
|
|
69
69
|
from goe.util.misc_functions import unsurround
|
|
70
70
|
from goe.util.redis_tools import RedisClient
|
|
71
71
|
|
|
72
|
-
|
|
73
72
|
OS_RELEASE_FILE_REDHAT = "/etc/redhat-release"
|
|
74
73
|
OS_RELEASE_FILE_SUSE = "/etc/SuSE-release"
|
|
75
74
|
OS_RELEASE_FILE_DEBIAN = "/etc/os-release"
|
|
@@ -377,7 +376,7 @@ def upgrade_environment_file(environment_file, template_file):
|
|
|
377
376
|
)
|
|
378
377
|
for key in sorted(set(template.keys()) - set(configuration.keys())):
|
|
379
378
|
detail("Adding %s" % key)
|
|
380
|
-
f.write(template[key])
|
|
379
|
+
f.write(f"{key}={template[key]}\n")
|
|
381
380
|
|
|
382
381
|
log("%s has been updated" % environment_file, ansi_code="green")
|
|
383
382
|
else:
|
|
@@ -16,7 +16,7 @@ import os
|
|
|
16
16
|
import sys
|
|
17
17
|
import traceback
|
|
18
18
|
|
|
19
|
-
from
|
|
19
|
+
from oracledb import DatabaseError
|
|
20
20
|
|
|
21
21
|
from goe.connect.connect_functions import (
|
|
22
22
|
FatalTestFailure,
|
|
@@ -25,6 +25,7 @@ from goe.connect.connect_functions import (
|
|
|
25
25
|
log,
|
|
26
26
|
success,
|
|
27
27
|
test_header,
|
|
28
|
+
warning,
|
|
28
29
|
)
|
|
29
30
|
from goe.offload.factory.frontend_api_factory import frontend_api_factory
|
|
30
31
|
from goe.offload import offload_constants
|
|
@@ -41,7 +42,6 @@ from goe.goe import (
|
|
|
41
42
|
NLS_LANG_MISSING_CHARACTER_SET_EXCEPTION_TEMPLATE,
|
|
42
43
|
)
|
|
43
44
|
|
|
44
|
-
|
|
45
45
|
GOE_MINIMUM_ORACLE_VERSION = "10.2.0.1"
|
|
46
46
|
|
|
47
47
|
|
|
@@ -141,7 +141,7 @@ def test_oracle(orchestration_config, messages):
|
|
|
141
141
|
'NLS_LANG not specified in environment, this will be set at offload time to "%s"'
|
|
142
142
|
% os.environ["NLS_LANG"]
|
|
143
143
|
)
|
|
144
|
-
|
|
144
|
+
warning(test_name)
|
|
145
145
|
else:
|
|
146
146
|
if not nls_lang_has_charset():
|
|
147
147
|
detail(
|
|
@@ -224,34 +224,6 @@ def test_oracle(orchestration_config, messages):
|
|
|
224
224
|
detail(exc)
|
|
225
225
|
failure(test_name)
|
|
226
226
|
|
|
227
|
-
test_name = "Oracle Parameters"
|
|
228
|
-
test_header(test_name)
|
|
229
|
-
|
|
230
|
-
db_parameters = [
|
|
231
|
-
"processes",
|
|
232
|
-
"sessions",
|
|
233
|
-
"query_rewrite_enabled",
|
|
234
|
-
"_optimizer_cartesian_enabled",
|
|
235
|
-
]
|
|
236
|
-
binds = {}
|
|
237
|
-
|
|
238
|
-
for count, value in enumerate(db_parameters):
|
|
239
|
-
binds["b" + str(count)] = value
|
|
240
|
-
|
|
241
|
-
sql = (
|
|
242
|
-
"select name, value from gv$parameter where name in (%s) group by name, value order by 1,2"
|
|
243
|
-
% ",".join([":" + _ for _ in binds])
|
|
244
|
-
)
|
|
245
|
-
db_parameter_values = frontend_api.execute_query_fetch_all(sql, query_params=binds)
|
|
246
|
-
col1_width = max(
|
|
247
|
-
max([len(row[0]) for row in db_parameter_values]), len("Parameter")
|
|
248
|
-
)
|
|
249
|
-
col2_width = max(max([len(row[1]) for row in db_parameter_values]), len("Value"))
|
|
250
|
-
parameter_format = "{0:" + str(col1_width) + "} {1:>" + str(col2_width) + "}"
|
|
251
|
-
detail(parameter_format.format("Parameter", "Value"))
|
|
252
|
-
for row in db_parameter_values:
|
|
253
|
-
detail(parameter_format.format(row[0], row[1]))
|
|
254
|
-
|
|
255
227
|
cx.close()
|
|
256
228
|
|
|
257
229
|
|
|
@@ -287,7 +287,7 @@ def test_spark_gcloud(orchestration_config, messages):
|
|
|
287
287
|
log("Skipping Spark gcloud tests due to absent config", detail=VVERBOSE)
|
|
288
288
|
return
|
|
289
289
|
|
|
290
|
-
test_name = "Spark
|
|
290
|
+
test_name = "Google Managed Spark settings"
|
|
291
291
|
test_header(test_name)
|
|
292
292
|
if spark_submit_executable_exists(
|
|
293
293
|
orchestration_config,
|
|
@@ -309,7 +309,7 @@ def test_spark_gcloud(orchestration_config, messages):
|
|
|
309
309
|
orchestration_config, messages
|
|
310
310
|
)
|
|
311
311
|
verify_offload_transport_rdbms_connectivity(
|
|
312
|
-
data_transport_client, "Spark
|
|
312
|
+
data_transport_client, "Google Managed Spark"
|
|
313
313
|
)
|
|
314
314
|
|
|
315
315
|
if is_spark_gcloud_batches_available(orchestration_config, None, messages=messages):
|
|
@@ -317,7 +317,7 @@ def test_spark_gcloud(orchestration_config, messages):
|
|
|
317
317
|
orchestration_config, messages
|
|
318
318
|
)
|
|
319
319
|
verify_offload_transport_rdbms_connectivity(
|
|
320
|
-
data_transport_client, "Spark
|
|
320
|
+
data_transport_client, "Google Managed Spark serverless"
|
|
321
321
|
)
|
|
322
322
|
|
|
323
323
|
|
|
@@ -17,7 +17,7 @@ import multiprocessing
|
|
|
17
17
|
from pathlib import Path
|
|
18
18
|
|
|
19
19
|
# Third Party Libraries
|
|
20
|
-
from
|
|
20
|
+
from oracledb import DatabaseError as OracleDatabaseError
|
|
21
21
|
from fastapi import FastAPI
|
|
22
22
|
from fastapi.exceptions import HTTPException, RequestValidationError
|
|
23
23
|
from fastapi.responses import ORJSONResponse
|
|
@@ -13,11 +13,12 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
15
|
"""HTTP exception and handler for FastAPI."""
|
|
16
|
+
|
|
16
17
|
# Standard Library
|
|
17
18
|
from typing import Any, Dict, Optional, Union
|
|
18
19
|
|
|
19
20
|
# Third Party Libraries
|
|
20
|
-
from
|
|
21
|
+
from oracledb import DatabaseError as OracleDatabaseError
|
|
21
22
|
from fastapi import Request, status
|
|
22
23
|
from fastapi.exceptions import HTTPException, RequestValidationError
|
|
23
24
|
from fastapi.responses import ORJSONResponse
|
|
@@ -93,11 +94,13 @@ class ApplicationError(BaseApplicationError):
|
|
|
93
94
|
BaseApplicationError.__init__( # noqa: WPS609
|
|
94
95
|
self,
|
|
95
96
|
status_code,
|
|
96
|
-
content=
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
97
|
+
content=(
|
|
98
|
+
schemas.ErrorMessage(code=status_code, message=message).dict(
|
|
99
|
+
exclude_none=True,
|
|
100
|
+
)
|
|
101
|
+
if isinstance(message, str)
|
|
102
|
+
else message
|
|
103
|
+
),
|
|
101
104
|
)
|
|
102
105
|
|
|
103
106
|
|
|
@@ -195,7 +195,7 @@ def spark_livy_jdbc_connectivity_checker(offload_options, messages):
|
|
|
195
195
|
|
|
196
196
|
|
|
197
197
|
def spark_dataproc_jdbc_connectivity_checker(offload_options, messages):
|
|
198
|
-
"""Connect needs a cut down client to simply check RDBMS connectivity from
|
|
198
|
+
"""Connect needs a cut down client to simply check RDBMS connectivity from Managed Spark
|
|
199
199
|
back to the source RDBMS is correctly configured
|
|
200
200
|
"""
|
|
201
201
|
from goe.offload.spark.dataproc_offload_transport import (
|
|
@@ -207,8 +207,8 @@ def spark_dataproc_jdbc_connectivity_checker(offload_options, messages):
|
|
|
207
207
|
|
|
208
208
|
|
|
209
209
|
def spark_dataproc_batches_jdbc_connectivity_checker(offload_options, messages):
|
|
210
|
-
"""Connect needs a cut down client to simply check RDBMS connectivity from
|
|
211
|
-
back to the source RDBMS is correctly configured
|
|
210
|
+
"""Connect needs a cut down client to simply check RDBMS connectivity from Managed
|
|
211
|
+
Spark serverless back to the source RDBMS is correctly configured
|
|
212
212
|
"""
|
|
213
213
|
from goe.offload.spark.dataproc_offload_transport import (
|
|
214
214
|
OffloadTransportSparkBatchesGcloudCanary,
|
|
@@ -1042,12 +1042,12 @@ class OffloadSourceDataInterface(metaclass=ABCMeta):
|
|
|
1042
1042
|
return source_partitions[hv_partition_index + 1]
|
|
1043
1043
|
|
|
1044
1044
|
def _select_target_table_max(self):
|
|
1045
|
-
"""Get highest point of data stored in target table and store in state
|
|
1046
|
-
Impyla
|
|
1047
|
-
optimistic_prune_clause is used to limit the partitions scanned when looking for existing rows
|
|
1045
|
+
"""Get highest point of data stored in target table and store in state.
|
|
1046
|
+
Impyla and oracledb both truncate nanoseconds hence TIMESTAMP columns are returned as string.
|
|
1047
|
+
optimistic_prune_clause is used to limit the partitions scanned when looking for existing rows:
|
|
1048
1048
|
If no data is returned then we resort to scanning without the clause
|
|
1049
1049
|
optimistic_prune_clause is only applicable for single column partition schemes
|
|
1050
|
-
Also returns the max value for convenience
|
|
1050
|
+
Also returns the max value for convenience.
|
|
1051
1051
|
"""
|
|
1052
1052
|
if not self._target_table_exists():
|
|
1053
1053
|
return None
|
{goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/offload_transport_functions.py
RENAMED
|
@@ -12,8 +12,7 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
"""
|
|
16
|
-
"""
|
|
15
|
+
"""OffloadTransportFunctions: Library of functions used in goe.py and data transport modules"""
|
|
17
16
|
|
|
18
17
|
import decimal
|
|
19
18
|
import logging
|
|
@@ -26,7 +25,7 @@ from subprocess import PIPE, STDOUT
|
|
|
26
25
|
import sys
|
|
27
26
|
from typing import Optional, TYPE_CHECKING
|
|
28
27
|
|
|
29
|
-
import
|
|
28
|
+
import oracledb as cxo
|
|
30
29
|
|
|
31
30
|
from goe.offload.frontend_api import FRONTEND_TRACE_MODULE
|
|
32
31
|
from goe.offload.offload_constants import (
|
|
@@ -146,7 +145,7 @@ def get_rdbms_connection_for_oracle(
|
|
|
146
145
|
if use_oracle_wallet:
|
|
147
146
|
ora_conn = cxo.connect(dsn=ora_dsn)
|
|
148
147
|
else:
|
|
149
|
-
ora_conn = cxo.connect(ora_user, ora_pass, ora_dsn)
|
|
148
|
+
ora_conn = cxo.connect(user=ora_user, password=ora_pass, dsn=ora_dsn)
|
|
150
149
|
session_cursor = ora_conn.cursor()
|
|
151
150
|
try:
|
|
152
151
|
session_cursor.execute(
|