data-syncmaster 0.1.1__tar.gz → 0.1.2__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 (112) hide show
  1. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/PKG-INFO +3 -3
  2. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/README.rst +2 -2
  3. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/pyproject.toml +3 -1
  4. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/__init__.py +1 -1
  5. data_syncmaster-0.1.1/syncmaster/backend/main.py → data_syncmaster-0.1.2/syncmaster/backend/__init__.py +1 -8
  6. data_syncmaster-0.1.2/syncmaster/backend/__main__.py +35 -0
  7. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/backend/export_openapi_schema.py +2 -2
  8. data_syncmaster-0.1.2/syncmaster/db/migrations/__main__.py +38 -0
  9. {data_syncmaster-0.1.1/syncmaster/db → data_syncmaster-0.1.2/syncmaster/db/migrations}/alembic.ini +2 -2
  10. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/db/migrations/env.py +3 -1
  11. data_syncmaster-0.1.1/syncmaster/backend/logger.py +0 -2
  12. data_syncmaster-0.1.1/syncmaster/backend/pre_start.py +0 -94
  13. data_syncmaster-0.1.1/syncmaster/worker/handlers/__init__.py +0 -2
  14. data_syncmaster-0.1.1/syncmaster/worker/handlers/file/__init__.py +0 -2
  15. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/LICENSE.txt +0 -0
  16. {data_syncmaster-0.1.1/syncmaster/backend → data_syncmaster-0.1.2/syncmaster/backend/api}/__init__.py +0 -0
  17. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/backend/api/deps.py +0 -0
  18. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/backend/api/monitoring.py +0 -0
  19. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/backend/api/router.py +0 -0
  20. {data_syncmaster-0.1.1/syncmaster/backend/api → data_syncmaster-0.1.2/syncmaster/backend/api/v1}/__init__.py +0 -0
  21. {data_syncmaster-0.1.1/syncmaster/backend/api/v1 → data_syncmaster-0.1.2/syncmaster/backend/api/v1/auth}/__init__.py +0 -0
  22. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/backend/api/v1/auth/router.py +0 -0
  23. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/backend/api/v1/auth/utils.py +0 -0
  24. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/backend/api/v1/connections.py +0 -0
  25. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/backend/api/v1/groups.py +0 -0
  26. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/backend/api/v1/queue.py +0 -0
  27. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/backend/api/v1/router.py +0 -0
  28. {data_syncmaster-0.1.1/syncmaster/backend/api/v1/auth → data_syncmaster-0.1.2/syncmaster/backend/api/v1/transfers}/__init__.py +0 -0
  29. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/backend/api/v1/transfers/router.py +0 -0
  30. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/backend/api/v1/transfers/utils.py +0 -0
  31. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/backend/api/v1/users.py +0 -0
  32. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/backend/handler.py +0 -0
  33. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/backend/services/__init__.py +0 -0
  34. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/backend/services/auth.py +0 -0
  35. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/backend/services/unit_of_work.py +0 -0
  36. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/config.py +0 -0
  37. {data_syncmaster-0.1.1/syncmaster/backend/api/v1/transfers → data_syncmaster-0.1.2/syncmaster/db}/__init__.py +0 -0
  38. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/db/base.py +0 -0
  39. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/db/factory.py +0 -0
  40. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/db/migrations/README +0 -0
  41. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/db/migrations/script.py.mako +0 -0
  42. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/db/migrations/versions/2023-11-23_478240cdad4b_init.py +0 -0
  43. {data_syncmaster-0.1.1/syncmaster/db → data_syncmaster-0.1.2/syncmaster/db/migrations/versions}/__init__.py +0 -0
  44. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/db/mixins.py +0 -0
  45. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/db/models.py +0 -0
  46. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/db/repositories/__init__.py +0 -0
  47. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/db/repositories/base.py +0 -0
  48. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/db/repositories/connection.py +0 -0
  49. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/db/repositories/credentials_repository.py +0 -0
  50. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/db/repositories/group.py +0 -0
  51. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/db/repositories/queue.py +0 -0
  52. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/db/repositories/repository_with_owner.py +0 -0
  53. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/db/repositories/run.py +0 -0
  54. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/db/repositories/transfer.py +0 -0
  55. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/db/repositories/user.py +0 -0
  56. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/db/repositories/utils.py +0 -0
  57. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/db/utils.py +0 -0
  58. {data_syncmaster-0.1.1/syncmaster/db/migrations → data_syncmaster-0.1.2/syncmaster/dto}/__init__.py +0 -0
  59. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/dto/connections.py +0 -0
  60. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/dto/transfers.py +0 -0
  61. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/exceptions/__init__.py +0 -0
  62. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/exceptions/base.py +0 -0
  63. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/exceptions/connection.py +0 -0
  64. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/exceptions/credentials.py +0 -0
  65. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/exceptions/group.py +0 -0
  66. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/exceptions/queue.py +0 -0
  67. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/exceptions/run.py +0 -0
  68. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/exceptions/transfer.py +0 -0
  69. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/exceptions/user.py +0 -0
  70. {data_syncmaster-0.1.1/syncmaster/db/migrations/versions → data_syncmaster-0.1.2/syncmaster/schemas}/__init__.py +0 -0
  71. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/schemas/v1/__init__.py +0 -0
  72. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/schemas/v1/auth.py +0 -0
  73. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/schemas/v1/connection_types.py +0 -0
  74. {data_syncmaster-0.1.1/syncmaster/dto → data_syncmaster-0.1.2/syncmaster/schemas/v1/connections}/__init__.py +0 -0
  75. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/schemas/v1/connections/connection.py +0 -0
  76. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/schemas/v1/connections/hdfs.py +0 -0
  77. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/schemas/v1/connections/hive.py +0 -0
  78. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/schemas/v1/connections/oracle.py +0 -0
  79. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/schemas/v1/connections/postgres.py +0 -0
  80. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/schemas/v1/connections/s3.py +0 -0
  81. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/schemas/v1/file_formats.py +0 -0
  82. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/schemas/v1/groups.py +0 -0
  83. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/schemas/v1/page.py +0 -0
  84. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/schemas/v1/queue.py +0 -0
  85. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/schemas/v1/status.py +0 -0
  86. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/schemas/v1/transfer_types.py +0 -0
  87. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/schemas/v1/transfers/__init__.py +0 -0
  88. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/schemas/v1/transfers/db.py +0 -0
  89. {data_syncmaster-0.1.1/syncmaster/schemas → data_syncmaster-0.1.2/syncmaster/schemas/v1/transfers/file}/__init__.py +0 -0
  90. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/schemas/v1/transfers/file/base.py +0 -0
  91. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/schemas/v1/transfers/file/hdfs.py +0 -0
  92. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/schemas/v1/transfers/file/s3.py +0 -0
  93. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/schemas/v1/transfers/file_format.py +0 -0
  94. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/schemas/v1/transfers/run.py +0 -0
  95. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/schemas/v1/transfers/strategy.py +0 -0
  96. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/schemas/v1/types.py +0 -0
  97. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/schemas/v1/users.py +0 -0
  98. {data_syncmaster-0.1.1/syncmaster/schemas/v1/connections → data_syncmaster-0.1.2/syncmaster/worker}/__init__.py +0 -0
  99. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/worker/base.py +0 -0
  100. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/worker/config.py +0 -0
  101. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/worker/controller.py +0 -0
  102. {data_syncmaster-0.1.1/syncmaster/schemas/v1/transfers/file → data_syncmaster-0.1.2/syncmaster/worker/handlers}/__init__.py +0 -0
  103. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/worker/handlers/base.py +0 -0
  104. {data_syncmaster-0.1.1/syncmaster/worker → data_syncmaster-0.1.2/syncmaster/worker/handlers/file}/__init__.py +0 -0
  105. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/worker/handlers/file/base.py +0 -0
  106. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/worker/handlers/file/hdfs.py +0 -0
  107. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/worker/handlers/file/s3.py +0 -0
  108. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/worker/handlers/hive.py +0 -0
  109. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/worker/handlers/oracle.py +0 -0
  110. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/worker/handlers/postgres.py +0 -0
  111. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/worker/spark.py +0 -0
  112. {data_syncmaster-0.1.1 → data_syncmaster-0.1.2}/syncmaster/worker/transfer.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: data-syncmaster
