port-ocean 0.15.1__tar.gz → 0.15.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.
Potentially problematic release.
This version of port-ocean might be problematic. Click here for more details.
- {port_ocean-0.15.1 → port_ocean-0.15.3}/PKG-INFO +1 -1
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/cli/commands/new.py +4 -7
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/cli/cookiecutter/cookiecutter.json +3 -0
- port_ocean-0.15.3/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.env.example +6 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/models.py +13 -2
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/utils.py +5 -3
- port_ocean-0.15.3/port_ocean/debug_cli.py +5 -0
- port_ocean-0.15.3/port_ocean/tests/core/test_utils.py +73 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/pyproject.toml +1 -1
- port_ocean-0.15.1/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.env.example +0 -2
- {port_ocean-0.15.1 → port_ocean-0.15.3}/LICENSE.md +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/README.md +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/integrations/_infra/Dockerfile.Deb +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/integrations/_infra/Dockerfile.alpine +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/integrations/_infra/Dockerfile.base.builder +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/integrations/_infra/Dockerfile.base.runner +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/integrations/_infra/Dockerfile.dockerignore +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/integrations/_infra/Makefile +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/integrations/_infra/grpcio.sh +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/integrations/_infra/init.sh +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/__init__.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/bootstrap.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/cli/__init__.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/cli/cli.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/cli/commands/__init__.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/cli/commands/defaults/__init___.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/cli/commands/defaults/clean.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/cli/commands/defaults/dock.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/cli/commands/defaults/group.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/cli/commands/list_integrations.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/cli/commands/main.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/cli/commands/pull.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/cli/commands/sail.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/cli/commands/version.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/cli/cookiecutter/__init__.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/cli/cookiecutter/extensions.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/cli/cookiecutter/hooks/post_gen_project.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.gitignore +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/.gitignore +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/blueprints.json +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/port-app-config.yml +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/spec.yaml +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/CHANGELOG.md +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/CONTRIBUTING.md +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/README.md +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/changelog/.gitignore +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/debug.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/main.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/poetry.toml +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/pyproject.toml +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/sonar-project.properties +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/tests/__init__.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/tests/test_sample.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/cli/utils.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/clients/__init__.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/clients/port/__init__.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/clients/port/authentication.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/clients/port/client.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/clients/port/mixins/__init__.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/clients/port/mixins/blueprints.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/clients/port/mixins/entities.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/clients/port/mixins/integrations.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/clients/port/mixins/migrations.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/clients/port/retry_transport.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/clients/port/types.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/clients/port/utils.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/config/__init__.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/config/base.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/config/dynamic.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/config/settings.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/consumers/__init__.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/consumers/kafka_consumer.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/context/__init__.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/context/event.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/context/ocean.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/context/resource.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/__init__.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/defaults/__init__.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/defaults/clean.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/defaults/common.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/defaults/initialize.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/event_listener/__init__.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/event_listener/base.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/event_listener/factory.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/event_listener/http.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/event_listener/kafka.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/event_listener/once.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/event_listener/polling.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/handlers/__init__.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/handlers/base.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/handlers/entities_state_applier/__init__.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/handlers/entities_state_applier/base.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/handlers/entities_state_applier/port/__init__.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/handlers/entities_state_applier/port/applier.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/handlers/entities_state_applier/port/get_related_entities.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/handlers/entities_state_applier/port/order_by_entities_dependencies.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/handlers/entity_processor/__init__.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/handlers/entity_processor/base.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/handlers/entity_processor/jq_entity_processor.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/handlers/port_app_config/__init__.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/handlers/port_app_config/api.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/handlers/port_app_config/base.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/handlers/port_app_config/models.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/handlers/resync_state_updater/__init__.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/handlers/resync_state_updater/updater.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/integrations/__init__.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/integrations/base.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/integrations/mixins/__init__.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/integrations/mixins/events.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/integrations/mixins/handler.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/integrations/mixins/sync.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/integrations/mixins/sync_raw.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/integrations/mixins/utils.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/ocean_types.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/exceptions/__init__.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/exceptions/api.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/exceptions/base.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/exceptions/clients.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/exceptions/context.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/exceptions/core.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/exceptions/port_defaults.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/exceptions/utils.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/helpers/__init__.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/helpers/async_client.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/helpers/retry.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/log/__init__.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/log/handlers.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/log/logger_setup.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/log/sensetive.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/middlewares.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/ocean.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/py.typed +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/run.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/sonar-project.properties +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/tests/__init__.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/tests/clients/port/mixins/test_entities.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/tests/conftest.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/tests/core/defaults/test_common.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/tests/core/handlers/entity_processor/test_jq_entity_processor.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/tests/helpers/__init__.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/tests/helpers/fake_port_api.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/tests/helpers/fixtures.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/tests/helpers/integration.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/tests/helpers/ocean_app.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/tests/helpers/port_client.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/tests/helpers/smoke_test.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/tests/log/test_handlers.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/tests/test_smoke.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/tests/utils/test_async_iterators.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/tests/utils/test_cache.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/utils/__init__.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/utils/async_http.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/utils/async_iterators.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/utils/cache.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/utils/misc.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/utils/queue_utils.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/utils/repeat.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/utils/signal.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/utils/time.py +0 -0
- {port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/version.py +0 -0
|
@@ -77,18 +77,15 @@ def new(path: str, is_private_integration: bool) -> None:
|
|
|
77
77
|
)
|
|
78
78
|
console.print("Here are your next steps:\n", style="bold")
|
|
79
79
|
console.print(
|
|
80
|
-
"⚓️ Install necessary packages: Run [bold][blue]make install[/blue][/bold] to install all required packages for your project
|
|
81
|
-
f"▶️ [bold][blue]cd {path}/{name} && make install && . .venv/bin/activate[/blue][/bold]\n"
|
|
80
|
+
f"⚓️ Install necessary packages: Run [bold][blue]cd {path}/{name} && make install && . .venv/bin/activate[/blue][/bold] to install all required packages for your project."
|
|
82
81
|
)
|
|
83
82
|
console.print(
|
|
84
|
-
|
|
83
|
+
"⚓️ Copy example env file: Run [bold][blue]cp .env.example .env [/blue][/bold] and update your integration's configuration in the .env file."
|
|
85
84
|
)
|
|
86
85
|
console.print(
|
|
87
|
-
"⚓️ Set sail with [blue]Ocean[/blue]: Run [bold][blue]ocean sail[/blue]
|
|
88
|
-
f"▶️ [bold][blue]ocean sail {path}/{name}[/blue][/bold] \n"
|
|
86
|
+
"⚓️ Set sail with [blue]Ocean[/blue]: Run [bold][blue]ocean sail[/blue][/bold] to run the project using Ocean."
|
|
89
87
|
)
|
|
90
88
|
if not final_private_integration:
|
|
91
89
|
console.print(
|
|
92
|
-
"⚓️ Smooth sailing with [blue]Make[/blue]: Alternatively, you can run [bold][blue]make run[/blue][/bold] to launch your project using Make.
|
|
93
|
-
f"▶️ [bold][blue]make run {path}/{name}[/blue][/bold]"
|
|
90
|
+
f"⚓️ Smooth sailing with [blue]Make[/blue]: Alternatively, you can run [bold][blue]make run {path}/{name}[/blue][/bold] to launch your project using Make."
|
|
94
91
|
)
|
|
@@ -6,6 +6,9 @@
|
|
|
6
6
|
"email": "Your address email <you@example.com>",
|
|
7
7
|
"release_date": "{% now 'local' %}",
|
|
8
8
|
"is_private_integration": true,
|
|
9
|
+
"port_client_id": "you can find it using: https://docs.getport.io/build-your-software-catalog/custom-integration/api/#find-your-port-credentials",
|
|
10
|
+
"port_client_secret": "you can find it using: https://docs.getport.io/build-your-software-catalog/custom-integration/api/#find-your-port-credentials",
|
|
11
|
+
"is_us_region": false,
|
|
9
12
|
"_extensions": [
|
|
10
13
|
"jinja2_time.TimeExtension",
|
|
11
14
|
"extensions.VersionExtension"
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
OCEAN__PORT__CLIENT_ID={{ cookiecutter.port_client_id }}
|
|
2
|
+
OCEAN__PORT__CLIENT_SECRET={{ cookiecutter.port_client_secret }}
|
|
3
|
+
OCEAN__INTEGRATION__IDENTIFIER={{ cookiecutter.integration_slug }}
|
|
4
|
+
OCEAN__PORT__BASE_URL={% if cookiecutter.is_us_region %}https://api.us.getport.io{% else %}https://api.getport.io{% endif %}
|
|
5
|
+
OCEAN__EVENT_LISTENER__TYPE=POLLING
|
|
6
|
+
OCEAN__INITIALIZE_PORT_RESOURCES=true
|
|
@@ -8,12 +8,23 @@ from pydantic.fields import Field
|
|
|
8
8
|
|
|
9
9
|
class Runtime(Enum):
|
|
10
10
|
Saas = "Saas"
|
|
11
|
-
SaasOauth2 = "SaasOauth2"
|
|
12
11
|
OnPrem = "OnPrem"
|
|
13
12
|
|
|
14
13
|
@property
|
|
15
14
|
def is_saas_runtime(self) -> bool:
|
|
16
|
-
return self in [Runtime.Saas
|
|
15
|
+
return self in [Runtime.Saas]
|
|
16
|
+
|
|
17
|
+
def is_installation_type_compatible(self, installation_type: str) -> bool:
|
|
18
|
+
"""
|
|
19
|
+
Check if the installation type is compatible with the runtime
|
|
20
|
+
|
|
21
|
+
if the runtime is Saas, the installation type should start with Saas
|
|
22
|
+
else the installation type should be OnPrem
|
|
23
|
+
"""
|
|
24
|
+
return (
|
|
25
|
+
self.value == Runtime.Saas.value
|
|
26
|
+
and installation_type.startswith(self.value)
|
|
27
|
+
) or installation_type == self.value
|
|
17
28
|
|
|
18
29
|
|
|
19
30
|
class Entity(BaseModel):
|
|
@@ -42,10 +42,12 @@ async def validate_integration_runtime(
|
|
|
42
42
|
current_integration = await port_client.get_current_integration(
|
|
43
43
|
should_raise=False, should_log=False
|
|
44
44
|
)
|
|
45
|
-
|
|
46
|
-
if current_integration and
|
|
45
|
+
current_installation_type = current_integration.get("installationType", "OnPrem")
|
|
46
|
+
if current_integration and not requested_runtime.is_installation_type_compatible(
|
|
47
|
+
current_installation_type
|
|
48
|
+
):
|
|
47
49
|
raise IntegrationRuntimeException(
|
|
48
|
-
f"Invalid Runtime! Requested to run existing {
|
|
50
|
+
f"Invalid Runtime! Requested to run existing {current_installation_type} integration in {requested_runtime} runtime."
|
|
49
51
|
)
|
|
50
52
|
|
|
51
53
|
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
from unittest.mock import AsyncMock, patch
|
|
2
|
+
|
|
3
|
+
import pytest
|
|
4
|
+
|
|
5
|
+
from port_ocean.core.utils import validate_integration_runtime
|
|
6
|
+
from port_ocean.clients.port.client import PortClient
|
|
7
|
+
from port_ocean.core.models import Runtime
|
|
8
|
+
from port_ocean.tests.helpers.port_client import get_port_client_for_integration
|
|
9
|
+
from port_ocean.exceptions.core import IntegrationRuntimeException
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class TestValidateIntegrationRuntime:
|
|
13
|
+
|
|
14
|
+
@pytest.mark.asyncio
|
|
15
|
+
@pytest.mark.parametrize(
|
|
16
|
+
"requested_runtime, installation_type, should_raise",
|
|
17
|
+
[
|
|
18
|
+
(Runtime.Saas, "Saas", False),
|
|
19
|
+
(Runtime.Saas, "SaasOauth2", False),
|
|
20
|
+
(Runtime.Saas, "OnPrem", True),
|
|
21
|
+
(Runtime.OnPrem, "OnPrem", False),
|
|
22
|
+
(Runtime.OnPrem, "SaasOauth2", True),
|
|
23
|
+
],
|
|
24
|
+
)
|
|
25
|
+
@patch.object(PortClient, "get_current_integration", new_callable=AsyncMock)
|
|
26
|
+
async def test_validate_integration_runtime(
|
|
27
|
+
self,
|
|
28
|
+
mock_get_current_integration: AsyncMock,
|
|
29
|
+
requested_runtime: Runtime,
|
|
30
|
+
installation_type: str,
|
|
31
|
+
should_raise: bool,
|
|
32
|
+
) -> None:
|
|
33
|
+
# Arrange
|
|
34
|
+
port_client = get_port_client_for_integration(
|
|
35
|
+
client_id="mock-client-id",
|
|
36
|
+
client_secret="mock-client-secret",
|
|
37
|
+
integration_identifier="mock-integration-identifier",
|
|
38
|
+
integration_type="mock-integration-type",
|
|
39
|
+
integration_version="mock-integration-version",
|
|
40
|
+
base_url="mock-base-url",
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
# Mock the return value of get_current_integration
|
|
44
|
+
mock_get_current_integration.return_value = {
|
|
45
|
+
"installationType": installation_type
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
# Act & Assert
|
|
49
|
+
if should_raise:
|
|
50
|
+
with pytest.raises(IntegrationRuntimeException):
|
|
51
|
+
await validate_integration_runtime(port_client, requested_runtime)
|
|
52
|
+
else:
|
|
53
|
+
await validate_integration_runtime(port_client, requested_runtime)
|
|
54
|
+
|
|
55
|
+
# Verify that get_current_integration was called once
|
|
56
|
+
mock_get_current_integration.assert_called_once()
|
|
57
|
+
|
|
58
|
+
@pytest.mark.parametrize(
|
|
59
|
+
"requested_runtime, installation_type, expected",
|
|
60
|
+
[
|
|
61
|
+
(Runtime.Saas, "SaasOauth2", True),
|
|
62
|
+
(Runtime.Saas, "OnPrem", False),
|
|
63
|
+
(Runtime.OnPrem, "OnPrem", True),
|
|
64
|
+
(Runtime.OnPrem, "SaasCloud", False),
|
|
65
|
+
],
|
|
66
|
+
)
|
|
67
|
+
def test_runtime_installation_compatibility(
|
|
68
|
+
self, requested_runtime: Runtime, installation_type: str, expected: bool
|
|
69
|
+
) -> None:
|
|
70
|
+
assert (
|
|
71
|
+
requested_runtime.is_installation_type_compatible(installation_type)
|
|
72
|
+
== expected
|
|
73
|
+
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/cli/cookiecutter/hooks/post_gen_project.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/handlers/entities_state_applier/__init__.py
RENAMED
|
File without changes
|
{port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/handlers/entities_state_applier/base.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/handlers/entity_processor/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/handlers/port_app_config/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/handlers/resync_state_updater/__init__.py
RENAMED
|
File without changes
|
{port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/core/handlers/resync_state_updater/updater.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{port_ocean-0.15.1 → port_ocean-0.15.3}/port_ocean/tests/clients/port/mixins/test_entities.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|