diff --git a/swagspace_cloud_init/__init__.py b/swagspace_cloud_init/__init__.py index d9ff759..f1070aa 100644 --- a/swagspace_cloud_init/__init__.py +++ b/swagspace_cloud_init/__init__.py @@ -21,6 +21,9 @@ from pynetbox_config_helper import build_argparser, resolve_graphql_config import importlib.resources +class GraphQlError(Exception): + pass + logger = logging.getLogger(__name__) @@ -72,6 +75,10 @@ def graphql_query(client: GraphqlClient, query, variables: Optional[Dict] = None data = client.execute(query, variables=variables) + errors = data.get("errors") + if errors: + raise GraphQlError(errors) + logger.debug(f"received data from GraphQL:\n{pformat(data)}") return data @@ -161,8 +168,8 @@ def build_vm(): query, variables={ "address": str(interface_addr.ip), - "prefix_length": str(interface_addr.network.prefixlen), - "vrf": "null", + "prefix_length": "/" + str(interface_addr.network.prefixlen), + "vrf": None, }, )["data"] diff --git a/swagspace_cloud_init/prefixes.graphql b/swagspace_cloud_init/prefixes.graphql index 47534fc..a742032 100644 --- a/swagspace_cloud_init/prefixes.graphql +++ b/swagspace_cloud_init/prefixes.graphql @@ -1,6 +1,6 @@ -query Prefixes($address: String, $prefix_length: [String!], $vrf: [String!]) { +query Prefixes($address: [String!], $prefix_length: String, $vrf: ID) { prefixes: prefix_list( - filters: {contains: $address, AND: {mask_length: $prefix_length, AND: {vrf: $vrf}}} + filters: {contains: $address, AND: {prefix: {ends_with: $prefix_length}, AND: {vrf_id: $vrf}}} ) { prefix custom_fields