3
- Version: 0.1.1
3
+ Version: 0.1.2
4
4
  Summary: Syncmaster REST API + Worker
5
5
  License: Apache-2.0
6
6
  Keywords: Syncmaster,REST,API,Worker,Replication
@@ -66,9 +66,9 @@ SyncMaster
66
66
  :target: https://badge.fury.io/py/data-syncmaster
67
67
  .. |Docker image| image:: https://img.shields.io/docker/v/mtsrus/syncmaster-backend?sort=semver&label=docker
68
68
  :target: https://hub.docker.com/r/mtsrus/syncmaster-backend
69
- .. |Documentation| image:: https://readthedocs.org/projects/data-syncmaster/badge/?version=stable
69
+ .. |Documentation| image:: https://readthedocs.org/projects/syncmaster/badge/?version=stable
70
70
  :target: https://syncmaster.readthedocs.io
71
- .. |Build Status| image:: https://github.com/MobileTeleSystems/syncmaster/workflows/Tests/badge.svg
71
+ .. |Build Status| image:: https://github.com/MobileTeleSystems/syncmaster/workflows/Run%20All%20Tests/badge.svg
72
72
  :target: https://github.com/MobileTeleSystems/syncmaster/actions
73
73
  .. |Coverage| image:: https://codecov.io/gh/MobileTeleSystems/syncmaster/graph/badge.svg?token=ky7UyUxolB
