port-ocean 0.18.8__py3-none-any.whl → 0.18.9__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- port_ocean/cli/commands/defaults/clean.py +15 -2
- port_ocean/clients/port/mixins/integrations.py +15 -0
- port_ocean/core/defaults/clean.py +18 -3
- port_ocean/core/handlers/entities_state_applier/port/applier.py +1 -1
- {port_ocean-0.18.8.dist-info → port_ocean-0.18.9.dist-info}/METADATA +1 -1
- {port_ocean-0.18.8.dist-info → port_ocean-0.18.9.dist-info}/RECORD +9 -9
- {port_ocean-0.18.8.dist-info → port_ocean-0.18.9.dist-info}/LICENSE.md +0 -0
- {port_ocean-0.18.8.dist-info → port_ocean-0.18.9.dist-info}/WHEEL +0 -0
- {port_ocean-0.18.8.dist-info → port_ocean-0.18.9.dist-info}/entry_points.txt +0 -0
@@ -8,6 +8,7 @@ from port_ocean.cli.commands.main import print_logo, console
|
|
8
8
|
from port_ocean.core.defaults import clean_defaults
|
9
9
|
from port_ocean.ocean import Ocean
|
10
10
|
from port_ocean.utils.misc import load_module
|
11
|
+
from port_ocean.utils.signal import init_signal_handler
|
11
12
|
from .group import defaults
|
12
13
|
|
13
14
|
|
@@ -27,12 +28,20 @@ from .group import defaults
|
|
27
28
|
is_flag=True,
|
28
29
|
help="Wait for the migration to finish. when force is set to true.",
|
29
30
|
)
|
30
|
-
|
31
|
+
@click.option(
|
32
|
+
"-d",
|
33
|
+
"--destroy",
|
34
|
+
"destroy",
|
35
|
+
is_flag=True,
|
36
|
+
help="Destroy the integration after cleaning the defaults.",
|
37
|
+
)
|
38
|
+
def clean(path: str, force: bool, wait: bool, destroy: bool) -> None:
|
31
39
|
"""
|
32
40
|
Clean defaults of the integration from the .port/resources PATH.
|
33
41
|
|
34
42
|
PATH: Path to the integration. If not provided, the current directory will be used.
|
35
43
|
"""
|
44
|
+
init_signal_handler()
|
36
45
|
print_logo()
|
37
46
|
|
38
47
|
console.print("Cleaning blueprints and configurations! ⚓️")
|
@@ -52,5 +61,9 @@ def clean(path: str, force: bool, wait: bool) -> None:
|
|
52
61
|
)
|
53
62
|
|
54
63
|
clean_defaults(
|
55
|
-
app.integration.AppConfigHandlerClass.CONFIG_CLASS,
|
64
|
+
app.integration.AppConfigHandlerClass.CONFIG_CLASS,
|
65
|
+
app.config,
|
66
|
+
force,
|
67
|
+
wait,
|
68
|
+
destroy,
|
56
69
|
)
|
@@ -178,3 +178,18 @@ class IntegrationClientMixin:
|
|
178
178
|
)
|
179
179
|
handle_status_code(response, should_log=should_log)
|
180
180
|
logger.debug(f"Examples for kind {kind} successfully ingested")
|
181
|
+
|
182
|
+
async def _delete_current_integration(self) -> httpx.Response:
|
183
|
+
logger.info(f"Deleting integration with id: {self.integration_identifier}")
|
184
|
+
response = await self.client.delete(
|
185
|
+
f"{self.auth.api_url}/integration/{self.integration_identifier}",
|
186
|
+
headers=await self.auth.headers(),
|
187
|
+
)
|
188
|
+
return response
|
189
|
+
|
190
|
+
async def delete_current_integration(
|
191
|
+
self, should_raise: bool = True, should_log: bool = True
|
192
|
+
) -> dict[str, Any]:
|
193
|
+
response = await self._delete_current_integration()
|
194
|
+
handle_status_code(response, should_raise, should_log)
|
195
|
+
return response.json()
|
@@ -18,10 +18,11 @@ def clean_defaults(
|
|
18
18
|
integration_config: IntegrationConfiguration,
|
19
19
|
force: bool,
|
20
20
|
wait: bool,
|
21
|
+
destroy: bool,
|
21
22
|
) -> None:
|
22
23
|
try:
|
23
24
|
asyncio.new_event_loop().run_until_complete(
|
24
|
-
_clean_defaults(config_class, integration_config, force, wait)
|
25
|
+
_clean_defaults(config_class, integration_config, force, wait, destroy)
|
25
26
|
)
|
26
27
|
|
27
28
|
except Exception as e:
|
@@ -33,6 +34,7 @@ async def _clean_defaults(
|
|
33
34
|
integration_config: IntegrationConfiguration,
|
34
35
|
force: bool,
|
35
36
|
wait: bool,
|
37
|
+
destroy: bool,
|
36
38
|
) -> None:
|
37
39
|
port_client = ocean.port_client
|
38
40
|
is_exists = await is_integration_exists(port_client)
|
@@ -54,9 +56,9 @@ async def _clean_defaults(
|
|
54
56
|
)
|
55
57
|
)
|
56
58
|
|
57
|
-
if not force:
|
59
|
+
if not force and not destroy:
|
58
60
|
logger.info(
|
59
|
-
"Finished deleting blueprints
|
61
|
+
"Finished deleting blueprints! ⚓️",
|
60
62
|
)
|
61
63
|
return None
|
62
64
|
|
@@ -73,6 +75,19 @@ async def _clean_defaults(
|
|
73
75
|
for migration_id in migration_ids
|
74
76
|
)
|
75
77
|
)
|
78
|
+
if not destroy:
|
79
|
+
logger.info(
|
80
|
+
"Migrations completed successfully! ⚓️",
|
81
|
+
)
|
82
|
+
return None
|
83
|
+
|
84
|
+
result = await ocean.port_client.delete_current_integration()
|
85
|
+
if result.get("ok"):
|
86
|
+
logger.info(
|
87
|
+
"Blueprints deleted, migrations completed, and integration destroyed successfully! ⚓️",
|
88
|
+
)
|
89
|
+
return None
|
90
|
+
|
76
91
|
except httpx.HTTPStatusError as e:
|
77
92
|
logger.error(f"Failed to delete blueprints: {e.response.text}.")
|
78
93
|
raise e
|
@@ -102,7 +102,7 @@ class HttpEntitiesStateApplier(BaseEntitiesStateApplier):
|
|
102
102
|
await self._safe_delete(diff.deleted, kept_entities, user_agent_type)
|
103
103
|
else:
|
104
104
|
logger.info(
|
105
|
-
f"Skipping deletion of entities with
|
105
|
+
f"Skipping deletion of entities with deletion rate {deletion_rate}",
|
106
106
|
deletion_rate=deletion_rate,
|
107
107
|
deleting_entities=len(diff.deleted),
|
108
108
|
total_entities=len(entities),
|
@@ -12,7 +12,7 @@ port_ocean/cli/__init__.py,sha256=ZjTGS305llhbjC2BH2KkVj34gCASBGwqc5HZEO_0T_Q,32
|
|
12
12
|
port_ocean/cli/cli.py,sha256=RvWTELEn5YFw9aM0vaNqm5YqZZrL50ILaBs27ptiGl0,57
|
13
13
|
port_ocean/cli/commands/__init__.py,sha256=Y9Q6jeYw_ZAZ-mdfE_5DZTdS2KHhieQZoUTggk_AkwM,369
|
14
14
|
port_ocean/cli/commands/defaults/__init___.py,sha256=5OKgakO79bTbplFv1_yWCrw1x_JJqSdRXAHHqKSuEpQ,88
|
15
|
-
port_ocean/cli/commands/defaults/clean.py,sha256=
|
15
|
+
port_ocean/cli/commands/defaults/clean.py,sha256=hmWNqbiYSxUu2F2EoxkKm5UiZK-g02TSeEiO-8eGIpk,1851
|
16
16
|
port_ocean/cli/commands/defaults/dock.py,sha256=pFtHrU_LTvb5Ddrzj09Wxy-jg1Ym10wBYD-0tpDRugE,1104
|
17
17
|
port_ocean/cli/commands/defaults/group.py,sha256=hii_4CYoQ7jSMePbnP4AmruO_RKWCUcoV7dXXBlZafc,115
|
18
18
|
port_ocean/cli/commands/list_integrations.py,sha256=DVVioFruGUE-_v6UUHlcemWNN6RlWwCrf1X4HmAXsf8,1134
|
@@ -50,7 +50,7 @@ port_ocean/clients/port/client.py,sha256=OaNeN3U7Hw0tK4jYE6ESJEPKbTf9nGp2jcJVq00
|
|
50
50
|
port_ocean/clients/port/mixins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
51
51
|
port_ocean/clients/port/mixins/blueprints.py,sha256=POBl4uDocrgJBw4rvCAzwRcD4jk-uBL6pDAuKMTajdg,4633
|
52
52
|
port_ocean/clients/port/mixins/entities.py,sha256=PJzVZTBW_OheFRGPRCZ6yPbVGEAKsMO9CNDNJUI1l48,10770
|
53
|
-
port_ocean/clients/port/mixins/integrations.py,sha256=
|
53
|
+
port_ocean/clients/port/mixins/integrations.py,sha256=R7ZTdU7UKh1IHOqbOJzK76c_JwAyEosRvIWWs4PO_8k,7543
|
54
54
|
port_ocean/clients/port/mixins/migrations.py,sha256=A6896oJF6WbFL2WroyTkMzr12yhVyWqGoq9dtLNSKBY,1457
|
55
55
|
port_ocean/clients/port/mixins/organization.py,sha256=fCo_ZS8UlQXsyIx-odTuWkbnfcYmVnQfIsSyJuPOPjM,1031
|
56
56
|
port_ocean/clients/port/retry_transport.py,sha256=PtIZOAZ6V-ncpVysRUsPOgt8Sf01QLnTKB5YeKBxkJk,1861
|
@@ -68,7 +68,7 @@ port_ocean/context/ocean.py,sha256=-T8Z_xcUNMeobr33TTABiOQjxC4KCVvVrP0IytRfen8,6
|
|
68
68
|
port_ocean/context/resource.py,sha256=yDj63URzQelj8zJPh4BAzTtPhpKr9Gw9DRn7I_0mJ1s,1692
|
69
69
|
port_ocean/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
70
70
|
port_ocean/core/defaults/__init__.py,sha256=8qCZg8n06WAdMu9s_FiRtDYLGPGHbOuS60vapeUoAks,142
|
71
|
-
port_ocean/core/defaults/clean.py,sha256=
|
71
|
+
port_ocean/core/defaults/clean.py,sha256=_rL-NCl6Q_x3lUxDW5ACOM27IYilTCWl6ISUfRleuL0,2891
|
72
72
|
port_ocean/core/defaults/common.py,sha256=zJsj7jvlqIMLGXhdASUlbKS8GIAf-FDKKB0O7jB6nx0,4166
|
73
73
|
port_ocean/core/defaults/initialize.py,sha256=IYgc6XS5ARdcPM4IQrCSi4cdAomHxJVnP_OWOU9f05U,10382
|
74
74
|
port_ocean/core/event_listener/__init__.py,sha256=T3E52MKs79fNEW381p7zU9F2vOMvIiiTYWlqRUqnsg0,1135
|
@@ -84,7 +84,7 @@ port_ocean/core/handlers/base.py,sha256=cTarblazu8yh8xz2FpB-dzDKuXxtoi143XJgPbV_
|
|
84
84
|
port_ocean/core/handlers/entities_state_applier/__init__.py,sha256=kgLZDCeCEzi4r-0nzW9k78haOZNf6PX7mJOUr34A4c8,173
|
85
85
|
port_ocean/core/handlers/entities_state_applier/base.py,sha256=5wHL0icfFAYRPqk8iV_wN49GdJ3aRUtO8tumSxBi4Wo,2268
|
86
86
|
port_ocean/core/handlers/entities_state_applier/port/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
87
|
-
port_ocean/core/handlers/entities_state_applier/port/applier.py,sha256=
|
87
|
+
port_ocean/core/handlers/entities_state_applier/port/applier.py,sha256=F9TxWJWtFOtgslaAB37WCKaGNkr_al0HDXFqNrEMbaU,6271
|
88
88
|
port_ocean/core/handlers/entities_state_applier/port/get_related_entities.py,sha256=1zncwCbE-Gej0xaWKlzZgoXxOBe9bgs_YxlZ8QW3NdI,1751
|
89
89
|
port_ocean/core/handlers/entities_state_applier/port/order_by_entities_dependencies.py,sha256=lyv6xKzhYfd6TioUgR3AVRSJqj7JpAaj1LxxU2xAqeo,1720
|
90
90
|
port_ocean/core/handlers/entity_processor/__init__.py,sha256=FvFCunFg44wNQoqlybem9MthOs7p1Wawac87uSXz9U8,156
|
@@ -175,8 +175,8 @@ port_ocean/utils/repeat.py,sha256=0EFWM9d8lLXAhZmAyczY20LAnijw6UbIECf5lpGbOas,32
|
|
175
175
|
port_ocean/utils/signal.py,sha256=mMVq-1Ab5YpNiqN4PkiyTGlV_G0wkUDMMjTZp5z3pb0,1514
|
176
176
|
port_ocean/utils/time.py,sha256=pufAOH5ZQI7gXvOvJoQXZXZJV-Dqktoj9Qp9eiRwmJ4,1939
|
177
177
|
port_ocean/version.py,sha256=UsuJdvdQlazzKGD3Hd5-U7N69STh8Dq9ggJzQFnu9fU,177
|
178
|
-
port_ocean-0.18.
|
179
|
-
port_ocean-0.18.
|
180
|
-
port_ocean-0.18.
|
181
|
-
port_ocean-0.18.
|
182
|
-
port_ocean-0.18.
|
178
|
+
port_ocean-0.18.9.dist-info/LICENSE.md,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
|
179
|
+
port_ocean-0.18.9.dist-info/METADATA,sha256=wNsXnfPpKx_dLVdrt9CSVl8oLrrHNM4-T0y6j27iHM4,6669
|
180
|
+
port_ocean-0.18.9.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
181
|
+
port_ocean-0.18.9.dist-info/entry_points.txt,sha256=F_DNUmGZU2Kme-8NsWM5LLE8piGMafYZygRYhOVtcjA,54
|
182
|
+
port_ocean-0.18.9.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|