port-ocean 0.23.1__tar.gz → 0.23.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.23.1 → port_ocean-0.23.3}/PKG-INFO +1 -1
- {port_ocean-0.23.1 → port_ocean-0.23.3}/integrations/_infra/Dockerfile.Deb +5 -1
- {port_ocean-0.23.1 → port_ocean-0.23.3}/integrations/_infra/Dockerfile.base.builder +6 -3
- {port_ocean-0.23.1 → port_ocean-0.23.3}/integrations/_infra/Dockerfile.base.runner +3 -2
- {port_ocean-0.23.1 → port_ocean-0.23.3}/integrations/_infra/Dockerfile.local +5 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/integrations/_infra/entry_local.sh +0 -2
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/integrations/mixins/sync_raw.py +4 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/integrations/mixins/utils.py +19 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/helpers/metric/metric.py +17 -2
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/ocean.py +0 -1
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/utils/ipc.py +1 -1
- {port_ocean-0.23.1 → port_ocean-0.23.3}/pyproject.toml +1 -1
- {port_ocean-0.23.1 → port_ocean-0.23.3}/LICENSE.md +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/README.md +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/integrations/_infra/Dockerfile.alpine +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/integrations/_infra/Dockerfile.dockerignore +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/integrations/_infra/Makefile +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/integrations/_infra/grpcio.sh +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/integrations/_infra/init.sh +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/__init__.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/bootstrap.py +0 -0
- {port_ocean-0.23.1/port_ocean/tests/helpers → port_ocean-0.23.3/port_ocean/cache}/__init__.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cache/base.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cache/disk.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cache/errors.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cache/memory.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/__init__.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cli.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/commands/__init__.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/commands/defaults/__init___.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/commands/defaults/clean.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/commands/defaults/dock.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/commands/defaults/group.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/commands/list_integrations.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/commands/main.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/commands/new.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/commands/pull.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/commands/sail.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/commands/version.py +0 -0
- {port_ocean-0.23.1/port_ocean/tests/clients/oauth → port_ocean-0.23.3/port_ocean/cli/cookiecutter}/__init__.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/cookiecutter.json +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/extensions.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/hooks/post_gen_project.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.env.example +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.gitignore +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/.gitignore +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/blueprints.json +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/port-app-config.yml +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/spec.yaml +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/CHANGELOG.md +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/CONTRIBUTING.md +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/README.md +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/changelog/.gitignore +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/debug.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/main.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/poetry.toml +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/pyproject.toml +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/sonar-project.properties +0 -0
- {port_ocean-0.23.1/port_ocean/tests/clients → port_ocean-0.23.3/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/tests}/__init__.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/tests/test_sample.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/utils.py +0 -0
- {port_ocean-0.23.1/port_ocean/tests → port_ocean-0.23.3/port_ocean/clients}/__init__.py +0 -0
- {port_ocean-0.23.1/port_ocean/log → port_ocean-0.23.3/port_ocean/clients/auth}/__init__.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/clients/auth/auth_client.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/clients/auth/oauth_client.py +0 -0
- {port_ocean-0.23.1/port_ocean/helpers → port_ocean-0.23.3/port_ocean/clients/port}/__init__.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/clients/port/authentication.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/clients/port/client.py +0 -0
- {port_ocean-0.23.1/port_ocean/exceptions → port_ocean-0.23.3/port_ocean/clients/port/mixins}/__init__.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/clients/port/mixins/blueprints.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/clients/port/mixins/entities.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/clients/port/mixins/integrations.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/clients/port/mixins/migrations.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/clients/port/mixins/organization.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/clients/port/retry_transport.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/clients/port/types.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/clients/port/utils.py +0 -0
- {port_ocean-0.23.1/port_ocean/core/integrations → port_ocean-0.23.3/port_ocean/config}/__init__.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/config/base.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/config/dynamic.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/config/settings.py +0 -0
- {port_ocean-0.23.1/port_ocean/core/handlers/webhook → port_ocean-0.23.3/port_ocean/consumers}/__init__.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/consumers/kafka_consumer.py +0 -0
- {port_ocean-0.23.1/port_ocean/core/handlers/entities_state_applier/port → port_ocean-0.23.3/port_ocean/context}/__init__.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/context/event.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/context/ocean.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/context/resource.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/__init__.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/defaults/__init__.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/defaults/clean.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/defaults/common.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/defaults/initialize.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/event_listener/__init__.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/event_listener/base.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/event_listener/factory.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/event_listener/http.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/event_listener/kafka.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/event_listener/once.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/event_listener/polling.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/event_listener/webhooks_only.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/__init__.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/base.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/entities_state_applier/__init__.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/entities_state_applier/base.py +0 -0
- {port_ocean-0.23.1/port_ocean/context → port_ocean-0.23.3/port_ocean/core/handlers/entities_state_applier/port}/__init__.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/entities_state_applier/port/applier.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/entities_state_applier/port/get_related_entities.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/entities_state_applier/port/order_by_entities_dependencies.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/entity_processor/__init__.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/entity_processor/base.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/entity_processor/jq_entity_processor.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/port_app_config/__init__.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/port_app_config/api.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/port_app_config/base.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/port_app_config/models.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/queue/__init__.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/queue/abstract_queue.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/queue/local_queue.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/resync_state_updater/__init__.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/resync_state_updater/updater.py +0 -0
- {port_ocean-0.23.1/port_ocean/consumers → port_ocean-0.23.3/port_ocean/core/handlers/webhook}/__init__.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/webhook/abstract_webhook_processor.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/webhook/processor_manager.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/webhook/webhook_event.py +0 -0
- {port_ocean-0.23.1/port_ocean/config → port_ocean-0.23.3/port_ocean/core/integrations}/__init__.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/integrations/base.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/integrations/mixins/__init__.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/integrations/mixins/events.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/integrations/mixins/handler.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/integrations/mixins/live_events.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/integrations/mixins/sync.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/models.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/ocean_types.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/utils/entity_topological_sorter.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/utils/utils.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/debug_cli.py +0 -0
- {port_ocean-0.23.1/port_ocean/clients/port/mixins → port_ocean-0.23.3/port_ocean/exceptions}/__init__.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/exceptions/api.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/exceptions/base.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/exceptions/clients.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/exceptions/context.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/exceptions/core.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/exceptions/port_defaults.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/exceptions/utils.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/exceptions/webhook_processor.py +0 -0
- {port_ocean-0.23.1/port_ocean/clients/port → port_ocean-0.23.3/port_ocean/helpers}/__init__.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/helpers/async_client.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/helpers/metric/utils.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/helpers/retry.py +0 -0
- {port_ocean-0.23.1/port_ocean/clients/auth → port_ocean-0.23.3/port_ocean/log}/__init__.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/log/handlers.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/log/logger_setup.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/log/sensetive.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/middlewares.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/py.typed +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/run.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/sonar-project.properties +0 -0
- {port_ocean-0.23.1/port_ocean/clients → port_ocean-0.23.3/port_ocean/tests}/__init__.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/cache/__init__.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/cache/test_disk_cache.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/cache/test_memory_cache.py +0 -0
- {port_ocean-0.23.1/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/tests → port_ocean-0.23.3/port_ocean/tests/clients}/__init__.py +0 -0
- {port_ocean-0.23.1/port_ocean/cli/cookiecutter → port_ocean-0.23.3/port_ocean/tests/clients/oauth}/__init__.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/clients/oauth/test_oauth_client.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/clients/port/mixins/test_entities.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/clients/port/mixins/test_organization_mixin.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/conftest.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/conftest.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/defaults/test_common.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/handlers/entities_state_applier/test_applier.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/handlers/entity_processor/test_jq_entity_processor.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/handlers/mixins/test_live_events.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/handlers/mixins/test_sync_raw.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/handlers/port_app_config/test_api.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/handlers/port_app_config/test_base.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/handlers/queue/test_local_queue.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/handlers/webhook/test_abstract_webhook_processor.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/handlers/webhook/test_processor_manager.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/handlers/webhook/test_webhook_event.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/test_utils.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/utils/test_entity_topological_sorter.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/utils/test_resolve_entities_diff.py +0 -0
- {port_ocean-0.23.1/port_ocean/cache → port_ocean-0.23.3/port_ocean/tests/helpers}/__init__.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/helpers/fake_port_api.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/helpers/fixtures.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/helpers/integration.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/helpers/ocean_app.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/helpers/port_client.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/helpers/smoke_test.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/log/test_handlers.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/test_metric.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/test_ocean.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/test_smoke.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/utils/test_async_iterators.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/utils/test_cache.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/utils/__init__.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/utils/async_http.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/utils/async_iterators.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/utils/cache.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/utils/misc.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/utils/queue_utils.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/utils/repeat.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/utils/signal.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/utils/time.py +0 -0
- {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/version.py +0 -0
|
@@ -5,11 +5,15 @@ FROM ${BASE_BUILDER_PYTHON_IMAGE} AS base
|
|
|
5
5
|
|
|
6
6
|
ARG BUILD_CONTEXT
|
|
7
7
|
ARG BUILDPLATFORM
|
|
8
|
+
ARG PROMETHEUS_MULTIPROC_DIR=/tmp/ocean/prometheus/metrics
|
|
8
9
|
|
|
9
10
|
ENV LIBRDKAFKA_VERSION=2.8.2 \
|
|
10
11
|
PYTHONUNBUFFERED=1 \
|
|
11
12
|
POETRY_VIRTUALENVS_IN_PROJECT=1 \
|
|
12
|
-
PIP_ROOT_USER_ACTION=ignore
|
|
13
|
+
PIP_ROOT_USER_ACTION=ignore \
|
|
14
|
+
PROMETHEUS_MULTIPROC_DIR=${PROMETHEUS_MULTIPROC_DIR}
|
|
15
|
+
|
|
16
|
+
RUN mkdir -p ${PROMETHEUS_MULTIPROC_DIR}
|
|
13
17
|
|
|
14
18
|
WORKDIR /app
|
|
15
19
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
ARG
|
|
2
|
-
|
|
1
|
+
ARG ACCOUNT_ID=1
|
|
2
|
+
ARG BASE_PYTHON_IMAGE=${ACCOUNT_ID}.dkr.ecr.eu-west-1.amazonaws.com/echo/python:3.13
|
|
3
|
+
|
|
3
4
|
FROM ${BASE_PYTHON_IMAGE}
|
|
4
5
|
|
|
5
6
|
LABEL org.opencontainers.image.source=https://github.com/port-labs/ocean
|
|
@@ -7,7 +8,9 @@ LABEL org.opencontainers.image.source=https://github.com/port-labs/ocean
|
|
|
7
8
|
ENV LIBRDKAFKA_VERSION=2.8.2 \
|
|
8
9
|
PYTHONUNBUFFERED=1 \
|
|
9
10
|
POETRY_VIRTUALENVS_IN_PROJECT=1 \
|
|
10
|
-
PIP_ROOT_USER_ACTION=ignore
|
|
11
|
+
PIP_ROOT_USER_ACTION=ignore \
|
|
12
|
+
POETRY_VIRTUALENVS_PREFER_ACTIVE_PYTHON=true \
|
|
13
|
+
POETRY_PYTHON=/usr/local/bin/python3.13
|
|
11
14
|
|
|
12
15
|
RUN apt-get update \
|
|
13
16
|
&& apt-get install -y \
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
ARG
|
|
2
|
-
|
|
1
|
+
ARG ACCOUNT_ID=1
|
|
2
|
+
ARG BASE_PYTHON_IMAGE=${ACCOUNT_ID}.dkr.ecr.eu-west-1.amazonaws.com/echo/python:3.13
|
|
3
|
+
|
|
3
4
|
FROM ${BASE_PYTHON_IMAGE}
|
|
4
5
|
|
|
5
6
|
LABEL org.opencontainers.image.source=https://github.com/port-labs/ocean
|
|
@@ -25,6 +25,11 @@ RUN apt-get update \
|
|
|
25
25
|
&& apt-get clean
|
|
26
26
|
|
|
27
27
|
ARG BUILD_CONTEXT
|
|
28
|
+
ARG PROMETHEUS_MULTIPROC_DIR=/tmp/ocean/prometheus/metrics
|
|
29
|
+
|
|
30
|
+
ENV PROMETHEUS_MULTIPROC_DIR=${PROMETHEUS_MULTIPROC_DIR}
|
|
31
|
+
|
|
32
|
+
RUN mkdir -p ${PROMETHEUS_MULTIPROC_DIR}
|
|
28
33
|
|
|
29
34
|
WORKDIR /app
|
|
30
35
|
|
|
@@ -16,6 +16,7 @@ from port_ocean.core.handlers.port_app_config.models import ResourceConfig
|
|
|
16
16
|
from port_ocean.core.integrations.mixins import HandlerMixin, EventsMixin
|
|
17
17
|
from port_ocean.core.integrations.mixins.utils import (
|
|
18
18
|
ProcessWrapper,
|
|
19
|
+
clear_http_client_context,
|
|
19
20
|
is_resource_supported,
|
|
20
21
|
unsupported_kind_response,
|
|
21
22
|
resync_generator_wrapper,
|
|
@@ -594,6 +595,7 @@ class SyncRawMixin(HandlerMixin, EventsMixin):
|
|
|
594
595
|
) -> None:
|
|
595
596
|
logger.info(f"process started successfully for {resource.kind} with index {index}")
|
|
596
597
|
|
|
598
|
+
clear_http_client_context()
|
|
597
599
|
async def process_resource_task() -> None:
|
|
598
600
|
result = await self._process_resource(
|
|
599
601
|
resource, index, user_agent_type
|
|
@@ -775,3 +777,5 @@ class SyncRawMixin(HandlerMixin, EventsMixin):
|
|
|
775
777
|
return True
|
|
776
778
|
finally:
|
|
777
779
|
await ocean.app.cache_provider.clear()
|
|
780
|
+
if ocean.app.process_execution_mode == ProcessExecutionMode.multi_process:
|
|
781
|
+
ocean.metrics.cleanup_prometheus_metrics()
|
|
@@ -19,6 +19,10 @@ from port_ocean.exceptions.core import (
|
|
|
19
19
|
KindNotImplementedException,
|
|
20
20
|
)
|
|
21
21
|
|
|
22
|
+
from port_ocean.utils.async_http import _http_client
|
|
23
|
+
from port_ocean.clients.port.utils import _http_client as _port_http_client
|
|
24
|
+
|
|
25
|
+
from port_ocean.context.ocean import ocean
|
|
22
26
|
|
|
23
27
|
@contextmanager
|
|
24
28
|
def resync_error_handling() -> Generator[None, None, None]:
|
|
@@ -76,6 +80,7 @@ def unsupported_kind_response(
|
|
|
76
80
|
logger.error(f"Kind {kind} is not supported in this integration")
|
|
77
81
|
return [], [KindNotImplementedException(kind, available_resync_kinds)]
|
|
78
82
|
|
|
83
|
+
|
|
79
84
|
class ProcessWrapper(multiprocessing.Process):
|
|
80
85
|
def __init__(self, *args, **kwargs):
|
|
81
86
|
super().__init__(*args, **kwargs)
|
|
@@ -87,4 +92,18 @@ class ProcessWrapper(multiprocessing.Process):
|
|
|
87
92
|
logger.error(f"Process {self.pid} failed with exit code {self.exitcode}")
|
|
88
93
|
else:
|
|
89
94
|
logger.info(f"Process {self.pid} finished with exit code {self.exitcode}")
|
|
95
|
+
ocean.metrics.cleanup_prometheus_metrics(self.pid)
|
|
90
96
|
return super().join()
|
|
97
|
+
|
|
98
|
+
def clear_http_client_context() -> None:
|
|
99
|
+
try:
|
|
100
|
+
while _http_client.top is not None:
|
|
101
|
+
_http_client.pop()
|
|
102
|
+
except (RuntimeError, AttributeError):
|
|
103
|
+
pass
|
|
104
|
+
|
|
105
|
+
try:
|
|
106
|
+
while _port_http_client.top is not None:
|
|
107
|
+
_port_http_client.pop()
|
|
108
|
+
except (RuntimeError, AttributeError):
|
|
109
|
+
pass
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import os
|
|
1
2
|
from typing import Any, TYPE_CHECKING, Optional, Dict, List, Tuple
|
|
2
3
|
from fastapi import APIRouter
|
|
3
4
|
from port_ocean.exceptions.context import ResourceContextNotFoundError
|
|
4
5
|
import prometheus_client
|
|
5
6
|
from httpx import AsyncClient
|
|
6
|
-
|
|
7
|
+
from fastapi.responses import PlainTextResponse
|
|
7
8
|
from loguru import logger
|
|
8
9
|
from port_ocean.context import resource
|
|
9
10
|
from prometheus_client import Gauge
|
|
@@ -193,7 +194,21 @@ class Metrics:
|
|
|
193
194
|
"""
|
|
194
195
|
self.get_metric(name, labels).set(value)
|
|
195
196
|
|
|
197
|
+
@staticmethod
|
|
198
|
+
def cleanup_prometheus_metrics(pid: int | None = None) -> None:
|
|
199
|
+
try:
|
|
200
|
+
prometheus_multiproc_dir = os.environ.get("PROMETHEUS_MULTIPROC_DIR")
|
|
201
|
+
for file in os.listdir(prometheus_multiproc_dir):
|
|
202
|
+
if pid:
|
|
203
|
+
if file.endswith(".db") and file[0:-3].split("_")[-1] == str(pid):
|
|
204
|
+
os.remove(f"{prometheus_multiproc_dir}/{file}")
|
|
205
|
+
else:
|
|
206
|
+
os.remove(f"{prometheus_multiproc_dir}/{file}")
|
|
207
|
+
except Exception as e:
|
|
208
|
+
logger.error(f"Failed to cleanup prometheus metrics: {e}")
|
|
209
|
+
|
|
196
210
|
def initialize_metrics(self, kind_blockes: list[str]) -> None:
|
|
211
|
+
self.cleanup_prometheus_metrics()
|
|
197
212
|
for kind in kind_blockes:
|
|
198
213
|
self.set_metric(MetricType.SUCCESS_NAME, [kind, MetricPhase.RESYNC], 0)
|
|
199
214
|
self.set_metric(MetricType.DURATION_NAME, [kind, MetricPhase.RESYNC], 0)
|
|
@@ -241,7 +256,7 @@ class Metrics:
|
|
|
241
256
|
return APIRouter()
|
|
242
257
|
router = APIRouter()
|
|
243
258
|
|
|
244
|
-
@router.get("/")
|
|
259
|
+
@router.get("/", response_class=PlainTextResponse)
|
|
245
260
|
async def prom_metrics() -> str:
|
|
246
261
|
return self.generate_latest()
|
|
247
262
|
|
|
@@ -7,7 +7,7 @@ class FileIPC:
|
|
|
7
7
|
def __init__(self, process_id: str, name: str, default_return: Any = None):
|
|
8
8
|
self.process_id = process_id
|
|
9
9
|
self.name = name
|
|
10
|
-
self.dir_path = f"/tmp/p_{self.process_id}"
|
|
10
|
+
self.dir_path = f"/tmp/ocean/processes/p_{self.process_id}"
|
|
11
11
|
self.file_path = f"{self.dir_path}/{self.name}.pkl"
|
|
12
12
|
self.default_return = default_return
|
|
13
13
|
os.makedirs(self.dir_path, exist_ok=True)
|
|
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.23.1/port_ocean/tests/helpers → port_ocean-0.23.3/port_ocean/cache}/__init__.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
|
{port_ocean-0.23.1 → port_ocean-0.23.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
|
{port_ocean-0.23.1/port_ocean/helpers → port_ocean-0.23.3/port_ocean/clients/port}/__init__.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
|
{port_ocean-0.23.1/port_ocean/core/integrations → port_ocean-0.23.3/port_ocean/config}/__init__.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
|
{port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/entities_state_applier/__init__.py
RENAMED
|
File without changes
|
{port_ocean-0.23.1 → port_ocean-0.23.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.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/entity_processor/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/port_app_config/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/resync_state_updater/__init__.py
RENAMED
|
File without changes
|
{port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/resync_state_updater/updater.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/webhook/processor_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
{port_ocean-0.23.1/port_ocean/config → port_ocean-0.23.3/port_ocean/core/integrations}/__init__.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
|
{port_ocean-0.23.1/port_ocean/clients/port → port_ocean-0.23.3/port_ocean/helpers}/__init__.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
|
{port_ocean-0.23.1 → port_ocean-0.23.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
|
{port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/handlers/mixins/test_live_events.py
RENAMED
|
File without changes
|
{port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/handlers/mixins/test_sync_raw.py
RENAMED
|
File without changes
|
{port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/handlers/port_app_config/test_api.py
RENAMED
|
File without changes
|
{port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/handlers/port_app_config/test_base.py
RENAMED
|
File without changes
|
{port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/handlers/queue/test_local_queue.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/handlers/webhook/test_webhook_event.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/utils/test_resolve_entities_diff.py
RENAMED
|
File without changes
|
{port_ocean-0.23.1/port_ocean/cache → port_ocean-0.23.3/port_ocean/tests/helpers}/__init__.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
|