74
74
  :target: https://codecov.io/gh/MobileTeleSystems/syncmaster
@@ -17,9 +17,9 @@ SyncMaster
17
17
  :target: https://badge.fury.io/py/data-syncmaster
18
18
  .. |Docker image| image:: https://img.shields.io/docker/v/mtsrus/syncmaster-backend?sort=semver&label=docker
19
19
  :target: https://hub.docker.com/r/mtsrus/syncmaster-backend
20
- .. |Documentation| image:: https://readthedocs.org/projects/data-syncmaster/badge/?version=stable
20
+ .. |Documentation| image:: https://readthedocs.org/projects/syncmaster/badge/?version=stable
21
21
  :target: https://syncmaster.readthedocs.io
22
- .. |Build Status| image:: https://github.com/MobileTeleSystems/syncmaster/workflows/Tests/badge.svg
22
+ .. |Build Status| image:: https://github.com/MobileTeleSystems/syncmaster/workflows/Run%20All%20Tests/badge.svg
23
23
  :target: https://github.com/MobileTeleSystems/syncmaster/actions
24
24
  .. |Coverage| image:: https://codecov.io/gh/MobileTeleSystems/syncmaster/graph/badge.svg?token=ky7UyUxolB
25
25
  :target: https://codecov.io/gh/MobileTeleSystems/syncmaster
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "data-syncmaster"
3
- version = "0.1.1"
3
+ version = "0.1.2"
4
4
  license = "Apache-2.0"
5
5
  description = "Syncmaster REST API + Worker"
6
6
  authors = ["DataOps.ETL <onetools@mts.ru>"]
@@ -197,6 +197,8 @@ exclude_lines = [
197
197
  "def downgrade\\(\\)",
198
198
  ]
199
199
 
200
+
201
+
200
202
  [tool.poetry.group.docs.dependencies]
201
203
  autodoc-pydantic = {version = "^2.0.1", python = ">=3.8"}
202
204
  numpydoc = {version = "^1.6.0", python = ">=3.8"}
@@ -1,6 +1,6 @@
1
1
  # SPDX-FileCopyrightText: 2023-2024 MTS (Mobile Telesystems)
2
2
  # SPDX-License-Identifier: Apache-2.0
3
3
 
4
- _raw_version = "0.1.1"
4
+ _raw_version = "0.1.2"
5
5
  # version always contain only release number like 0.0.1
6
6
  __version__ = ".".join(_raw_version.split(".")[:3]) # noqa: WPS410
@@ -1,6 +1,5 @@
1
1
  # SPDX-FileCopyrightText: 2023-2024 MTS (Mobile Telesystems)
2
2
  # SPDX-License-Identifier: Apache-2.0
3
- import uvicorn
4
3
  from fastapi import FastAPI, HTTPException
5
4
  from starlette.middleware.cors import CORSMiddleware
6
5
 
@@ -22,7 +21,7 @@ from syncmaster.db.factory import create_engine, create_session_factory, get_uow
22
21
  from syncmaster.exceptions import SyncmasterError
23
22
 
24
23
 
