ipfabric_netbox 4.2.1__py3-none-any.whl → 4.2.1b1__py3-none-any.whl

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 ipfabric_netbox might be problematic. Click here for more details.

@@ -0,0 +1,317 @@
1
+ from datetime import datetime
2
+ from typing import Annotated
3
+
4
+ import strawberry
5
+ import strawberry_django
6
+ from core.graphql.filter_mixins import BaseFilterMixin
7
+ from core.graphql.filters import ContentTypeFilter
8
+ from core.models import Job
9
+ from netbox.graphql.filter_lookups import IntegerLookup
10
+ from netbox.graphql.filter_lookups import JSONFilter
11
+ from netbox.graphql.filter_lookups import StringArrayLookup
12
+ from netbox.graphql.filter_mixins import ChangeLogFilterMixin
13
+ from netbox.graphql.filter_mixins import NetBoxModelFilterMixin
14
+ from netbox.graphql.filter_mixins import PrimaryModelFilterMixin
15
+ from netbox.graphql.filter_mixins import TagsFilterMixin
16
+ from netbox_branching.models import Branch
17
+ from strawberry.scalars import ID
18
+ from strawberry_django import DatetimeFilterLookup
19
+ from strawberry_django import FilterLookup
20
+ from users.graphql.filters import UserFilter
21
+
22
+ from ipfabric_netbox import models
23
+ from ipfabric_netbox.graphql.enums import BranchStatusEnum
24
+ from ipfabric_netbox.graphql.enums import DataSourceStatusEnum
25
+ from ipfabric_netbox.graphql.enums import IPFabricRawDataTypeEnum
26
+ from ipfabric_netbox.graphql.enums import IPFabricSnapshotStatusModelEnum
27
+ from ipfabric_netbox.graphql.enums import IPFabricSourceTypeEnum
28
+ from ipfabric_netbox.graphql.enums import IPFabricTransformMapSourceModelEnum
29
+ from ipfabric_netbox.graphql.enums import JobStatusEnum
30
+
31
+ __all__ = (
32
+ "IPFabricTransformMapGroupFilter",
33
+ "IPFabricTransformMapFilter",
34
+ "IPFabricTransformFieldFilter",
35
+ "IPFabricRelationshipFieldFilter",
36
+ "IPFabricSourceFilter",
37
+ "IPFabricSnapshotFilter",
38
+ "IPFabricSyncFilter",
39
+ "IPFabricIngestionFilter",
40
+ "IPFabricIngestionIssueFilter",
41
+ "IPFabricDataFilter",
42
+ "BranchFilter",
43
+ "JobFilter",
44
+ )
45
+
46
+
47
+ @strawberry_django.filter(models.IPFabricTransformMapGroup, lookups=True)
48
+ class IPFabricTransformMapGroupFilter(NetBoxModelFilterMixin):
49
+ id: ID | None = strawberry_django.filter_field()
50
+ name: FilterLookup[str] | None = strawberry_django.filter_field()
51
+ description: FilterLookup[str] | None = strawberry_django.filter_field()
52
+
53
+
54
+ @strawberry_django.filter(models.IPFabricTransformMap, lookups=True)
55
+ class IPFabricTransformMapFilter(NetBoxModelFilterMixin):
56
+ id: ID | None = strawberry_django.filter_field()
57
+ name: FilterLookup[str] | None = strawberry_django.filter_field()
58
+ source_model: (
59
+ Annotated[
60
+ "IPFabricTransformMapSourceModelEnum",
61
+ strawberry.lazy("ipfabric_netbox.graphql.enums"),
62
+ ]
63
+ | None
64
+ ) = strawberry_django.filter_field()
65
+ target_model: (
66
+ Annotated["ContentTypeFilter", strawberry.lazy("core.graphql.filters")] | None
67
+ ) = strawberry_django.filter_field()
68
+ group: (
69
+ Annotated[
70
+ "IPFabricTransformMapGroupFilter",
71
+ strawberry.lazy("ipfabric_netbox.graphql.filters"),
72
+ ]
73
+ | None
74
+ ) = strawberry_django.filter_field()
75
+
76
+
77
+ @strawberry_django.filter(models.IPFabricTransformField, lookups=True)
78
+ class IPFabricTransformFieldFilter(BaseFilterMixin):
79
+ id: ID | None = strawberry_django.filter_field()
80
+ transform_map: (
81
+ Annotated[
82
+ "IPFabricTransformMapFilter",
83
+ strawberry.lazy("ipfabric_netbox.graphql.filters"),
84
+ ]
85
+ | None
86
+ ) = strawberry_django.filter_field()
87
+ source_field: FilterLookup[str] | None = strawberry_django.filter_field()
88
+ target_field: FilterLookup[str] | None = strawberry_django.filter_field()
89
+ coalesce: (
90
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
91
+ | None
92
+ ) = strawberry_django.filter_field()
93
+ template: FilterLookup[str] | None = strawberry_django.filter_field()
94
+
95
+
96
+ @strawberry_django.filter(models.IPFabricRelationshipField, lookups=True)
97
+ class IPFabricRelationshipFieldFilter(BaseFilterMixin):
98
+ id: ID | None = strawberry_django.filter_field()
99
+ transform_map: (
100
+ Annotated[
101
+ "IPFabricTransformMapFilter",
102
+ strawberry.lazy("ipfabric_netbox.graphql.filters"),
103
+ ]
104
+ | None
105
+ ) = strawberry_django.filter_field()
106
+ source_model: (
107
+ Annotated["ContentTypeFilter", strawberry.lazy("core.graphql.filters")] | None
108
+ ) = strawberry_django.filter_field()
109
+ target_field: FilterLookup[str] | None = strawberry_django.filter_field()
110
+ coalesce: (
111
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
112
+ | None
113
+ ) = strawberry_django.filter_field()
114
+ template: FilterLookup[str] | None = strawberry_django.filter_field()
115
+
116
+
117
+ @strawberry_django.filter(models.IPFabricSource, lookups=True)
118
+ class IPFabricSourceFilter(PrimaryModelFilterMixin):
119
+ id: ID | None = strawberry_django.filter_field()
120
+ name: FilterLookup[str] | None = strawberry_django.filter_field()
121
+ type: (
122
+ Annotated[
123
+ "IPFabricSourceTypeEnum", strawberry.lazy("ipfabric_netbox.graphql.enums")
124
+ ]
125
+ | None
126
+ ) = strawberry_django.filter_field()
127
+ url: FilterLookup[str] | None = strawberry_django.filter_field()
128
+ status: (
129
+ Annotated[
130
+ "DataSourceStatusEnum", strawberry.lazy("ipfabric_netbox.graphql.enums")
131
+ ]
132
+ | None
133
+ ) = strawberry_django.filter_field()
134
+ parameters: (
135
+ Annotated["JSONFilter", strawberry.lazy("netbox.graphql.filter_lookups")] | None
136
+ ) = strawberry_django.filter_field()
137
+ last_synced: DatetimeFilterLookup[
138
+ datetime
139
+ ] | None = strawberry_django.filter_field()
140
+
141
+
142
+ @strawberry_django.filter(models.IPFabricSnapshot, lookups=True)
143
+ class IPFabricSnapshotFilter(TagsFilterMixin, ChangeLogFilterMixin, BaseFilterMixin):
144
+ id: ID | None = strawberry_django.filter_field()
145
+ created: DatetimeFilterLookup[datetime] | None = strawberry_django.filter_field()
146
+ last_updated: DatetimeFilterLookup[
147
+ datetime
148
+ ] | None = strawberry_django.filter_field()
149
+ source: (
150
+ Annotated[
151
+ "IPFabricSourceFilter", strawberry.lazy("ipfabric_netbox.graphql.filters")
152
+ ]
153
+ | None
154
+ ) = strawberry_django.filter_field()
155
+ name: FilterLookup[str] | None = strawberry_django.filter_field()
156
+ snapshot_id: FilterLookup[str] | None = strawberry_django.filter_field()
157
+ data: (
158
+ Annotated["JSONFilter", strawberry.lazy("netbox.graphql.filter_lookups")] | None
159
+ ) = strawberry_django.filter_field()
160
+ date: DatetimeFilterLookup[datetime] | None = strawberry_django.filter_field()
161
+ status: (
162
+ Annotated[
163
+ "IPFabricSnapshotStatusModelEnum",
164
+ strawberry.lazy("ipfabric_netbox.graphql.enums"),
165
+ ]
166
+ | None
167
+ ) = strawberry_django.filter_field()
168
+
169
+
170
+ @strawberry_django.filter(models.IPFabricSync, lookups=True)
171
+ class IPFabricSyncFilter(TagsFilterMixin, ChangeLogFilterMixin, BaseFilterMixin):
172
+ id: ID | None = strawberry_django.filter_field()
173
+ name: FilterLookup[str] | None = strawberry_django.filter_field()
174
+ snapshot_data: (
175
+ Annotated[
176
+ "IPFabricSnapshotFilter", strawberry.lazy("ipfabric_netbox.graphql.filters")
177
+ ]
178
+ | None
179
+ ) = strawberry_django.filter_field()
180
+ status: (
181
+ Annotated[
182
+ "DataSourceStatusEnum", strawberry.lazy("ipfabric_netbox.graphql.enums")
183
+ ]
184
+ | None
185
+ ) = strawberry_django.filter_field()
186
+ parameters: (
187
+ Annotated["JSONFilter", strawberry.lazy("netbox.graphql.filter_lookups")] | None
188
+ ) = strawberry_django.filter_field()
189
+ auto_merge: FilterLookup[bool] | None = strawberry_django.filter_field()
190
+ last_synced: DatetimeFilterLookup[
191
+ datetime
192
+ ] | None = strawberry_django.filter_field()
193
+ scheduled: DatetimeFilterLookup[datetime] | None = strawberry_django.filter_field()
194
+ interval: (
195
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
196
+ | None
197
+ ) = strawberry_django.filter_field()
198
+ user: Annotated[
199
+ "UserFilter", strawberry.lazy("users.graphql.filters")
200
+ ] | None = strawberry_django.filter_field()
201
+
202
+
203
+ @strawberry_django.filter(models.IPFabricIngestion, lookups=True)
204
+ class IPFabricIngestionFilter(BaseFilterMixin):
205
+ id: ID | None = strawberry_django.filter_field()
206
+ sync: (
207
+ Annotated[
208
+ "IPFabricSyncFilter", strawberry.lazy("ipfabric_netbox.graphql.filters")
209
+ ]
210
+ | None
211
+ ) = strawberry_django.filter_field()
212
+ job: (
213
+ Annotated["JobFilter", strawberry.lazy("ipfabric_netbox.graphql.filters")]
214
+ | None
215
+ ) = strawberry_django.filter_field()
216
+ branch: (
217
+ Annotated["BranchFilter", strawberry.lazy("ipfabric_netbox.graphql.filters")]
218
+ | None
219
+ ) = strawberry_django.filter_field()
220
+
221
+
222
+ @strawberry_django.filter(models.IPFabricIngestionIssue, lookups=True)
223
+ class IPFabricIngestionIssueFilter(BaseFilterMixin):
224
+ id: ID | None = strawberry_django.filter_field()
225
+ ingestion: (
226
+ Annotated[
227
+ "IPFabricIngestionFilter",
228
+ strawberry.lazy("ipfabric_netbox.graphql.filters"),
229
+ ]
230
+ | None
231
+ ) = strawberry_django.filter_field()
232
+ timestamp: DatetimeFilterLookup[datetime] | None = strawberry_django.filter_field()
233
+ model: FilterLookup[str] | None = strawberry_django.filter_field()
234
+ message: FilterLookup[str] | None = strawberry_django.filter_field()
235
+ raw_data: FilterLookup[str] | None = strawberry_django.filter_field()
236
+ coalesce_fields: FilterLookup[str] | None = strawberry_django.filter_field()
237
+ defaults: FilterLookup[str] | None = strawberry_django.filter_field()
238
+ exception: FilterLookup[str] | None = strawberry_django.filter_field()
239
+
240
+
241
+ @strawberry_django.filter(models.IPFabricData, lookups=True)
242
+ class IPFabricDataFilter(BaseFilterMixin):
243
+ id: ID | None = strawberry_django.filter_field()
244
+ snapshot_data: (
245
+ Annotated[
246
+ "IPFabricSnapshotFilter", strawberry.lazy("ipfabric_netbox.graphql.filters")
247
+ ]
248
+ | None
249
+ ) = strawberry_django.filter_field()
250
+ data: (
251
+ Annotated["JSONFilter", strawberry.lazy("netbox.graphql.filter_lookups")] | None
252
+ ) = strawberry_django.filter_field()
253
+ type: (
254
+ Annotated[
255
+ "IPFabricRawDataTypeEnum", strawberry.lazy("ipfabric_netbox.graphql.enums")
256
+ ]
257
+ | None
258
+ ) = strawberry_django.filter_field()
259
+
260
+
261
+ # These filters are not defined in the libs, so need to define them here
262
+ @strawberry_django.filter(Branch, lookups=True)
263
+ class BranchFilter(PrimaryModelFilterMixin):
264
+ id: ID | None = strawberry_django.filter_field()
265
+ name: FilterLookup[str] | None = strawberry_django.filter_field()
266
+ owner: Annotated[
267
+ "UserFilter", strawberry.lazy("users.graphql.filters")
268
+ ] | None = strawberry_django.filter_field()
269
+ schema_id: FilterLookup[str] | None = strawberry_django.filter_field()
270
+ status: (
271
+ Annotated["BranchStatusEnum", strawberry.lazy("ipfabric_netbox.graphql.enums")]
272
+ | None
273
+ ) = strawberry_django.filter_field()
274
+ applied_migrations: (
275
+ Annotated["StringArrayLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
276
+ | None
277
+ ) = strawberry_django.filter_field()
278
+ last_sync: DatetimeFilterLookup[datetime] | None = strawberry_django.filter_field()
279
+ merged_time: DatetimeFilterLookup[
280
+ datetime
281
+ ] | None = strawberry_django.filter_field()
282
+ merged_by: (
283
+ Annotated["UserFilter", strawberry.lazy("users.graphql.filters")] | None
284
+ ) = strawberry_django.filter_field()
285
+
286
+
287
+ @strawberry_django.filter(Job, lookups=True)
288
+ class JobFilter(BaseFilterMixin):
289
+ id: ID | None = strawberry_django.filter_field()
290
+ object_type: (
291
+ Annotated["ContentTypeFilter", strawberry.lazy("core.graphql.filters")] | None
292
+ ) = strawberry_django.filter_field()
293
+ object_id: (
294
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
295
+ | None
296
+ ) = strawberry_django.filter_field()
297
+ name: FilterLookup[str] | None = strawberry_django.filter_field()
298
+ created: DatetimeFilterLookup[datetime] | None = strawberry_django.filter_field()
299
+ scheduled: DatetimeFilterLookup[datetime] | None = strawberry_django.filter_field()
300
+ interval: (
301
+ Annotated["IntegerLookup", strawberry.lazy("netbox.graphql.filter_lookups")]
302
+ | None
303
+ ) = strawberry_django.filter_field()
304
+ started: DatetimeFilterLookup[datetime] | None = strawberry_django.filter_field()
305
+ completed: DatetimeFilterLookup[datetime] | None = strawberry_django.filter_field()
306
+ user: Annotated[
307
+ "UserFilter", strawberry.lazy("users.graphql.filters")
308
+ ] | None = strawberry_django.filter_field()
309
+ status: (
310
+ Annotated["JobStatusEnum", strawberry.lazy("ipfabric_netbox.graphql.enums")]
311
+ | None
312
+ ) = strawberry_django.filter_field()
313
+ data: (
314
+ Annotated["JSONFilter", strawberry.lazy("netbox.graphql.filter_lookups")] | None
315
+ ) = strawberry_django.filter_field()
316
+ error: FilterLookup[str] | None = strawberry_django.filter_field()
317
+ job_id: FilterLookup[str] | None = strawberry_django.filter_field()
@@ -0,0 +1,101 @@
1
+ import strawberry
2
+ import strawberry_django
3
+
4
+ from .types import IPFabricDataType
5
+ from .types import IPFabricIngestionIssueType
6
+ from .types import IPFabricIngestionType
7
+ from .types import IPFabricRelationshipFieldType
8
+ from .types import IPFabricSnapshotType
9
+ from .types import IPFabricSourceType
10
+ from .types import IPFabricSyncType
11
+ from .types import IPFabricTransformFieldType
12
+ from .types import IPFabricTransformMapGroupType
13
+ from .types import IPFabricTransformMapType
14
+
15
+
16
+ __all__ = (
17
+ "IPFabricTransformMapGroupQuery",
18
+ "IPFabricTransformMapQuery",
19
+ "IPFabricSyncQuery",
20
+ "IPFabricTransformFieldQuery",
21
+ "IPFabricRelationshipFieldQuery",
22
+ "IPFabricSourceQuery",
23
+ "IPFabricSnapshotQuery",
24
+ "IPFabricIngestionQuery",
25
+ "IPFabricIngestionIssueQuery",
26
+ "IPFabricDataQuery",
27
+ )
28
+
29
+
30
+ @strawberry.type(name="Query")
31
+ class IPFabricTransformMapGroupQuery:
32
+ ipfabric_transform_map_group: IPFabricTransformMapGroupType = (
33
+ strawberry_django.field()
34
+ )
35
+ ipfabric_transform_map_group_list: list[
36
+ IPFabricTransformMapGroupType
37
+ ] = strawberry_django.field()
38
+
39
+
40
+ @strawberry.type(name="Query")
41
+ class IPFabricTransformMapQuery:
42
+ ipfabric_transform_map: IPFabricTransformMapType = strawberry_django.field()
43
+ ipfabric_transform_map_list: list[
44
+ IPFabricTransformMapType
45
+ ] = strawberry_django.field()
46
+
47
+
48
+ @strawberry.type(name="Query")
49
+ class IPFabricTransformFieldQuery:
50
+ ipfabric_transform_field: IPFabricTransformFieldType = strawberry_django.field()
51
+ ipfabric_transform_field_list: list[
52
+ IPFabricTransformFieldType
53
+ ] = strawberry_django.field()
54
+
55
+
56
+ @strawberry.type(name="Query")
57
+ class IPFabricRelationshipFieldQuery:
58
+ ipfabric_relationship_field: IPFabricRelationshipFieldType = (
59
+ strawberry_django.field()
60
+ )
61
+ ipfabric_relationship_field_list: list[
62
+ IPFabricRelationshipFieldType
63
+ ] = strawberry_django.field()
64
+
65
+
66
+ @strawberry.type(name="Query")
67
+ class IPFabricSourceQuery:
68
+ ipfabric_source: IPFabricSourceType = strawberry_django.field()
69
+ ipfabric_source_list: list[IPFabricSourceType] = strawberry_django.field()
70
+
71
+
72
+ @strawberry.type(name="Query")
73
+ class IPFabricSnapshotQuery:
74
+ ipfabric_snapshot: IPFabricSnapshotType = strawberry_django.field()
75
+ ipfabric_snapshot_list: list[IPFabricSnapshotType] = strawberry_django.field()
76
+
77
+
78
+ @strawberry.type(name="Query")
79
+ class IPFabricSyncQuery:
80
+ ipfabric_sync: IPFabricSyncType = strawberry_django.field()
81
+ ipfabric_sync_list: list[IPFabricSyncType] = strawberry_django.field()
82
+
83
+
84
+ @strawberry.type(name="Query")
85
+ class IPFabricIngestionQuery:
86
+ ipfabric_ingestion: IPFabricIngestionType = strawberry_django.field()
87
+ ipfabric_ingestion_list: list[IPFabricIngestionType] = strawberry_django.field()
88
+
89
+
90
+ @strawberry.type(name="Query")
91
+ class IPFabricIngestionIssueQuery:
92
+ ipfabric_ingestion_issue: IPFabricIngestionIssueType = strawberry_django.field()
93
+ ipfabric_ingestion_issue_list: list[
94
+ IPFabricIngestionIssueType
95
+ ] = strawberry_django.field()
96
+
97
+
98
+ @strawberry.type(name="Query")
99
+ class IPFabricDataQuery:
100
+ ipfabric_data: IPFabricDataType = strawberry_django.field()
101
+ ipfabric_data_list: list[IPFabricDataType] = strawberry_django.field()
@@ -0,0 +1,216 @@
1
+ from typing import Annotated
2
+
3
+ import strawberry
4
+ import strawberry_django
5
+ from core.graphql.mixins import ChangelogMixin
6
+ from core.models import Job
7
+ from extras.graphql.mixins import TagsMixin
8
+ from netbox.graphql.types import BaseObjectType
9
+ from netbox.graphql.types import ContentTypeType
10
+ from netbox.graphql.types import NetBoxObjectType
11
+ from netbox.graphql.types import OrganizationalObjectType
12
+ from netbox_branching.models import Branch
13
+ from strawberry.scalars import JSON
14
+ from users.graphql.types import UserType
15
+
16
+ from .filters import BranchFilter
17
+ from .filters import IPFabricDataFilter
18
+ from .filters import IPFabricIngestionFilter
19
+ from .filters import IPFabricIngestionIssueFilter
20
+ from .filters import IPFabricRelationshipFieldFilter
21
+ from .filters import IPFabricSnapshotFilter
22
+ from .filters import IPFabricSourceFilter
23
+ from .filters import IPFabricSyncFilter
24
+ from .filters import IPFabricTransformFieldFilter
25
+ from .filters import IPFabricTransformMapFilter
26
+ from .filters import IPFabricTransformMapGroupFilter
27
+ from .filters import JobFilter
28
+ from ipfabric_netbox import models
29
+
30
+
31
+ __all__ = (
32
+ "IPFabricTransformMapGroupType",
33
+ "IPFabricTransformMapType",
34
+ "IPFabricTransformFieldType",
35
+ "IPFabricRelationshipFieldType",
36
+ "IPFabricSourceType",
37
+ "IPFabricSnapshotType",
38
+ "IPFabricSyncType",
39
+ "IPFabricIngestionType",
40
+ "IPFabricIngestionIssueType",
41
+ "IPFabricDataType",
42
+ )
43
+
44
+
45
+ @strawberry_django.type(
46
+ models.IPFabricTransformMapGroup,
47
+ fields="__all__",
48
+ filters=IPFabricTransformMapGroupFilter,
49
+ )
50
+ class IPFabricTransformMapGroupType(NetBoxObjectType):
51
+ name: str
52
+ description: str | None
53
+
54
+
55
+ @strawberry_django.type(
56
+ models.IPFabricTransformMap, fields="__all__", filters=IPFabricTransformMapFilter
57
+ )
58
+ class IPFabricTransformMapType(NetBoxObjectType):
59
+ name: str
60
+ source_model: str
61
+ target_model: (
62
+ Annotated[
63
+ "ContentTypeType",
64
+ strawberry.lazy("netbox.graphql.types"),
65
+ ]
66
+ | None
67
+ )
68
+ group: (
69
+ Annotated[
70
+ "IPFabricTransformMapGroupType",
71
+ strawberry.lazy("ipfabric_netbox.graphql.types"),
72
+ ]
73
+ | None
74
+ )
75
+
76
+
77
+ @strawberry_django.type(
78
+ models.IPFabricTransformField,
79
+ fields="__all__",
80
+ filters=IPFabricTransformFieldFilter,
81
+ )
82
+ class IPFabricTransformFieldType(BaseObjectType):
83
+ transform_map: (
84
+ Annotated[
85
+ "IPFabricTransformMapType", strawberry.lazy("ipfabric_netbox.graphql.types")
86
+ ]
87
+ | None
88
+ )
89
+ source_field: str
90
+ target_field: str
91
+ coalesce: bool
92
+ template: str
93
+
94
+
95
+ @strawberry_django.type(
96
+ models.IPFabricRelationshipField,
97
+ fields="__all__",
98
+ filters=IPFabricRelationshipFieldFilter,
99
+ )
100
+ class IPFabricRelationshipFieldType(BaseObjectType):
101
+ transform_map: (
102
+ Annotated[
103
+ "IPFabricTransformMapType", strawberry.lazy("ipfabric_netbox.graphql.types")
104
+ ]
105
+ | None
106
+ )
107
+ source_model: Annotated["ContentTypeType", strawberry.lazy("netbox.graphql.types")]
108
+ target_field: str
109
+ coalesce: bool
110
+ template: str
111
+
112
+
113
+ @strawberry_django.type(
114
+ models.IPFabricSource, fields="__all__", filters=IPFabricSourceFilter
115
+ )
116
+ class IPFabricSourceType(OrganizationalObjectType):
117
+ name: str
118
+ type: str
119
+ url: str
120
+ status: str
121
+ parameters: JSON
122
+ last_synced: str
123
+
124
+
125
+ @strawberry_django.type(
126
+ models.IPFabricSnapshot, fields="__all__", filters=IPFabricSnapshotFilter
127
+ )
128
+ class IPFabricSnapshotType(ChangelogMixin, TagsMixin, BaseObjectType):
129
+ source: (
130
+ Annotated[
131
+ "IPFabricSourceType", strawberry.lazy("ipfabric_netbox.graphql.types")
132
+ ]
133
+ | None
134
+ )
135
+ name: str
136
+ snapshot_id: str
137
+ data: JSON
138
+ status: str
139
+
140
+
141
+ @strawberry_django.type(
142
+ models.IPFabricSync, fields="__all__", filters=IPFabricSyncFilter
143
+ )
144
+ class IPFabricSyncType(ChangelogMixin, TagsMixin, BaseObjectType):
145
+ name: str
146
+ snapshot_data: (
147
+ Annotated[
148
+ "IPFabricSnapshotType", strawberry.lazy("ipfabric_netbox.graphql.types")
149
+ ]
150
+ | None
151
+ )
152
+ status: str
153
+ parameters: JSON
154
+ auto_merge: bool
155
+ last_synced: str | None
156
+ scheduled: str | None
157
+ interval: int | None
158
+ user: Annotated["UserType", strawberry.lazy("users.graphql.types")] | None
159
+
160
+
161
+ @strawberry_django.type(Branch, fields="__all__", filters=BranchFilter)
162
+ class BranchType(OrganizationalObjectType):
163
+ name: str
164
+ description: str | None
165
+ owner: Annotated["UserType", strawberry.lazy("users.graphql.types")]
166
+ merged_by: Annotated["UserType", strawberry.lazy("users.graphql.types")]
167
+
168
+
169
+ @strawberry_django.type(Job, fields="__all__", filters=JobFilter)
170
+ class JobType(BaseObjectType):
171
+ name: str
172
+ user: Annotated["UserType", strawberry.lazy("users.graphql.types")]
173
+
174
+
175
+ @strawberry_django.type(
176
+ models.IPFabricIngestion, fields="__all__", filters=IPFabricIngestionFilter
177
+ )
178
+ class IPFabricIngestionType(BaseObjectType):
179
+ sync: (
180
+ Annotated["IPFabricSyncType", strawberry.lazy("ipfabric_netbox.graphql.types")]
181
+ | None
182
+ )
183
+ job: Annotated["JobType", strawberry.lazy("ipfabric_netbox.graphql.types")] | None
184
+ branch: (
185
+ Annotated["BranchType", strawberry.lazy("ipfabric_netbox.graphql.types")] | None
186
+ )
187
+
188
+
189
+ @strawberry_django.type(
190
+ models.IPFabricIngestionIssue,
191
+ fields="__all__",
192
+ filters=IPFabricIngestionIssueFilter,
193
+ )
194
+ class IPFabricIngestionIssueType(BaseObjectType):
195
+ ingestion: (
196
+ Annotated[
197
+ "IPFabricIngestionType", strawberry.lazy("ipfabric_netbox.graphql.types")
198
+ ]
199
+ | None
200
+ )
201
+ timestamp: str
202
+ model: str | None
203
+ message: str
204
+ raw_data: str
205
+ coalesce_fields: str
206
+ defaults: str
207
+ exception: str
208
+
209
+
210
+ @strawberry_django.type(
211
+ models.IPFabricData, fields="__all__", filters=IPFabricDataFilter
212
+ )
213
+ class IPFabricDataType(BaseObjectType):
214
+ snapshot_data: Annotated[
215
+ "IPFabricSnapshotType", strawberry.lazy("ipfabric_netbox.graphql.types")
216
+ ]
@@ -0,0 +1,31 @@
1
+ # Generated by Django 5.2.5 on 2025-08-21 11:21
2
+ import taggit.managers
3
+ from django.db import migrations
4
+ from django.db import models
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+ dependencies = [
9
+ ("extras", "0128_tableconfig"),
10
+ ("ipfabric_netbox", "0015_ipfabricingestionissue"),
11
+ ]
12
+
13
+ operations = [
14
+ migrations.AddField(
15
+ model_name="ipfabricsnapshot",
16
+ name="tags",
17
+ field=taggit.managers.TaggableManager(
18
+ through="extras.TaggedItem", to="extras.Tag"
19
+ ),
20
+ ),
21
+ migrations.AlterField(
22
+ model_name="ipfabricsnapshot",
23
+ name="created",
24
+ field=models.DateTimeField(auto_now_add=True, null=True),
25
+ ),
26
+ migrations.AlterField(
27
+ model_name="ipfabricsnapshot",
28
+ name="last_updated",
29
+ field=models.DateTimeField(auto_now=True, null=True),
30
+ ),
31
+ ]
@@ -0,0 +1,17 @@
1
+ # Generated by Django 5.2.5 on 2025-08-22 12:32
2
+ from django.db import migrations
3
+ from django.db import models
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+ dependencies = [
8
+ ("ipfabric_netbox", "0016_tags_and_changelog_for_snapshots"),
9
+ ]
10
+
11
+ operations = [
12
+ migrations.AddField(
13
+ model_name="ipfabricsync",
14
+ name="update_custom_fields",
15
+ field=models.BooleanField(default=True),
16
+ ),
17
+ ]
@@ -0,0 +1,17 @@
1
+ # Generated by Django 5.2 on 2025-08-25 12:53
2
+ from django.db import migrations
3
+
4
+
5
+ class Migration(migrations.Migration):
6
+ dependencies = [
7
+ (
8
+ "ipfabric_netbox",
9
+ "0017_ipfabricsync_update_custom_fields",
10
+ ),
11
+ ]
12
+ operations = [
13
+ migrations.RemoveField(
14
+ model_name="ipfabricsync",
15
+ name="type",
16
+ ),
17
+ ]