goe-framework 1.0.6__tar.gz → 1.0.6.dev0__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.6/src/goe_framework.egg-info → goe_framework-1.0.6.dev0}/PKG-INFO +21 -13
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/README.md +20 -12
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/pyproject.toml +1 -1
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/config/config_validation_functions.py +0 -52
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/config/orchestration_config.py +0 -37
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/config/orchestration_defaults.py +0 -39
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/goe.py +10 -100
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/schemas/orchestration.py +0 -16
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/backend_api.py +4 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/backend_table.py +1 -49
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/bigquery/bigquery_backend_api.py +4 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/bigquery/bigquery_backend_table.py +0 -25
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/factory/backend_table_factory.py +0 -6
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/hadoop/hadoop_backend_table.py +0 -25
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/hadoop/hive_backend_table.py +0 -2
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/hadoop/impala_backend_table.py +3 -5
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/microsoft/synapse_backend_table.py +0 -25
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/offload.py +1 -5
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/offload_constants.py +2 -1
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/offload_metadata_functions.py +0 -1
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/operation/sort_columns.py +36 -26
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/operation/transport.py +1 -13
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/snowflake/snowflake_backend_table.py +0 -2
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/orchestration/orchestration_runner.py +5 -1
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0/src/goe_framework.egg-info}/PKG-INFO +21 -13
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe_framework.egg-info/SOURCES.txt +0 -5
- goe_framework-1.0.6/src/goe/data_governance/cloudera_navigator.py +0 -845
- goe_framework-1.0.6/src/goe/data_governance/hadoop_data_governance.py +0 -616
- goe_framework-1.0.6/src/goe/data_governance/hadoop_data_governance_constants.py +0 -90
- goe_framework-1.0.6/src/goe/data_governance/hadoop_data_governance_interface.py +0 -209
- goe_framework-1.0.6/src/goe/util/__init__.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/AUTHORS +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/LICENSE +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/setup.cfg +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/__init__.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/conductor/__init__.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/conductor/hybrid_view_service.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/config/__init__.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/config/config_file.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/config/option_descriptions.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/connect/__init__.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/connect/connect.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/connect/connect_backend.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/connect/connect_constants.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/connect/connect_frontend.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/connect/connect_functions.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/connect/connect_transport.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/exceptions.py +0 -0
- {goe_framework-1.0.6/src/goe/data_governance → goe_framework-1.0.6.dev0/src/goe/filesystem}/__init__.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/filesystem/cli_hdfs.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/filesystem/goe_azure.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/filesystem/goe_dfs.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/filesystem/goe_dfs_factory.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/filesystem/goe_gcs.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/filesystem/goe_s3.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/filesystem/web_hdfs.py +0 -0
- {goe_framework-1.0.6/src/goe/filesystem → goe_framework-1.0.6.dev0/src/goe/listener}/__init__.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/__main__.py +0 -0
- {goe_framework-1.0.6/src/goe/listener → goe_framework-1.0.6.dev0/src/goe/listener/api}/__init__.py +0 -0
- {goe_framework-1.0.6/src/goe/listener/api → goe_framework-1.0.6.dev0/src/goe/listener/api/routes}/__init__.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/api/routes/docs.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/api/routes/orchestration.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/api/routes/system.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/asgi.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/config/__init__.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/config/application.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/config/gunicorn.conf.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/config/logging.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/config/router.py +0 -0
- {goe_framework-1.0.6/src/goe/listener/api/routes → goe_framework-1.0.6.dev0/src/goe/listener/core}/__init__.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/core/enum.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/core/events.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/core/middleware/__init__.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/core/middleware/compression.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/core/middleware/cors.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/core/middleware/secure_headers.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/core/security.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/core/worker.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/exceptions/__init__.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/exceptions/base.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/exceptions/errors.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/heartbeat.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/prestart.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/schemas/__init__.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/schemas/base.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/schemas/error.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/schemas/generics.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/schemas/system.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/services/__init__.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/services/heartbeat.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/services/hybrid_view.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/services/orchestrate.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/services/periodic_tasks.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/services/system.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/utils/__init__.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/utils/cache.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/utils/group_by.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/utils/orchestrate.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/utils/ping.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/utils/system.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/worker.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/listener/wsgi.py +0 -0
- {goe_framework-1.0.6/src/goe/listener/core → goe_framework-1.0.6.dev0/src/goe/offload}/__init__.py +0 -0
- {goe_framework-1.0.6/src/goe/offload → goe_framework-1.0.6.dev0/src/goe/offload/bigquery}/__init__.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/bigquery/bigquery_column.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/bigquery/bigquery_literal.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/bigquery/bigquery_predicate.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/column_metadata.py +0 -0
- {goe_framework-1.0.6/src/goe/offload/bigquery → goe_framework-1.0.6.dev0/src/goe/offload/factory}/__init__.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/factory/backend_api_factory.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/factory/frontend_api_factory.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/factory/offload_source_table_factory.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/factory/offload_transport_factory.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/factory/offload_transport_rdbms_api_factory.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/factory/query_import_factory.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/factory/staging_file_factory.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/format_literal.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/frontend_api.py +0 -0
- {goe_framework-1.0.6/src/goe/offload/factory → goe_framework-1.0.6.dev0/src/goe/offload/hadoop}/__init__.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/hadoop/hadoop_backend_api.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/hadoop/hadoop_column.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/hadoop/hadoop_predicate.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/hadoop/hive_backend_api.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/hadoop/hive_literal.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/hadoop/impala_backend_api.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/hadoop/impala_literal.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/hadoop/sqoop_offload_transport.py +0 -0
- {goe_framework-1.0.6/src/goe/offload/hadoop → goe_framework-1.0.6.dev0/src/goe/offload/microsoft}/__init__.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/microsoft/mssql_column.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/microsoft/mssql_frontend_api.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/microsoft/mssql_offload_source_table.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/microsoft/mssql_offload_transport_rdbms_api.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/microsoft/synapse_backend_api.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/microsoft/synapse_column.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/microsoft/synapse_constants.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/microsoft/synapse_literal.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/microsoft/synapse_predicate.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/offload_functions.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/offload_messages.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/offload_source_data.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/offload_source_table.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/offload_status_report.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/offload_transport.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/offload_transport_functions.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/offload_transport_rdbms_api.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/offload_validation.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/offload_xform_functions.py +0 -0
- {goe_framework-1.0.6/src/goe/offload/microsoft → goe_framework-1.0.6.dev0/src/goe/offload/operation}/__init__.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/operation/data_type_controls.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/operation/ddl_file.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/operation/not_null_columns.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/operation/partition_controls.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/operation/stats_controls.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/operation/table_structure_checks.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/option_validation.py +0 -0
- {goe_framework-1.0.6/src/goe/offload/operation → goe_framework-1.0.6.dev0/src/goe/offload/oracle}/__init__.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/oracle/oracle_column.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/oracle/oracle_frontend_api.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/oracle/oracle_literal.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/oracle/oracle_offload_source_table.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/oracle/oracle_offload_transport_rdbms_api.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/oracle/oracle_predicate.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/predicate_offload.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/query_import_interface.py +0 -0
- {goe_framework-1.0.6/src/goe/offload/oracle → goe_framework-1.0.6.dev0/src/goe/offload/snowflake}/__init__.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/snowflake/snowflake_backend_api.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/snowflake/snowflake_column.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/snowflake/snowflake_literal.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/snowflake/snowflake_predicate.py +0 -0
- {goe_framework-1.0.6/src/goe/offload/snowflake → goe_framework-1.0.6.dev0/src/goe/offload/spark}/__init__.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/spark/dataproc_offload_transport.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/spark/livy_offload_transport.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/spark/offload_transport_livy_requests.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/spark/pyspark_literal.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/spark/spark_thrift_backend_api.py +0 -0
- {goe_framework-1.0.6/src/goe/offload/spark → goe_framework-1.0.6.dev0/src/goe/offload/staging}/__init__.py +0 -0
- {goe_framework-1.0.6/src/goe/offload/staging → goe_framework-1.0.6.dev0/src/goe/offload/staging/avro}/__init__.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/staging/avro/avro_column.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/staging/avro/avro_staging_file.py +0 -0
- {goe_framework-1.0.6/src/goe/offload/staging/avro → goe_framework-1.0.6.dev0/src/goe/offload/staging/parquet}/__init__.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/staging/parquet/parquet_column.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/staging/parquet/parquet_staging_file.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/staging/staging_file.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/synthetic_partition_literal.py +0 -0
- {goe_framework-1.0.6/src/goe/offload/staging/parquet → goe_framework-1.0.6.dev0/src/goe/offload/teradata}/__init__.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/teradata/teradata_column.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/teradata/teradata_frontend_api.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/teradata/teradata_literal.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/teradata/teradata_offload_source_table.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/teradata/teradata_offload_transport_rdbms_api.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/teradata/teradata_partition_expression.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/offload/teradata/teradata_predicate.py +0 -0
- {goe_framework-1.0.6/src/goe/offload/teradata → goe_framework-1.0.6.dev0/src/goe/orchestration}/__init__.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/orchestration/cli_entry_points.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/orchestration/command_steps.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/orchestration/execution_id.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/orchestration/orchestration_constants.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/orchestration/orchestration_lock.py +0 -0
- {goe_framework-1.0.6/src/goe/orchestration → goe_framework-1.0.6.dev0/src/goe/persistence}/__init__.py +0 -0
- {goe_framework-1.0.6/src/goe/persistence → goe_framework-1.0.6.dev0/src/goe/persistence/factory}/__init__.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/persistence/factory/orchestration_repo_client_factory.py +0 -0
- {goe_framework-1.0.6/src/goe/persistence/factory → goe_framework-1.0.6.dev0/src/goe/persistence/oracle}/__init__.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/persistence/oracle/oracle_orchestration_repo_client.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/persistence/orchestration_metadata.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/persistence/orchestration_repo_client.py +0 -0
- {goe_framework-1.0.6/src/goe/persistence/oracle → goe_framework-1.0.6.dev0/src/goe/persistence/teradata}/__init__.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/persistence/teradata/teradata_orchestration_repo_client.py +0 -0
- {goe_framework-1.0.6/src/goe/persistence/teradata → goe_framework-1.0.6.dev0/src/goe/schema_sync}/__init__.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/schema_sync/schema_sync.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/schema_sync/schema_sync_analyzer.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/schema_sync/schema_sync_command_file.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/schema_sync/schema_sync_constants.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/schema_sync/schema_sync_processor.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/schema_sync/schema_sync_step.py +0 -0
- {goe_framework-1.0.6/src/goe/schema_sync → goe_framework-1.0.6.dev0/src/goe/schema_sync/steps}/__init__.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/schema_sync/steps/add_backend_column.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/schema_sync/steps/add_oracle_column.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/schema_sync/steps/step_builder.py +0 -0
- {goe_framework-1.0.6/src/goe/schema_sync/steps → goe_framework-1.0.6.dev0/src/goe/scripts}/__init__.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/scripts/agg_validate.py +0 -0
- {goe_framework-1.0.6/src/goe/scripts → goe_framework-1.0.6.dev0/src/goe/util}/__init__.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/util/avro_encoder.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/util/better_impyla.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/util/exception_trigger.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/util/goe_log.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/util/goe_log_fh.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/util/goe_version.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/util/hive_ddl_transform.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/util/hive_table_stats.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/util/hs2_connection.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/util/json_tools.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/util/local_cache.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/util/misc_functions.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/util/ora_query.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/util/parallel_exec.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/util/parquet_encoder.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/util/password_tools.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/util/polling_thread.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/util/redis_tools.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/util/retry_logic.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/util/simple_timer.py +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe_framework.egg-info/dependency_links.txt +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe_framework.egg-info/requires.txt +0 -0
- {goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe_framework.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: goe-framework
|
|
3
|
-
Version: 1.0.6
|
|
3
|
+
Version: 1.0.6.dev0
|
|
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
|
|
@@ -77,9 +77,9 @@ At present GOE is a command line tool. Alongside installing the Python package w
|
|
|
77
77
|
# Offload Home
|
|
78
78
|
In addition to the GOE software we need a supporting directory tree called the Offload Home. This is identified using the `OFFLOAD_HOME` environment variable. In this directory we keep configuration files, logs and the GOE software if you choose not to run scripts directly out of the cloned repo. Offload Home will also typically contain a Python virtual environment into which the GOE package and dependencies will be installed, you can run these out of the repository directory but, for separation of duties purposes, may choose to keep the source code away from users of the tool.
|
|
79
79
|
|
|
80
|
-
# Installation
|
|
80
|
+
# Installation From a Package
|
|
81
81
|
|
|
82
|
-
## Installing the GOE Python
|
|
82
|
+
## Installing the GOE Python Package
|
|
83
83
|
1) Copy the package to the target host, this may not be the same host the repository was cloned to.
|
|
84
84
|
2) Create the Offload Home directory, for example:
|
|
85
85
|
```
|
|
@@ -98,12 +98,17 @@ python3 -m venv .venv && . .venv/bin/activate
|
|
|
98
98
|
5) Install the GOE Python package:
|
|
99
99
|
```
|
|
100
100
|
cd $OFFLOAD_HOME
|
|
101
|
-
|
|
101
|
+
python3 -m pip install goe-framework==<goe-version>
|
|
102
|
+
```
|
|
103
|
+
or use the bundled wheel file:
|
|
104
|
+
```
|
|
105
|
+
cd $OFFLOAD_HOME
|
|
106
|
+
GOE_WHEEL="goe_framework-<goe-version>-py3-none-any.whl"
|
|
102
107
|
python3 -m pip install lib/${GOE_WHEEL}
|
|
103
108
|
```
|
|
104
109
|
|
|
105
|
-
## Configuration
|
|
106
|
-
Create `offload.env` in the Offload Home
|
|
110
|
+
## Configuration File
|
|
111
|
+
Create `offload.env` in the Offload Home. This file contains the necessary configuration specific to your environment:
|
|
107
112
|
```
|
|
108
113
|
cp ${OFFLOAD_HOME}/conf/oracle-bigquery-offload.env.template ${OFFLOAD_HOME}/conf/offload.env
|
|
109
114
|
vi ${OFFLOAD_HOME}/conf/offload.env
|
|
@@ -129,7 +134,7 @@ If using Dataproc Batches to provide Spark:
|
|
|
129
134
|
- GOOGLE_DATAPROC_REGION
|
|
130
135
|
- GOOGLE_DATAPROC_BATCHES_SUBNET
|
|
131
136
|
|
|
132
|
-
## Install
|
|
137
|
+
## Install Database Objects
|
|
133
138
|
To install supporting database objects you need access to a database admin account that can create users, grant them system privileges and create objects in the schemas created. SYSTEM has been used in the example below but this is *not* a necessity:
|
|
134
139
|
```
|
|
135
140
|
cd ${OFFLOAD_HOME}/setup
|
|
@@ -143,11 +148,11 @@ alter user goe_adm identified by ...;
|
|
|
143
148
|
alter user goe_app identified by ...;
|
|
144
149
|
```
|
|
145
150
|
|
|
146
|
-
# Building a
|
|
151
|
+
# Building a Custom Package
|
|
147
152
|
|
|
148
|
-
If you want to test with the latest commits that have not yet been included in a
|
|
153
|
+
If you want to test with the latest commits that have not yet been included in a GitHub release you can build a custom package from the repository.
|
|
149
154
|
|
|
150
|
-
## Prepare the
|
|
155
|
+
## Prepare the Host/Cloned Repository
|
|
151
156
|
Debian prerequisites:
|
|
152
157
|
```
|
|
153
158
|
sudo apt-get -y install make python3-venv
|
|
@@ -166,13 +171,13 @@ curl -fL https://github.com/coursier/coursier/releases/latest/download/cs-x86_64
|
|
|
166
171
|
. ~/.bash_profile
|
|
167
172
|
```
|
|
168
173
|
|
|
169
|
-
## Make a GOE
|
|
174
|
+
## Make a GOE Package
|
|
170
175
|
To create a package which contains all required artifacts for running GOE commands use the `make` target below:
|
|
171
176
|
```
|
|
172
177
|
make clean && make package
|
|
173
178
|
```
|
|
174
179
|
|
|
175
|
-
# Install for
|
|
180
|
+
# Install for Development
|
|
176
181
|
To create a Python virtual environment and install all required dependencies into the repository directory:
|
|
177
182
|
```
|
|
178
183
|
make clean && make install-dev
|
|
@@ -187,7 +192,10 @@ Note only the Python dependencies for Oracle and BigQuery are installed by defau
|
|
|
187
192
|
make install-dev-extras
|
|
188
193
|
```
|
|
189
194
|
|
|
190
|
-
#
|
|
195
|
+
# Supporting Infrastructure
|
|
196
|
+
GOE requires access to cloud storage and Spark. For a Google Cloud installation this is described here: [Google Cloud Platform Setup for a BigQuery Target](docs/gcp_setup.md)
|
|
197
|
+
|
|
198
|
+
# Running Commands
|
|
191
199
|
Activate the GOE Python virtual environment:
|
|
192
200
|
```
|
|
193
201
|
source ./.venv/bin/activate
|
|
@@ -7,9 +7,9 @@ At present GOE is a command line tool. Alongside installing the Python package w
|
|
|
7
7
|
# Offload Home
|
|
8
8
|
In addition to the GOE software we need a supporting directory tree called the Offload Home. This is identified using the `OFFLOAD_HOME` environment variable. In this directory we keep configuration files, logs and the GOE software if you choose not to run scripts directly out of the cloned repo. Offload Home will also typically contain a Python virtual environment into which the GOE package and dependencies will be installed, you can run these out of the repository directory but, for separation of duties purposes, may choose to keep the source code away from users of the tool.
|
|
9
9
|
|
|
10
|
-
# Installation
|
|
10
|
+
# Installation From a Package
|
|
11
11
|
|
|
12
|
-
## Installing the GOE Python
|
|
12
|
+
## Installing the GOE Python Package
|
|
13
13
|
1) Copy the package to the target host, this may not be the same host the repository was cloned to.
|
|
14
14
|
2) Create the Offload Home directory, for example:
|
|
15
15
|
```
|
|
@@ -28,12 +28,17 @@ python3 -m venv .venv && . .venv/bin/activate
|
|
|
28
28
|
5) Install the GOE Python package:
|
|
29
29
|
```
|
|
30
30
|
cd $OFFLOAD_HOME
|
|
31
|
-
|
|
31
|
+
python3 -m pip install goe-framework==<goe-version>
|
|
32
|
+
```
|
|
33
|
+
or use the bundled wheel file:
|
|
34
|
+
```
|
|
35
|
+
cd $OFFLOAD_HOME
|
|
36
|
+
GOE_WHEEL="goe_framework-<goe-version>-py3-none-any.whl"
|
|
32
37
|
python3 -m pip install lib/${GOE_WHEEL}
|
|
33
38
|
```
|
|
34
39
|
|
|
35
|
-
## Configuration
|
|
36
|
-
Create `offload.env` in the Offload Home
|
|
40
|
+
## Configuration File
|
|
41
|
+
Create `offload.env` in the Offload Home. This file contains the necessary configuration specific to your environment:
|
|
37
42
|
```
|
|
38
43
|
cp ${OFFLOAD_HOME}/conf/oracle-bigquery-offload.env.template ${OFFLOAD_HOME}/conf/offload.env
|
|
39
44
|
vi ${OFFLOAD_HOME}/conf/offload.env
|
|
@@ -59,7 +64,7 @@ If using Dataproc Batches to provide Spark:
|
|
|
59
64
|
- GOOGLE_DATAPROC_REGION
|
|
60
65
|
- GOOGLE_DATAPROC_BATCHES_SUBNET
|
|
61
66
|
|
|
62
|
-
## Install
|
|
67
|
+
## Install Database Objects
|
|
63
68
|
To install supporting database objects you need access to a database admin account that can create users, grant them system privileges and create objects in the schemas created. SYSTEM has been used in the example below but this is *not* a necessity:
|
|
64
69
|
```
|
|
65
70
|
cd ${OFFLOAD_HOME}/setup
|
|
@@ -73,11 +78,11 @@ alter user goe_adm identified by ...;
|
|
|
73
78
|
alter user goe_app identified by ...;
|
|
74
79
|
```
|
|
75
80
|
|
|
76
|
-
# Building a
|
|
81
|
+
# Building a Custom Package
|
|
77
82
|
|
|
78
|
-
If you want to test with the latest commits that have not yet been included in a
|
|
83
|
+
If you want to test with the latest commits that have not yet been included in a GitHub release you can build a custom package from the repository.
|
|
79
84
|
|
|
80
|
-
## Prepare the
|
|
85
|
+
## Prepare the Host/Cloned Repository
|
|
81
86
|
Debian prerequisites:
|
|
82
87
|
```
|
|
83
88
|
sudo apt-get -y install make python3-venv
|
|
@@ -96,13 +101,13 @@ curl -fL https://github.com/coursier/coursier/releases/latest/download/cs-x86_64
|
|
|
96
101
|
. ~/.bash_profile
|
|
97
102
|
```
|
|
98
103
|
|
|
99
|
-
## Make a GOE
|
|
104
|
+
## Make a GOE Package
|
|
100
105
|
To create a package which contains all required artifacts for running GOE commands use the `make` target below:
|
|
101
106
|
```
|
|
102
107
|
make clean && make package
|
|
103
108
|
```
|
|
104
109
|
|
|
105
|
-
# Install for
|
|
110
|
+
# Install for Development
|
|
106
111
|
To create a Python virtual environment and install all required dependencies into the repository directory:
|
|
107
112
|
```
|
|
108
113
|
make clean && make install-dev
|
|
@@ -117,7 +122,10 @@ Note only the Python dependencies for Oracle and BigQuery are installed by defau
|
|
|
117
122
|
make install-dev-extras
|
|
118
123
|
```
|
|
119
124
|
|
|
120
|
-
#
|
|
125
|
+
# Supporting Infrastructure
|
|
126
|
+
GOE requires access to cloud storage and Spark. For a Google Cloud installation this is described here: [Google Cloud Platform Setup for a BigQuery Target](docs/gcp_setup.md)
|
|
127
|
+
|
|
128
|
+
# Running Commands
|
|
121
129
|
Activate the GOE Python virtual environment:
|
|
122
130
|
```
|
|
123
131
|
source ./.venv/bin/activate
|
{goe_framework-1.0.6 → goe_framework-1.0.6.dev0}/src/goe/config/config_validation_functions.py
RENAMED
|
@@ -22,13 +22,6 @@ import random
|
|
|
22
22
|
import re
|
|
23
23
|
|
|
24
24
|
from goe.config import orchestration_defaults
|
|
25
|
-
from goe.data_governance.hadoop_data_governance_constants import (
|
|
26
|
-
SUPPORTED_DATA_GOVERNANCE_BACKENDS,
|
|
27
|
-
)
|
|
28
|
-
from goe.data_governance.hadoop_data_governance import (
|
|
29
|
-
is_valid_data_governance_tag,
|
|
30
|
-
is_valid_data_governance_auto_property,
|
|
31
|
-
)
|
|
32
25
|
from goe.filesystem.goe_dfs import (
|
|
33
26
|
AZURE_OFFLOAD_FS_SCHEMES,
|
|
34
27
|
OFFLOAD_FS_SCHEME_MAPRFS,
|
|
@@ -188,51 +181,6 @@ def normalise_backend_session_parameters(opts):
|
|
|
188
181
|
opts.backend_session_parameters = json.loads(opts.backend_session_parameters)
|
|
189
182
|
|
|
190
183
|
|
|
191
|
-
def normalise_data_governance_config(options):
|
|
192
|
-
if options.data_governance_api_url:
|
|
193
|
-
if not options.data_governance_backend:
|
|
194
|
-
raise OrchestrationConfigException(
|
|
195
|
-
"DATA_GOVERNANCE_BACKEND is required when connecting to a Data Governance API"
|
|
196
|
-
)
|
|
197
|
-
if options.data_governance_backend not in SUPPORTED_DATA_GOVERNANCE_BACKENDS:
|
|
198
|
-
raise OrchestrationConfigException(
|
|
199
|
-
"Invalid DATA_GOVERNANCE_BACKEND %s. Valid values are: %s"
|
|
200
|
-
% (options.data_governance_backend, SUPPORTED_DATA_GOVERNANCE_BACKENDS)
|
|
201
|
-
)
|
|
202
|
-
if (
|
|
203
|
-
options.data_governance_backend == "navigator"
|
|
204
|
-
and not options.cloudera_navigator_hive_source_id
|
|
205
|
-
):
|
|
206
|
-
raise OrchestrationConfigException(
|
|
207
|
-
"--cloudera-navigator-hive-source-id is required for Cloudera Navigator integration"
|
|
208
|
-
)
|
|
209
|
-
|
|
210
|
-
tag_list = (
|
|
211
|
-
options.data_governance_auto_tags_csv.split(",")
|
|
212
|
-
if options.data_governance_auto_tags_csv
|
|
213
|
-
else []
|
|
214
|
-
)
|
|
215
|
-
invalid_auto_tags = [_ for _ in tag_list if not is_valid_data_governance_tag(_)]
|
|
216
|
-
if invalid_auto_tags:
|
|
217
|
-
# Using env var name for exception because the command line option is hidden
|
|
218
|
-
raise OrchestrationConfigException(
|
|
219
|
-
"Invalid values for DATA_GOVERNANCE_AUTO_TAGS: %s" % invalid_auto_tags
|
|
220
|
-
)
|
|
221
|
-
|
|
222
|
-
auto_properties = (
|
|
223
|
-
options.data_governance_auto_properties_csv.split(",")
|
|
224
|
-
if options.data_governance_auto_properties_csv
|
|
225
|
-
else []
|
|
226
|
-
)
|
|
227
|
-
invalid_auto_props = [
|
|
228
|
-
_ for _ in auto_properties if not is_valid_data_governance_auto_property(_)
|
|
229
|
-
]
|
|
230
|
-
# TODO nj@2020-01-31 It feels like we should add the lines below but need to investigate/test before we do
|
|
231
|
-
# if invalid_auto_props:
|
|
232
|
-
# raise OrchestrationConfigException('Invalid values for DATA_GOVERNANCE_AUTO_PROPERTIES: %s'
|
|
233
|
-
# % invalid_auto_props)
|
|
234
|
-
|
|
235
|
-
|
|
236
184
|
def normalise_filesystem_options(options, exc_cls=OrchestrationConfigException):
|
|
237
185
|
options.offload_fs_scheme = (
|
|
238
186
|
options.offload_fs_scheme.lower()
|
|
@@ -28,7 +28,6 @@ from goe.config.config_validation_functions import (
|
|
|
28
28
|
check_offload_fs_scheme_supported_in_backend,
|
|
29
29
|
normalise_backend_session_parameters,
|
|
30
30
|
normalise_backend_options,
|
|
31
|
-
normalise_data_governance_config,
|
|
32
31
|
normalise_db_prefix_and_paths,
|
|
33
32
|
normalise_filesystem_options,
|
|
34
33
|
normalise_listener_options,
|
|
@@ -67,16 +66,9 @@ EXPECTED_CONFIG_ARGS = [
|
|
|
67
66
|
"bigquery_dataset_location",
|
|
68
67
|
"bigquery_dataset_project",
|
|
69
68
|
"ca_cert",
|
|
70
|
-
"cloudera_navigator_hive_source_id",
|
|
71
69
|
"db_name_pattern",
|
|
72
70
|
"db_name_prefix",
|
|
73
71
|
"db_type",
|
|
74
|
-
"data_governance_api_url",
|
|
75
|
-
"data_governance_api_user",
|
|
76
|
-
"data_governance_api_pass",
|
|
77
|
-
"data_governance_backend",
|
|
78
|
-
"data_governance_auto_tags_csv",
|
|
79
|
-
"data_governance_auto_properties_csv",
|
|
80
72
|
"dev_log_level",
|
|
81
73
|
"error_on_token",
|
|
82
74
|
"frontend_odbc_driver_name",
|
|
@@ -311,7 +303,6 @@ class OrchestrationConfig:
|
|
|
311
303
|
self._do_not_connect = do_not_connect
|
|
312
304
|
|
|
313
305
|
normalise_backend_session_parameters(self)
|
|
314
|
-
normalise_data_governance_config(self)
|
|
315
306
|
normalise_filesystem_options(self)
|
|
316
307
|
try:
|
|
317
308
|
normalise_backend_options(self)
|
|
@@ -382,34 +373,6 @@ class OrchestrationConfig:
|
|
|
382
373
|
ca_cert=config_dict.get(
|
|
383
374
|
"ca_cert", orchestration_defaults.ca_cert_default()
|
|
384
375
|
),
|
|
385
|
-
cloudera_navigator_hive_source_id=config_dict.get(
|
|
386
|
-
"cloudera_navigator_hive_source_id",
|
|
387
|
-
orchestration_defaults.cloudera_navigator_hive_source_id_default(),
|
|
388
|
-
),
|
|
389
|
-
data_governance_api_url=config_dict.get(
|
|
390
|
-
"data_governance_api_url",
|
|
391
|
-
orchestration_defaults.data_governance_api_url_default(),
|
|
392
|
-
),
|
|
393
|
-
data_governance_api_user=config_dict.get(
|
|
394
|
-
"data_governance_api_user",
|
|
395
|
-
orchestration_defaults.data_governance_api_user_default(),
|
|
396
|
-
),
|
|
397
|
-
data_governance_api_pass=config_dict.get(
|
|
398
|
-
"data_governance_api_pass",
|
|
399
|
-
orchestration_defaults.data_governance_api_pass_default(),
|
|
400
|
-
),
|
|
401
|
-
data_governance_backend=config_dict.get(
|
|
402
|
-
"data_governance_backend",
|
|
403
|
-
orchestration_defaults.data_governance_api_backend_default(),
|
|
404
|
-
),
|
|
405
|
-
data_governance_auto_tags_csv=config_dict.get(
|
|
406
|
-
"data_governance_auto_tags_csv",
|
|
407
|
-
orchestration_defaults.data_governance_auto_tags_default(),
|
|
408
|
-
),
|
|
409
|
-
data_governance_auto_properties_csv=config_dict.get(
|
|
410
|
-
"data_governance_auto_properties_csv",
|
|
411
|
-
orchestration_defaults.data_governance_auto_properties_default(),
|
|
412
|
-
),
|
|
413
376
|
db_name_pattern=config_dict.get(
|
|
414
377
|
"db_name_pattern", orchestration_defaults.db_name_pattern_default()
|
|
415
378
|
),
|
|
@@ -901,45 +901,6 @@ def sqoop_queue_name_default() -> Optional[str]:
|
|
|
901
901
|
return os.environ.get("SQOOP_QUEUE_NAME")
|
|
902
902
|
|
|
903
903
|
|
|
904
|
-
# DATA GOVERNANCE DEFAULTS
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
def data_governance_api_url_default():
|
|
908
|
-
return os.environ.get("DATA_GOVERNANCE_API_URL")
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
def data_governance_api_user_default():
|
|
912
|
-
return os.environ.get("DATA_GOVERNANCE_API_USER")
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
def data_governance_api_pass_default():
|
|
916
|
-
return os.environ.get("DATA_GOVERNANCE_API_PASS")
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
def data_governance_api_backend_default():
|
|
920
|
-
return os.environ.get("DATA_GOVERNANCE_BACKEND")
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
def cloudera_navigator_hive_source_id_default():
|
|
924
|
-
return os.environ.get("CLOUDERA_NAVIGATOR_HIVE_SOURCE_ID")
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
def data_governance_auto_tags_default():
|
|
928
|
-
return os.environ.get("DATA_GOVERNANCE_AUTO_TAGS")
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
def data_governance_custom_tags_default():
|
|
932
|
-
return os.environ.get("DATA_GOVERNANCE_CUSTOM_TAGS")
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
def data_governance_auto_properties_default():
|
|
936
|
-
return os.environ.get("DATA_GOVERNANCE_AUTO_PROPERTIES")
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
def data_governance_custom_properties_default():
|
|
940
|
-
return os.environ.get("DATA_GOVERNANCE_CUSTOM_PROPERTIES")
|
|
941
|
-
|
|
942
|
-
|
|
943
904
|
###########################################################################
|
|
944
905
|
# GOE LISTENER DEFAULTS
|
|
945
906
|
###########################################################################
|
|
@@ -137,11 +137,6 @@ from goe.persistence.orchestration_metadata import (
|
|
|
137
137
|
INCREMENTAL_PREDICATE_TYPE_RANGE_AND_PREDICATE,
|
|
138
138
|
)
|
|
139
139
|
|
|
140
|
-
from goe.data_governance.hadoop_data_governance import (
|
|
141
|
-
get_hadoop_data_governance_client_from_options,
|
|
142
|
-
is_valid_data_governance_tag,
|
|
143
|
-
)
|
|
144
|
-
|
|
145
140
|
from goe.util.goe_log_fh import GOELogFileHandle
|
|
146
141
|
from goe.util.misc_functions import (
|
|
147
142
|
all_int_chars,
|
|
@@ -185,8 +180,6 @@ EXPECTED_OFFLOAD_ARGS = [
|
|
|
185
180
|
"compress_load_table",
|
|
186
181
|
"compute_load_table_stats",
|
|
187
182
|
"create_backend_db",
|
|
188
|
-
"data_governance_custom_tags_csv",
|
|
189
|
-
"data_governance_custom_properties",
|
|
190
183
|
"data_sample_parallelism",
|
|
191
184
|
"data_sample_pct",
|
|
192
185
|
"date_columns_csv",
|
|
@@ -1105,7 +1098,6 @@ def normalise_options(options, normalise_owner_table=True):
|
|
|
1105
1098
|
normalise_offload_predicate_options(options)
|
|
1106
1099
|
normalise_datatype_control_options(options)
|
|
1107
1100
|
normalise_stats_options(options, options.target)
|
|
1108
|
-
normalise_data_governance_options(options)
|
|
1109
1101
|
|
|
1110
1102
|
|
|
1111
1103
|
def verify_json_option(option_name, option_value):
|
|
@@ -1136,25 +1128,7 @@ def verify_json_option(option_name, option_value):
|
|
|
1136
1128
|
)
|
|
1137
1129
|
|
|
1138
1130
|
|
|
1139
|
-
def normalise_data_governance_options(options):
|
|
1140
|
-
tag_list = (
|
|
1141
|
-
options.data_governance_custom_tags_csv.split(",")
|
|
1142
|
-
if options.data_governance_custom_tags_csv
|
|
1143
|
-
else []
|
|
1144
|
-
)
|
|
1145
|
-
invalid_custom_tags = [_ for _ in tag_list if not is_valid_data_governance_tag(_)]
|
|
1146
|
-
if invalid_custom_tags:
|
|
1147
|
-
raise OffloadOptionError(
|
|
1148
|
-
"Invalid values for --data-governance-custom-tags: %s" % invalid_custom_tags
|
|
1149
|
-
)
|
|
1150
|
-
|
|
1151
|
-
verify_json_option(
|
|
1152
|
-
"--data-governance-custom-properties", options.data_governance_custom_properties
|
|
1153
|
-
)
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
1131
|
def version():
|
|
1157
|
-
"""Note that this function is modified in the top level Makefile"""
|
|
1158
1132
|
with open(
|
|
1159
1133
|
os.path.join(os.environ.get("OFFLOAD_HOME"), "version_build")
|
|
1160
1134
|
) as version_file:
|
|
@@ -1169,7 +1143,7 @@ def comp_ver_check(frontend_api):
|
|
|
1169
1143
|
|
|
1170
1144
|
def version_abort(check_version, frontend_api):
|
|
1171
1145
|
match, v_goe, v_ora = comp_ver_check(frontend_api)
|
|
1172
|
-
if check_version and not match and "
|
|
1146
|
+
if check_version and not match and ".dev" not in v_goe:
|
|
1173
1147
|
return True, v_goe, v_ora
|
|
1174
1148
|
else:
|
|
1175
1149
|
return False, v_goe, v_ora
|
|
@@ -2035,17 +2009,17 @@ class BaseOperation(object):
|
|
|
2035
2009
|
|
|
2036
2010
|
def validate_sort_columns(
|
|
2037
2011
|
self,
|
|
2038
|
-
|
|
2039
|
-
messages,
|
|
2040
|
-
offload_options,
|
|
2012
|
+
offload_source_table: OffloadSourceTableInterface,
|
|
2013
|
+
messages: OffloadMessages,
|
|
2014
|
+
offload_options: "OrchestrationConfig",
|
|
2041
2015
|
backend_cols,
|
|
2042
2016
|
hybrid_metadata,
|
|
2043
2017
|
backend_api=None,
|
|
2044
|
-
metadata_refresh=False,
|
|
2045
2018
|
):
|
|
2046
2019
|
"""Default sort_columns for storage index benefit if not specified by the user.
|
|
2047
|
-
sort_columns_csv: The incoming option string which can be a CSV list of column names or
|
|
2048
|
-
SORT_COLUMNS_NO_CHANGE which identifies the user has not asked for a change.
|
|
2020
|
+
sort_columns_csv: The incoming option string which can be a CSV list of column names or:
|
|
2021
|
+
- the special token SORT_COLUMNS_NO_CHANGE which identifies the user has not asked for a change.
|
|
2022
|
+
- the special token SORT_COLUMNS_NONE which identifies the user has not asked for no sort columns.
|
|
2049
2023
|
sort_columns: A Python list of column names defined by the user.
|
|
2050
2024
|
backend_cols: A standalone parameter because this function may be used on tables that do not yet exist.
|
|
2051
2025
|
"""
|
|
@@ -2083,10 +2057,9 @@ class BaseOperation(object):
|
|
|
2083
2057
|
self.sort_columns = sort_columns_csv_to_sort_columns(
|
|
2084
2058
|
self.sort_columns_csv,
|
|
2085
2059
|
hybrid_metadata,
|
|
2086
|
-
|
|
2060
|
+
offload_source_table,
|
|
2087
2061
|
backend_cols,
|
|
2088
2062
|
backend_api,
|
|
2089
|
-
metadata_refresh,
|
|
2090
2063
|
messages,
|
|
2091
2064
|
)
|
|
2092
2065
|
finally:
|
|
@@ -2225,8 +2198,6 @@ class OffloadOperation(BaseOperation):
|
|
|
2225
2198
|
compress_load_table=options.compress_load_table,
|
|
2226
2199
|
compute_load_table_stats=options.compute_load_table_stats,
|
|
2227
2200
|
create_backend_db=options.create_backend_db,
|
|
2228
|
-
data_governance_custom_tags_csv=options.data_governance_custom_tags_csv,
|
|
2229
|
-
data_governance_custom_properties=options.data_governance_custom_properties,
|
|
2230
2201
|
data_sample_parallelism=options.data_sample_parallelism,
|
|
2231
2202
|
data_sample_pct=options.data_sample_pct,
|
|
2232
2203
|
date_columns_csv=options.date_columns_csv,
|
|
@@ -2347,14 +2318,6 @@ class OffloadOperation(BaseOperation):
|
|
|
2347
2318
|
create_backend_db=operation_dict.get(
|
|
2348
2319
|
"create_backend_db", orchestration_defaults.create_backend_db_default()
|
|
2349
2320
|
),
|
|
2350
|
-
data_governance_custom_tags_csv=operation_dict.get(
|
|
2351
|
-
"data_governance_custom_tags_csv",
|
|
2352
|
-
orchestration_defaults.data_governance_custom_tags_default(),
|
|
2353
|
-
),
|
|
2354
|
-
data_governance_custom_properties=operation_dict.get(
|
|
2355
|
-
"data_governance_custom_properties",
|
|
2356
|
-
orchestration_defaults.data_governance_custom_properties_default(),
|
|
2357
|
-
),
|
|
2358
2321
|
data_sample_parallelism=operation_dict.get(
|
|
2359
2322
|
"data_sample_parallelism",
|
|
2360
2323
|
orchestration_defaults.data_sample_parallelism_default(),
|
|
@@ -2657,7 +2620,7 @@ def offload_operation_logic(
|
|
|
2657
2620
|
)
|
|
2658
2621
|
|
|
2659
2622
|
offload_operation.validate_sort_columns(
|
|
2660
|
-
offload_source_table
|
|
2623
|
+
offload_source_table,
|
|
2661
2624
|
messages,
|
|
2662
2625
|
offload_options,
|
|
2663
2626
|
offload_target_table.get_columns(),
|
|
@@ -2841,13 +2804,6 @@ def offload_table(
|
|
|
2841
2804
|
):
|
|
2842
2805
|
return False
|
|
2843
2806
|
|
|
2844
|
-
data_gov_client = get_data_gov_client(
|
|
2845
|
-
offload_options,
|
|
2846
|
-
messages,
|
|
2847
|
-
offload_operation,
|
|
2848
|
-
rdbms_schema=offload_source_table.owner,
|
|
2849
|
-
source_rdbms_object_name=offload_source_table.table_name,
|
|
2850
|
-
)
|
|
2851
2807
|
offload_operation.offload_transport_method = choose_offload_transport_method(
|
|
2852
2808
|
offload_operation, offload_source_table, offload_options, messages
|
|
2853
2809
|
)
|
|
@@ -2859,7 +2815,6 @@ def offload_table(
|
|
|
2859
2815
|
offload_target_table.refresh_operational_settings(
|
|
2860
2816
|
offload_operation,
|
|
2861
2817
|
rdbms_columns=offload_source_table.columns,
|
|
2862
|
-
data_gov_client=data_gov_client,
|
|
2863
2818
|
)
|
|
2864
2819
|
|
|
2865
2820
|
if offload_operation.ddl_file:
|
|
@@ -2921,7 +2876,6 @@ def offload_table(
|
|
|
2921
2876
|
offload_options,
|
|
2922
2877
|
source_data_client,
|
|
2923
2878
|
messages,
|
|
2924
|
-
data_gov_client,
|
|
2925
2879
|
)
|
|
2926
2880
|
messages.log(
|
|
2927
2881
|
"%s: %s"
|
|
@@ -3016,33 +2970,6 @@ def get_synthetic_partition_cols(backend_cols):
|
|
|
3016
2970
|
return [col for col in backend_cols if is_synthetic_partition_column(col.name)]
|
|
3017
2971
|
|
|
3018
2972
|
|
|
3019
|
-
def get_data_gov_client(
|
|
3020
|
-
options,
|
|
3021
|
-
messages,
|
|
3022
|
-
execute,
|
|
3023
|
-
rdbms_schema=None,
|
|
3024
|
-
source_rdbms_object_name=None,
|
|
3025
|
-
target_rdbms_object_name=None,
|
|
3026
|
-
):
|
|
3027
|
-
if options.data_governance_api_url:
|
|
3028
|
-
data_gov_client = get_hadoop_data_governance_client_from_options(
|
|
3029
|
-
options, messages, dry_run=bool(not execute)
|
|
3030
|
-
)
|
|
3031
|
-
data_gov_client.healthcheck_api()
|
|
3032
|
-
data_gov_client.cache_property_values(
|
|
3033
|
-
auto_tags_csv=options.data_governance_auto_tags_csv,
|
|
3034
|
-
custom_tags_csv=options.data_governance_custom_tags_csv,
|
|
3035
|
-
auto_properties_csv=options.data_governance_auto_properties_csv,
|
|
3036
|
-
custom_properties=options.data_governance_custom_properties,
|
|
3037
|
-
rdbms_name=get_db_unique_name(options),
|
|
3038
|
-
rdbms_schema=rdbms_schema,
|
|
3039
|
-
source_rdbms_object_name=source_rdbms_object_name,
|
|
3040
|
-
target_rdbms_object_name=target_rdbms_object_name,
|
|
3041
|
-
)
|
|
3042
|
-
return data_gov_client
|
|
3043
|
-
return None
|
|
3044
|
-
|
|
3045
|
-
|
|
3046
2973
|
def check_posint(option, opt, value):
|
|
3047
2974
|
"""Type checker for a new "posint" type to define
|
|
3048
2975
|
and enforce positive integer option values. Used
|
|
@@ -3204,21 +3131,6 @@ def get_oracle_options(opt):
|
|
|
3204
3131
|
return opt
|
|
3205
3132
|
|
|
3206
3133
|
|
|
3207
|
-
def get_data_governance_options(opt):
|
|
3208
|
-
opt.add_option(
|
|
3209
|
-
"--data-governance-custom-properties",
|
|
3210
|
-
dest="data_governance_custom_properties",
|
|
3211
|
-
default=orchestration_defaults.data_governance_custom_properties_default(),
|
|
3212
|
-
help=SUPPRESS_HELP,
|
|
3213
|
-
)
|
|
3214
|
-
opt.add_option(
|
|
3215
|
-
"--data-governance-custom-tags",
|
|
3216
|
-
dest="data_governance_custom_tags_csv",
|
|
3217
|
-
default=orchestration_defaults.data_governance_custom_tags_default(),
|
|
3218
|
-
help=SUPPRESS_HELP,
|
|
3219
|
-
)
|
|
3220
|
-
|
|
3221
|
-
|
|
3222
3134
|
def get_options(usage=None, operation_name=None):
|
|
3223
3135
|
opt = get_common_options(usage)
|
|
3224
3136
|
|
|
@@ -3450,7 +3362,7 @@ def get_options(usage=None, operation_name=None):
|
|
|
3450
3362
|
"--sort-columns",
|
|
3451
3363
|
dest="sort_columns_csv",
|
|
3452
3364
|
default=orchestration_defaults.sort_columns_default(),
|
|
3453
|
-
help=
|
|
3365
|
+
help=f'CSV list of sort/cluster columns to use when storing data in a backend table or "{offload_constants.SORT_COLUMNS_NONE}" to force no sort columns',
|
|
3454
3366
|
)
|
|
3455
3367
|
opt.add_option(
|
|
3456
3368
|
"--offload-distribute-enabled",
|
|
@@ -3500,8 +3412,6 @@ def get_options(usage=None, operation_name=None):
|
|
|
3500
3412
|
help=SUPPRESS_HELP,
|
|
3501
3413
|
)
|
|
3502
3414
|
|
|
3503
|
-
get_data_governance_options(opt)
|
|
3504
|
-
|
|
3505
3415
|
return opt
|
|
3506
3416
|
|
|
3507
3417
|
|
|
@@ -205,22 +205,6 @@ class OffloadOptions(BaseSchema):
|
|
|
205
205
|
description="Create backend database",
|
|
206
206
|
cli=("--create-backend-db"),
|
|
207
207
|
)
|
|
208
|
-
# TODO: Deprecated
|
|
209
|
-
data_governance_custom_properties: Optional[Json] = Field(
|
|
210
|
-
default=None,
|
|
211
|
-
title="Data governance custom properties",
|
|
212
|
-
description="Data governance custom properties",
|
|
213
|
-
cli=("--data-governance-custom-properties"),
|
|
214
|
-
no_api=True,
|
|
215
|
-
)
|
|
216
|
-
# TODO: Deprecated
|
|
217
|
-
data_governance_custom_tags_csv: Optional[List[str]] = Field(
|
|
218
|
-
default=[],
|
|
219
|
-
title="Data governance custom tags",
|
|
220
|
-
description="Data governance custom tags",
|
|
221
|
-
cli=("--data-governance-custom-tags"),
|
|
222
|
-
no_api=True,
|
|
223
|
-
)
|
|
224
208
|
data_sample_parallelism: Optional[int] = Field(
|
|
225
209
|
default=0,
|
|
226
210
|
title="Data sample parallelism",
|
|
@@ -1973,6 +1973,10 @@ FROM %(db)s.%(table)s%(where_clause)s%(group_by)s%(order_by)s""" % {
|
|
|
1973
1973
|
def create_database_supported(self):
|
|
1974
1974
|
return self.is_capability_supported(CAPABILITY_CREATE_DB)
|
|
1975
1975
|
|
|
1976
|
+
def default_sort_columns_to_primary_key(self) -> bool:
|
|
1977
|
+
"""Does this backend suit clustering on primary key if there's no user specified alternative."""
|
|
1978
|
+
return False
|
|
1979
|
+
|
|
1976
1980
|
def drop_column_supported(self):
|
|
1977
1981
|
"""Note that there is an Impala override for this"""
|
|
1978
1982
|
return self.is_capability_supported(CAPABILITY_DROP_COLUMN)
|