data-syncmaster 0.2.2__tar.gz → 0.2.3__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.
Files changed (222) hide show
  1. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/PKG-INFO +1 -1
  2. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/pyproject.toml +1 -1
  3. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/__init__.py +1 -1
  4. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/settings/log/colored.yml +5 -1
  5. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/settings/log/json.yml +5 -1
  6. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/settings/log/plain.yml +5 -1
  7. data_syncmaster-0.2.3/syncmaster/worker/transfer.py +106 -0
  8. data_syncmaster-0.2.2/syncmaster/worker/transfer.py +0 -87
  9. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/LICENSE.txt +0 -0
  10. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/README.rst +0 -0
  11. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/__init__.py +0 -0
  12. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/factory.py +0 -0
  13. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/migrations/README +0 -0
  14. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/migrations/__main__.py +0 -0
  15. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/migrations/alembic.ini +0 -0
  16. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/migrations/env.py +0 -0
  17. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/migrations/script.py.mako +0 -0
  18. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/migrations/versions/2023-11-23_0001_create_user_table.py +0 -0
  19. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/migrations/versions/2023-11-23_0002_create_group_table.py +0 -0
  20. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/migrations/versions/2023-11-23_0003_create_queue_table.py +0 -0
  21. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/migrations/versions/2023-11-23_0004_create_connection_table.py +0 -0
  22. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/migrations/versions/2023-11-23_0005_create_user_group_table.py +0 -0
  23. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/migrations/versions/2023-11-23_0006_create_auth_data_table.py +0 -0
  24. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/migrations/versions/2023-11-23_0007_create_transfer_table.py +0 -0
  25. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/migrations/versions/2023-11-23_0008_create_run_table.py +0 -0
  26. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/migrations/versions/2023-11-23_0009_create_celery_tables.py +0 -0
  27. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/migrations/versions/2024-10-07_0010_add_pg_trgm_extension.py +0 -0
  28. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/migrations/versions/2024-11-01_0011_create_apscheduler_table.py +0 -0
  29. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/migrations/versions/__init__.py +0 -0
  30. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/mixins/__init__.py +0 -0
  31. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/mixins/resource.py +0 -0
  32. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/mixins/timestamp.py +0 -0
  33. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/models/__init__.py +0 -0
  34. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/models/apscheduler_job.py +0 -0
  35. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/models/auth_data.py +0 -0
  36. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/models/base.py +0 -0
  37. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/models/connection.py +0 -0
  38. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/models/group.py +0 -0
  39. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/models/queue.py +0 -0
  40. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/models/run.py +0 -0
  41. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/models/transfer.py +0 -0
  42. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/models/user.py +0 -0
  43. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/repositories/__init__.py +0 -0
  44. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/repositories/base.py +0 -0
  45. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/repositories/connection.py +0 -0
  46. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/repositories/credentials_repository.py +0 -0
  47. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/repositories/group.py +0 -0
  48. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/repositories/queue.py +0 -0
  49. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/repositories/repository_with_owner.py +0 -0
  50. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/repositories/run.py +0 -0
  51. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/repositories/transfer.py +0 -0
  52. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/repositories/user.py +0 -0
  53. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/repositories/utils.py +0 -0
  54. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/db/utils.py +0 -0
  55. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/dto/__init__.py +0 -0
  56. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/dto/connections.py +0 -0
  57. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/dto/runs.py +0 -0
  58. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/dto/transfers.py +0 -0
  59. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/dto/transfers_resources.py +0 -0
  60. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/dto/transfers_strategy.py +0 -0
  61. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/errors/__init__.py +0 -0
  62. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/errors/base.py +0 -0
  63. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/errors/registration.py +0 -0
  64. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/errors/schemas/__init__.py +0 -0
  65. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/errors/schemas/bad_request.py +0 -0
  66. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/errors/schemas/invalid_request.py +0 -0
  67. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/errors/schemas/not_authorized.py +0 -0
  68. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/exceptions/__init__.py +0 -0
  69. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/exceptions/auth.py +0 -0
  70. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/exceptions/base.py +0 -0
  71. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/exceptions/connection.py +0 -0
  72. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/exceptions/credentials.py +0 -0
  73. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/exceptions/group.py +0 -0
  74. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/exceptions/queue.py +0 -0
  75. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/exceptions/redirect.py +0 -0
  76. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/exceptions/run.py +0 -0
  77. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/exceptions/transfer.py +0 -0
  78. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/exceptions/user.py +0 -0
  79. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/scheduler/__init__.py +0 -0
  80. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/scheduler/__main__.py +0 -0
  81. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/scheduler/celery.py +0 -0
  82. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/scheduler/settings/__init__.py +0 -0
  83. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/scheduler/transfer_fetcher.py +0 -0
  84. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/scheduler/transfer_job_manager.py +0 -0
  85. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/scheduler/utils.py +0 -0
  86. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/__init__.py +0 -0
  87. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/ping.py +0 -0
  88. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/__init__.py +0 -0
  89. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/auth/__init__.py +0 -0
  90. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/auth/basic.py +0 -0
  91. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/auth/s3.py +0 -0
  92. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/auth/samba.py +0 -0
  93. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/auth/token.py +0 -0
  94. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/connection_types.py +0 -0
  95. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/connections/__init__.py +0 -0
  96. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/connections/clickhouse.py +0 -0
  97. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/connections/connection.py +0 -0
  98. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/connections/connection_base.py +0 -0
  99. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/connections/ftp.py +0 -0
  100. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/connections/ftps.py +0 -0
  101. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/connections/hdfs.py +0 -0
  102. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/connections/hive.py +0 -0
  103. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/connections/mssql.py +0 -0
  104. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/connections/mysql.py +0 -0
  105. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/connections/oracle.py +0 -0
  106. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/connections/postgres.py +0 -0
  107. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/connections/s3.py +0 -0
  108. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/connections/samba.py +0 -0
  109. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/connections/sftp.py +0 -0
  110. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/connections/webdav.py +0 -0
  111. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/file_formats.py +0 -0
  112. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/groups.py +0 -0
  113. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/page.py +0 -0
  114. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/queue.py +0 -0
  115. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/transfer_types.py +0 -0
  116. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/transfers/__init__.py +0 -0
  117. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/transfers/db.py +0 -0
  118. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/transfers/file/__init__.py +0 -0
  119. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/transfers/file/base.py +0 -0
  120. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/transfers/file/ftp.py +0 -0
  121. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/transfers/file/ftps.py +0 -0
  122. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/transfers/file/hdfs.py +0 -0
  123. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/transfers/file/s3.py +0 -0
  124. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/transfers/file/samba.py +0 -0
  125. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/transfers/file/sftp.py +0 -0
  126. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/transfers/file/webdav.py +0 -0
  127. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/transfers/file_format.py +0 -0
  128. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/transfers/resources.py +0 -0
  129. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/transfers/run.py +0 -0
  130. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/transfers/strategy.py +0 -0
  131. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/transfers/transformations/__init__.py +0 -0
  132. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/transfers/transformations/dataframe_columns_filter.py +0 -0
  133. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/transfers/transformations/dataframe_rows_filter.py +0 -0
  134. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/transfers/transformations/file_metadata_filter.py +0 -0
  135. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/transformation_types.py +0 -0
  136. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/types.py +0 -0
  137. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/schemas/v1/users.py +0 -0
  138. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/__init__.py +0 -0
  139. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/__main__.py +0 -0
  140. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/api/__init__.py +0 -0
  141. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/api/monitoring.py +0 -0
  142. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/api/router.py +0 -0
  143. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/api/v1/__init__.py +0 -0
  144. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/api/v1/auth.py +0 -0
  145. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/api/v1/connections.py +0 -0
  146. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/api/v1/groups.py +0 -0
  147. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/api/v1/queue.py +0 -0
  148. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/api/v1/router.py +0 -0
  149. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/api/v1/runs.py +0 -0
  150. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/api/v1/transfers.py +0 -0
  151. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/api/v1/users.py +0 -0
  152. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/dependencies/__init__.py +0 -0
  153. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/dependencies/get_access_token.py +0 -0
  154. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/dependencies/stub.py +0 -0
  155. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/handler.py +0 -0
  156. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/middlewares/__init__.py +0 -0
  157. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/middlewares/cors.py +0 -0
  158. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/middlewares/monitoring/__init__.py +0 -0
  159. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/middlewares/monitoring/metrics.py +0 -0
  160. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/middlewares/openapi.py +0 -0
  161. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/middlewares/request_id.py +0 -0
  162. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/middlewares/session.py +0 -0
  163. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/middlewares/static_files.py +0 -0
  164. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/providers/__init__.py +0 -0
  165. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/providers/auth/__init__.py +0 -0
  166. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/providers/auth/base_provider.py +0 -0
  167. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/providers/auth/dummy_provider.py +0 -0
  168. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/providers/auth/keycloak_provider.py +0 -0
  169. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/scripts/export_openapi_schema.py +0 -0
  170. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/scripts/manage_superusers.py +0 -0
  171. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/services/__init__.py +0 -0
  172. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/services/get_user.py +0 -0
  173. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/services/unit_of_work.py +0 -0
  174. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/settings/__init__.py +0 -0
  175. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/settings/auth/__init__.py +0 -0
  176. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/settings/auth/dummy.py +0 -0
  177. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/settings/auth/jwt.py +0 -0
  178. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/settings/auth/keycloak.py +0 -0
  179. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/settings/server/__init__.py +0 -0
  180. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/settings/server/cors.py +0 -0
  181. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/settings/server/monitoring.py +0 -0
  182. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/settings/server/openapi.py +0 -0
  183. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/settings/server/request_id.py +0 -0
  184. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/settings/server/session.py +0 -0
  185. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/settings/server/static_files.py +0 -0
  186. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/utils/__init__.py +0 -0
  187. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/utils/jwt.py +0 -0
  188. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/utils/slug.py +0 -0
  189. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/server/utils/state.py +0 -0
  190. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/settings/__init__.py +0 -0
  191. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/settings/broker.py +0 -0
  192. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/settings/credentials.py +0 -0
  193. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/settings/database.py +0 -0
  194. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/settings/log/__init__.py +0 -0
  195. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/worker/__init__.py +0 -0
  196. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/worker/base.py +0 -0
  197. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/worker/celery.py +0 -0
  198. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/worker/controller.py +0 -0
  199. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/worker/handlers/__init__.py +0 -0
  200. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/worker/handlers/base.py +0 -0
  201. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/worker/handlers/db/__init__.py +0 -0
  202. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/worker/handlers/db/base.py +0 -0
  203. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/worker/handlers/db/clickhouse.py +0 -0
  204. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/worker/handlers/db/hive.py +0 -0
  205. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/worker/handlers/db/mssql.py +0 -0
  206. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/worker/handlers/db/mysql.py +0 -0
  207. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/worker/handlers/db/oracle.py +0 -0
  208. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/worker/handlers/db/postgres.py +0 -0
  209. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/worker/handlers/file/__init__.py +0 -0
  210. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/worker/handlers/file/base.py +0 -0
  211. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/worker/handlers/file/ftp.py +0 -0
  212. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/worker/handlers/file/ftps.py +0 -0
  213. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/worker/handlers/file/hdfs.py +0 -0
  214. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/worker/handlers/file/local_df.py +0 -0
  215. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/worker/handlers/file/remote_df.py +0 -0
  216. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/worker/handlers/file/s3.py +0 -0
  217. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/worker/handlers/file/samba.py +0 -0
  218. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/worker/handlers/file/sftp.py +0 -0
  219. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/worker/handlers/file/webdav.py +0 -0
  220. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/worker/settings/__init__.py +0 -0
  221. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/worker/settings/hwm_store.py +0 -0
  222. {data_syncmaster-0.2.2 → data_syncmaster-0.2.3}/syncmaster/worker/spark.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: data-syncmaster
