Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion infrahub_sync/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ class SchemaMappingField(pydantic.BaseModel):

class SchemaMappingModel(pydantic.BaseModel):
name: str
mapping: str
mapping: str | None = pydantic.Field(default=None)
identifiers: list[str] | None = pydantic.Field(default=None)
filters: list[SchemaMappingFilter] | None = pydantic.Field(default=None)
transforms: list[SchemaMappingTransform] | None = pydantic.Field(default=None)
Expand Down
4 changes: 4 additions & 0 deletions infrahub_sync/adapters/aci.py
Original file line number Diff line number Diff line change
Expand Up @@ -248,6 +248,10 @@ def model_loader(self, model_name: str, model: builtins.type[AciModel]) -> None:
logger.debug("No fields defined for schema mapping %s, skipping", element.name)
continue

if not element.mapping:
print(f"No mapping defined for '{element.name}', skipping...")
continue

# Use the resource endpoint from the schema mapping
resource_name = element.mapping

Expand Down
4 changes: 4 additions & 0 deletions infrahub_sync/adapters/genericrestapi.py
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,10 @@ def model_loader(self, model_name: str, model: GenericrestapiModel) -> None:
if element.name != model_name:
continue

if not element.mapping:
print(f"No mapping defined for '{element.name}', skipping...")
continue

# Use the resource endpoint from the schema mapping
resource_name = element.mapping

Expand Down
2 changes: 2 additions & 0 deletions infrahub_sync/adapters/infrahub.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,8 @@ def resolve_peer_node(
peer_node = client.get(id=key, kind=rel_schema.peer, populate_store=True)
if not peer_node:
print(f"Unable to find {rel_schema.peer} [{key}] - Ignored")
else:
print(f"Found it with kind {peer_node.get_kind()} using Infrahub client")
return peer_node


Expand Down
8 changes: 4 additions & 4 deletions infrahub_sync/adapters/ipfabricsync.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ def _create_ipfabric_client(self, adapter: SyncAdapter) -> IPFClient:
auth = os.environ.get("IPF_TOKEN", None)
settings["auth"] = auth


if not base_url or not auth:
msg = "Both url and auth must be specified! Please specify in the config or using `IPF_URL` and `IPF_TOKEN` environment variables."
raise ValueError(msg)
Expand All @@ -74,11 +75,12 @@ def model_loader(self, model_name: str, model: IpfabricsyncModel) -> None:
if element.name != model_name:
continue

if not element.mapping:
print(f"No mapping defined for '{element.name}', skipping...")
continue
table = self.client.fetch_all(element.mapping, filters=ipf_filters.get(element.mapping))
print(f"{self.type}: Loading {len(table)} from `{element.mapping}`")

total = len(table)

if self.config.source.name.title() == self.type.title():
# Filter records
filtered_objs = model.filter_records(records=table, schema_mapping=element)
Expand All @@ -90,9 +92,7 @@ def model_loader(self, model_name: str, model: IpfabricsyncModel) -> None:
transformed_objs = table

for obj in transformed_objs:
print(f"Object to load: {obj}")
data = self.ipfabric_dict_to_diffsync(obj=obj, mapping=element, model=model)
print(f"Data to load: {data}")
item = model(**data)
self.update_or_add_model_instance(item)

Expand Down
4 changes: 4 additions & 0 deletions infrahub_sync/adapters/nautobot.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,10 @@ def model_loader(self, model_name: str, model: NautobotModel) -> None:
if element.name != model_name:
continue

if not element.mapping:
print(f"No mapping defined for '{element.name}', skipping...")
continue

# Use the resource endpoint from the schema mapping
app_name, resource_name = element.mapping.split(".")
nautobot_app = getattr(self.client, app_name)
Expand Down
4 changes: 4 additions & 0 deletions infrahub_sync/adapters/netbox.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,10 @@ def model_loader(self, model_name: str, model: NetboxModel) -> None:
if element.name != model_name:
continue

if not element.mapping:
print(f"No mapping defined for '{element.name}', skipping...")
continue

# Use the resource endpoint from the schema mapping
app_name, resource_name = element.mapping.split(".")
netbox_app = getattr(self.client, app_name)
Expand Down
4 changes: 4 additions & 0 deletions infrahub_sync/adapters/prometheus.py
Original file line number Diff line number Diff line change
Expand Up @@ -470,6 +470,10 @@ def model_loader(self, model_name: str, model) -> None:
if element.name != model_name:
continue

if not element.mapping:
print(f"No mapping defined for '{element.name}', skipping...")
continue

metric_or_resource = element.mapping
objs = samples_by_metric.get(metric_or_resource, [])
total = len(objs)
Expand Down
4 changes: 4 additions & 0 deletions infrahub_sync/adapters/slurpitsync.py
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,10 @@ def model_loader(self, model_name: str, model: SlurpitsyncModel) -> None:
if element.name != model_name:
continue

if not element.mapping:
print(f"No mapping defined for '{element.name}', skipping...")
continue

if element.mapping.startswith("planning_results"):
planning_name = element.mapping.split(".")[1]
nodes = self.planning_results(planning_name)
Expand Down
Loading