25
- def get_application(settings: Settings) -> FastAPI:
24
+ def application_factory(settings: Settings) -> FastAPI:
26
25
  application = FastAPI(
27
26
  title=settings.PROJECT_NAME,
28
27
  debug=settings.DEBUG,
@@ -55,9 +54,3 @@ def get_application(settings: Settings) -> FastAPI:
55
54
  )
56
55
 
57
56
  return application
58
-
59
-
60
- if __name__ == "__main__":
61
- settings = Settings()
62
- app = get_application(settings=settings)
63
- uvicorn.run(app, host="0.0.0.0", port=8000)
@@ -0,0 +1,35 @@
1
+ #!/bin/env python3
2
+ # SPDX-FileCopyrightText: 2023-2024 MTS (Mobile Telesystems)
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
5
+ from __future__ import annotations
6
+
7
+ import os
8
+ import sys
9
+ from pathlib import Path
10
+
11
+ import uvicorn
12
+
13
+ here = Path(__file__).resolve()
14
+
15
+
16
+ def main(prog_name: str | None = None, args: list[str] | None = None):
17
+ """Run uvicorn and pass the command line arguments to it."""
18
+ if args is None:
19
+ args = sys.argv.copy()
20
+ prog_name = args.pop(0)
21
+
22
+ if not prog_name:
23
+ prog_name = os.fspath(here)
24
+
25
+ args = args.copy()
26
+ # prepend config path before command line arguments
27
+ args.insert(0, "--factory")
28
+ args.insert(1, "syncmaster.backend:get_application")
29
+
30
+ # call uvicorn
31
+ uvicorn.main.main(args=args, prog_name=prog_name)
32
+
33
+
34
+ if __name__ == "__main__":
35
+ main()
@@ -7,7 +7,7 @@ import sys
7
7
 
8
8
  from fastapi import FastAPI
9
9
 
10
- from syncmaster.backend.main import get_application
10
+ from syncmaster.backend import application_factory
11
11
  from syncmaster.config import Settings
12
12
 
13
13
 
@@ -17,7 +17,7 @@ def get_openapi_schema(app: FastAPI) -> dict:
17
17
 
18
18
  if __name__ == "__main__":
19
19
  settings = Settings()
20
- app = get_application(settings)
20
+ app = application_factory(settings)
21
21
  schema = get_openapi_schema(app)
22
22
  file_path = sys.argv[1]
23
23
  if not file_path:
@@ -0,0 +1,38 @@
1
+ #!/bin/env python3
2
+
3
+ # SPDX-FileCopyrightText: 2023-2024 MTS (Mobile Telesystems)
4
+ # SPDX-License-Identifier: Apache-2.0
5
+
6
+ from __future__ import annotations
7
+
8
+ import os
9
+ import sys
10
+ from pathlib import Path
11
+
12
+ from alembic.config import CommandLine
13
+
14
+ here = Path(__file__).resolve()
15
+ config_path = here.parent / "alembic.ini"
16
+
17
+
18
+ def main(prog_name: str | None = None, args: list[str] | None = None):
19
+ """Run alembic and pass the command line arguments to it."""
20
+ if args is None:
21
+ args = sys.argv.copy()
22
+ prog_name = args.pop(0)
23
+
24
+ if not prog_name:
25
+ prog_name = os.fspath(here)
26
+
27
+ # prepend config path before command line arguments
28
+ args = args.copy()
29
+ args.insert(0, "-c")
30
+ args.insert(1, os.fspath(config_path))
31
+
32
+ # call alembic
33
+ cmd = CommandLine(prog=prog_name)
34
+ cmd.main(argv=args)
35
+
36
+
37
+ if __name__ == "__main__":
38
+ main()
@@ -1,7 +1,7 @@
1
1
  [alembic]
2
- script_location = %(here)s/migrations
2
+ script_location = %(here)s
3
3
  file_template = %%(year)d-%%(month).2d-%%(day).2d_%%(rev)s_%%(slug)s
4
- prepend_sys_path = .
4
+ prepend_sys_path = %(here)s/../../../
5
5
  version_path_separator = os
6
6
 
7
7
  [post_write_hooks]
@@ -18,7 +18,9 @@ config = context.config
18
18
  if config.config_file_name is not None:
19
19
  fileConfig(config.config_file_name)
20
20
 