3
- Version: 0.2.2
3
+ Version: 0.2.3
4
4
  Summary: Syncmaster REST API + Worker
5
5
  License: Apache-2.0
6
6
  Keywords: Syncmaster,REST,API,Worker,Spark,Transfer,ETL
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
4
4
 
5
5
  [tool.poetry]
6
6
  name = "data-syncmaster"
7
- version = "0.2.2"
7
+ version = "0.2.3"
8
8
  license = "Apache-2.0"
9
9
  description = "Syncmaster REST API + Worker"
10
10
  authors = ["DataOps.ETL <onetools@mts.ru>"]
@@ -1,6 +1,6 @@
1
1
  # SPDX-FileCopyrightText: 2023-2024 MTS PJSC
2
2
  # SPDX-License-Identifier: Apache-2.0
3
3
 
4
- _raw_version = "0.2.2"
4
+ _raw_version = "0.2.3"
5
5
  # version always contain only release number like 0.0.1
6
6
  __version__ = ".".join(_raw_version.split(".")[:3]) # noqa: WPS410
@@ -40,7 +40,7 @@ loggers:
40
40
  level: INFO
41
41
  propagate: false
42
42
  celery:
43
- level: DEBUG
43
+ level: INFO
44
44
  handlers: [celery]
45
45
  propagate: false
