-
Notifications
You must be signed in to change notification settings - Fork 61
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Core] ocean core next resync #835
Merged
shalev007
merged 66 commits into
main
from
PORT-9302-ocean-core-send-data-to-integration-service
Aug 21, 2024
Merged
Changes from 59 commits
Commits
Show all changes
66 commits
Select commit
Hold shift + click to select a range
f1c9d90
feat: add update port-api method
446dbb0
feat: update port-api when sync is done WIP
329245c
fix: remove dev file
d73a3ec
feat: revert execute_resync_all and calculate next_resync
076cbae
feat: move convert function to utils
383d99b
fix: use the once event listener
b7b9c4a
fix: remove update from the initialization itself
79fde73
feat: add enum
3f82fc2
fix: use enum value
d208f84
fix: don't kill integration on update state error
b33fbfb
refactor: move calculate_next_resync to misc
521c4cb
fix: no need for await for a regular function
44b2c68
refactor: remove unnecessary variable
253440a
Revert "fix: remove dev file"
a3b1961
refactor: remove unused imports
89d5e27
feat: add comment
b756c67
feat: wrap error bound request
47312d4
feat: add update state context
a98e22f
fix: timestamp issues
048b687
fix: remove unused function
dda5eef
refactor: change log
0b1cc58
fix: remove redundant type casting
1bb8ed1
refactor: replace type with enum
d38271c
refactor: update function name
14c4da0
feat: add logs
bde30d9
fix: enums bug
becf0b1
fix: override updatedAt eternal resync issue
058fd22
feat: add saas support
b939443
fix: remove test comments
baba43e
fix: datetime comparing issues in ocean saas
6abb7b7
fix: conflicts
bab26f3
fix: explain comment
98978ff
feat: use statusInfo updated_at on ocean saas next resync prediction
7aad044
feat: remove unused variable
996be85
fix: after once resync bug
b0b44d4
feat: delete unused functions
1325efa
feat: remove unnecessary GET integration call
930ea51
feat: rename variable
8f9a22e
feat: remove redundant spacing in imports
4316fde
fix: PR issues
c5d20d3
feat: use resync function from BaseEventListener
e6b3626
fix: key error
d9a21c8
fix: PR issues
4628fe4
fix: lint issue
425b9ec
feat: update state endpoint
c272e5c
fix: datetime objects to utc
b4d6fc5
feat: add type to state object
8f66686
feat: update state parameters
53a40c3
Merge branch 'main' into PORT-9302-ocean-core-send-data-to-integratio…
5595405
feat: do silent updates
f614823
feat: add status as constant
e442985
feat: add explanation comment
a8e022c
feat: add better logs
6d1e81f
feat: add should_raise and should_log
35c5688
refactor: rename variable
0ef8b52
feat: change default update state behavior
23d4ee9
feat: bump version
975f226
Merge branch 'main' into PORT-9302-ocean-core-send-data-to-integratio…
adb7967
feat: change changelog
661bea8
Merge branch 'main' into PORT-9302-ocean-core-send-data-to-integratio…
7b229fd
fix: scheduled resync blocked the main thread
0a50bff
Merge branch 'main' into PORT-9302-ocean-core-send-data-to-integratio…
Tankilevitch 36774ea
refactor: move all update state functionality to a new class
e793681
feat: update resync-state new endpoint
19f93df
fix: lint checks
21848be
Merge branch 'main' into PORT-9302-ocean-core-send-data-to-integratio…
shalev007 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -13,6 +13,7 @@ | |||||
get_internal_http_client, | ||||||
) | ||||||
from port_ocean.exceptions.clients import KafkaCredentialsNotFound | ||||||
from typing import Any | ||||||
|
||||||
|
||||||
class PortClient( | ||||||
|
@@ -75,3 +76,19 @@ async def get_org_id(self) -> str: | |||||
handle_status_code(response) | ||||||
|
||||||
return response.json()["organization"]["id"] | ||||||
|
||||||
async def update_integration_state( | ||||||
self, state: dict[str, Any], should_raise: bool = True, should_log: bool = True | ||||||
) -> dict[str, Any]: | ||||||
if should_log: | ||||||
logger.debug(f"Updating integration state with: {state}") | ||||||
response = await self.client.patch( | ||||||
f"{self.api_url}/integration/{self.integration_identifier}/state", | ||||||
headers=await self.auth.headers(), | ||||||
json=state, | ||||||
) | ||||||
handle_status_code(response, should_raise, should_log) | ||||||
if response.is_success and should_log: | ||||||
logger.info("Integration state updated successfully") | ||||||
|
||||||
return response.json().get("integration", {}) | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -5,6 +5,8 @@ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
from port_ocean.config.base import BaseOceanModel | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
from port_ocean.utils.signal import signal_handler | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
from port_ocean.context.ocean import ocean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
from port_ocean.utils.misc import IntegrationStateStatus | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
class EventListenerEvents(TypedDict): | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -36,6 +38,39 @@ def _stop(self) -> None: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
""" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
pass | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
async def _before_resync(self) -> None: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
""" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Can be used for event listeners that need to perform some action before resync. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
""" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
await ocean.app.update_state_before_scheduled_sync() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
async def _after_resync(self) -> None: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
""" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Can be used for event listeners that need to perform some action after resync. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
""" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
await ocean.app.update_state_after_scheduled_sync() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
async def _on_resync_failure(self, e: Exception) -> None: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
""" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Can be used for event listeners that need to handle resync failures. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
""" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
await ocean.app.update_state_after_scheduled_sync(IntegrationStateStatus.Failed) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
async def _resync( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
self, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
resync_args: dict[Any, Any], | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
) -> None: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
""" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Triggers the "on_resync" event. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
""" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
await self._before_resync() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
try: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
await self.events["on_resync"](resync_args) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
await self._after_resync() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
except Exception as e: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
await self._on_resync_failure(e) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
raise e | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. can we instead use a context manager syntax?
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
class EventListenerSettings(BaseOceanModel, extra=Extra.allow): | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
type: str | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.