Title: Sync Model it already exists (duplicate model sync owing to multiple parent dependencies) · Issue #275 · networktocode/diffsync · GitHub
Open Graph Title: Sync Model it already exists (duplicate model sync owing to multiple parent dependencies) · Issue #275 · networktocode/diffsync
X Title: Sync Model it already exists (duplicate model sync owing to multiple parent dependencies) · Issue #275 · networktocode/diffsync
Description: Environment DiffSync version: 2.0.0 Python version 3.12 Observed Behavior When launch sync_from function for a dataset with multiple model dependencies, in this example Regions parent of Sites. sync_from by default try to create Sites (c...
Open Graph Description: Environment DiffSync version: 2.0.0 Python version 3.12 Observed Behavior When launch sync_from function for a dataset with multiple model dependencies, in this example Regions parent of Sites. syn...
X Description: Environment DiffSync version: 2.0.0 Python version 3.12 Observed Behavior When launch sync_from function for a dataset with multiple model dependencies, in this example Regions parent of Sites. syn...
Opengraph URL: https://github.com/networktocode/diffsync/issues/275
X: @github
Domain: patch-diff.githubusercontent.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Sync Model it already exists (duplicate model sync owing to multiple parent dependencies)","articleBody":"### Environment\r\n* DiffSync version: 2.0.0\r\n* Python version 3.12\r\n\r\n\u003c!-- What happened instead? --\u003e\r\n### Observed Behavior\r\n\r\nWhen launch `sync_from` function for a dataset with multiple model dependencies, in this example `Regions` parent of `Sites`. `sync_from` by default try to create Sites (child object) several times for each dependencies as you can see below.\r\n\r\n```bash\r\n2024-07-05 16:59:05,401 - DEBUG - 2024-07-05 14:59.05 [debug ] Diff calculation between these two datasets will involve 17 models [diffsync.helpers] dst=\u003cLocal \"local\"\u003e flags=\u003cDiffSyncFlags.CONTINUE_ON_FAILURE|SKIP_UNMATCHED_DST: 5\u003e src=\u003cNetboxAdapter \"netbox\"\u003e\r\n2024-07-05 16:59:05,401 - INFO - 2024-07-05 14:59.05 [info ] Beginning diff calculation [diffsync.helpers] dst=\u003cLocal \"local\"\u003e flags=\u003cDiffSyncFlags.CONTINUE_ON_FAILURE|SKIP_UNMATCHED_DST: 5\u003e src=\u003cNetboxAdapter \"netbox\"\u003e\r\n2024-07-05 16:59:05,402 - DEBUG - 2024-07-05 14:59.05 [debug ] Skipping due to SKIP_UNMATCHED_DST flag on source adapter [diffsync.helpers] dst=\u003cLocal \"local\"\u003e flags=\u003cDiffSyncFlags.CONTINUE_ON_FAILURE|SKIP_UNMATCHED_DST: 5\u003e model=region src=\u003cNetboxAdapter \"netbox\"\u003e unique_id=Seclin\r\n2024-07-05 16:59:05,402 - DEBUG - 2024-07-05 14:59.05 [debug ] Skipping due to SKIP_UNMATCHED_DST flag on source adapter [diffsync.helpers] dst=\u003cLocal \"local\"\u003e flags=\u003cDiffSyncFlags.CONTINUE_ON_FAILURE|SKIP_UNMATCHED_DST: 5\u003e model=region src=\u003cNetboxAdapter \"netbox\"\u003e unique_id=Vendome\r\n2024-07-05 16:59:05,402 - DEBUG - 2024-07-05 14:59.05 [debug ] Skipping due to SKIP_UNMATCHED_DST flag on source adapter [diffsync.helpers] dst=\u003cLocal \"local\"\u003e flags=\u003cDiffSyncFlags.CONTINUE_ON_FAILURE|SKIP_UNMATCHED_DST: 5\u003e model=region src=\u003cNetboxAdapter \"netbox\"\u003e unique_id=Rennes\r\n2024-07-05 16:59:05,404 - DEBUG - 2024-07-05 14:59.05 [debug ] Skipping due to SKIP_UNMATCHED_DST flag on source adapter [diffsync.helpers] dst=\u003cLocal \"local\"\u003e flags=\u003cDiffSyncFlags.CONTINUE_ON_FAILURE|SKIP_UNMATCHED_DST: 5\u003e model=site src=\u003cNetboxAdapter \"netbox\"\u003e unique_id=SCATEST\r\n2024-07-05 16:59:05,404 - DEBUG - 2024-07-05 14:59.05 [debug ] Skipping due to SKIP_UNMATCHED_DST flag on source adapter [diffsync.helpers] dst=\u003cLocal \"local\"\u003e flags=\u003cDiffSyncFlags.CONTINUE_ON_FAILURE|SKIP_UNMATCHED_DST: 5\u003e model=site src=\u003cNetboxAdapter \"netbox\"\u003e unique_id=SCLTEST\r\n2024-07-05 16:59:05,405 - DEBUG - 2024-07-05 14:59.05 [debug ] Skipping due to SKIP_UNMATCHED_DST flag on source adapter [diffsync.helpers] dst=\u003cLocal \"local\"\u003e flags=\u003cDiffSyncFlags.CONTINUE_ON_FAILURE|SKIP_UNMATCHED_DST: 5\u003e model=region src=\u003cNetboxAdapter \"netbox\"\u003e unique_id=Vendome\r\n2024-07-05 16:59:05,405 - DEBUG - 2024-07-05 14:59.05 [debug ] Skipping due to SKIP_UNMATCHED_DST flag on source adapter [diffsync.helpers] dst=\u003cLocal \"local\"\u003e flags=\u003cDiffSyncFlags.CONTINUE_ON_FAILURE|SKIP_UNMATCHED_DST: 5\u003e model=region src=\u003cNetboxAdapter \"netbox\"\u003e unique_id=Belgium\r\n2024-07-05 16:59:05,405 - DEBUG - 2024-07-05 14:59.05 [debug ] Skipping due to SKIP_UNMATCHED_DST flag on source adapter [diffsync.helpers] dst=\u003cLocal \"local\"\u003e flags=\u003cDiffSyncFlags.CONTINUE_ON_FAILURE|SKIP_UNMATCHED_DST: 5\u003e model=region src=\u003cNetboxAdapter \"netbox\"\u003e unique_id=brussels\r\n2024-07-05 16:59:05,406 - DEBUG - 2024-07-05 14:59.05 [debug ] Skipping due to SKIP_UNMATCHED_DST flag on source adapter [diffsync.helpers] dst=\u003cLocal \"local\"\u003e flags=\u003cDiffSyncFlags.CONTINUE_ON_FAILURE|SKIP_UNMATCHED_DST: 5\u003e model=site src=\u003cNetboxAdapter \"netbox\"\u003e unique_id=SCATEST\r\n2024-07-05 16:59:05,406 - DEBUG - 2024-07-05 14:59.05 [debug ] Skipping due to SKIP_UNMATCHED_DST flag on source adapter [diffsync.helpers] dst=\u003cLocal \"local\"\u003e flags=\u003cDiffSyncFlags.CONTINUE_ON_FAILURE|SKIP_UNMATCHED_DST: 5\u003e model=site src=\u003cNetboxAdapter \"netbox\"\u003e unique_id=SCLTEST\r\n2024-07-05 16:59:05,407 - DEBUG - 2024-07-05 14:59.05 [debug ] Skipping due to SKIP_UNMATCHED_DST flag on source adapter [diffsync.helpers] dst=\u003cLocal \"local\"\u003e flags=\u003cDiffSyncFlags.CONTINUE_ON_FAILURE|SKIP_UNMATCHED_DST: 5\u003e model=site src=\u003cNetboxAdapter \"netbox\"\u003e unique_id=VDMTEST\r\n2024-07-05 16:59:05,407 - INFO - 2024-07-05 14:59.05 [info ] Diff calculation complete [diffsync.helpers] dst=\u003cLocal \"local\"\u003e flags=\u003cDiffSyncFlags.CONTINUE_ON_FAILURE|SKIP_UNMATCHED_DST: 5\u003e src=\u003cNetboxAdapter \"netbox\"\u003e\r\n2024-07-05 16:59:05,408 - INFO - 2024-07-05 14:59.05 [info ] Beginning sync [diffsync.helpers] dst=\u003cLocal \"local\"\u003e flags=\u003cDiffSyncFlags.CONTINUE_ON_FAILURE|SKIP_UNMATCHED_DST: 5\u003e src=\u003cNetboxAdapter \"netbox\"\u003e\r\n2024-07-05 16:59:05,408 - DEBUG - 2024-07-05 14:59.05 [debug ] Attempting model update [diffsync.helpers] action=update diffs={'-': {'slug': 'courbevoie'}, '+': {'slug': 'courbevois'}} dst=\u003cLocal \"local\"\u003e flags=\u003cDiffSyncFlags.CONTINUE_ON_FAILURE|SKIP_UNMATCHED_DST: 5\u003e model=site src=\u003cNetboxAdapter \"netbox\"\u003e unique_id=Courbevoie\r\n2024-07-05 16:59:05,409 - INFO - 2024-07-05 14:59.05 [info ] Updated successfully [diffsync.helpers] action=update diffs={'-': {'slug': 'courbevoie'}, '+': {'slug': 'courbevois'}} dst=\u003cLocal \"local\"\u003e flags=\u003cDiffSyncFlags.CONTINUE_ON_FAILURE|SKIP_UNMATCHED_DST: 5\u003e model=site src=\u003cNetboxAdapter \"netbox\"\u003e status=success unique_id=Courbevoie\r\n2024-07-05 16:59:05,409 - DEBUG - 2024-07-05 14:59.05 [debug ] Attempting model update [diffsync.helpers] action=update diffs={'-': {'parent': 'France'}, '+': {'parent': 'france'}} dst=\u003cLocal \"local\"\u003e flags=\u003cDiffSyncFlags.CONTINUE_ON_FAILURE|SKIP_UNMATCHED_DST: 5\u003e model=region src=\u003cNetboxAdapter \"netbox\"\u003e unique_id=Rennes\r\n2024-07-05 16:59:05,409 - INFO - 2024-07-05 14:59.05 [info ] Updated successfully [diffsync.helpers] action=update diffs={'-': {'parent': 'France'}, '+': {'parent': 'france'}} dst=\u003cLocal \"local\"\u003e flags=\u003cDiffSyncFlags.CONTINUE_ON_FAILURE|SKIP_UNMATCHED_DST: 5\u003e model=region src=\u003cNetboxAdapter \"netbox\"\u003e status=success unique_id=Rennes\r\n2024-07-05 16:59:05,409 - DEBUG - 2024-07-05 14:59.05 [debug ] Attempting model create [diffsync.helpers] action=create diffs={'+': {'slug': 'bob', 'status': 'Staging', 'region': 'Rennes'}} dst=\u003cLocal \"local\"\u003e flags=\u003cDiffSyncFlags.CONTINUE_ON_FAILURE|SKIP_UNMATCHED_DST: 5\u003e model=site src=\u003cNetboxAdapter \"netbox\"\u003e unique_id=BOB\r\n2024-07-05 16:59:05,427 - INFO - Created Site in YML file: {'name': 'BOB', 'slug': 'bob', 'status': 'Staging', 'region': 'Rennes'}\r\n2024-07-05 16:59:05,428 - INFO - 2024-07-05 14:59.05 [info ] [diffsync.helpers] action=create diffs={'+': {'slug': 'bob', 'status': 'Staging', 'region': 'Rennes'}} dst=\u003cLocal \"local\"\u003e flags=\u003cDiffSyncFlags.CONTINUE_ON_FAILURE|SKIP_UNMATCHED_DST: 5\u003e model=site src=\u003cNetboxAdapter \"netbox\"\u003e status=success unique_id=BOB\r\n2024-07-05 16:59:05,429 - DEBUG - 2024-07-05 14:59.05 [debug ] Attempting model update [diffsync.helpers] action=update diffs={'-': {'parent': 'France'}, '+': {'parent': 'france'}} dst=\u003cLocal \"local\"\u003e flags=\u003cDiffSyncFlags.CONTINUE_ON_FAILURE|SKIP_UNMATCHED_DST: 5\u003e model=region src=\u003cNetboxAdapter \"netbox\"\u003e unique_id=Seclin\r\n2024-07-05 16:59:05,429 - INFO - 2024-07-05 14:59.05 [info ] Updated successfully [diffsync.helpers] action=update diffs={'-': {'parent': 'France'}, '+': {'parent': 'france'}} dst=\u003cLocal \"local\"\u003e flags=\u003cDiffSyncFlags.CONTINUE_ON_FAILURE|SKIP_UNMATCHED_DST: 5\u003e model=region src=\u003cNetboxAdapter \"netbox\"\u003e status=success unique_id=Seclin\r\n2024-07-05 16:59:05,429 - DEBUG - 2024-07-05 14:59.05 [debug ] Attempting model create [diffsync.helpers] action=create diffs={'+': {'slug': 'bob', 'status': 'Staging', 'region': 'Rennes'}} dst=\u003cLocal \"local\"\u003e flags=\u003cDiffSyncFlags.CONTINUE_ON_FAILURE|SKIP_UNMATCHED_DST: 5\u003e model=site src=\u003cNetboxAdapter \"netbox\"\u003e unique_id=BOB\r\n2024-07-05 16:59:05,430 - ERROR - 2024-07-05 14:59.05 [error ] Failed to create site {'name': 'BOB'} - it already exists! [diffsync.helpers] action=create diffs={'+': {'slug': 'bob', 'status': 'Staging', 'region': 'Rennes'}} dst=\u003cLocal \"local\"\u003e flags=\u003cDiffSyncFlags.CONTINUE_ON_FAILURE|SKIP_UNMATCHED_DST: 5\u003e model=site src=\u003cNetboxAdapter \"netbox\"\u003e status=error unique_id=BOB\r\n2024-07-05 16:59:05,430 - WARNING - 2024-07-05 14:59.05 [warning ] No object resulted from sync, will not process child objects. [diffsync.helpers] action=create diffs={'+': {'slug': 'bob', 'status': 'Staging', 'region': 'Rennes'}} dst=\u003cLocal \"local\"\u003e flags=\u003cDiffSyncFlags.CONTINUE_ON_FAILURE|SKIP_UNMATCHED_DST: 5\u003e model=site src=\u003cNetboxAdapter \"netbox\"\u003e unique_id=BOB\r\n2024-07-05 16:59:05,430 - DEBUG - 2024-07-05 14:59.05 [debug ] Attempting model update [diffsync.helpers] action=update diffs={'-': {'slug': 'courbevoie'}, '+': {'slug': 'courbevois'}} dst=\u003cLocal \"local\"\u003e flags=\u003cDiffSyncFlags.CONTINUE_ON_FAILURE|SKIP_UNMATCHED_DST: 5\u003e model=site src=\u003cNetboxAdapter \"netbox\"\u003e unique_id=Courbevoie\r\n2024-07-05 16:59:05,430 - INFO - 2024-07-05 14:59.05 [info ] Updated successfully [diffsync.helpers] action=update diffs={'-': {'slug': 'courbevoie'}, '+': {'slug': 'courbevois'}} dst=\u003cLocal \"local\"\u003e flags=\u003cDiffSyncFlags.CONTINUE_ON_FAILURE|SKIP_UNMATCHED_DST: 5\u003e model=site src=\u003cNetboxAdapter \"netbox\"\u003e status=success unique_id=Courbevoie\r\n2024-07-05 16:59:05,430 - INFO - 2024-07-05 14:59.05 [info ] Sync complete [diffsync.helpers] dst=\u003cLocal \"local\"\u003e flags=\u003cDiffSyncFlags.CONTINUE_ON_FAILURE|SKIP_UNMATCHED_DST: 5\u003e src=\u003cNetboxAdapter \"netbox\"\u003e\r\n```\r\nIt try here to create BOB site and it created it bind to Rennes regions but after finish child sync of Rennes it try a second time to create BOB it self because in site list, and this raise a duplication error.\r\n\r\n\u003c!-- What did you expect to happen? --\u003e\r\n### Expected Behavior\r\n\r\nIt should create once any objects even if it try to sync it in the child tree process.\r\n\r\n\u003c!--\r\n Describe in detail the exact steps that someone else can take to reproduce\r\n this bug using the current release.\r\n--\u003e\r\n\r\n","author":{"url":"https://github.com/jo-bzh","@type":"Person","name":"jo-bzh"},"datePublished":"2024-07-05T15:12:57.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":0},"url":"https://github.com/275/diffsync/issues/275"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:7ff4a118-cc3c-1578-6f6c-60f87daf23ea |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | C0D8:FFF42:2606BF7:31A4864:6990C393 |
| html-safe-nonce | a61ea62f18374f8c1fbff7fda4f49f2d466ddd93078fd4e2046e99e6db4c372f |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDMEQ4OkZGRjQyOjI2MDZCRjc6MzFBNDg2NDo2OTkwQzM5MyIsInZpc2l0b3JfaWQiOiIyNTA5Nzg3MDU0ODM5MjE5MDkxIiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | 61e100799f81080a0628861275bb0e5af00999e232eb5abdf969b1274465780c |
| hovercard-subject-tag | issue:2392785338 |
| github-keyboard-shortcuts | repository,issues,network-graph,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/networktocode/diffsync/275/issue_layout |
| twitter:image | https://opengraph.githubassets.com/9c9d5d8b29ce8385b9956cadb25374c98ef22eb6a7e9d26509716b90ecb4fff8/networktocode/diffsync/issues/275 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/9c9d5d8b29ce8385b9956cadb25374c98ef22eb6a7e9d26509716b90ecb4fff8/networktocode/diffsync/issues/275 |
| og:image:alt | Environment DiffSync version: 2.0.0 Python version 3.12 Observed Behavior When launch sync_from function for a dataset with multiple model dependencies, in this example Regions parent of Sites. syn... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | jo-bzh |
| hostname | github.com |
| expected-hostname | github.com |
| None | 42c603b9d642c4a9065a51770f75e5e27132fef0e858607f5c9cb7e422831a7b |
| turbo-cache-control | no-preview |
| go-import | github.com/networktocode/diffsync git https://github.com/networktocode/diffsync.git |
| octolytics-dimension-user_id | 13106404 |
| octolytics-dimension-user_login | networktocode |
| octolytics-dimension-repository_id | 292296974 |
| octolytics-dimension-repository_nwo | networktocode/diffsync |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 292296974 |
| octolytics-dimension-repository_network_root_nwo | networktocode/diffsync |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 848bc6032dcc93a9a7301dcc3f379a72ba13b96e |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width