21
- config.set_main_option("sqlalchemy.url", Settings().build_db_connection_uri())
21
+ if not config.get_main_option("sqlalchemy.url"):
22
+ # read application settings only if sqlalchemy.url is not being passed via cli arguments
23
+ config.set_main_option("sqlalchemy.url", Settings().build_db_connection_uri())
22
24
 
23
25
  target_metadata = (
24
26
  Base.metadata,
@@ -1,2 +0,0 @@
1
- # SPDX-FileCopyrightText: 2023-2024 MTS (Mobile Telesystems)
2
- # SPDX-License-Identifier: Apache-2.0
@@ -1,94 +0,0 @@
1
- # SPDX-FileCopyrightText: 2023-2024 MTS (Mobile Telesystems)
2
- # SPDX-License-Identifier: Apache-2.0
3
- import logging
4
- from time import sleep
5
-
6
- from syncmaster.config import Settings, TestSettings
7
- from tests.test_integration.test_run_transfer.conftest import get_spark_session
8
-
9
- TIMEOUT = 5
10
- COUNT = 12
11
-
12
- logger = logging.getLogger(__name__)
13
-
14
-
15
- def check_test_postgres(settings: Settings, test_settings: TestSettings) -> None:
16
- from onetl.connection import Postgres
17
-
18
- spark_session = get_spark_session(settings)
19
-
20
- count = COUNT
21
- connection = Postgres(
22
- host=test_settings.TEST_POSTGRES_HOST,
23
- port=test_settings.TEST_POSTGRES_PORT,
24
- user=test_settings.TEST_POSTGRES_USER,
25
- password=test_settings.TEST_POSTGRES_PASSWORD,
26
- database=test_settings.TEST_POSTGRES_DB,
27
- spark=spark_session,
28
- )
29
- exception = None
30
- while count > 0:
31
- try:
32
- connection.check()
33
- return
34
- except Exception:
35
- count -= 1
36
- logger.info("Got exception on postgres. Will try after %d sec", TIMEOUT)
37
- sleep(TIMEOUT)
38
- if exception:
39
- raise exception
40
-
41
-
42
- def check_test_oracle(settings: Settings, test_settings: TestSettings) -> None:
43
- from onetl.connection import Oracle
44
-
45
- spark_session = get_spark_session(settings)
46
-
47
- count = COUNT
48
- connection = Oracle(
49
- host=test_settings.TEST_ORACLE_HOST,
50
- port=test_settings.TEST_ORACLE_PORT,
51
- user=test_settings.TEST_ORACLE_USER,
52
- password=test_settings.TEST_ORACLE_PASSWORD,
53
- service_name=test_settings.TEST_ORACLE_SERVICE_NAME,
54
- sid=test_settings.TEST_ORACLE_SID,
55
- spark=spark_session,
56
- )
57
- exception = None
58
- while count > 0:
59
- try:
60
- connection.check()
61
- return
62
- except Exception:
63
- count -= 1
64
- logger.info("Got exception on oracle. Will try after %d sec", TIMEOUT)
65
- sleep(TIMEOUT)
66
- if exception:
67
- raise exception
68
-
69
-
70
- def check_test_hive(settings: Settings, test_settings: TestSettings) -> None:
71
- from onetl.connection import Hive
72
-
73
- spark_session = get_spark_session(settings)
74
-
75
- count = COUNT
76
- connection = Hive(
77
- cluster=test_settings.TEST_HIVE_CLUSTER,
78
- spark=spark_session,
79
- )
80
- exception = None
81
- while count > 0:
82
- try:
83
- connection.check()
84
- connection.execute("SHOW DATABASES")
85
- return
86
- except Exception:
87
- count -= 1
88
- logger.info("Got exception on hive. will try after %d sec", TIMEOUT)
89
- sleep(TIMEOUT)
90
- if exception:
91
- raise exception
92
-
93
-
94
- settings = Settings()
@@ -1,2 +0,0 @@
1
- # SPDX-FileCopyrightText: 2023-2024 MTS (Mobile Telesystems)
2
- # SPDX-License-Identifier: Apache-2.0
@@ -1,2 +0,0 @@
1
- # SPDX-FileCopyrightText: 2023-2024 MTS (Mobile Telesystems)
2
- # SPDX-License-Identifier: Apache-2.0