46
46
  scheduler:
@@ -51,3 +51,7 @@ loggers:
51
51
  handlers: [main]
52
52
  level: WARNING
53
53
  propagate: false
54
+ hdfs.client:
55
+ handlers: [main]
56
+ level: WARNING
57
+ propagate: false
@@ -39,7 +39,7 @@ loggers:
39
39
  level: INFO
40
40
  propagate: false
41
41
  celery:
42
- level: DEBUG
42
+ level: INFO
43
43
  handlers: [celery]
44
44
  propagate: false
45
45
  scheduler:
@@ -50,3 +50,7 @@ loggers:
50
50
  handlers: [main]
51
51
  level: WARNING
52
52
  propagate: false
53
+ hdfs.client:
54
+ handlers: [main]
55
+ level: WARNING
56
+ propagate: false
@@ -40,7 +40,7 @@ loggers:
40
40
  level: INFO
41
41
  propagate: false
42
42
  celery:
43
- level: DEBUG
43
+ level: INFO
44
44
  handlers: [celery]
45
45
  propagate: false
46
46
  scheduler:
@@ -51,3 +51,7 @@ loggers:
51
51
  handlers: [main]
52
52
  level: WARNING
53
53
  propagate: false
54
+ hdfs.client:
55
+ handlers: [main]
56
+ level: WARNING
57
+ propagate: false
@@ -0,0 +1,106 @@
1
+ # SPDX-FileCopyrightText: 2023-2024 MTS PJSC
2
+ # SPDX-License-Identifier: Apache-2.0
3
+ from datetime import datetime, timezone
4
+
5
+ from asgi_correlation_id import correlation_id
6
+ from asgi_correlation_id.extensions.celery import load_correlation_ids
7
+ from celery.signals import after_setup_task_logger
8
+ from celery.utils.log import get_task_logger
9
+ from jinja2 import Template
10
+ from sqlalchemy import Engine, select
11
+ from sqlalchemy.orm import Session, selectinload
12
+
13
+ from syncmaster.db.models import AuthData, Run, Status, Transfer
14
+ from syncmaster.db.repositories.utils import decrypt_auth_data
15
+ from syncmaster.settings.log import setup_logging
16
+ from syncmaster.worker.base import WorkerTask
17
+ from syncmaster.worker.celery import app as celery
18
+ from syncmaster.worker.controller import TransferController
19
+ from syncmaster.worker.settings import WorkerAppSettings
20
+
21
+ logger = get_task_logger(__name__)
22
+ load_correlation_ids()
23
+
24
+
25
+ @celery.task(name="run_transfer_task", bind=True, track_started=True)
26
+ def run_transfer_task(self: WorkerTask, run_id: int) -> None:
27
+ run_transfer(
28
+ run_id=run_id,
29
+ engine=self.engine,
30
+ settings=self.settings,
31
+ )
32
+
33
+
34
+ def run_transfer(run_id: int, engine: Engine, settings: WorkerAppSettings):
35
+ try:
36
+ with Session(engine, expire_on_commit=False) as session:
37
+ run = session.scalar(
38
+ select(Run)
39
+ .where(
40
+ Run.id == run_id,
41
+ Run.status == Status.CREATED,
42
+ )
43
+ .options(
44
+ selectinload(Run.transfer),
45
+ selectinload(Run.transfer).selectinload(Transfer.group),
46
+ selectinload(Run.transfer).selectinload(Transfer.source_connection),
47
+ selectinload(Run.transfer).selectinload(Transfer.target_connection),
48
+ ),
49
+ )
50
+ if run is None:
51
+ logger.info("Run %r not found or already executed by someone else", run_id)
52
+ return
53
+
54
+ source_connection = run.transfer.source_connection
55
+ source_auth_data_query = select(AuthData).where(AuthData.connection_id == run.transfer.source_connection.id)
56
+ source_auth_data_encrypted = session.scalar(source_auth_data_query)
57
+ source_auth_data = decrypt_auth_data(source_auth_data_encrypted.value, settings)
58
+
59
+ target_connection = run.transfer.target_connection
60
+ target_auth_data_query = select(AuthData).where(AuthData.connection_id == run.transfer.target_connection.id)
61
+ target_auth_data_encrypted = session.scalar(target_auth_data_query)
62
+ target_auth_data = decrypt_auth_data(target_auth_data_encrypted.value, settings)
63
+
64
+ logger.info("Starting run %r", run_id)
65
+ run.status = Status.STARTED
66
+ run.started_at = datetime.now(tz=timezone.utc)
67
+ run.log_url = Template(settings.worker.log_url_template).render(
68
+ run=run,
69
+ correlation_id=correlation_id.get(),
70
+ )
71
+ session.commit()
72
+ session.expunge_all() # do not hold open DB connection while run is executed
73
+
74
+ controller = TransferController(
75
+ settings=settings,
76
+ run=run,
77
+ source_connection=source_connection,
78
+ target_connection=target_connection,
79
+ source_auth_data=source_auth_data,
80
+ target_auth_data=target_auth_data,
81
+ )
82
+ controller.perform_transfer()
83
+ except Exception as e:
84
+ status = Status.FAILED
85
+ logger.error("Run %r failed", run_id)
86
+ exception = e
87
+ else:
88
+ status = Status.FINISHED
89
+ logger.info("Run %r was successful", run_id)
90
+ exception = None
91
+
92
+ with Session(engine) as session:
93
+ run = session.get(Run, run_id)
94
+ if run:
95
+ logger.info("Updating run %r status in DB", run_id)
96
+ run.status = status
97
+ run.ended_at = datetime.now(tz=timezone.utc)
98
+ session.commit()
99
+
100
+ if exception is not None:
101
+ raise exception
102
+
103
+
104
+ @after_setup_task_logger.connect
105
+ def setup_loggers(*args, **kwargs):
106
+ setup_logging(WorkerAppSettings().logging.get_log_config_path())
@@ -1,87 +0,0 @@
1
- # SPDX-FileCopyrightText: 2023-2024 MTS PJSC
2
- # SPDX-License-Identifier: Apache-2.0
3
- from datetime import datetime, timezone
4
-
5
- from asgi_correlation_id import correlation_id
6
- from asgi_correlation_id.extensions.celery import load_correlation_ids
7
- from celery import Celery
8
- from celery.signals import after_setup_task_logger
9
- from celery.utils.log import get_task_logger
10
- from jinja2 import Template
11
- from sqlalchemy import select
12
- from sqlalchemy.orm import Session, selectinload
13
-
14
- from syncmaster.db.models import AuthData, Run, Status, Transfer
15
- from syncmaster.db.repositories.utils import decrypt_auth_data
16
- from syncmaster.exceptions.run import RunNotFoundError
17
- from syncmaster.settings.log import setup_logging
18
- from syncmaster.worker.celery import app as celery
19
- from syncmaster.worker.controller import TransferController
20
- from syncmaster.worker.settings import WorkerAppSettings
21
-
22
- logger = get_task_logger(__name__)
23
- load_correlation_ids()
24
-
25
-
26
- @celery.task(name="run_transfer_task", bind=True, track_started=True)
27
- def run_transfer_task(self: Celery, run_id: int) -> None:
28
- with Session(self.engine) as session:
29
- run_transfer(
30
- session=session,
31
- run_id=run_id,
32
- settings=self.settings,
33
- )
34
-
35
-
36
- def run_transfer(session: Session, run_id: int, settings: WorkerAppSettings):
37
- logger.info("Start transfer")
38
- run = session.get(
39
- Run,
40
- run_id,
41
- options=(
42
- selectinload(Run.transfer),
43
- selectinload(Run.transfer).selectinload(Transfer.group),
44
- selectinload(Run.transfer).selectinload(Transfer.source_connection),
45
- selectinload(Run.transfer).selectinload(Transfer.target_connection),
46
- ),
47
- )
48
- if run is None:
49
- raise RunNotFoundError
50
-
51
- run.status = Status.STARTED
52
- run.started_at = datetime.now(tz=timezone.utc)
53
- run.log_url = Template(settings.worker.log_url_template).render(run=run, correlation_id=correlation_id.get())
54
- session.add(run)
55
- session.commit()
56
-
57
- q_source_auth_data = select(AuthData).where(AuthData.connection_id == run.transfer.source_connection.id)
58
- q_target_auth_data = select(AuthData).where(AuthData.connection_id == run.transfer.target_connection.id)
59
-
60
- target_auth_data = decrypt_auth_data(session.scalars(q_target_auth_data).one().value, settings)
61
- source_auth_data = decrypt_auth_data(session.scalars(q_source_auth_data).one().value, settings)
62
-
63
- try:
64
- controller = TransferController(
65
- settings=settings,
66
- run=run,
67
- source_connection=run.transfer.source_connection,
68
- target_connection=run.transfer.target_connection,
69
- source_auth_data=source_auth_data,
70
- target_auth_data=target_auth_data,
71
- )
72
- controller.perform_transfer()
73
- except Exception:
74
- run.status = Status.FAILED
75
- logger.exception("Run %r was failed", run.id)
76
- else:
77
- run.status = Status.FINISHED
78
- logger.warning("Run %r was successful", run.id)
79
-
80
- run.ended_at = datetime.now(tz=timezone.utc)
81
- session.add(run)
82
- session.commit()
83
-
84
-
85
- @after_setup_task_logger.connect
86
- def setup_loggers(*args, **kwargs):
87
- setup_logging(WorkerAppSettings().logging.get_log_config_path())