From 297dab6be177af8c925cd76cb13c90c47f357f31 Mon Sep 17 00:00:00 2001 From: James Jeffries Date: Fri, 29 Aug 2025 15:38:16 +0100 Subject: [PATCH 1/9] chore: upgrade semantic release (#400) --- .github/workflows/reusable_semantic_release.yaml | 3 ++- .../workflows/reusable_semantic_release_get_next_version.yaml | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/reusable_semantic_release.yaml b/.github/workflows/reusable_semantic_release.yaml index 14d4a76e..9257d205 100644 --- a/.github/workflows/reusable_semantic_release.yaml +++ b/.github/workflows/reusable_semantic_release.yaml @@ -42,6 +42,7 @@ jobs: "version": "1.0.0", "devDependencies": { "semantic-release-export-data": "^1.0.1", + "semantic-release": "25.0.0-beta.6", "@semantic-release/changelog": "^6.0.3" } } @@ -87,7 +88,7 @@ jobs: ] } - name: setup semantic-release - run: npm i + run: npm install --legacy-peer-deps - name: Release env: SLACK_WEBHOOK: ${{ secrets.SLACK_OBSERVABILITY_RELEASE_WEBHOOK }} diff --git a/.github/workflows/reusable_semantic_release_get_next_version.yaml b/.github/workflows/reusable_semantic_release_get_next_version.yaml index 74f5e2d0..ad7a3124 100644 --- a/.github/workflows/reusable_semantic_release_get_next_version.yaml +++ b/.github/workflows/reusable_semantic_release_get_next_version.yaml @@ -46,6 +46,7 @@ jobs: "version": "1.0.0", "devDependencies": { "semantic-release-export-data": "^1.0.1", + "semantic-release": "25.0.0-beta.6", "@semantic-release/changelog": "^6.0.3", "@semantic-release/commit-analyzer": "^9.0.2", "@semantic-release/github": "^8.0.0", @@ -94,7 +95,7 @@ jobs: ] } - name: setup semantic-release - run: npm i + run: npm install --legacy-peer-deps - name: release dry-run env: SLACK_WEBHOOK: ${{ secrets.SLACK_OBSERVABILITY_RELEASE_WEBHOOK }} From 0da822ec34d5fcdb6c0ef2cc7ac96bb5c6ffd4b4 Mon Sep 17 00:00:00 2001 From: Benjamin Reed Date: Mon, 8 Sep 2025 15:20:53 -0400 Subject: [PATCH 2/9] fix: reconciler+ingester cut-and-paste error for init containers --- charts/diode/templates/diode-ingester-deployment.yaml | 4 ++-- charts/diode/templates/diode-reconciler-deployment.yaml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/charts/diode/templates/diode-ingester-deployment.yaml b/charts/diode/templates/diode-ingester-deployment.yaml index 1362214e..a9db9c3c 100644 --- a/charts/diode/templates/diode-ingester-deployment.yaml +++ b/charts/diode/templates/diode-ingester-deployment.yaml @@ -53,8 +53,8 @@ spec: done; echo "Redis server is up and running"; {{- end }} - {{- if .Values.diodeAuth.extraInitContainers }} - {{- include "common.tplvalues.render" ( dict "value" .Values.diodeAuth.extraInitContainers "context" $ ) | nindent 8 }} + {{- if .Values.diodeIngester.extraInitContainers }} + {{- include "common.tplvalues.render" ( dict "value" .Values.diodeIngester.extraInitContainers "context" $ ) | nindent 8 }} {{- end }} containers: - name: {{ include "diode.ingester.servicename" . }} diff --git a/charts/diode/templates/diode-reconciler-deployment.yaml b/charts/diode/templates/diode-reconciler-deployment.yaml index 487ee0f5..95f36951 100644 --- a/charts/diode/templates/diode-reconciler-deployment.yaml +++ b/charts/diode/templates/diode-reconciler-deployment.yaml @@ -67,8 +67,8 @@ spec: done; echo "PostgreSQL server is up and running"; {{- end }} - {{- if .Values.diodeAuth.extraInitContainers }} - {{- include "common.tplvalues.render" ( dict "value" .Values.diodeAuth.extraInitContainers "context" $ ) | nindent 8 }} + {{- if .Values.diodeReconciler.extraInitContainers }} + {{- include "common.tplvalues.render" ( dict "value" .Values.diodeReconciler.extraInitContainers "context" $ ) | nindent 8 }} {{- end }} containers: - name: {{ include "diode.reconciler.servicename" . }} From 05bb6ba23fefc4b440b84d36b52a152208ef8534 Mon Sep 17 00:00:00 2001 From: Benjamin Reed Date: Mon, 8 Sep 2025 15:25:34 -0400 Subject: [PATCH 3/9] feat: allow waiting for redis and postgresql with external databases too --- charts/diode/templates/diode-ingester-deployment.yaml | 2 +- .../diode/templates/diode-reconciler-deployment.yaml | 4 ++-- charts/diode/values.yaml | 10 +++++++++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/charts/diode/templates/diode-ingester-deployment.yaml b/charts/diode/templates/diode-ingester-deployment.yaml index a9db9c3c..368c7494 100644 --- a/charts/diode/templates/diode-ingester-deployment.yaml +++ b/charts/diode/templates/diode-ingester-deployment.yaml @@ -39,7 +39,7 @@ spec: {{- toYaml .Values.diodeIngester.image.imagePullSecrets | nindent 8 }} {{- end }} initContainers: - {{- if .Values.redis.enabled }} + {{- if .Values.global.diode.ingester.waitForRedis | default true }} - name: wait-for-redis image: {{ include "diode.busybox.image" . }} imagePullPolicy: {{ include "diode.busybox.imagepullpolicy" . }} diff --git a/charts/diode/templates/diode-reconciler-deployment.yaml b/charts/diode/templates/diode-reconciler-deployment.yaml index 95f36951..4e901465 100644 --- a/charts/diode/templates/diode-reconciler-deployment.yaml +++ b/charts/diode/templates/diode-reconciler-deployment.yaml @@ -39,7 +39,7 @@ spec: {{- toYaml .Values.diodeReconciler.image.imagePullSecrets | nindent 8 }} {{- end }} initContainers: - {{- if .Values.redis.enabled }} + {{- if .Values.global.diode.reconciler.waitForRedis }} - name: wait-for-redis image: {{ include "diode.busybox.image" . }} imagePullPolicy: {{ include "diode.busybox.imagepullpolicy" . }} @@ -53,7 +53,7 @@ spec: done; echo "Redis server is up and running"; {{- end }} - {{- if .Values.postgresql.enabled }} + {{- if .Values.global.diode.reconciler.waitForPostgres }} - name: wait-for-postgres image: {{ include "diode.busybox.image" . }} imagePullPolicy: {{ include "diode.busybox.imagepullpolicy" . }} diff --git a/charts/diode/values.yaml b/charts/diode/values.yaml index 92af7839..65c20817 100644 --- a/charts/diode/values.yaml +++ b/charts/diode/values.yaml @@ -7,8 +7,16 @@ global: imagePullPolicy: IfNotPresent # -- hydra additional init containers configuration hydra: - # -- wait for PostgreSQL + # -- wait for PostgreSQL to be reachable waitForPostgres: true + ingester: + # -- wait for Redis to be reachable + waitForRedis: true + reconciler: + # -- wait for PostgreSQL to be reachable + waitForPostgres: true + # -- wait for Redis to be reachable + waitForRedis: true # -- common annotations for all resources commonAnnotations: {} From f93b85922d77db5d7de4c0396178df81dc31ce08 Mon Sep 17 00:00:00 2001 From: Benjamin Reed Date: Mon, 8 Sep 2025 15:27:42 -0400 Subject: [PATCH 4/9] chore: update chart version and readme --- charts/diode/Chart.yaml | 2 +- charts/diode/README.md | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/charts/diode/Chart.yaml b/charts/diode/Chart.yaml index 238a357c..85da79b4 100644 --- a/charts/diode/Chart.yaml +++ b/charts/diode/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: diode description: A Helm chart for Diode type: application -version: 1.7.0 +version: 1.8.0 appVersion: "1.5.0" home: https://github.com/netboxlabs/diode sources: diff --git a/charts/diode/README.md b/charts/diode/README.md index ea658cc7..28e94329 100644 --- a/charts/diode/README.md +++ b/charts/diode/README.md @@ -2,7 +2,7 @@ A Helm chart for Diode -![Version: 1.7.0](https://img.shields.io/badge/Version-1.7.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.5.0](https://img.shields.io/badge/AppVersion-1.5.0-informational?style=flat-square) +![Version: 1.8.0](https://img.shields.io/badge/Version-1.8.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.5.0](https://img.shields.io/badge/AppVersion-1.5.0-informational?style=flat-square) ## Prerequisites @@ -310,10 +310,13 @@ helm show values diode/diode | externalRedis.port | int | `6379` | port | | global.commonAnnotations | object | `{}` | common annotations for all resources | | global.commonLabels | object | `{}` | common labels for all resources | -| global.diode | object | `{"busybox":{"image":"busybox:latest","imagePullPolicy":"IfNotPresent"},"hydra":{"waitForPostgres":true}}` | diode global configuration | +| global.diode | object | `{"busybox":{"image":"busybox:latest","imagePullPolicy":"IfNotPresent"},"hydra":{"waitForPostgres":true},"ingester":{"waitForRedis":true},"reconciler":{"waitForPostgres":true,"waitForRedis":true}}` | diode global configuration | | global.diode.busybox | object | `{"image":"busybox:latest","imagePullPolicy":"IfNotPresent"}` | busybox image configuration | | global.diode.hydra | object | `{"waitForPostgres":true}` | hydra additional init containers configuration | -| global.diode.hydra.waitForPostgres | bool | `true` | wait for PostgreSQL | +| global.diode.hydra.waitForPostgres | bool | `true` | wait for PostgreSQL to be reachable | +| global.diode.ingester.waitForRedis | bool | `true` | wait for Redis to be reachable | +| global.diode.reconciler.waitForPostgres | bool | `true` | wait for PostgreSQL to be reachable | +| global.diode.reconciler.waitForRedis | bool | `true` | wait for Redis to be reachable | | hydra | object | `{"deployment":{"extraInitContainers":"{{ include \"diode.hydra.extrainitcontainers\" . }}","resources":{"limits":{"cpu":"500m","memory":"512Mi"},"requests":{"cpu":"100m","memory":"128Mi"}}},"enabled":true,"fullnameOverride":"diode-hydra","hydra":{"automigration":{"enabled":true},"config":{"oidc":{"subject_identifiers":{"supported_types":["public"]}},"strategies":{"access_token":"jwt","jwt":{"scope_claim":"both"}},"ttl":{"access_token":"1h"},"urls":{"self":{"issuer":"http://diode-hydra-public.{{ .Release.Namespace }}.svc.cluster.local:4444"}}},"dev":true,"ingress":{"admin":{"enabled":false},"public":{"enabled":false}},"service":{"admin":{"enabled":true,"port":4445,"type":"ClusterIP"},"public":{"enabled":true,"port":4444,"type":"ClusterIP"}}},"job":{"annotations":{"helm.sh/hook":"post-install, post-upgrade","helm.sh/hook-delete-policy":"hook-succeeded","helm.sh/hook-weight":"1"},"extraInitContainers":"{{ include \"diode.hydra.extrainitcontainers\" . }}"},"secret":{"enabled":false,"nameOverride":"diode-hydra-secret"}}` | ref: https://github.com/ory/k8s/blob/master/helm/charts/hydra/values.yaml | | hydra.deployment.extraInitContainers | string or list | `"{{ include \"diode.hydra.extrainitcontainers\" . }}"` | extra init containers | | hydra.deployment.resources | object | `{"limits":{"cpu":"500m","memory":"512Mi"},"requests":{"cpu":"100m","memory":"128Mi"}}` | resources | From 48945b3083bca235947300190c8a6fd7fc713875 Mon Sep 17 00:00:00 2001 From: Benjamin Reed Date: Mon, 8 Sep 2025 16:01:58 -0400 Subject: [PATCH 5/9] remove unnecessary `default true` Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- charts/diode/templates/diode-ingester-deployment.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/charts/diode/templates/diode-ingester-deployment.yaml b/charts/diode/templates/diode-ingester-deployment.yaml index 368c7494..eb1b7ccf 100644 --- a/charts/diode/templates/diode-ingester-deployment.yaml +++ b/charts/diode/templates/diode-ingester-deployment.yaml @@ -39,7 +39,7 @@ spec: {{- toYaml .Values.diodeIngester.image.imagePullSecrets | nindent 8 }} {{- end }} initContainers: - {{- if .Values.global.diode.ingester.waitForRedis | default true }} + {{- if .Values.global.diode.ingester.waitForRedis }} - name: wait-for-redis image: {{ include "diode.busybox.image" . }} imagePullPolicy: {{ include "diode.busybox.imagepullpolicy" . }} From a6578301dabea186a9b7bf1c50a4dfda45ed046d Mon Sep 17 00:00:00 2001 From: ecdobry Date: Tue, 16 Sep 2025 14:58:48 -0400 Subject: [PATCH 6/9] feat: improve postgresql secret handling --- charts/diode/Chart.yaml | 2 +- charts/diode/README.md | 7 ++- charts/diode/templates/_helpers.tpl | 52 +++++++++++++++++++ .../templates/diode-reconciler-configmap.yaml | 4 +- .../diode-reconciler-deployment.yaml | 12 +++-- charts/diode/templates/diode-secrets.yaml | 16 ++++++ charts/diode/values.yaml | 11 +++- 7 files changed, 96 insertions(+), 8 deletions(-) create mode 100644 charts/diode/templates/diode-secrets.yaml diff --git a/charts/diode/Chart.yaml b/charts/diode/Chart.yaml index 85da79b4..590ea8fe 100644 --- a/charts/diode/Chart.yaml +++ b/charts/diode/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: diode description: A Helm chart for Diode type: application -version: 1.8.0 +version: 1.9.0 appVersion: "1.5.0" home: https://github.com/netboxlabs/diode sources: diff --git a/charts/diode/README.md b/charts/diode/README.md index 28e94329..8bf14fe0 100644 --- a/charts/diode/README.md +++ b/charts/diode/README.md @@ -2,7 +2,7 @@ A Helm chart for Diode -![Version: 1.8.0](https://img.shields.io/badge/Version-1.8.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.5.0](https://img.shields.io/badge/AppVersion-1.5.0-informational?style=flat-square) +![Version: 1.9.0](https://img.shields.io/badge/Version-1.9.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.5.0](https://img.shields.io/badge/AppVersion-1.5.0-informational?style=flat-square) ## Prerequisites @@ -304,8 +304,13 @@ helm show values diode/diode | diodeReconciler.replicaCount | int | `1` | replica count | | diodeReconciler.resources | object | `{"limits":{"cpu":"500m","memory":"512Mi"},"requests":{"cpu":"100m","memory":"128Mi"}}` | resources | | diodeReconciler.serviceAccount.create | bool | `true` | create service account | +| externalPostgresql.database | string | `"diode"` | database name | +| externalPostgresql.existingSecretKey | string | `"postgresql-password"` | key of password in existing postgresql secret | +| externalPostgresql.existingSecretName | string | `""` | existing postgresql secret | | externalPostgresql.hostname | string | `"localhost"` | hostname | +| externalPostgresql.password | string | `""` | password | | externalPostgresql.port | int | `5432` | port | +| externalPostgresql.username | string | `"diode"` | username | | externalRedis.hostname | string | `"localhost"` | hostname | | externalRedis.port | int | `6379` | port | | global.commonAnnotations | object | `{}` | common annotations for all resources | diff --git a/charts/diode/templates/_helpers.tpl b/charts/diode/templates/_helpers.tpl index b03199bc..84f91c4b 100644 --- a/charts/diode/templates/_helpers.tpl +++ b/charts/diode/templates/_helpers.tpl @@ -291,6 +291,58 @@ Create the port of the Redis database {{- end }} {{- end }} +{{/* +Create the database name for PostgreSQL +*/}} +{{- define "diode.postgresql.database" -}} +{{- if .Values.postgresql.enabled -}} +{{- printf "diode" }} +{{- else if and .Values.externalPostgresql (hasKey .Values.externalPostgresql "database") -}} +{{- .Values.externalPostgresql.database }} +{{- else -}} +{{- fail "externalPostgresql.database must be defined when postgresql.enabled is false" }} +{{- end }} +{{- end }} + +{{/* +Create the username for PostgreSQL +*/}} +{{- define "diode.postgresql.username" -}} +{{- if .Values.postgresql.enabled -}} +{{- printf "diode" }} +{{- else if and .Values.externalPostgresql (hasKey .Values.externalPostgresql "username") -}} +{{- .Values.externalPostgresql.username }} +{{- else -}} +{{- fail "externalPostgresql.username must be defined when postgresql.enabled is false" }} +{{- end }} +{{- end }} + +{{/* +Create the secret name for PostgreSQL credentials +*/}} +{{- define "diode.postgresql.secretname" -}} +{{- if .Values.postgresql.enabled -}} +{{- printf "diode-postgresql-secret" }} +{{- else if and .Values.externalPostgresql (hasKey .Values.externalPostgresql "existingSecretName") (not (empty .Values.externalPostgresql.existingSecretName)) -}} +{{- .Values.externalPostgresql.existingSecretName }} +{{- else -}} +{{- printf "diode-external-postgresql-secret" }} +{{- end }} +{{- end }} + +{{/* +Create the secret key for PostgreSQL password +*/}} +{{- define "diode.postgresql.secretkey" -}} +{{- if .Values.postgresql.enabled -}} +{{- printf "postgres-password" }} +{{- else if and .Values.externalPostgresql (hasKey .Values.externalPostgresql "existingSecretKey") (not (empty .Values.externalPostgresql.existingSecretKey)) -}} +{{- .Values.externalPostgresql.existingSecretKey }} +{{- else -}} +{{- printf "postgresql-password" }} +{{- end }} +{{- end }} + {{/* Create the hostname of the public Hydra service */}} diff --git a/charts/diode/templates/diode-reconciler-configmap.yaml b/charts/diode/templates/diode-reconciler-configmap.yaml index a378652e..777c12ff 100644 --- a/charts/diode/templates/diode-reconciler-configmap.yaml +++ b/charts/diode/templates/diode-reconciler-configmap.yaml @@ -27,8 +27,8 @@ data: DIODE_TO_NETBOX_RATE_LIMITER_BURST: {{ $config.diodeToNetboxRateLimiterBurst | default "1" | quote }} POSTGRES_HOST: {{ include "diode.postgresql.hostname" . | quote }} POSTGRES_PORT: {{ include "diode.postgresql.port" . | quote }} - POSTGRES_DB_NAME: {{ $config.postgresDbName | default "diode" | quote }} - POSTGRES_USER: {{ $config.postgresUser | default "diode" | quote }} + POSTGRES_DB_NAME: {{ include "diode.postgresql.database" . | quote }} + POSTGRES_USER: {{ include "diode.postgresql.username" . | quote }} NETBOX_DIODE_PLUGIN_API_BASE_URL: {{ $config.netboxDiodePluginApiBaseUrl | quote }} NETBOX_DIODE_PLUGIN_SKIP_TLS_VERIFY: {{ $config.netboxDiodePluginSkipTlsVerify | quote }} DIODE_AUTH_TOKEN_URL: {{ printf "%s/token" (include "diode.auth.url" .) | quote }} diff --git a/charts/diode/templates/diode-reconciler-deployment.yaml b/charts/diode/templates/diode-reconciler-deployment.yaml index 4e901465..93180677 100644 --- a/charts/diode/templates/diode-reconciler-deployment.yaml +++ b/charts/diode/templates/diode-reconciler-deployment.yaml @@ -84,9 +84,15 @@ spec: resources: {{- toYaml .| nindent 12 }} {{- end }} - {{- if .Values.diodeReconciler.extraEnvs }} - env: {{- include "common.tplvalues.render" (dict "value" .Values.diodeReconciler.extraEnvs "context" $) | nindent 12 }} - {{- end }} + env: + - name: POSTGRES_PASSWORD + valueFrom: + secretKeyRef: + name: {{ include "diode.postgresql.secretname" . }} + key: {{ include "diode.postgresql.secretkey" . }} + {{- if .Values.diodeReconciler.extraEnvs }} + {{- include "common.tplvalues.render" (dict "value" .Values.diodeReconciler.extraEnvs "context" $) | nindent 12 }} + {{- end }} envFrom: - configMapRef: name: {{ include "diode.reconciler.configmap" . }} diff --git a/charts/diode/templates/diode-secrets.yaml b/charts/diode/templates/diode-secrets.yaml new file mode 100644 index 00000000..1bdb5d96 --- /dev/null +++ b/charts/diode/templates/diode-secrets.yaml @@ -0,0 +1,16 @@ +{{- if and (not .Values.postgresql.enabled) (not .Values.externalPostgresql.existingSecretName) (not (empty .Values.externalPostgresql.password)) }} +--- +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "diode.postgresql.secretname" . }} + namespace: {{ include "diode.namespace" . }} + labels: + {{- include "diode.labels" . | nindent 4 }} + {{- if .Values.global.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.global.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +type: Opaque +data: + {{ include "diode.postgresql.secretkey" . }}: {{ .Values.externalPostgresql.password | b64enc | quote }} +{{- end }} \ No newline at end of file diff --git a/charts/diode/values.yaml b/charts/diode/values.yaml index 65c20817..ae772e64 100644 --- a/charts/diode/values.yaml +++ b/charts/diode/values.yaml @@ -24,7 +24,6 @@ global: # -- common labels for all resources commonLabels: {} - diode: # -- environment name environment: development @@ -35,6 +34,16 @@ externalPostgresql: hostname: localhost # -- port port: 5432 + # -- database name + database: diode + # -- username + username: diode + # -- password + password: "" + # -- existing postgresql secret + existingSecretName: "" + # -- key of password in existing postgresql secret + existingSecretKey: postgresql-password # External Redis configuration (optional) externalRedis: From 1811972354a9aabbf30061fca467e863ba9ce45b Mon Sep 17 00:00:00 2001 From: Michal Fiedorowicz Date: Fri, 19 Sep 2025 17:32:03 +0200 Subject: [PATCH 7/9] chore: update project status to General Availability (GA) (#405) Signed-off-by: Michal Fiedorowicz --- README.md | 2 +- docs/index.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1ecdec1a..841cfa00 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Diode is a data ingestion service for NetBox that greatly simplifies and enhance ## Project Status -The Diode project is currently in the _Public Preview_ stage. Please see [NetBox Labs Product and Feature Lifecycle](https://netboxlabs.com/docs/console/product_feature_lifecycle/) for more details. We actively welcome feedback to help identify and prioritize bugs, new features and areas of improvement. +The Diode project is currently in the _General Availability (GA)_ stage. Please see [NetBox Labs Product and Feature Lifecycle](https://netboxlabs.com/docs/console/product_feature_lifecycle/) for more details. We actively welcome feedback to help identify and prioritize bugs, new features and areas of improvement. ## Prerequisites diff --git a/docs/index.md b/docs/index.md index 673d2b95..cb47c4cb 100644 --- a/docs/index.md +++ b/docs/index.md @@ -4,7 +4,7 @@ Diode is a data ingestion service for NetBox that greatly simplifies and enhance ## Project Status -The Diode project is currently in the _Public Preview_ stage. Please see [NetBox Labs Product and Feature Lifecycle](https://netboxlabs.com/docs/console/product_feature_lifecycle/) for more details. We actively welcome feedback to help identify and prioritize bugs, new features and areas of improvement. +The Diode project is currently in the _General Availability (GA)_ stage. Please see [NetBox Labs Product and Feature Lifecycle](https://netboxlabs.com/docs/console/product_feature_lifecycle/) for more details. We actively welcome feedback to help identify and prioritize bugs, new features and areas of improvement. ## Prerequisites From d4ffec89bcc60198cd23ff4ed639c41dafbb0e9e Mon Sep 17 00:00:00 2001 From: Michal Fiedorowicz Date: Fri, 3 Oct 2025 13:47:59 +0200 Subject: [PATCH 8/9] feat: support for NetBox v4.4 (#407) Signed-off-by: Michal Fiedorowicz --- diode-proto/diode/v1/ingester.proto | 93 +- .../gen/diode/v1/diodepb/ingester.pb.go | 1053 ++++++------ .../diode/v1/diodepb/ingester.pb.validate.go | 140 +- .../gen/diode/v1/diodepb/ingester_grpc.pb.go | 4 +- .../diode/v1/reconcilerpb/reconciler.pb.go | 2 +- diode-server/gen/netbox/server_utils.go | 1453 +++++++++-------- docs/diode-proto.md | 7 +- 7 files changed, 1508 insertions(+), 1244 deletions(-) diff --git a/diode-proto/diode/v1/ingester.proto b/diode-proto/diode/v1/ingester.proto index c5e00d14..46f17e4a 100644 --- a/diode-proto/diode/v1/ingester.proto +++ b/diode-proto/diode/v1/ingester.proto @@ -1,8 +1,8 @@ syntax = "proto3"; // Generated Code. DO NOT EDIT. -// Source: NetBox v4.3.4 -// Timestamp: 2025-07-23 01:46:42Z +// Source: NetBox v4.4.2 +// Timestamp: 2025-10-02 12:39:08Z package diode.v1; @@ -1416,21 +1416,45 @@ message Interface { optional string label = 4; string type = 5 [(validate.rules).string = { in: [ + "1000base-bx10-d", + "1000base-bx10-u", + "1000base-cwdm", + "1000base-cx", + "1000base-dwdm", + "1000base-ex", "1000base-kx", + "1000base-lsx", "1000base-lx", + "1000base-lx10", "1000base-sx", "1000base-t", "1000base-tx", "1000base-x-gbic", "1000base-x-sfp", + "1000base-zx", "100base-fx", "100base-lfx", "100base-t1", "100base-tx", "100base-x-sfp", + "100gbase-cr1", + "100gbase-cr10", + "100gbase-cr2", + "100gbase-cr4", + "100gbase-cwdm4", + "100gbase-dr", + "100gbase-er4", + "100gbase-fr1", "100gbase-kp4", "100gbase-kr2", "100gbase-kr4", + "100gbase-lr1", + "100gbase-lr4", + "100gbase-sr1", + "100gbase-sr1.2", + "100gbase-sr10", + "100gbase-sr2", + "100gbase-sr4", "100gbase-x-cfp", "100gbase-x-cfp2", "100gbase-x-cfp4", @@ -1440,29 +1464,64 @@ message Interface { "100gbase-x-qsfp28", "100gbase-x-qsfpdd", "100gbase-x-sfpdd", + "100gbase-zr", "10g-epon", + "10gbase-br-d", + "10gbase-br-u", "10gbase-cx4", + "10gbase-er", "10gbase-kr", "10gbase-kx4", + "10gbase-lr", + "10gbase-lrm", + "10gbase-lx4", + "10gbase-sr", "10gbase-t", "10gbase-x-sfpp", "10gbase-x-x2", "10gbase-x-xenpak", "10gbase-x-xfp", + "10gbase-zr", "128gfc-qsfp28", "16gfc-sfpp", "1gfc-sfp", "2.5gbase-kx", "2.5gbase-t", + "200gbase-cr2", + "200gbase-cr4", + "200gbase-dr4", + "200gbase-er4", + "200gbase-fr4", + "200gbase-lr4", + "200gbase-sr2", + "200gbase-sr4", + "200gbase-vr2", "200gbase-x-cfp2", "200gbase-x-qsfp56", "200gbase-x-qsfpdd", "25g-pon", + "25gbase-cr", + "25gbase-er", "25gbase-kr", + "25gbase-lr", + "25gbase-sr", + "25gbase-t", "25gbase-x-sfp28", "2gfc-sfp", "32gfc-sfp28", "32gfc-sfpp", + "400gbase-cr4", + "400gbase-dr4", + "400gbase-er8", + "400gbase-fr4", + "400gbase-fr8", + "400gbase-lr4", + "400gbase-lr8", + "400gbase-sr16", + "400gbase-sr4", + "400gbase-sr4_2", + "400gbase-sr8", + "400gbase-vr4", "400gbase-x-cdfp", "400gbase-x-cfp2", "400gbase-x-cfp8", @@ -1470,12 +1529,23 @@ message Interface { "400gbase-x-osfp-rhs", "400gbase-x-qsfp112", "400gbase-x-qsfpdd", + "400gbase-zr", + "40gbase-cr4", + "40gbase-er4", + "40gbase-fr4", "40gbase-kr4", + "40gbase-lr4", + "40gbase-sr4", "40gbase-x-qsfpp", "4g", "4gfc-sfp", "50g-pon", + "50gbase-cr", + "50gbase-er", + "50gbase-fr", "50gbase-kr", + "50gbase-lr", + "50gbase-sr", "50gbase-x-sfp28", "50gbase-x-sfp56", "5g", @@ -1484,6 +1554,10 @@ message Interface { "64gfc-qsfpp", "64gfc-sfpdd", "64gfc-sfpp", + "800gbase-cr8", + "800gbase-dr8", + "800gbase-sr8", + "800gbase-vr8", "800gbase-x-osfp", "800gbase-x-qsfpdd", "8gfc-sfpp", @@ -2112,6 +2186,8 @@ message Platform { optional string description = 4; repeated Tag tags = 5; map custom_fields = 6; + optional Platform parent = 7; + optional string comments = 8; } message PowerFeed { @@ -2186,6 +2262,7 @@ message PowerOutlet { "iec-60309-p-n-e-9h", "iec-60320-c13", "iec-60320-c15", + "iec-60320-c17", "iec-60320-c19", "iec-60320-c21", "iec-60320-c5", @@ -2323,6 +2400,7 @@ message PowerPort { "iec-60309-p-n-e-9h", "iec-60320-c14", "iec-60320-c16", + "iec-60320-c18", "iec-60320-c20", "iec-60320-c22", "iec-60320-c6", @@ -2564,6 +2642,13 @@ message RackReservation { optional string comments = 5; repeated Tag tags = 6; map custom_fields = 7; + optional string status = 8 [(validate.rules).string = { + in: [ + "active", + "pending", + "stale" + ] + }]; } message RackRole { @@ -3512,8 +3597,8 @@ message CustomField { optional string default = 14; optional string related_object_filter = 15; optional int64 weight = 16; - optional int64 validation_minimum = 17; - optional int64 validation_maximum = 18; + optional double validation_minimum = 17; + optional double validation_maximum = 18; optional string validation_regex = 19; optional CustomFieldChoiceSet choice_set = 20; optional string comments = 21; diff --git a/diode-server/gen/diode/v1/diodepb/ingester.pb.go b/diode-server/gen/diode/v1/diodepb/ingester.pb.go index 1b07f663..0dceef74 100644 --- a/diode-server/gen/diode/v1/diodepb/ingester.pb.go +++ b/diode-server/gen/diode/v1/diodepb/ingester.pb.go @@ -1,12 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc (unknown) // source: diode/v1/ingester.proto // Generated Code. DO NOT EDIT. -// Source: NetBox v4.3.4 -// Timestamp: 2025-07-23 01:46:42Z +// Source: NetBox v4.4.2 +// Timestamp: 2025-10-02 12:39:08Z package diodepb @@ -15134,6 +15134,8 @@ type Platform struct { Description *string `protobuf:"bytes,4,opt,name=description,proto3,oneof" json:"description,omitempty"` Tags []*Tag `protobuf:"bytes,5,rep,name=tags,proto3" json:"tags,omitempty"` CustomFields map[string]*CustomFieldValue `protobuf:"bytes,6,rep,name=custom_fields,json=customFields,proto3" json:"custom_fields,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + Parent *Platform `protobuf:"bytes,7,opt,name=parent,proto3,oneof" json:"parent,omitempty"` + Comments *string `protobuf:"bytes,8,opt,name=comments,proto3,oneof" json:"comments,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -15210,6 +15212,20 @@ func (x *Platform) GetCustomFields() map[string]*CustomFieldValue { return nil } +func (x *Platform) GetParent() *Platform { + if x != nil { + return x.Parent + } + return nil +} + +func (x *Platform) GetComments() string { + if x != nil && x.Comments != nil { + return *x.Comments + } + return "" +} + type PowerFeed struct { state protoimpl.MessageState `protogen:"open.v1"` PowerPanel *PowerPanel `protobuf:"bytes,1,opt,name=power_panel,json=powerPanel,proto3" json:"power_panel,omitempty"` @@ -16577,6 +16593,7 @@ type RackReservation struct { Comments *string `protobuf:"bytes,5,opt,name=comments,proto3,oneof" json:"comments,omitempty"` Tags []*Tag `protobuf:"bytes,6,rep,name=tags,proto3" json:"tags,omitempty"` CustomFields map[string]*CustomFieldValue `protobuf:"bytes,7,rep,name=custom_fields,json=customFields,proto3" json:"custom_fields,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + Status *string `protobuf:"bytes,8,opt,name=status,proto3,oneof" json:"status,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -16660,6 +16677,13 @@ func (x *RackReservation) GetCustomFields() map[string]*CustomFieldValue { return nil } +func (x *RackReservation) GetStatus() string { + if x != nil && x.Status != nil { + return *x.Status + } + return "" +} + type RackRole struct { state protoimpl.MessageState `protogen:"open.v1"` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` @@ -21806,8 +21830,8 @@ type CustomField struct { Default *string `protobuf:"bytes,14,opt,name=default,proto3,oneof" json:"default,omitempty"` RelatedObjectFilter *string `protobuf:"bytes,15,opt,name=related_object_filter,json=relatedObjectFilter,proto3,oneof" json:"related_object_filter,omitempty"` Weight *int64 `protobuf:"varint,16,opt,name=weight,proto3,oneof" json:"weight,omitempty"` - ValidationMinimum *int64 `protobuf:"varint,17,opt,name=validation_minimum,json=validationMinimum,proto3,oneof" json:"validation_minimum,omitempty"` - ValidationMaximum *int64 `protobuf:"varint,18,opt,name=validation_maximum,json=validationMaximum,proto3,oneof" json:"validation_maximum,omitempty"` + ValidationMinimum *float64 `protobuf:"fixed64,17,opt,name=validation_minimum,json=validationMinimum,proto3,oneof" json:"validation_minimum,omitempty"` + ValidationMaximum *float64 `protobuf:"fixed64,18,opt,name=validation_maximum,json=validationMaximum,proto3,oneof" json:"validation_maximum,omitempty"` ValidationRegex *string `protobuf:"bytes,19,opt,name=validation_regex,json=validationRegex,proto3,oneof" json:"validation_regex,omitempty"` ChoiceSet *CustomFieldChoiceSet `protobuf:"bytes,20,opt,name=choice_set,json=choiceSet,proto3,oneof" json:"choice_set,omitempty"` Comments *string `protobuf:"bytes,21,opt,name=comments,proto3,oneof" json:"comments,omitempty"` @@ -21958,14 +21982,14 @@ func (x *CustomField) GetWeight() int64 { return 0 } -func (x *CustomField) GetValidationMinimum() int64 { +func (x *CustomField) GetValidationMinimum() float64 { if x != nil && x.ValidationMinimum != nil { return *x.ValidationMinimum } return 0 } -func (x *CustomField) GetValidationMaximum() int64 { +func (x *CustomField) GetValidationMaximum() float64 { if x != nil && x.ValidationMaximum != nil { return *x.ValidationMaximum } @@ -25076,24 +25100,37 @@ const file_diode_v1_ingester_proto_rawDesc = "" + "\x19_authentication_algorithmB\x16\n" + "\x14_sa_lifetime_secondsB\x13\n" + "\x11_sa_lifetime_dataB\v\n" + - "\t_comments\"\xe67\n" + + "\t_comments\"\xda?\n" + "\tInterface\x12(\n" + "\x06device\x18\x01 \x01(\v2\x10.diode.v1.DeviceR\x06device\x12-\n" + "\x06module\x18\x02 \x01(\v2\x10.diode.v1.ModuleH\x00R\x06module\x88\x01\x01\x12\x12\n" + "\x04name\x18\x03 \x01(\tR\x04name\x12\x19\n" + - "\x05label\x18\x04 \x01(\tH\x01R\x05label\x88\x01\x01\x12\xaf\x0e\n" + - "\x04type\x18\x05 \x01(\tB\x9a\x0e\xfaB\x96\x0er\x93\x0eR\v1000base-kxR\v1000base-lxR\v1000base-sxR\n" + - "1000base-tR\v1000base-txR\x0f1000base-x-gbicR\x0e1000base-x-sfpR\n" + + "\x05label\x18\x04 \x01(\tH\x01R\x05label\x88\x01\x01\x12\xa3\x16\n" + + "\x04type\x18\x05 \x01(\tB\x8e\x16\xfaB\x8a\x16r\x87\x16R\x0f1000base-bx10-dR\x0f1000base-bx10-uR\r1000base-cwdmR\v1000base-cxR\r1000base-dwdmR\v1000base-exR\v1000base-kxR\f1000base-lsxR\v1000base-lxR\r1000base-lx10R\v1000base-sxR\n" + + "1000base-tR\v1000base-txR\x0f1000base-x-gbicR\x0e1000base-x-sfpR\v1000base-zxR\n" + "100base-fxR\v100base-lfxR\n" + "100base-t1R\n" + - "100base-txR\r100base-x-sfpR\f100gbase-kp4R\f100gbase-kr2R\f100gbase-kr4R\x0e100gbase-x-cfpR\x0f100gbase-x-cfp2R\x0f100gbase-x-cfp4R\x0f100gbase-x-cpakR\x0e100gbase-x-cxpR\x0f100gbase-x-dsfpR\x11100gbase-x-qsfp28R\x11100gbase-x-qsfpddR\x10100gbase-x-sfpddR\b10g-eponR\v10gbase-cx4R\n" + - "10gbase-krR\v10gbase-kx4R\t10gbase-tR\x0e10gbase-x-sfppR\f10gbase-x-x2R\x1010gbase-x-xenpakR\r10gbase-x-xfpR\r128gfc-qsfp28R\n" + + "100base-txR\r100base-x-sfpR\f100gbase-cr1R\r100gbase-cr10R\f100gbase-cr2R\f100gbase-cr4R\x0e100gbase-cwdm4R\v100gbase-drR\f100gbase-er4R\f100gbase-fr1R\f100gbase-kp4R\f100gbase-kr2R\f100gbase-kr4R\f100gbase-lr1R\f100gbase-lr4R\f100gbase-sr1R\x0e100gbase-sr1.2R\r100gbase-sr10R\f100gbase-sr2R\f100gbase-sr4R\x0e100gbase-x-cfpR\x0f100gbase-x-cfp2R\x0f100gbase-x-cfp4R\x0f100gbase-x-cpakR\x0e100gbase-x-cxpR\x0f100gbase-x-dsfpR\x11100gbase-x-qsfp28R\x11100gbase-x-qsfpddR\x10100gbase-x-sfpddR\v100gbase-zrR\b10g-eponR\f10gbase-br-dR\f10gbase-br-uR\v10gbase-cx4R\n" + + "10gbase-erR\n" + + "10gbase-krR\v10gbase-kx4R\n" + + "10gbase-lrR\v10gbase-lrmR\v10gbase-lx4R\n" + + "10gbase-srR\t10gbase-tR\x0e10gbase-x-sfppR\f10gbase-x-x2R\x1010gbase-x-xenpakR\r10gbase-x-xfpR\n" + + "10gbase-zrR\r128gfc-qsfp28R\n" + "16gfc-sfppR\b1gfc-sfpR\v2.5gbase-kxR\n" + - "2.5gbase-tR\x0f200gbase-x-cfp2R\x11200gbase-x-qsfp56R\x11200gbase-x-qsfpddR\a25g-ponR\n" + - "25gbase-krR\x0f25gbase-x-sfp28R\b2gfc-sfpR\v32gfc-sfp28R\n" + - "32gfc-sfppR\x0f400gbase-x-cdfpR\x0f400gbase-x-cfp2R\x0f400gbase-x-cfp8R\x0f400gbase-x-osfpR\x13400gbase-x-osfp-rhsR\x12400gbase-x-qsfp112R\x11400gbase-x-qsfpddR\v40gbase-kr4R\x0f40gbase-x-qsfppR\x024gR\b4gfc-sfpR\a50g-ponR\n" + - "50gbase-krR\x0f50gbase-x-sfp28R\x0f50gbase-x-sfp56R\x025gR\t5gbase-krR\b5gbase-tR\v64gfc-qsfppR\v64gfc-sfpddR\n" + - "64gfc-sfppR\x0f800gbase-x-osfpR\x11800gbase-x-qsfpddR\t8gfc-sfppR\x04bponR\x06bridgeR\x04cdmaR\x0fcisco-flexstackR\x14cisco-flexstack-plusR\x0fcisco-stackwiseR\x13cisco-stackwise-160R\x12cisco-stackwise-1tR\x13cisco-stackwise-320R\x13cisco-stackwise-480R\x12cisco-stackwise-80R\x14cisco-stackwise-plusR\x06docsisR\x02e1R\x02e3R\x04eponR\x13extreme-summitstackR\x17extreme-summitstack-128R\x17extreme-summitstack-256R\x17extreme-summitstack-512R\x04gponR\x03gsmR\vieee802.11aR\fieee802.11acR\fieee802.11adR\fieee802.11axR\fieee802.11ayR\fieee802.11beR\vieee802.11gR\vieee802.11nR\fieee802.15.1R\fieee802.15.4R\x0einfiniband-ddrR\x0einfiniband-edrR\x0einfiniband-fdrR\x10infiniband-fdr10R\x0einfiniband-hdrR\x0einfiniband-ndrR\x0einfiniband-qdrR\x0einfiniband-sdrR\x0einfiniband-xdrR\vjuniper-vcpR\x03lagR\x03lteR\x04mocaR\ang-pon2R\x05otherR\x0eother-wirelessR\n" + + "2.5gbase-tR\f200gbase-cr2R\f200gbase-cr4R\f200gbase-dr4R\f200gbase-er4R\f200gbase-fr4R\f200gbase-lr4R\f200gbase-sr2R\f200gbase-sr4R\f200gbase-vr2R\x0f200gbase-x-cfp2R\x11200gbase-x-qsfp56R\x11200gbase-x-qsfpddR\a25g-ponR\n" + + "25gbase-crR\n" + + "25gbase-erR\n" + + "25gbase-krR\n" + + "25gbase-lrR\n" + + "25gbase-srR\t25gbase-tR\x0f25gbase-x-sfp28R\b2gfc-sfpR\v32gfc-sfp28R\n" + + "32gfc-sfppR\f400gbase-cr4R\f400gbase-dr4R\f400gbase-er8R\f400gbase-fr4R\f400gbase-fr8R\f400gbase-lr4R\f400gbase-lr8R\r400gbase-sr16R\f400gbase-sr4R\x0e400gbase-sr4_2R\f400gbase-sr8R\f400gbase-vr4R\x0f400gbase-x-cdfpR\x0f400gbase-x-cfp2R\x0f400gbase-x-cfp8R\x0f400gbase-x-osfpR\x13400gbase-x-osfp-rhsR\x12400gbase-x-qsfp112R\x11400gbase-x-qsfpddR\v400gbase-zrR\v40gbase-cr4R\v40gbase-er4R\v40gbase-fr4R\v40gbase-kr4R\v40gbase-lr4R\v40gbase-sr4R\x0f40gbase-x-qsfppR\x024gR\b4gfc-sfpR\a50g-ponR\n" + + "50gbase-crR\n" + + "50gbase-erR\n" + + "50gbase-frR\n" + + "50gbase-krR\n" + + "50gbase-lrR\n" + + "50gbase-srR\x0f50gbase-x-sfp28R\x0f50gbase-x-sfp56R\x025gR\t5gbase-krR\b5gbase-tR\v64gfc-qsfppR\v64gfc-sfpddR\n" + + "64gfc-sfppR\f800gbase-cr8R\f800gbase-dr8R\f800gbase-sr8R\f800gbase-vr8R\x0f800gbase-x-osfpR\x11800gbase-x-qsfpddR\t8gfc-sfppR\x04bponR\x06bridgeR\x04cdmaR\x0fcisco-flexstackR\x14cisco-flexstack-plusR\x0fcisco-stackwiseR\x13cisco-stackwise-160R\x12cisco-stackwise-1tR\x13cisco-stackwise-320R\x13cisco-stackwise-480R\x12cisco-stackwise-80R\x14cisco-stackwise-plusR\x06docsisR\x02e1R\x02e3R\x04eponR\x13extreme-summitstackR\x17extreme-summitstack-128R\x17extreme-summitstack-256R\x17extreme-summitstack-512R\x04gponR\x03gsmR\vieee802.11aR\fieee802.11acR\fieee802.11adR\fieee802.11axR\fieee802.11ayR\fieee802.11beR\vieee802.11gR\vieee802.11nR\fieee802.15.1R\fieee802.15.4R\x0einfiniband-ddrR\x0einfiniband-edrR\x0einfiniband-fdrR\x10infiniband-fdr10R\x0einfiniband-hdrR\x0einfiniband-ndrR\x0einfiniband-qdrR\x0einfiniband-sdrR\x0einfiniband-xdrR\vjuniper-vcpR\x03lagR\x03lteR\x04mocaR\ang-pon2R\x05otherR\x0eother-wirelessR\n" + "sonet-oc12R\vsonet-oc192R\fsonet-oc1920R\tsonet-oc3R\fsonet-oc3840R\n" + "sonet-oc48R\vsonet-oc768R\x02t1R\x02t3R\avirtualR\x04xdslR\x06xg-ponR\axgs-ponR\x04type\x12\x1d\n" + "\aenabled\x18\x06 \x01(\bH\x02R\aenabled\x88\x01\x01\x120\n" + @@ -25464,19 +25501,23 @@ const file_diode_v1_ingester_proto_rawDesc = "" + "\t_commentsB\n" + "\n" + "\b_profileB\r\n" + - "\v_attributes\"\x86\x03\n" + + "\v_attributes\"\xf0\x03\n" + "\bPlatform\x12\x12\n" + "\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n" + "\x04slug\x18\x02 \x01(\tR\x04slug\x12?\n" + "\fmanufacturer\x18\x03 \x01(\v2\x16.diode.v1.ManufacturerH\x00R\fmanufacturer\x88\x01\x01\x12%\n" + "\vdescription\x18\x04 \x01(\tH\x01R\vdescription\x88\x01\x01\x12!\n" + "\x04tags\x18\x05 \x03(\v2\r.diode.v1.TagR\x04tags\x12I\n" + - "\rcustom_fields\x18\x06 \x03(\v2$.diode.v1.Platform.CustomFieldsEntryR\fcustomFields\x1a[\n" + + "\rcustom_fields\x18\x06 \x03(\v2$.diode.v1.Platform.CustomFieldsEntryR\fcustomFields\x12/\n" + + "\x06parent\x18\a \x01(\v2\x12.diode.v1.PlatformH\x02R\x06parent\x88\x01\x01\x12\x1f\n" + + "\bcomments\x18\b \x01(\tH\x03R\bcomments\x88\x01\x01\x1a[\n" + "\x11CustomFieldsEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x120\n" + "\x05value\x18\x02 \x01(\v2\x1a.diode.v1.CustomFieldValueR\x05value:\x028\x01B\x0f\n" + "\r_manufacturerB\x0e\n" + - "\f_description\"\xd9\a\n" + + "\f_descriptionB\t\n" + + "\a_parentB\v\n" + + "\t_comments\"\xd9\a\n" + "\tPowerFeed\x125\n" + "\vpower_panel\x18\x01 \x01(\v2\x14.diode.v1.PowerPanelR\n" + "powerPanel\x12'\n" + @@ -25513,17 +25554,17 @@ const file_diode_v1_ingester_proto_rawDesc = "" + "\x0f_mark_connectedB\x0e\n" + "\f_descriptionB\t\n" + "\a_tenantB\v\n" + - "\t_comments\"\xc9\x10\n" + + "\t_comments\"\xd8\x10\n" + "\vPowerOutlet\x12(\n" + "\x06device\x18\x01 \x01(\v2\x10.diode.v1.DeviceR\x06device\x12-\n" + "\x06module\x18\x02 \x01(\v2\x10.diode.v1.ModuleH\x00R\x06module\x88\x01\x01\x12\x12\n" + "\x04name\x18\x03 \x01(\tR\x04name\x12\x19\n" + - "\x05label\x18\x04 \x01(\tH\x01R\x05label\x88\x01\x01\x12\xdb\n" + + "\x05label\x18\x04 \x01(\tH\x01R\x05label\x88\x01\x01\x12\xea\n" + "\n" + - "\x04type\x18\x05 \x01(\tB\xc1\n" + - "\xfaB\xbd\n" + - "r\xba\n" + - "R\aCS6360CR\aCS6364CR\aCS8164CR\aCS8264CR\aCS8364CR\aCS8464CR\vdc-terminalR\teaton-c39R\thardwiredR\ahdot-cxR\x11iec-60309-2p-e-4hR\x11iec-60309-2p-e-6hR\x11iec-60309-2p-e-9hR\x11iec-60309-3p-e-4hR\x11iec-60309-3p-e-6hR\x11iec-60309-3p-e-9hR\x13iec-60309-3p-n-e-4hR\x13iec-60309-3p-n-e-6hR\x13iec-60309-3p-n-e-9hR\x12iec-60309-p-n-e-4hR\x12iec-60309-p-n-e-6hR\x12iec-60309-p-n-e-9hR\riec-60320-c13R\riec-60320-c15R\riec-60320-c19R\riec-60320-c21R\fiec-60320-c5R\fiec-60320-c7R\viec-60906-1R\x05ita-eR\x05ita-fR\x05ita-gR\x05ita-hR\x05ita-iR\x05ita-jR\x05ita-kR\x05ita-lR\x05ita-mR\x11ita-multistandardR\x05ita-nR\x05ita-oR\x13molex-micro-fit-1x2R\x13molex-micro-fit-2x2R\x13molex-micro-fit-2x4R\rnbr-14136-10aR\rnbr-14136-20aR\n" + + "\x04type\x18\x05 \x01(\tB\xd0\n" + + "\xfaB\xcc\n" + + "r\xc9\n" + + "R\aCS6360CR\aCS6364CR\aCS8164CR\aCS8264CR\aCS8364CR\aCS8464CR\vdc-terminalR\teaton-c39R\thardwiredR\ahdot-cxR\x11iec-60309-2p-e-4hR\x11iec-60309-2p-e-6hR\x11iec-60309-2p-e-9hR\x11iec-60309-3p-e-4hR\x11iec-60309-3p-e-6hR\x11iec-60309-3p-e-9hR\x13iec-60309-3p-n-e-4hR\x13iec-60309-3p-n-e-6hR\x13iec-60309-3p-n-e-9hR\x12iec-60309-p-n-e-4hR\x12iec-60309-p-n-e-6hR\x12iec-60309-p-n-e-9hR\riec-60320-c13R\riec-60320-c15R\riec-60320-c17R\riec-60320-c19R\riec-60320-c21R\fiec-60320-c5R\fiec-60320-c7R\viec-60906-1R\x05ita-eR\x05ita-fR\x05ita-gR\x05ita-hR\x05ita-iR\x05ita-jR\x05ita-kR\x05ita-lR\x05ita-mR\x11ita-multistandardR\x05ita-nR\x05ita-oR\x13molex-micro-fit-1x2R\x13molex-micro-fit-2x2R\x13molex-micro-fit-2x4R\rnbr-14136-10aR\rnbr-14136-20aR\n" + "nema-1-15rR\vnema-10-30rR\vnema-10-50rR\vnema-14-20rR\vnema-14-30rR\vnema-14-50rR\vnema-14-60rR\vnema-15-15rR\vnema-15-20rR\vnema-15-30rR\vnema-15-50rR\vnema-15-60rR\n" + "nema-5-15rR\n" + "nema-5-20rR\n" + @@ -25570,16 +25611,13 @@ const file_diode_v1_ingester_proto_rawDesc = "" + "\x05value\x18\x02 \x01(\v2\x1a.diode.v1.CustomFieldValueR\x05value:\x028\x01B\v\n" + "\t_locationB\x0e\n" + "\f_descriptionB\v\n" + - "\t_comments\"\x81\x10\n" + + "\t_comments\"\x90\x10\n" + "\tPowerPort\x12(\n" + "\x06device\x18\x01 \x01(\v2\x10.diode.v1.DeviceR\x06device\x12-\n" + "\x06module\x18\x02 \x01(\v2\x10.diode.v1.ModuleH\x00R\x06module\x88\x01\x01\x12\x12\n" + "\x04name\x18\x03 \x01(\tR\x04name\x12\x19\n" + - "\x05label\x18\x04 \x01(\tH\x01R\x05label\x88\x01\x01\x12\x93\v\n" + - "\x04type\x18\x05 \x01(\tB\xf9\n" + - "\xfaB\xf5\n" + - "r\xf2\n" + - "R\acs6361cR\acs6365cR\acs8165cR\acs8265cR\acs8365cR\acs8465cR\vdc-terminalR\thardwiredR\x11iec-60309-2p-e-4hR\x11iec-60309-2p-e-6hR\x11iec-60309-2p-e-9hR\x11iec-60309-3p-e-4hR\x11iec-60309-3p-e-6hR\x11iec-60309-3p-e-9hR\x13iec-60309-3p-n-e-4hR\x13iec-60309-3p-n-e-6hR\x13iec-60309-3p-n-e-9hR\x12iec-60309-p-n-e-4hR\x12iec-60309-p-n-e-6hR\x12iec-60309-p-n-e-9hR\riec-60320-c14R\riec-60320-c16R\riec-60320-c20R\riec-60320-c22R\fiec-60320-c6R\fiec-60320-c8R\viec-60906-1R\x05ita-cR\x05ita-eR\x06ita-efR\x05ita-fR\x05ita-gR\x05ita-hR\x05ita-iR\x05ita-jR\x05ita-kR\x05ita-lR\x05ita-mR\x05ita-nR\x05ita-oR\x13molex-micro-fit-1x2R\x13molex-micro-fit-2x2R\x13molex-micro-fit-2x4R\rnbr-14136-10aR\rnbr-14136-20aR\n" + + "\x05label\x18\x04 \x01(\tH\x01R\x05label\x88\x01\x01\x12\xa2\v\n" + + "\x04type\x18\x05 \x01(\tB\x88\v\xfaB\x84\vr\x81\vR\acs6361cR\acs6365cR\acs8165cR\acs8265cR\acs8365cR\acs8465cR\vdc-terminalR\thardwiredR\x11iec-60309-2p-e-4hR\x11iec-60309-2p-e-6hR\x11iec-60309-2p-e-9hR\x11iec-60309-3p-e-4hR\x11iec-60309-3p-e-6hR\x11iec-60309-3p-e-9hR\x13iec-60309-3p-n-e-4hR\x13iec-60309-3p-n-e-6hR\x13iec-60309-3p-n-e-9hR\x12iec-60309-p-n-e-4hR\x12iec-60309-p-n-e-6hR\x12iec-60309-p-n-e-9hR\riec-60320-c14R\riec-60320-c16R\riec-60320-c18R\riec-60320-c20R\riec-60320-c22R\fiec-60320-c6R\fiec-60320-c8R\viec-60906-1R\x05ita-cR\x05ita-eR\x06ita-efR\x05ita-fR\x05ita-gR\x05ita-hR\x05ita-iR\x05ita-jR\x05ita-kR\x05ita-lR\x05ita-mR\x05ita-nR\x05ita-oR\x13molex-micro-fit-1x2R\x13molex-micro-fit-2x2R\x13molex-micro-fit-2x4R\rnbr-14136-10aR\rnbr-14136-20aR\n" + "nema-1-15pR\vnema-10-30pR\vnema-10-50pR\vnema-14-20pR\vnema-14-30pR\vnema-14-50pR\vnema-14-60pR\vnema-15-15pR\vnema-15-20pR\vnema-15-30pR\vnema-15-50pR\vnema-15-60pR\n" + "nema-5-15pR\n" + "nema-5-20pR\n" + @@ -25772,7 +25810,7 @@ const file_diode_v1_ingester_proto_rawDesc = "" + "\b_airflowB\x0e\n" + "\f_descriptionB\v\n" + "\t_commentsB\x0f\n" + - "\r_outer_height\"\xa7\x03\n" + + "\r_outer_height\"\xee\x03\n" + "\x0fRackReservation\x12\"\n" + "\x04rack\x18\x01 \x01(\v2\x0e.diode.v1.RackR\x04rack\x12\x14\n" + "\x05units\x18\x02 \x03(\x03R\x05units\x12-\n" + @@ -25780,12 +25818,14 @@ const file_diode_v1_ingester_proto_rawDesc = "" + "\vdescription\x18\x04 \x01(\tR\vdescription\x12\x1f\n" + "\bcomments\x18\x05 \x01(\tH\x01R\bcomments\x88\x01\x01\x12!\n" + "\x04tags\x18\x06 \x03(\v2\r.diode.v1.TagR\x04tags\x12P\n" + - "\rcustom_fields\x18\a \x03(\v2+.diode.v1.RackReservation.CustomFieldsEntryR\fcustomFields\x1a[\n" + + "\rcustom_fields\x18\a \x03(\v2+.diode.v1.RackReservation.CustomFieldsEntryR\fcustomFields\x12:\n" + + "\x06status\x18\b \x01(\tB\x1d\xfaB\x1ar\x18R\x06activeR\apendingR\x05staleH\x02R\x06status\x88\x01\x01\x1a[\n" + "\x11CustomFieldsEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x120\n" + "\x05value\x18\x02 \x01(\v2\x1a.diode.v1.CustomFieldValueR\x05value:\x028\x01B\t\n" + "\a_tenantB\v\n" + - "\t_comments\"\xd9\x02\n" + + "\t_commentsB\t\n" + + "\a_status\"\xd9\x02\n" + "\bRackRole\x12\x12\n" + "\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n" + "\x04slug\x18\x02 \x01(\tR\x04slug\x12\x19\n" + @@ -26535,8 +26575,8 @@ const file_diode_v1_ingester_proto_rawDesc = "" + "\adefault\x18\x0e \x01(\tH\vR\adefault\x88\x01\x01\x127\n" + "\x15related_object_filter\x18\x0f \x01(\tH\fR\x13relatedObjectFilter\x88\x01\x01\x12\x1b\n" + "\x06weight\x18\x10 \x01(\x03H\rR\x06weight\x88\x01\x01\x122\n" + - "\x12validation_minimum\x18\x11 \x01(\x03H\x0eR\x11validationMinimum\x88\x01\x01\x122\n" + - "\x12validation_maximum\x18\x12 \x01(\x03H\x0fR\x11validationMaximum\x88\x01\x01\x12.\n" + + "\x12validation_minimum\x18\x11 \x01(\x01H\x0eR\x11validationMinimum\x88\x01\x01\x122\n" + + "\x12validation_maximum\x18\x12 \x01(\x01H\x0fR\x11validationMaximum\x88\x01\x01\x12.\n" + "\x10validation_regex\x18\x13 \x01(\tH\x10R\x0fvalidationRegex\x88\x01\x01\x12B\n" + "\n" + "choice_set\x18\x14 \x01(\v2\x1e.diode.v1.CustomFieldChoiceSetH\x11R\tchoiceSet\x88\x01\x01\x12\x1f\n" + @@ -27693,474 +27733,475 @@ var file_diode_v1_ingester_proto_depIdxs = []int32{ 47, // 775: diode.v1.Platform.manufacturer:type_name -> diode.v1.Manufacturer 72, // 776: diode.v1.Platform.tags:type_name -> diode.v1.Tag 140, // 777: diode.v1.Platform.custom_fields:type_name -> diode.v1.Platform.CustomFieldsEntry - 54, // 778: diode.v1.PowerFeed.power_panel:type_name -> diode.v1.PowerPanel - 61, // 779: diode.v1.PowerFeed.rack:type_name -> diode.v1.Rack - 73, // 780: diode.v1.PowerFeed.tenant:type_name -> diode.v1.Tenant - 72, // 781: diode.v1.PowerFeed.tags:type_name -> diode.v1.Tag - 141, // 782: diode.v1.PowerFeed.custom_fields:type_name -> diode.v1.PowerFeed.CustomFieldsEntry - 25, // 783: diode.v1.PowerOutlet.device:type_name -> diode.v1.Device - 48, // 784: diode.v1.PowerOutlet.module:type_name -> diode.v1.Module - 55, // 785: diode.v1.PowerOutlet.power_port:type_name -> diode.v1.PowerPort - 72, // 786: diode.v1.PowerOutlet.tags:type_name -> diode.v1.Tag - 142, // 787: diode.v1.PowerOutlet.custom_fields:type_name -> diode.v1.PowerOutlet.CustomFieldsEntry - 70, // 788: diode.v1.PowerPanel.site:type_name -> diode.v1.Site - 45, // 789: diode.v1.PowerPanel.location:type_name -> diode.v1.Location - 72, // 790: diode.v1.PowerPanel.tags:type_name -> diode.v1.Tag - 143, // 791: diode.v1.PowerPanel.custom_fields:type_name -> diode.v1.PowerPanel.CustomFieldsEntry - 25, // 792: diode.v1.PowerPort.device:type_name -> diode.v1.Device - 48, // 793: diode.v1.PowerPort.module:type_name -> diode.v1.Module - 72, // 794: diode.v1.PowerPort.tags:type_name -> diode.v1.Tag - 144, // 795: diode.v1.PowerPort.custom_fields:type_name -> diode.v1.PowerPort.CustomFieldsEntry - 83, // 796: diode.v1.Prefix.vrf:type_name -> diode.v1.VRF - 45, // 797: diode.v1.Prefix.scope_location:type_name -> diode.v1.Location - 66, // 798: diode.v1.Prefix.scope_region:type_name -> diode.v1.Region - 70, // 799: diode.v1.Prefix.scope_site:type_name -> diode.v1.Site - 71, // 800: diode.v1.Prefix.scope_site_group:type_name -> diode.v1.SiteGroup - 73, // 801: diode.v1.Prefix.tenant:type_name -> diode.v1.Tenant - 78, // 802: diode.v1.Prefix.vlan:type_name -> diode.v1.VLAN - 67, // 803: diode.v1.Prefix.role:type_name -> diode.v1.Role - 72, // 804: diode.v1.Prefix.tags:type_name -> diode.v1.Tag - 145, // 805: diode.v1.Prefix.custom_fields:type_name -> diode.v1.Prefix.CustomFieldsEntry - 72, // 806: diode.v1.Provider.tags:type_name -> diode.v1.Tag - 146, // 807: diode.v1.Provider.custom_fields:type_name -> diode.v1.Provider.CustomFieldsEntry - 58, // 808: diode.v1.Provider.accounts:type_name -> diode.v1.ProviderAccount - 3, // 809: diode.v1.Provider.asns:type_name -> diode.v1.ASN - 57, // 810: diode.v1.ProviderAccount.provider:type_name -> diode.v1.Provider - 72, // 811: diode.v1.ProviderAccount.tags:type_name -> diode.v1.Tag - 147, // 812: diode.v1.ProviderAccount.custom_fields:type_name -> diode.v1.ProviderAccount.CustomFieldsEntry - 57, // 813: diode.v1.ProviderNetwork.provider:type_name -> diode.v1.Provider - 72, // 814: diode.v1.ProviderNetwork.tags:type_name -> diode.v1.Tag - 148, // 815: diode.v1.ProviderNetwork.custom_fields:type_name -> diode.v1.ProviderNetwork.CustomFieldsEntry - 72, // 816: diode.v1.RIR.tags:type_name -> diode.v1.Tag - 149, // 817: diode.v1.RIR.custom_fields:type_name -> diode.v1.RIR.CustomFieldsEntry - 70, // 818: diode.v1.Rack.site:type_name -> diode.v1.Site - 45, // 819: diode.v1.Rack.location:type_name -> diode.v1.Location - 73, // 820: diode.v1.Rack.tenant:type_name -> diode.v1.Tenant - 63, // 821: diode.v1.Rack.role:type_name -> diode.v1.RackRole - 64, // 822: diode.v1.Rack.rack_type:type_name -> diode.v1.RackType - 72, // 823: diode.v1.Rack.tags:type_name -> diode.v1.Tag - 150, // 824: diode.v1.Rack.custom_fields:type_name -> diode.v1.Rack.CustomFieldsEntry - 61, // 825: diode.v1.RackReservation.rack:type_name -> diode.v1.Rack - 73, // 826: diode.v1.RackReservation.tenant:type_name -> diode.v1.Tenant - 72, // 827: diode.v1.RackReservation.tags:type_name -> diode.v1.Tag - 151, // 828: diode.v1.RackReservation.custom_fields:type_name -> diode.v1.RackReservation.CustomFieldsEntry - 72, // 829: diode.v1.RackRole.tags:type_name -> diode.v1.Tag - 152, // 830: diode.v1.RackRole.custom_fields:type_name -> diode.v1.RackRole.CustomFieldsEntry - 47, // 831: diode.v1.RackType.manufacturer:type_name -> diode.v1.Manufacturer - 72, // 832: diode.v1.RackType.tags:type_name -> diode.v1.Tag - 153, // 833: diode.v1.RackType.custom_fields:type_name -> diode.v1.RackType.CustomFieldsEntry - 25, // 834: diode.v1.RearPort.device:type_name -> diode.v1.Device - 48, // 835: diode.v1.RearPort.module:type_name -> diode.v1.Module - 72, // 836: diode.v1.RearPort.tags:type_name -> diode.v1.Tag - 154, // 837: diode.v1.RearPort.custom_fields:type_name -> diode.v1.RearPort.CustomFieldsEntry - 66, // 838: diode.v1.Region.parent:type_name -> diode.v1.Region - 72, // 839: diode.v1.Region.tags:type_name -> diode.v1.Tag - 155, // 840: diode.v1.Region.custom_fields:type_name -> diode.v1.Region.CustomFieldsEntry - 72, // 841: diode.v1.Role.tags:type_name -> diode.v1.Tag - 156, // 842: diode.v1.Role.custom_fields:type_name -> diode.v1.Role.CustomFieldsEntry - 73, // 843: diode.v1.RouteTarget.tenant:type_name -> diode.v1.Tenant - 72, // 844: diode.v1.RouteTarget.tags:type_name -> diode.v1.Tag - 157, // 845: diode.v1.RouteTarget.custom_fields:type_name -> diode.v1.RouteTarget.CustomFieldsEntry - 25, // 846: diode.v1.Service.device:type_name -> diode.v1.Device - 90, // 847: diode.v1.Service.virtual_machine:type_name -> diode.v1.VirtualMachine - 72, // 848: diode.v1.Service.tags:type_name -> diode.v1.Tag - 158, // 849: diode.v1.Service.custom_fields:type_name -> diode.v1.Service.CustomFieldsEntry - 35, // 850: diode.v1.Service.ipaddresses:type_name -> diode.v1.IPAddress - 25, // 851: diode.v1.Service.parent_object_device:type_name -> diode.v1.Device - 29, // 852: diode.v1.Service.parent_object_fhrp_group:type_name -> diode.v1.FHRPGroup - 90, // 853: diode.v1.Service.parent_object_virtual_machine:type_name -> diode.v1.VirtualMachine - 66, // 854: diode.v1.Site.region:type_name -> diode.v1.Region - 71, // 855: diode.v1.Site.group:type_name -> diode.v1.SiteGroup - 73, // 856: diode.v1.Site.tenant:type_name -> diode.v1.Tenant - 72, // 857: diode.v1.Site.tags:type_name -> diode.v1.Tag - 159, // 858: diode.v1.Site.custom_fields:type_name -> diode.v1.Site.CustomFieldsEntry - 3, // 859: diode.v1.Site.asns:type_name -> diode.v1.ASN - 71, // 860: diode.v1.SiteGroup.parent:type_name -> diode.v1.SiteGroup - 72, // 861: diode.v1.SiteGroup.tags:type_name -> diode.v1.Tag - 160, // 862: diode.v1.SiteGroup.custom_fields:type_name -> diode.v1.SiteGroup.CustomFieldsEntry - 74, // 863: diode.v1.Tenant.group:type_name -> diode.v1.TenantGroup - 72, // 864: diode.v1.Tenant.tags:type_name -> diode.v1.Tag - 161, // 865: diode.v1.Tenant.custom_fields:type_name -> diode.v1.Tenant.CustomFieldsEntry - 74, // 866: diode.v1.TenantGroup.parent:type_name -> diode.v1.TenantGroup - 72, // 867: diode.v1.TenantGroup.tags:type_name -> diode.v1.Tag - 162, // 868: diode.v1.TenantGroup.custom_fields:type_name -> diode.v1.TenantGroup.CustomFieldsEntry - 76, // 869: diode.v1.Tunnel.group:type_name -> diode.v1.TunnelGroup - 38, // 870: diode.v1.Tunnel.ipsec_profile:type_name -> diode.v1.IPSecProfile - 73, // 871: diode.v1.Tunnel.tenant:type_name -> diode.v1.Tenant - 72, // 872: diode.v1.Tunnel.tags:type_name -> diode.v1.Tag - 163, // 873: diode.v1.Tunnel.custom_fields:type_name -> diode.v1.Tunnel.CustomFieldsEntry - 72, // 874: diode.v1.TunnelGroup.tags:type_name -> diode.v1.Tag - 164, // 875: diode.v1.TunnelGroup.custom_fields:type_name -> diode.v1.TunnelGroup.CustomFieldsEntry - 75, // 876: diode.v1.TunnelTermination.tunnel:type_name -> diode.v1.Tunnel - 3, // 877: diode.v1.TunnelTermination.termination_asn:type_name -> diode.v1.ASN - 4, // 878: diode.v1.TunnelTermination.termination_asn_range:type_name -> diode.v1.ASNRange - 5, // 879: diode.v1.TunnelTermination.termination_aggregate:type_name -> diode.v1.Aggregate - 6, // 880: diode.v1.TunnelTermination.termination_cable:type_name -> diode.v1.Cable - 7, // 881: diode.v1.TunnelTermination.termination_cable_path:type_name -> diode.v1.CablePath - 8, // 882: diode.v1.TunnelTermination.termination_cable_termination:type_name -> diode.v1.CableTermination - 9, // 883: diode.v1.TunnelTermination.termination_circuit:type_name -> diode.v1.Circuit - 10, // 884: diode.v1.TunnelTermination.termination_circuit_group:type_name -> diode.v1.CircuitGroup - 11, // 885: diode.v1.TunnelTermination.termination_circuit_group_assignment:type_name -> diode.v1.CircuitGroupAssignment - 12, // 886: diode.v1.TunnelTermination.termination_circuit_termination:type_name -> diode.v1.CircuitTermination - 13, // 887: diode.v1.TunnelTermination.termination_circuit_type:type_name -> diode.v1.CircuitType - 14, // 888: diode.v1.TunnelTermination.termination_cluster:type_name -> diode.v1.Cluster - 15, // 889: diode.v1.TunnelTermination.termination_cluster_group:type_name -> diode.v1.ClusterGroup - 16, // 890: diode.v1.TunnelTermination.termination_cluster_type:type_name -> diode.v1.ClusterType - 17, // 891: diode.v1.TunnelTermination.termination_console_port:type_name -> diode.v1.ConsolePort - 18, // 892: diode.v1.TunnelTermination.termination_console_server_port:type_name -> diode.v1.ConsoleServerPort - 19, // 893: diode.v1.TunnelTermination.termination_contact:type_name -> diode.v1.Contact - 20, // 894: diode.v1.TunnelTermination.termination_contact_assignment:type_name -> diode.v1.ContactAssignment - 21, // 895: diode.v1.TunnelTermination.termination_contact_group:type_name -> diode.v1.ContactGroup - 22, // 896: diode.v1.TunnelTermination.termination_contact_role:type_name -> diode.v1.ContactRole - 25, // 897: diode.v1.TunnelTermination.termination_device:type_name -> diode.v1.Device - 26, // 898: diode.v1.TunnelTermination.termination_device_bay:type_name -> diode.v1.DeviceBay - 27, // 899: diode.v1.TunnelTermination.termination_device_role:type_name -> diode.v1.DeviceRole - 28, // 900: diode.v1.TunnelTermination.termination_device_type:type_name -> diode.v1.DeviceType - 29, // 901: diode.v1.TunnelTermination.termination_fhrp_group:type_name -> diode.v1.FHRPGroup - 30, // 902: diode.v1.TunnelTermination.termination_fhrp_group_assignment:type_name -> diode.v1.FHRPGroupAssignment - 31, // 903: diode.v1.TunnelTermination.termination_front_port:type_name -> diode.v1.FrontPort - 33, // 904: diode.v1.TunnelTermination.termination_ike_policy:type_name -> diode.v1.IKEPolicy - 34, // 905: diode.v1.TunnelTermination.termination_ike_proposal:type_name -> diode.v1.IKEProposal - 35, // 906: diode.v1.TunnelTermination.termination_ip_address:type_name -> diode.v1.IPAddress - 36, // 907: diode.v1.TunnelTermination.termination_ip_range:type_name -> diode.v1.IPRange - 37, // 908: diode.v1.TunnelTermination.termination_ip_sec_policy:type_name -> diode.v1.IPSecPolicy - 38, // 909: diode.v1.TunnelTermination.termination_ip_sec_profile:type_name -> diode.v1.IPSecProfile - 39, // 910: diode.v1.TunnelTermination.termination_ip_sec_proposal:type_name -> diode.v1.IPSecProposal - 40, // 911: diode.v1.TunnelTermination.termination_interface:type_name -> diode.v1.Interface - 41, // 912: diode.v1.TunnelTermination.termination_inventory_item:type_name -> diode.v1.InventoryItem - 42, // 913: diode.v1.TunnelTermination.termination_inventory_item_role:type_name -> diode.v1.InventoryItemRole - 43, // 914: diode.v1.TunnelTermination.termination_l2vpn:type_name -> diode.v1.L2VPN - 44, // 915: diode.v1.TunnelTermination.termination_l2vpn_termination:type_name -> diode.v1.L2VPNTermination - 45, // 916: diode.v1.TunnelTermination.termination_location:type_name -> diode.v1.Location - 46, // 917: diode.v1.TunnelTermination.termination_mac_address:type_name -> diode.v1.MACAddress - 47, // 918: diode.v1.TunnelTermination.termination_manufacturer:type_name -> diode.v1.Manufacturer - 48, // 919: diode.v1.TunnelTermination.termination_module:type_name -> diode.v1.Module - 49, // 920: diode.v1.TunnelTermination.termination_module_bay:type_name -> diode.v1.ModuleBay - 50, // 921: diode.v1.TunnelTermination.termination_module_type:type_name -> diode.v1.ModuleType - 51, // 922: diode.v1.TunnelTermination.termination_platform:type_name -> diode.v1.Platform - 52, // 923: diode.v1.TunnelTermination.termination_power_feed:type_name -> diode.v1.PowerFeed - 53, // 924: diode.v1.TunnelTermination.termination_power_outlet:type_name -> diode.v1.PowerOutlet - 54, // 925: diode.v1.TunnelTermination.termination_power_panel:type_name -> diode.v1.PowerPanel - 55, // 926: diode.v1.TunnelTermination.termination_power_port:type_name -> diode.v1.PowerPort - 56, // 927: diode.v1.TunnelTermination.termination_prefix:type_name -> diode.v1.Prefix - 57, // 928: diode.v1.TunnelTermination.termination_provider:type_name -> diode.v1.Provider - 58, // 929: diode.v1.TunnelTermination.termination_provider_account:type_name -> diode.v1.ProviderAccount - 59, // 930: diode.v1.TunnelTermination.termination_provider_network:type_name -> diode.v1.ProviderNetwork - 60, // 931: diode.v1.TunnelTermination.termination_rir:type_name -> diode.v1.RIR - 61, // 932: diode.v1.TunnelTermination.termination_rack:type_name -> diode.v1.Rack - 62, // 933: diode.v1.TunnelTermination.termination_rack_reservation:type_name -> diode.v1.RackReservation - 63, // 934: diode.v1.TunnelTermination.termination_rack_role:type_name -> diode.v1.RackRole - 64, // 935: diode.v1.TunnelTermination.termination_rack_type:type_name -> diode.v1.RackType - 65, // 936: diode.v1.TunnelTermination.termination_rear_port:type_name -> diode.v1.RearPort - 66, // 937: diode.v1.TunnelTermination.termination_region:type_name -> diode.v1.Region - 67, // 938: diode.v1.TunnelTermination.termination_role:type_name -> diode.v1.Role - 68, // 939: diode.v1.TunnelTermination.termination_route_target:type_name -> diode.v1.RouteTarget - 69, // 940: diode.v1.TunnelTermination.termination_service:type_name -> diode.v1.Service - 70, // 941: diode.v1.TunnelTermination.termination_site:type_name -> diode.v1.Site - 71, // 942: diode.v1.TunnelTermination.termination_site_group:type_name -> diode.v1.SiteGroup - 72, // 943: diode.v1.TunnelTermination.termination_tag:type_name -> diode.v1.Tag - 73, // 944: diode.v1.TunnelTermination.termination_tenant:type_name -> diode.v1.Tenant - 74, // 945: diode.v1.TunnelTermination.termination_tenant_group:type_name -> diode.v1.TenantGroup - 75, // 946: diode.v1.TunnelTermination.termination_tunnel:type_name -> diode.v1.Tunnel - 76, // 947: diode.v1.TunnelTermination.termination_tunnel_group:type_name -> diode.v1.TunnelGroup - 77, // 948: diode.v1.TunnelTermination.termination_tunnel_termination:type_name -> diode.v1.TunnelTermination - 78, // 949: diode.v1.TunnelTermination.termination_vlan:type_name -> diode.v1.VLAN - 79, // 950: diode.v1.TunnelTermination.termination_vlan_group:type_name -> diode.v1.VLANGroup - 80, // 951: diode.v1.TunnelTermination.termination_vlan_translation_policy:type_name -> diode.v1.VLANTranslationPolicy - 81, // 952: diode.v1.TunnelTermination.termination_vlan_translation_rule:type_name -> diode.v1.VLANTranslationRule - 82, // 953: diode.v1.TunnelTermination.termination_vm_interface:type_name -> diode.v1.VMInterface - 83, // 954: diode.v1.TunnelTermination.termination_vrf:type_name -> diode.v1.VRF - 84, // 955: diode.v1.TunnelTermination.termination_virtual_chassis:type_name -> diode.v1.VirtualChassis - 85, // 956: diode.v1.TunnelTermination.termination_virtual_circuit:type_name -> diode.v1.VirtualCircuit - 86, // 957: diode.v1.TunnelTermination.termination_virtual_circuit_termination:type_name -> diode.v1.VirtualCircuitTermination - 87, // 958: diode.v1.TunnelTermination.termination_virtual_circuit_type:type_name -> diode.v1.VirtualCircuitType - 88, // 959: diode.v1.TunnelTermination.termination_virtual_device_context:type_name -> diode.v1.VirtualDeviceContext - 89, // 960: diode.v1.TunnelTermination.termination_virtual_disk:type_name -> diode.v1.VirtualDisk - 90, // 961: diode.v1.TunnelTermination.termination_virtual_machine:type_name -> diode.v1.VirtualMachine - 91, // 962: diode.v1.TunnelTermination.termination_wireless_lan:type_name -> diode.v1.WirelessLAN - 92, // 963: diode.v1.TunnelTermination.termination_wireless_lan_group:type_name -> diode.v1.WirelessLANGroup - 93, // 964: diode.v1.TunnelTermination.termination_wireless_link:type_name -> diode.v1.WirelessLink - 94, // 965: diode.v1.TunnelTermination.termination_custom_field:type_name -> diode.v1.CustomField - 95, // 966: diode.v1.TunnelTermination.termination_custom_field_choice_set:type_name -> diode.v1.CustomFieldChoiceSet - 96, // 967: diode.v1.TunnelTermination.termination_journal_entry:type_name -> diode.v1.JournalEntry - 97, // 968: diode.v1.TunnelTermination.termination_module_type_profile:type_name -> diode.v1.ModuleTypeProfile - 98, // 969: diode.v1.TunnelTermination.termination_custom_link:type_name -> diode.v1.CustomLink - 35, // 970: diode.v1.TunnelTermination.outside_ip:type_name -> diode.v1.IPAddress - 72, // 971: diode.v1.TunnelTermination.tags:type_name -> diode.v1.Tag - 165, // 972: diode.v1.TunnelTermination.custom_fields:type_name -> diode.v1.TunnelTermination.CustomFieldsEntry - 70, // 973: diode.v1.VLAN.site:type_name -> diode.v1.Site - 79, // 974: diode.v1.VLAN.group:type_name -> diode.v1.VLANGroup - 73, // 975: diode.v1.VLAN.tenant:type_name -> diode.v1.Tenant - 67, // 976: diode.v1.VLAN.role:type_name -> diode.v1.Role - 78, // 977: diode.v1.VLAN.qinq_svlan:type_name -> diode.v1.VLAN - 72, // 978: diode.v1.VLAN.tags:type_name -> diode.v1.Tag - 166, // 979: diode.v1.VLAN.custom_fields:type_name -> diode.v1.VLAN.CustomFieldsEntry - 14, // 980: diode.v1.VLANGroup.scope_cluster:type_name -> diode.v1.Cluster - 15, // 981: diode.v1.VLANGroup.scope_cluster_group:type_name -> diode.v1.ClusterGroup - 45, // 982: diode.v1.VLANGroup.scope_location:type_name -> diode.v1.Location - 61, // 983: diode.v1.VLANGroup.scope_rack:type_name -> diode.v1.Rack - 66, // 984: diode.v1.VLANGroup.scope_region:type_name -> diode.v1.Region - 70, // 985: diode.v1.VLANGroup.scope_site:type_name -> diode.v1.Site - 71, // 986: diode.v1.VLANGroup.scope_site_group:type_name -> diode.v1.SiteGroup - 72, // 987: diode.v1.VLANGroup.tags:type_name -> diode.v1.Tag - 167, // 988: diode.v1.VLANGroup.custom_fields:type_name -> diode.v1.VLANGroup.CustomFieldsEntry - 73, // 989: diode.v1.VLANGroup.tenant:type_name -> diode.v1.Tenant - 80, // 990: diode.v1.VLANTranslationRule.policy:type_name -> diode.v1.VLANTranslationPolicy - 90, // 991: diode.v1.VMInterface.virtual_machine:type_name -> diode.v1.VirtualMachine - 82, // 992: diode.v1.VMInterface.parent:type_name -> diode.v1.VMInterface - 82, // 993: diode.v1.VMInterface.bridge:type_name -> diode.v1.VMInterface - 46, // 994: diode.v1.VMInterface.primary_mac_address:type_name -> diode.v1.MACAddress - 78, // 995: diode.v1.VMInterface.untagged_vlan:type_name -> diode.v1.VLAN - 78, // 996: diode.v1.VMInterface.qinq_svlan:type_name -> diode.v1.VLAN - 80, // 997: diode.v1.VMInterface.vlan_translation_policy:type_name -> diode.v1.VLANTranslationPolicy - 83, // 998: diode.v1.VMInterface.vrf:type_name -> diode.v1.VRF - 72, // 999: diode.v1.VMInterface.tags:type_name -> diode.v1.Tag - 168, // 1000: diode.v1.VMInterface.custom_fields:type_name -> diode.v1.VMInterface.CustomFieldsEntry - 78, // 1001: diode.v1.VMInterface.tagged_vlans:type_name -> diode.v1.VLAN - 73, // 1002: diode.v1.VRF.tenant:type_name -> diode.v1.Tenant - 72, // 1003: diode.v1.VRF.tags:type_name -> diode.v1.Tag - 169, // 1004: diode.v1.VRF.custom_fields:type_name -> diode.v1.VRF.CustomFieldsEntry - 68, // 1005: diode.v1.VRF.import_targets:type_name -> diode.v1.RouteTarget - 68, // 1006: diode.v1.VRF.export_targets:type_name -> diode.v1.RouteTarget - 25, // 1007: diode.v1.VirtualChassis.master:type_name -> diode.v1.Device - 72, // 1008: diode.v1.VirtualChassis.tags:type_name -> diode.v1.Tag - 170, // 1009: diode.v1.VirtualChassis.custom_fields:type_name -> diode.v1.VirtualChassis.CustomFieldsEntry - 59, // 1010: diode.v1.VirtualCircuit.provider_network:type_name -> diode.v1.ProviderNetwork - 58, // 1011: diode.v1.VirtualCircuit.provider_account:type_name -> diode.v1.ProviderAccount - 87, // 1012: diode.v1.VirtualCircuit.type:type_name -> diode.v1.VirtualCircuitType - 73, // 1013: diode.v1.VirtualCircuit.tenant:type_name -> diode.v1.Tenant - 72, // 1014: diode.v1.VirtualCircuit.tags:type_name -> diode.v1.Tag - 171, // 1015: diode.v1.VirtualCircuit.custom_fields:type_name -> diode.v1.VirtualCircuit.CustomFieldsEntry - 85, // 1016: diode.v1.VirtualCircuitTermination.virtual_circuit:type_name -> diode.v1.VirtualCircuit - 40, // 1017: diode.v1.VirtualCircuitTermination.interface:type_name -> diode.v1.Interface - 72, // 1018: diode.v1.VirtualCircuitTermination.tags:type_name -> diode.v1.Tag - 172, // 1019: diode.v1.VirtualCircuitTermination.custom_fields:type_name -> diode.v1.VirtualCircuitTermination.CustomFieldsEntry - 72, // 1020: diode.v1.VirtualCircuitType.tags:type_name -> diode.v1.Tag - 173, // 1021: diode.v1.VirtualCircuitType.custom_fields:type_name -> diode.v1.VirtualCircuitType.CustomFieldsEntry - 25, // 1022: diode.v1.VirtualDeviceContext.device:type_name -> diode.v1.Device - 73, // 1023: diode.v1.VirtualDeviceContext.tenant:type_name -> diode.v1.Tenant - 35, // 1024: diode.v1.VirtualDeviceContext.primary_ip4:type_name -> diode.v1.IPAddress - 35, // 1025: diode.v1.VirtualDeviceContext.primary_ip6:type_name -> diode.v1.IPAddress - 72, // 1026: diode.v1.VirtualDeviceContext.tags:type_name -> diode.v1.Tag - 174, // 1027: diode.v1.VirtualDeviceContext.custom_fields:type_name -> diode.v1.VirtualDeviceContext.CustomFieldsEntry - 90, // 1028: diode.v1.VirtualDisk.virtual_machine:type_name -> diode.v1.VirtualMachine - 72, // 1029: diode.v1.VirtualDisk.tags:type_name -> diode.v1.Tag - 175, // 1030: diode.v1.VirtualDisk.custom_fields:type_name -> diode.v1.VirtualDisk.CustomFieldsEntry - 70, // 1031: diode.v1.VirtualMachine.site:type_name -> diode.v1.Site - 14, // 1032: diode.v1.VirtualMachine.cluster:type_name -> diode.v1.Cluster - 25, // 1033: diode.v1.VirtualMachine.device:type_name -> diode.v1.Device - 27, // 1034: diode.v1.VirtualMachine.role:type_name -> diode.v1.DeviceRole - 73, // 1035: diode.v1.VirtualMachine.tenant:type_name -> diode.v1.Tenant - 51, // 1036: diode.v1.VirtualMachine.platform:type_name -> diode.v1.Platform - 35, // 1037: diode.v1.VirtualMachine.primary_ip4:type_name -> diode.v1.IPAddress - 35, // 1038: diode.v1.VirtualMachine.primary_ip6:type_name -> diode.v1.IPAddress - 72, // 1039: diode.v1.VirtualMachine.tags:type_name -> diode.v1.Tag - 176, // 1040: diode.v1.VirtualMachine.custom_fields:type_name -> diode.v1.VirtualMachine.CustomFieldsEntry - 92, // 1041: diode.v1.WirelessLAN.group:type_name -> diode.v1.WirelessLANGroup - 78, // 1042: diode.v1.WirelessLAN.vlan:type_name -> diode.v1.VLAN - 45, // 1043: diode.v1.WirelessLAN.scope_location:type_name -> diode.v1.Location - 66, // 1044: diode.v1.WirelessLAN.scope_region:type_name -> diode.v1.Region - 70, // 1045: diode.v1.WirelessLAN.scope_site:type_name -> diode.v1.Site - 71, // 1046: diode.v1.WirelessLAN.scope_site_group:type_name -> diode.v1.SiteGroup - 73, // 1047: diode.v1.WirelessLAN.tenant:type_name -> diode.v1.Tenant - 72, // 1048: diode.v1.WirelessLAN.tags:type_name -> diode.v1.Tag - 177, // 1049: diode.v1.WirelessLAN.custom_fields:type_name -> diode.v1.WirelessLAN.CustomFieldsEntry - 92, // 1050: diode.v1.WirelessLANGroup.parent:type_name -> diode.v1.WirelessLANGroup - 72, // 1051: diode.v1.WirelessLANGroup.tags:type_name -> diode.v1.Tag - 178, // 1052: diode.v1.WirelessLANGroup.custom_fields:type_name -> diode.v1.WirelessLANGroup.CustomFieldsEntry - 40, // 1053: diode.v1.WirelessLink.interface_a:type_name -> diode.v1.Interface - 40, // 1054: diode.v1.WirelessLink.interface_b:type_name -> diode.v1.Interface - 73, // 1055: diode.v1.WirelessLink.tenant:type_name -> diode.v1.Tenant - 72, // 1056: diode.v1.WirelessLink.tags:type_name -> diode.v1.Tag - 179, // 1057: diode.v1.WirelessLink.custom_fields:type_name -> diode.v1.WirelessLink.CustomFieldsEntry - 95, // 1058: diode.v1.CustomField.choice_set:type_name -> diode.v1.CustomFieldChoiceSet - 3, // 1059: diode.v1.JournalEntry.assigned_object_asn:type_name -> diode.v1.ASN - 4, // 1060: diode.v1.JournalEntry.assigned_object_asn_range:type_name -> diode.v1.ASNRange - 5, // 1061: diode.v1.JournalEntry.assigned_object_aggregate:type_name -> diode.v1.Aggregate - 6, // 1062: diode.v1.JournalEntry.assigned_object_cable:type_name -> diode.v1.Cable - 7, // 1063: diode.v1.JournalEntry.assigned_object_cable_path:type_name -> diode.v1.CablePath - 8, // 1064: diode.v1.JournalEntry.assigned_object_cable_termination:type_name -> diode.v1.CableTermination - 9, // 1065: diode.v1.JournalEntry.assigned_object_circuit:type_name -> diode.v1.Circuit - 10, // 1066: diode.v1.JournalEntry.assigned_object_circuit_group:type_name -> diode.v1.CircuitGroup - 11, // 1067: diode.v1.JournalEntry.assigned_object_circuit_group_assignment:type_name -> diode.v1.CircuitGroupAssignment - 12, // 1068: diode.v1.JournalEntry.assigned_object_circuit_termination:type_name -> diode.v1.CircuitTermination - 13, // 1069: diode.v1.JournalEntry.assigned_object_circuit_type:type_name -> diode.v1.CircuitType - 14, // 1070: diode.v1.JournalEntry.assigned_object_cluster:type_name -> diode.v1.Cluster - 15, // 1071: diode.v1.JournalEntry.assigned_object_cluster_group:type_name -> diode.v1.ClusterGroup - 16, // 1072: diode.v1.JournalEntry.assigned_object_cluster_type:type_name -> diode.v1.ClusterType - 17, // 1073: diode.v1.JournalEntry.assigned_object_console_port:type_name -> diode.v1.ConsolePort - 18, // 1074: diode.v1.JournalEntry.assigned_object_console_server_port:type_name -> diode.v1.ConsoleServerPort - 19, // 1075: diode.v1.JournalEntry.assigned_object_contact:type_name -> diode.v1.Contact - 20, // 1076: diode.v1.JournalEntry.assigned_object_contact_assignment:type_name -> diode.v1.ContactAssignment - 21, // 1077: diode.v1.JournalEntry.assigned_object_contact_group:type_name -> diode.v1.ContactGroup - 22, // 1078: diode.v1.JournalEntry.assigned_object_contact_role:type_name -> diode.v1.ContactRole - 94, // 1079: diode.v1.JournalEntry.assigned_object_custom_field:type_name -> diode.v1.CustomField - 95, // 1080: diode.v1.JournalEntry.assigned_object_custom_field_choice_set:type_name -> diode.v1.CustomFieldChoiceSet - 25, // 1081: diode.v1.JournalEntry.assigned_object_device:type_name -> diode.v1.Device - 26, // 1082: diode.v1.JournalEntry.assigned_object_device_bay:type_name -> diode.v1.DeviceBay - 27, // 1083: diode.v1.JournalEntry.assigned_object_device_role:type_name -> diode.v1.DeviceRole - 28, // 1084: diode.v1.JournalEntry.assigned_object_device_type:type_name -> diode.v1.DeviceType - 29, // 1085: diode.v1.JournalEntry.assigned_object_fhrp_group:type_name -> diode.v1.FHRPGroup - 30, // 1086: diode.v1.JournalEntry.assigned_object_fhrp_group_assignment:type_name -> diode.v1.FHRPGroupAssignment - 31, // 1087: diode.v1.JournalEntry.assigned_object_front_port:type_name -> diode.v1.FrontPort - 33, // 1088: diode.v1.JournalEntry.assigned_object_ike_policy:type_name -> diode.v1.IKEPolicy - 34, // 1089: diode.v1.JournalEntry.assigned_object_ike_proposal:type_name -> diode.v1.IKEProposal - 35, // 1090: diode.v1.JournalEntry.assigned_object_ip_address:type_name -> diode.v1.IPAddress - 36, // 1091: diode.v1.JournalEntry.assigned_object_ip_range:type_name -> diode.v1.IPRange - 37, // 1092: diode.v1.JournalEntry.assigned_object_ip_sec_policy:type_name -> diode.v1.IPSecPolicy - 38, // 1093: diode.v1.JournalEntry.assigned_object_ip_sec_profile:type_name -> diode.v1.IPSecProfile - 39, // 1094: diode.v1.JournalEntry.assigned_object_ip_sec_proposal:type_name -> diode.v1.IPSecProposal - 40, // 1095: diode.v1.JournalEntry.assigned_object_interface:type_name -> diode.v1.Interface - 41, // 1096: diode.v1.JournalEntry.assigned_object_inventory_item:type_name -> diode.v1.InventoryItem - 42, // 1097: diode.v1.JournalEntry.assigned_object_inventory_item_role:type_name -> diode.v1.InventoryItemRole - 96, // 1098: diode.v1.JournalEntry.assigned_object_journal_entry:type_name -> diode.v1.JournalEntry - 43, // 1099: diode.v1.JournalEntry.assigned_object_l2vpn:type_name -> diode.v1.L2VPN - 44, // 1100: diode.v1.JournalEntry.assigned_object_l2vpn_termination:type_name -> diode.v1.L2VPNTermination - 45, // 1101: diode.v1.JournalEntry.assigned_object_location:type_name -> diode.v1.Location - 46, // 1102: diode.v1.JournalEntry.assigned_object_mac_address:type_name -> diode.v1.MACAddress - 47, // 1103: diode.v1.JournalEntry.assigned_object_manufacturer:type_name -> diode.v1.Manufacturer - 48, // 1104: diode.v1.JournalEntry.assigned_object_module:type_name -> diode.v1.Module - 49, // 1105: diode.v1.JournalEntry.assigned_object_module_bay:type_name -> diode.v1.ModuleBay - 50, // 1106: diode.v1.JournalEntry.assigned_object_module_type:type_name -> diode.v1.ModuleType - 97, // 1107: diode.v1.JournalEntry.assigned_object_module_type_profile:type_name -> diode.v1.ModuleTypeProfile - 51, // 1108: diode.v1.JournalEntry.assigned_object_platform:type_name -> diode.v1.Platform - 52, // 1109: diode.v1.JournalEntry.assigned_object_power_feed:type_name -> diode.v1.PowerFeed - 53, // 1110: diode.v1.JournalEntry.assigned_object_power_outlet:type_name -> diode.v1.PowerOutlet - 54, // 1111: diode.v1.JournalEntry.assigned_object_power_panel:type_name -> diode.v1.PowerPanel - 55, // 1112: diode.v1.JournalEntry.assigned_object_power_port:type_name -> diode.v1.PowerPort - 56, // 1113: diode.v1.JournalEntry.assigned_object_prefix:type_name -> diode.v1.Prefix - 57, // 1114: diode.v1.JournalEntry.assigned_object_provider:type_name -> diode.v1.Provider - 58, // 1115: diode.v1.JournalEntry.assigned_object_provider_account:type_name -> diode.v1.ProviderAccount - 59, // 1116: diode.v1.JournalEntry.assigned_object_provider_network:type_name -> diode.v1.ProviderNetwork - 60, // 1117: diode.v1.JournalEntry.assigned_object_rir:type_name -> diode.v1.RIR - 61, // 1118: diode.v1.JournalEntry.assigned_object_rack:type_name -> diode.v1.Rack - 62, // 1119: diode.v1.JournalEntry.assigned_object_rack_reservation:type_name -> diode.v1.RackReservation - 63, // 1120: diode.v1.JournalEntry.assigned_object_rack_role:type_name -> diode.v1.RackRole - 64, // 1121: diode.v1.JournalEntry.assigned_object_rack_type:type_name -> diode.v1.RackType - 65, // 1122: diode.v1.JournalEntry.assigned_object_rear_port:type_name -> diode.v1.RearPort - 66, // 1123: diode.v1.JournalEntry.assigned_object_region:type_name -> diode.v1.Region - 67, // 1124: diode.v1.JournalEntry.assigned_object_role:type_name -> diode.v1.Role - 68, // 1125: diode.v1.JournalEntry.assigned_object_route_target:type_name -> diode.v1.RouteTarget - 69, // 1126: diode.v1.JournalEntry.assigned_object_service:type_name -> diode.v1.Service - 70, // 1127: diode.v1.JournalEntry.assigned_object_site:type_name -> diode.v1.Site - 71, // 1128: diode.v1.JournalEntry.assigned_object_site_group:type_name -> diode.v1.SiteGroup - 72, // 1129: diode.v1.JournalEntry.assigned_object_tag:type_name -> diode.v1.Tag - 73, // 1130: diode.v1.JournalEntry.assigned_object_tenant:type_name -> diode.v1.Tenant - 74, // 1131: diode.v1.JournalEntry.assigned_object_tenant_group:type_name -> diode.v1.TenantGroup - 75, // 1132: diode.v1.JournalEntry.assigned_object_tunnel:type_name -> diode.v1.Tunnel - 76, // 1133: diode.v1.JournalEntry.assigned_object_tunnel_group:type_name -> diode.v1.TunnelGroup - 77, // 1134: diode.v1.JournalEntry.assigned_object_tunnel_termination:type_name -> diode.v1.TunnelTermination - 78, // 1135: diode.v1.JournalEntry.assigned_object_vlan:type_name -> diode.v1.VLAN - 79, // 1136: diode.v1.JournalEntry.assigned_object_vlan_group:type_name -> diode.v1.VLANGroup - 80, // 1137: diode.v1.JournalEntry.assigned_object_vlan_translation_policy:type_name -> diode.v1.VLANTranslationPolicy - 81, // 1138: diode.v1.JournalEntry.assigned_object_vlan_translation_rule:type_name -> diode.v1.VLANTranslationRule - 82, // 1139: diode.v1.JournalEntry.assigned_object_vm_interface:type_name -> diode.v1.VMInterface - 83, // 1140: diode.v1.JournalEntry.assigned_object_vrf:type_name -> diode.v1.VRF - 84, // 1141: diode.v1.JournalEntry.assigned_object_virtual_chassis:type_name -> diode.v1.VirtualChassis - 85, // 1142: diode.v1.JournalEntry.assigned_object_virtual_circuit:type_name -> diode.v1.VirtualCircuit - 86, // 1143: diode.v1.JournalEntry.assigned_object_virtual_circuit_termination:type_name -> diode.v1.VirtualCircuitTermination - 87, // 1144: diode.v1.JournalEntry.assigned_object_virtual_circuit_type:type_name -> diode.v1.VirtualCircuitType - 88, // 1145: diode.v1.JournalEntry.assigned_object_virtual_device_context:type_name -> diode.v1.VirtualDeviceContext - 89, // 1146: diode.v1.JournalEntry.assigned_object_virtual_disk:type_name -> diode.v1.VirtualDisk - 90, // 1147: diode.v1.JournalEntry.assigned_object_virtual_machine:type_name -> diode.v1.VirtualMachine - 91, // 1148: diode.v1.JournalEntry.assigned_object_wireless_lan:type_name -> diode.v1.WirelessLAN - 92, // 1149: diode.v1.JournalEntry.assigned_object_wireless_lan_group:type_name -> diode.v1.WirelessLANGroup - 93, // 1150: diode.v1.JournalEntry.assigned_object_wireless_link:type_name -> diode.v1.WirelessLink - 98, // 1151: diode.v1.JournalEntry.assigned_object_custom_link:type_name -> diode.v1.CustomLink - 72, // 1152: diode.v1.JournalEntry.tags:type_name -> diode.v1.Tag - 180, // 1153: diode.v1.JournalEntry.custom_fields:type_name -> diode.v1.JournalEntry.CustomFieldsEntry - 72, // 1154: diode.v1.ModuleTypeProfile.tags:type_name -> diode.v1.Tag - 181, // 1155: diode.v1.ModuleTypeProfile.custom_fields:type_name -> diode.v1.ModuleTypeProfile.CustomFieldsEntry - 24, // 1156: diode.v1.ASN.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1157: diode.v1.ASNRange.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1158: diode.v1.Aggregate.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1159: diode.v1.Cable.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1160: diode.v1.Circuit.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1161: diode.v1.CircuitGroup.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1162: diode.v1.CircuitTermination.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1163: diode.v1.CircuitType.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1164: diode.v1.Cluster.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1165: diode.v1.ClusterGroup.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1166: diode.v1.ClusterType.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1167: diode.v1.ConsolePort.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1168: diode.v1.ConsoleServerPort.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1169: diode.v1.Contact.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1170: diode.v1.ContactAssignment.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1171: diode.v1.ContactGroup.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1172: diode.v1.ContactRole.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1173: diode.v1.Device.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1174: diode.v1.DeviceBay.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1175: diode.v1.DeviceRole.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1176: diode.v1.DeviceType.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1177: diode.v1.FHRPGroup.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1178: diode.v1.FrontPort.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1179: diode.v1.IKEPolicy.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1180: diode.v1.IKEProposal.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1181: diode.v1.IPAddress.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1182: diode.v1.IPRange.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1183: diode.v1.IPSecPolicy.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1184: diode.v1.IPSecProfile.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1185: diode.v1.IPSecProposal.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1186: diode.v1.Interface.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1187: diode.v1.InventoryItem.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1188: diode.v1.InventoryItemRole.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1189: diode.v1.L2VPN.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1190: diode.v1.L2VPNTermination.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1191: diode.v1.Location.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1192: diode.v1.MACAddress.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1193: diode.v1.Manufacturer.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1194: diode.v1.Module.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1195: diode.v1.ModuleBay.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1196: diode.v1.ModuleType.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1197: diode.v1.Platform.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1198: diode.v1.PowerFeed.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1199: diode.v1.PowerOutlet.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1200: diode.v1.PowerPanel.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1201: diode.v1.PowerPort.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1202: diode.v1.Prefix.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1203: diode.v1.Provider.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1204: diode.v1.ProviderAccount.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1205: diode.v1.ProviderNetwork.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1206: diode.v1.RIR.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1207: diode.v1.Rack.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1208: diode.v1.RackReservation.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1209: diode.v1.RackRole.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1210: diode.v1.RackType.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1211: diode.v1.RearPort.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1212: diode.v1.Region.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1213: diode.v1.Role.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1214: diode.v1.RouteTarget.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1215: diode.v1.Service.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1216: diode.v1.Site.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1217: diode.v1.SiteGroup.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1218: diode.v1.Tenant.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1219: diode.v1.TenantGroup.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1220: diode.v1.Tunnel.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1221: diode.v1.TunnelGroup.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1222: diode.v1.TunnelTermination.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1223: diode.v1.VLAN.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1224: diode.v1.VLANGroup.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1225: diode.v1.VMInterface.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1226: diode.v1.VRF.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1227: diode.v1.VirtualChassis.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1228: diode.v1.VirtualCircuit.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1229: diode.v1.VirtualCircuitTermination.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1230: diode.v1.VirtualCircuitType.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1231: diode.v1.VirtualDeviceContext.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1232: diode.v1.VirtualDisk.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1233: diode.v1.VirtualMachine.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1234: diode.v1.WirelessLAN.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1235: diode.v1.WirelessLANGroup.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1236: diode.v1.WirelessLink.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1237: diode.v1.JournalEntry.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 24, // 1238: diode.v1.ModuleTypeProfile.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue - 1, // 1239: diode.v1.IngesterService.Ingest:input_type -> diode.v1.IngestRequest - 2, // 1240: diode.v1.IngesterService.Ingest:output_type -> diode.v1.IngestResponse - 1240, // [1240:1241] is the sub-list for method output_type - 1239, // [1239:1240] is the sub-list for method input_type - 1239, // [1239:1239] is the sub-list for extension type_name - 1239, // [1239:1239] is the sub-list for extension extendee - 0, // [0:1239] is the sub-list for field type_name + 51, // 778: diode.v1.Platform.parent:type_name -> diode.v1.Platform + 54, // 779: diode.v1.PowerFeed.power_panel:type_name -> diode.v1.PowerPanel + 61, // 780: diode.v1.PowerFeed.rack:type_name -> diode.v1.Rack + 73, // 781: diode.v1.PowerFeed.tenant:type_name -> diode.v1.Tenant + 72, // 782: diode.v1.PowerFeed.tags:type_name -> diode.v1.Tag + 141, // 783: diode.v1.PowerFeed.custom_fields:type_name -> diode.v1.PowerFeed.CustomFieldsEntry + 25, // 784: diode.v1.PowerOutlet.device:type_name -> diode.v1.Device + 48, // 785: diode.v1.PowerOutlet.module:type_name -> diode.v1.Module + 55, // 786: diode.v1.PowerOutlet.power_port:type_name -> diode.v1.PowerPort + 72, // 787: diode.v1.PowerOutlet.tags:type_name -> diode.v1.Tag + 142, // 788: diode.v1.PowerOutlet.custom_fields:type_name -> diode.v1.PowerOutlet.CustomFieldsEntry + 70, // 789: diode.v1.PowerPanel.site:type_name -> diode.v1.Site + 45, // 790: diode.v1.PowerPanel.location:type_name -> diode.v1.Location + 72, // 791: diode.v1.PowerPanel.tags:type_name -> diode.v1.Tag + 143, // 792: diode.v1.PowerPanel.custom_fields:type_name -> diode.v1.PowerPanel.CustomFieldsEntry + 25, // 793: diode.v1.PowerPort.device:type_name -> diode.v1.Device + 48, // 794: diode.v1.PowerPort.module:type_name -> diode.v1.Module + 72, // 795: diode.v1.PowerPort.tags:type_name -> diode.v1.Tag + 144, // 796: diode.v1.PowerPort.custom_fields:type_name -> diode.v1.PowerPort.CustomFieldsEntry + 83, // 797: diode.v1.Prefix.vrf:type_name -> diode.v1.VRF + 45, // 798: diode.v1.Prefix.scope_location:type_name -> diode.v1.Location + 66, // 799: diode.v1.Prefix.scope_region:type_name -> diode.v1.Region + 70, // 800: diode.v1.Prefix.scope_site:type_name -> diode.v1.Site + 71, // 801: diode.v1.Prefix.scope_site_group:type_name -> diode.v1.SiteGroup + 73, // 802: diode.v1.Prefix.tenant:type_name -> diode.v1.Tenant + 78, // 803: diode.v1.Prefix.vlan:type_name -> diode.v1.VLAN + 67, // 804: diode.v1.Prefix.role:type_name -> diode.v1.Role + 72, // 805: diode.v1.Prefix.tags:type_name -> diode.v1.Tag + 145, // 806: diode.v1.Prefix.custom_fields:type_name -> diode.v1.Prefix.CustomFieldsEntry + 72, // 807: diode.v1.Provider.tags:type_name -> diode.v1.Tag + 146, // 808: diode.v1.Provider.custom_fields:type_name -> diode.v1.Provider.CustomFieldsEntry + 58, // 809: diode.v1.Provider.accounts:type_name -> diode.v1.ProviderAccount + 3, // 810: diode.v1.Provider.asns:type_name -> diode.v1.ASN + 57, // 811: diode.v1.ProviderAccount.provider:type_name -> diode.v1.Provider + 72, // 812: diode.v1.ProviderAccount.tags:type_name -> diode.v1.Tag + 147, // 813: diode.v1.ProviderAccount.custom_fields:type_name -> diode.v1.ProviderAccount.CustomFieldsEntry + 57, // 814: diode.v1.ProviderNetwork.provider:type_name -> diode.v1.Provider + 72, // 815: diode.v1.ProviderNetwork.tags:type_name -> diode.v1.Tag + 148, // 816: diode.v1.ProviderNetwork.custom_fields:type_name -> diode.v1.ProviderNetwork.CustomFieldsEntry + 72, // 817: diode.v1.RIR.tags:type_name -> diode.v1.Tag + 149, // 818: diode.v1.RIR.custom_fields:type_name -> diode.v1.RIR.CustomFieldsEntry + 70, // 819: diode.v1.Rack.site:type_name -> diode.v1.Site + 45, // 820: diode.v1.Rack.location:type_name -> diode.v1.Location + 73, // 821: diode.v1.Rack.tenant:type_name -> diode.v1.Tenant + 63, // 822: diode.v1.Rack.role:type_name -> diode.v1.RackRole + 64, // 823: diode.v1.Rack.rack_type:type_name -> diode.v1.RackType + 72, // 824: diode.v1.Rack.tags:type_name -> diode.v1.Tag + 150, // 825: diode.v1.Rack.custom_fields:type_name -> diode.v1.Rack.CustomFieldsEntry + 61, // 826: diode.v1.RackReservation.rack:type_name -> diode.v1.Rack + 73, // 827: diode.v1.RackReservation.tenant:type_name -> diode.v1.Tenant + 72, // 828: diode.v1.RackReservation.tags:type_name -> diode.v1.Tag + 151, // 829: diode.v1.RackReservation.custom_fields:type_name -> diode.v1.RackReservation.CustomFieldsEntry + 72, // 830: diode.v1.RackRole.tags:type_name -> diode.v1.Tag + 152, // 831: diode.v1.RackRole.custom_fields:type_name -> diode.v1.RackRole.CustomFieldsEntry + 47, // 832: diode.v1.RackType.manufacturer:type_name -> diode.v1.Manufacturer + 72, // 833: diode.v1.RackType.tags:type_name -> diode.v1.Tag + 153, // 834: diode.v1.RackType.custom_fields:type_name -> diode.v1.RackType.CustomFieldsEntry + 25, // 835: diode.v1.RearPort.device:type_name -> diode.v1.Device + 48, // 836: diode.v1.RearPort.module:type_name -> diode.v1.Module + 72, // 837: diode.v1.RearPort.tags:type_name -> diode.v1.Tag + 154, // 838: diode.v1.RearPort.custom_fields:type_name -> diode.v1.RearPort.CustomFieldsEntry + 66, // 839: diode.v1.Region.parent:type_name -> diode.v1.Region + 72, // 840: diode.v1.Region.tags:type_name -> diode.v1.Tag + 155, // 841: diode.v1.Region.custom_fields:type_name -> diode.v1.Region.CustomFieldsEntry + 72, // 842: diode.v1.Role.tags:type_name -> diode.v1.Tag + 156, // 843: diode.v1.Role.custom_fields:type_name -> diode.v1.Role.CustomFieldsEntry + 73, // 844: diode.v1.RouteTarget.tenant:type_name -> diode.v1.Tenant + 72, // 845: diode.v1.RouteTarget.tags:type_name -> diode.v1.Tag + 157, // 846: diode.v1.RouteTarget.custom_fields:type_name -> diode.v1.RouteTarget.CustomFieldsEntry + 25, // 847: diode.v1.Service.device:type_name -> diode.v1.Device + 90, // 848: diode.v1.Service.virtual_machine:type_name -> diode.v1.VirtualMachine + 72, // 849: diode.v1.Service.tags:type_name -> diode.v1.Tag + 158, // 850: diode.v1.Service.custom_fields:type_name -> diode.v1.Service.CustomFieldsEntry + 35, // 851: diode.v1.Service.ipaddresses:type_name -> diode.v1.IPAddress + 25, // 852: diode.v1.Service.parent_object_device:type_name -> diode.v1.Device + 29, // 853: diode.v1.Service.parent_object_fhrp_group:type_name -> diode.v1.FHRPGroup + 90, // 854: diode.v1.Service.parent_object_virtual_machine:type_name -> diode.v1.VirtualMachine + 66, // 855: diode.v1.Site.region:type_name -> diode.v1.Region + 71, // 856: diode.v1.Site.group:type_name -> diode.v1.SiteGroup + 73, // 857: diode.v1.Site.tenant:type_name -> diode.v1.Tenant + 72, // 858: diode.v1.Site.tags:type_name -> diode.v1.Tag + 159, // 859: diode.v1.Site.custom_fields:type_name -> diode.v1.Site.CustomFieldsEntry + 3, // 860: diode.v1.Site.asns:type_name -> diode.v1.ASN + 71, // 861: diode.v1.SiteGroup.parent:type_name -> diode.v1.SiteGroup + 72, // 862: diode.v1.SiteGroup.tags:type_name -> diode.v1.Tag + 160, // 863: diode.v1.SiteGroup.custom_fields:type_name -> diode.v1.SiteGroup.CustomFieldsEntry + 74, // 864: diode.v1.Tenant.group:type_name -> diode.v1.TenantGroup + 72, // 865: diode.v1.Tenant.tags:type_name -> diode.v1.Tag + 161, // 866: diode.v1.Tenant.custom_fields:type_name -> diode.v1.Tenant.CustomFieldsEntry + 74, // 867: diode.v1.TenantGroup.parent:type_name -> diode.v1.TenantGroup + 72, // 868: diode.v1.TenantGroup.tags:type_name -> diode.v1.Tag + 162, // 869: diode.v1.TenantGroup.custom_fields:type_name -> diode.v1.TenantGroup.CustomFieldsEntry + 76, // 870: diode.v1.Tunnel.group:type_name -> diode.v1.TunnelGroup + 38, // 871: diode.v1.Tunnel.ipsec_profile:type_name -> diode.v1.IPSecProfile + 73, // 872: diode.v1.Tunnel.tenant:type_name -> diode.v1.Tenant + 72, // 873: diode.v1.Tunnel.tags:type_name -> diode.v1.Tag + 163, // 874: diode.v1.Tunnel.custom_fields:type_name -> diode.v1.Tunnel.CustomFieldsEntry + 72, // 875: diode.v1.TunnelGroup.tags:type_name -> diode.v1.Tag + 164, // 876: diode.v1.TunnelGroup.custom_fields:type_name -> diode.v1.TunnelGroup.CustomFieldsEntry + 75, // 877: diode.v1.TunnelTermination.tunnel:type_name -> diode.v1.Tunnel + 3, // 878: diode.v1.TunnelTermination.termination_asn:type_name -> diode.v1.ASN + 4, // 879: diode.v1.TunnelTermination.termination_asn_range:type_name -> diode.v1.ASNRange + 5, // 880: diode.v1.TunnelTermination.termination_aggregate:type_name -> diode.v1.Aggregate + 6, // 881: diode.v1.TunnelTermination.termination_cable:type_name -> diode.v1.Cable + 7, // 882: diode.v1.TunnelTermination.termination_cable_path:type_name -> diode.v1.CablePath + 8, // 883: diode.v1.TunnelTermination.termination_cable_termination:type_name -> diode.v1.CableTermination + 9, // 884: diode.v1.TunnelTermination.termination_circuit:type_name -> diode.v1.Circuit + 10, // 885: diode.v1.TunnelTermination.termination_circuit_group:type_name -> diode.v1.CircuitGroup + 11, // 886: diode.v1.TunnelTermination.termination_circuit_group_assignment:type_name -> diode.v1.CircuitGroupAssignment + 12, // 887: diode.v1.TunnelTermination.termination_circuit_termination:type_name -> diode.v1.CircuitTermination + 13, // 888: diode.v1.TunnelTermination.termination_circuit_type:type_name -> diode.v1.CircuitType + 14, // 889: diode.v1.TunnelTermination.termination_cluster:type_name -> diode.v1.Cluster + 15, // 890: diode.v1.TunnelTermination.termination_cluster_group:type_name -> diode.v1.ClusterGroup + 16, // 891: diode.v1.TunnelTermination.termination_cluster_type:type_name -> diode.v1.ClusterType + 17, // 892: diode.v1.TunnelTermination.termination_console_port:type_name -> diode.v1.ConsolePort + 18, // 893: diode.v1.TunnelTermination.termination_console_server_port:type_name -> diode.v1.ConsoleServerPort + 19, // 894: diode.v1.TunnelTermination.termination_contact:type_name -> diode.v1.Contact + 20, // 895: diode.v1.TunnelTermination.termination_contact_assignment:type_name -> diode.v1.ContactAssignment + 21, // 896: diode.v1.TunnelTermination.termination_contact_group:type_name -> diode.v1.ContactGroup + 22, // 897: diode.v1.TunnelTermination.termination_contact_role:type_name -> diode.v1.ContactRole + 25, // 898: diode.v1.TunnelTermination.termination_device:type_name -> diode.v1.Device + 26, // 899: diode.v1.TunnelTermination.termination_device_bay:type_name -> diode.v1.DeviceBay + 27, // 900: diode.v1.TunnelTermination.termination_device_role:type_name -> diode.v1.DeviceRole + 28, // 901: diode.v1.TunnelTermination.termination_device_type:type_name -> diode.v1.DeviceType + 29, // 902: diode.v1.TunnelTermination.termination_fhrp_group:type_name -> diode.v1.FHRPGroup + 30, // 903: diode.v1.TunnelTermination.termination_fhrp_group_assignment:type_name -> diode.v1.FHRPGroupAssignment + 31, // 904: diode.v1.TunnelTermination.termination_front_port:type_name -> diode.v1.FrontPort + 33, // 905: diode.v1.TunnelTermination.termination_ike_policy:type_name -> diode.v1.IKEPolicy + 34, // 906: diode.v1.TunnelTermination.termination_ike_proposal:type_name -> diode.v1.IKEProposal + 35, // 907: diode.v1.TunnelTermination.termination_ip_address:type_name -> diode.v1.IPAddress + 36, // 908: diode.v1.TunnelTermination.termination_ip_range:type_name -> diode.v1.IPRange + 37, // 909: diode.v1.TunnelTermination.termination_ip_sec_policy:type_name -> diode.v1.IPSecPolicy + 38, // 910: diode.v1.TunnelTermination.termination_ip_sec_profile:type_name -> diode.v1.IPSecProfile + 39, // 911: diode.v1.TunnelTermination.termination_ip_sec_proposal:type_name -> diode.v1.IPSecProposal + 40, // 912: diode.v1.TunnelTermination.termination_interface:type_name -> diode.v1.Interface + 41, // 913: diode.v1.TunnelTermination.termination_inventory_item:type_name -> diode.v1.InventoryItem + 42, // 914: diode.v1.TunnelTermination.termination_inventory_item_role:type_name -> diode.v1.InventoryItemRole + 43, // 915: diode.v1.TunnelTermination.termination_l2vpn:type_name -> diode.v1.L2VPN + 44, // 916: diode.v1.TunnelTermination.termination_l2vpn_termination:type_name -> diode.v1.L2VPNTermination + 45, // 917: diode.v1.TunnelTermination.termination_location:type_name -> diode.v1.Location + 46, // 918: diode.v1.TunnelTermination.termination_mac_address:type_name -> diode.v1.MACAddress + 47, // 919: diode.v1.TunnelTermination.termination_manufacturer:type_name -> diode.v1.Manufacturer + 48, // 920: diode.v1.TunnelTermination.termination_module:type_name -> diode.v1.Module + 49, // 921: diode.v1.TunnelTermination.termination_module_bay:type_name -> diode.v1.ModuleBay + 50, // 922: diode.v1.TunnelTermination.termination_module_type:type_name -> diode.v1.ModuleType + 51, // 923: diode.v1.TunnelTermination.termination_platform:type_name -> diode.v1.Platform + 52, // 924: diode.v1.TunnelTermination.termination_power_feed:type_name -> diode.v1.PowerFeed + 53, // 925: diode.v1.TunnelTermination.termination_power_outlet:type_name -> diode.v1.PowerOutlet + 54, // 926: diode.v1.TunnelTermination.termination_power_panel:type_name -> diode.v1.PowerPanel + 55, // 927: diode.v1.TunnelTermination.termination_power_port:type_name -> diode.v1.PowerPort + 56, // 928: diode.v1.TunnelTermination.termination_prefix:type_name -> diode.v1.Prefix + 57, // 929: diode.v1.TunnelTermination.termination_provider:type_name -> diode.v1.Provider + 58, // 930: diode.v1.TunnelTermination.termination_provider_account:type_name -> diode.v1.ProviderAccount + 59, // 931: diode.v1.TunnelTermination.termination_provider_network:type_name -> diode.v1.ProviderNetwork + 60, // 932: diode.v1.TunnelTermination.termination_rir:type_name -> diode.v1.RIR + 61, // 933: diode.v1.TunnelTermination.termination_rack:type_name -> diode.v1.Rack + 62, // 934: diode.v1.TunnelTermination.termination_rack_reservation:type_name -> diode.v1.RackReservation + 63, // 935: diode.v1.TunnelTermination.termination_rack_role:type_name -> diode.v1.RackRole + 64, // 936: diode.v1.TunnelTermination.termination_rack_type:type_name -> diode.v1.RackType + 65, // 937: diode.v1.TunnelTermination.termination_rear_port:type_name -> diode.v1.RearPort + 66, // 938: diode.v1.TunnelTermination.termination_region:type_name -> diode.v1.Region + 67, // 939: diode.v1.TunnelTermination.termination_role:type_name -> diode.v1.Role + 68, // 940: diode.v1.TunnelTermination.termination_route_target:type_name -> diode.v1.RouteTarget + 69, // 941: diode.v1.TunnelTermination.termination_service:type_name -> diode.v1.Service + 70, // 942: diode.v1.TunnelTermination.termination_site:type_name -> diode.v1.Site + 71, // 943: diode.v1.TunnelTermination.termination_site_group:type_name -> diode.v1.SiteGroup + 72, // 944: diode.v1.TunnelTermination.termination_tag:type_name -> diode.v1.Tag + 73, // 945: diode.v1.TunnelTermination.termination_tenant:type_name -> diode.v1.Tenant + 74, // 946: diode.v1.TunnelTermination.termination_tenant_group:type_name -> diode.v1.TenantGroup + 75, // 947: diode.v1.TunnelTermination.termination_tunnel:type_name -> diode.v1.Tunnel + 76, // 948: diode.v1.TunnelTermination.termination_tunnel_group:type_name -> diode.v1.TunnelGroup + 77, // 949: diode.v1.TunnelTermination.termination_tunnel_termination:type_name -> diode.v1.TunnelTermination + 78, // 950: diode.v1.TunnelTermination.termination_vlan:type_name -> diode.v1.VLAN + 79, // 951: diode.v1.TunnelTermination.termination_vlan_group:type_name -> diode.v1.VLANGroup + 80, // 952: diode.v1.TunnelTermination.termination_vlan_translation_policy:type_name -> diode.v1.VLANTranslationPolicy + 81, // 953: diode.v1.TunnelTermination.termination_vlan_translation_rule:type_name -> diode.v1.VLANTranslationRule + 82, // 954: diode.v1.TunnelTermination.termination_vm_interface:type_name -> diode.v1.VMInterface + 83, // 955: diode.v1.TunnelTermination.termination_vrf:type_name -> diode.v1.VRF + 84, // 956: diode.v1.TunnelTermination.termination_virtual_chassis:type_name -> diode.v1.VirtualChassis + 85, // 957: diode.v1.TunnelTermination.termination_virtual_circuit:type_name -> diode.v1.VirtualCircuit + 86, // 958: diode.v1.TunnelTermination.termination_virtual_circuit_termination:type_name -> diode.v1.VirtualCircuitTermination + 87, // 959: diode.v1.TunnelTermination.termination_virtual_circuit_type:type_name -> diode.v1.VirtualCircuitType + 88, // 960: diode.v1.TunnelTermination.termination_virtual_device_context:type_name -> diode.v1.VirtualDeviceContext + 89, // 961: diode.v1.TunnelTermination.termination_virtual_disk:type_name -> diode.v1.VirtualDisk + 90, // 962: diode.v1.TunnelTermination.termination_virtual_machine:type_name -> diode.v1.VirtualMachine + 91, // 963: diode.v1.TunnelTermination.termination_wireless_lan:type_name -> diode.v1.WirelessLAN + 92, // 964: diode.v1.TunnelTermination.termination_wireless_lan_group:type_name -> diode.v1.WirelessLANGroup + 93, // 965: diode.v1.TunnelTermination.termination_wireless_link:type_name -> diode.v1.WirelessLink + 94, // 966: diode.v1.TunnelTermination.termination_custom_field:type_name -> diode.v1.CustomField + 95, // 967: diode.v1.TunnelTermination.termination_custom_field_choice_set:type_name -> diode.v1.CustomFieldChoiceSet + 96, // 968: diode.v1.TunnelTermination.termination_journal_entry:type_name -> diode.v1.JournalEntry + 97, // 969: diode.v1.TunnelTermination.termination_module_type_profile:type_name -> diode.v1.ModuleTypeProfile + 98, // 970: diode.v1.TunnelTermination.termination_custom_link:type_name -> diode.v1.CustomLink + 35, // 971: diode.v1.TunnelTermination.outside_ip:type_name -> diode.v1.IPAddress + 72, // 972: diode.v1.TunnelTermination.tags:type_name -> diode.v1.Tag + 165, // 973: diode.v1.TunnelTermination.custom_fields:type_name -> diode.v1.TunnelTermination.CustomFieldsEntry + 70, // 974: diode.v1.VLAN.site:type_name -> diode.v1.Site + 79, // 975: diode.v1.VLAN.group:type_name -> diode.v1.VLANGroup + 73, // 976: diode.v1.VLAN.tenant:type_name -> diode.v1.Tenant + 67, // 977: diode.v1.VLAN.role:type_name -> diode.v1.Role + 78, // 978: diode.v1.VLAN.qinq_svlan:type_name -> diode.v1.VLAN + 72, // 979: diode.v1.VLAN.tags:type_name -> diode.v1.Tag + 166, // 980: diode.v1.VLAN.custom_fields:type_name -> diode.v1.VLAN.CustomFieldsEntry + 14, // 981: diode.v1.VLANGroup.scope_cluster:type_name -> diode.v1.Cluster + 15, // 982: diode.v1.VLANGroup.scope_cluster_group:type_name -> diode.v1.ClusterGroup + 45, // 983: diode.v1.VLANGroup.scope_location:type_name -> diode.v1.Location + 61, // 984: diode.v1.VLANGroup.scope_rack:type_name -> diode.v1.Rack + 66, // 985: diode.v1.VLANGroup.scope_region:type_name -> diode.v1.Region + 70, // 986: diode.v1.VLANGroup.scope_site:type_name -> diode.v1.Site + 71, // 987: diode.v1.VLANGroup.scope_site_group:type_name -> diode.v1.SiteGroup + 72, // 988: diode.v1.VLANGroup.tags:type_name -> diode.v1.Tag + 167, // 989: diode.v1.VLANGroup.custom_fields:type_name -> diode.v1.VLANGroup.CustomFieldsEntry + 73, // 990: diode.v1.VLANGroup.tenant:type_name -> diode.v1.Tenant + 80, // 991: diode.v1.VLANTranslationRule.policy:type_name -> diode.v1.VLANTranslationPolicy + 90, // 992: diode.v1.VMInterface.virtual_machine:type_name -> diode.v1.VirtualMachine + 82, // 993: diode.v1.VMInterface.parent:type_name -> diode.v1.VMInterface + 82, // 994: diode.v1.VMInterface.bridge:type_name -> diode.v1.VMInterface + 46, // 995: diode.v1.VMInterface.primary_mac_address:type_name -> diode.v1.MACAddress + 78, // 996: diode.v1.VMInterface.untagged_vlan:type_name -> diode.v1.VLAN + 78, // 997: diode.v1.VMInterface.qinq_svlan:type_name -> diode.v1.VLAN + 80, // 998: diode.v1.VMInterface.vlan_translation_policy:type_name -> diode.v1.VLANTranslationPolicy + 83, // 999: diode.v1.VMInterface.vrf:type_name -> diode.v1.VRF + 72, // 1000: diode.v1.VMInterface.tags:type_name -> diode.v1.Tag + 168, // 1001: diode.v1.VMInterface.custom_fields:type_name -> diode.v1.VMInterface.CustomFieldsEntry + 78, // 1002: diode.v1.VMInterface.tagged_vlans:type_name -> diode.v1.VLAN + 73, // 1003: diode.v1.VRF.tenant:type_name -> diode.v1.Tenant + 72, // 1004: diode.v1.VRF.tags:type_name -> diode.v1.Tag + 169, // 1005: diode.v1.VRF.custom_fields:type_name -> diode.v1.VRF.CustomFieldsEntry + 68, // 1006: diode.v1.VRF.import_targets:type_name -> diode.v1.RouteTarget + 68, // 1007: diode.v1.VRF.export_targets:type_name -> diode.v1.RouteTarget + 25, // 1008: diode.v1.VirtualChassis.master:type_name -> diode.v1.Device + 72, // 1009: diode.v1.VirtualChassis.tags:type_name -> diode.v1.Tag + 170, // 1010: diode.v1.VirtualChassis.custom_fields:type_name -> diode.v1.VirtualChassis.CustomFieldsEntry + 59, // 1011: diode.v1.VirtualCircuit.provider_network:type_name -> diode.v1.ProviderNetwork + 58, // 1012: diode.v1.VirtualCircuit.provider_account:type_name -> diode.v1.ProviderAccount + 87, // 1013: diode.v1.VirtualCircuit.type:type_name -> diode.v1.VirtualCircuitType + 73, // 1014: diode.v1.VirtualCircuit.tenant:type_name -> diode.v1.Tenant + 72, // 1015: diode.v1.VirtualCircuit.tags:type_name -> diode.v1.Tag + 171, // 1016: diode.v1.VirtualCircuit.custom_fields:type_name -> diode.v1.VirtualCircuit.CustomFieldsEntry + 85, // 1017: diode.v1.VirtualCircuitTermination.virtual_circuit:type_name -> diode.v1.VirtualCircuit + 40, // 1018: diode.v1.VirtualCircuitTermination.interface:type_name -> diode.v1.Interface + 72, // 1019: diode.v1.VirtualCircuitTermination.tags:type_name -> diode.v1.Tag + 172, // 1020: diode.v1.VirtualCircuitTermination.custom_fields:type_name -> diode.v1.VirtualCircuitTermination.CustomFieldsEntry + 72, // 1021: diode.v1.VirtualCircuitType.tags:type_name -> diode.v1.Tag + 173, // 1022: diode.v1.VirtualCircuitType.custom_fields:type_name -> diode.v1.VirtualCircuitType.CustomFieldsEntry + 25, // 1023: diode.v1.VirtualDeviceContext.device:type_name -> diode.v1.Device + 73, // 1024: diode.v1.VirtualDeviceContext.tenant:type_name -> diode.v1.Tenant + 35, // 1025: diode.v1.VirtualDeviceContext.primary_ip4:type_name -> diode.v1.IPAddress + 35, // 1026: diode.v1.VirtualDeviceContext.primary_ip6:type_name -> diode.v1.IPAddress + 72, // 1027: diode.v1.VirtualDeviceContext.tags:type_name -> diode.v1.Tag + 174, // 1028: diode.v1.VirtualDeviceContext.custom_fields:type_name -> diode.v1.VirtualDeviceContext.CustomFieldsEntry + 90, // 1029: diode.v1.VirtualDisk.virtual_machine:type_name -> diode.v1.VirtualMachine + 72, // 1030: diode.v1.VirtualDisk.tags:type_name -> diode.v1.Tag + 175, // 1031: diode.v1.VirtualDisk.custom_fields:type_name -> diode.v1.VirtualDisk.CustomFieldsEntry + 70, // 1032: diode.v1.VirtualMachine.site:type_name -> diode.v1.Site + 14, // 1033: diode.v1.VirtualMachine.cluster:type_name -> diode.v1.Cluster + 25, // 1034: diode.v1.VirtualMachine.device:type_name -> diode.v1.Device + 27, // 1035: diode.v1.VirtualMachine.role:type_name -> diode.v1.DeviceRole + 73, // 1036: diode.v1.VirtualMachine.tenant:type_name -> diode.v1.Tenant + 51, // 1037: diode.v1.VirtualMachine.platform:type_name -> diode.v1.Platform + 35, // 1038: diode.v1.VirtualMachine.primary_ip4:type_name -> diode.v1.IPAddress + 35, // 1039: diode.v1.VirtualMachine.primary_ip6:type_name -> diode.v1.IPAddress + 72, // 1040: diode.v1.VirtualMachine.tags:type_name -> diode.v1.Tag + 176, // 1041: diode.v1.VirtualMachine.custom_fields:type_name -> diode.v1.VirtualMachine.CustomFieldsEntry + 92, // 1042: diode.v1.WirelessLAN.group:type_name -> diode.v1.WirelessLANGroup + 78, // 1043: diode.v1.WirelessLAN.vlan:type_name -> diode.v1.VLAN + 45, // 1044: diode.v1.WirelessLAN.scope_location:type_name -> diode.v1.Location + 66, // 1045: diode.v1.WirelessLAN.scope_region:type_name -> diode.v1.Region + 70, // 1046: diode.v1.WirelessLAN.scope_site:type_name -> diode.v1.Site + 71, // 1047: diode.v1.WirelessLAN.scope_site_group:type_name -> diode.v1.SiteGroup + 73, // 1048: diode.v1.WirelessLAN.tenant:type_name -> diode.v1.Tenant + 72, // 1049: diode.v1.WirelessLAN.tags:type_name -> diode.v1.Tag + 177, // 1050: diode.v1.WirelessLAN.custom_fields:type_name -> diode.v1.WirelessLAN.CustomFieldsEntry + 92, // 1051: diode.v1.WirelessLANGroup.parent:type_name -> diode.v1.WirelessLANGroup + 72, // 1052: diode.v1.WirelessLANGroup.tags:type_name -> diode.v1.Tag + 178, // 1053: diode.v1.WirelessLANGroup.custom_fields:type_name -> diode.v1.WirelessLANGroup.CustomFieldsEntry + 40, // 1054: diode.v1.WirelessLink.interface_a:type_name -> diode.v1.Interface + 40, // 1055: diode.v1.WirelessLink.interface_b:type_name -> diode.v1.Interface + 73, // 1056: diode.v1.WirelessLink.tenant:type_name -> diode.v1.Tenant + 72, // 1057: diode.v1.WirelessLink.tags:type_name -> diode.v1.Tag + 179, // 1058: diode.v1.WirelessLink.custom_fields:type_name -> diode.v1.WirelessLink.CustomFieldsEntry + 95, // 1059: diode.v1.CustomField.choice_set:type_name -> diode.v1.CustomFieldChoiceSet + 3, // 1060: diode.v1.JournalEntry.assigned_object_asn:type_name -> diode.v1.ASN + 4, // 1061: diode.v1.JournalEntry.assigned_object_asn_range:type_name -> diode.v1.ASNRange + 5, // 1062: diode.v1.JournalEntry.assigned_object_aggregate:type_name -> diode.v1.Aggregate + 6, // 1063: diode.v1.JournalEntry.assigned_object_cable:type_name -> diode.v1.Cable + 7, // 1064: diode.v1.JournalEntry.assigned_object_cable_path:type_name -> diode.v1.CablePath + 8, // 1065: diode.v1.JournalEntry.assigned_object_cable_termination:type_name -> diode.v1.CableTermination + 9, // 1066: diode.v1.JournalEntry.assigned_object_circuit:type_name -> diode.v1.Circuit + 10, // 1067: diode.v1.JournalEntry.assigned_object_circuit_group:type_name -> diode.v1.CircuitGroup + 11, // 1068: diode.v1.JournalEntry.assigned_object_circuit_group_assignment:type_name -> diode.v1.CircuitGroupAssignment + 12, // 1069: diode.v1.JournalEntry.assigned_object_circuit_termination:type_name -> diode.v1.CircuitTermination + 13, // 1070: diode.v1.JournalEntry.assigned_object_circuit_type:type_name -> diode.v1.CircuitType + 14, // 1071: diode.v1.JournalEntry.assigned_object_cluster:type_name -> diode.v1.Cluster + 15, // 1072: diode.v1.JournalEntry.assigned_object_cluster_group:type_name -> diode.v1.ClusterGroup + 16, // 1073: diode.v1.JournalEntry.assigned_object_cluster_type:type_name -> diode.v1.ClusterType + 17, // 1074: diode.v1.JournalEntry.assigned_object_console_port:type_name -> diode.v1.ConsolePort + 18, // 1075: diode.v1.JournalEntry.assigned_object_console_server_port:type_name -> diode.v1.ConsoleServerPort + 19, // 1076: diode.v1.JournalEntry.assigned_object_contact:type_name -> diode.v1.Contact + 20, // 1077: diode.v1.JournalEntry.assigned_object_contact_assignment:type_name -> diode.v1.ContactAssignment + 21, // 1078: diode.v1.JournalEntry.assigned_object_contact_group:type_name -> diode.v1.ContactGroup + 22, // 1079: diode.v1.JournalEntry.assigned_object_contact_role:type_name -> diode.v1.ContactRole + 94, // 1080: diode.v1.JournalEntry.assigned_object_custom_field:type_name -> diode.v1.CustomField + 95, // 1081: diode.v1.JournalEntry.assigned_object_custom_field_choice_set:type_name -> diode.v1.CustomFieldChoiceSet + 25, // 1082: diode.v1.JournalEntry.assigned_object_device:type_name -> diode.v1.Device + 26, // 1083: diode.v1.JournalEntry.assigned_object_device_bay:type_name -> diode.v1.DeviceBay + 27, // 1084: diode.v1.JournalEntry.assigned_object_device_role:type_name -> diode.v1.DeviceRole + 28, // 1085: diode.v1.JournalEntry.assigned_object_device_type:type_name -> diode.v1.DeviceType + 29, // 1086: diode.v1.JournalEntry.assigned_object_fhrp_group:type_name -> diode.v1.FHRPGroup + 30, // 1087: diode.v1.JournalEntry.assigned_object_fhrp_group_assignment:type_name -> diode.v1.FHRPGroupAssignment + 31, // 1088: diode.v1.JournalEntry.assigned_object_front_port:type_name -> diode.v1.FrontPort + 33, // 1089: diode.v1.JournalEntry.assigned_object_ike_policy:type_name -> diode.v1.IKEPolicy + 34, // 1090: diode.v1.JournalEntry.assigned_object_ike_proposal:type_name -> diode.v1.IKEProposal + 35, // 1091: diode.v1.JournalEntry.assigned_object_ip_address:type_name -> diode.v1.IPAddress + 36, // 1092: diode.v1.JournalEntry.assigned_object_ip_range:type_name -> diode.v1.IPRange + 37, // 1093: diode.v1.JournalEntry.assigned_object_ip_sec_policy:type_name -> diode.v1.IPSecPolicy + 38, // 1094: diode.v1.JournalEntry.assigned_object_ip_sec_profile:type_name -> diode.v1.IPSecProfile + 39, // 1095: diode.v1.JournalEntry.assigned_object_ip_sec_proposal:type_name -> diode.v1.IPSecProposal + 40, // 1096: diode.v1.JournalEntry.assigned_object_interface:type_name -> diode.v1.Interface + 41, // 1097: diode.v1.JournalEntry.assigned_object_inventory_item:type_name -> diode.v1.InventoryItem + 42, // 1098: diode.v1.JournalEntry.assigned_object_inventory_item_role:type_name -> diode.v1.InventoryItemRole + 96, // 1099: diode.v1.JournalEntry.assigned_object_journal_entry:type_name -> diode.v1.JournalEntry + 43, // 1100: diode.v1.JournalEntry.assigned_object_l2vpn:type_name -> diode.v1.L2VPN + 44, // 1101: diode.v1.JournalEntry.assigned_object_l2vpn_termination:type_name -> diode.v1.L2VPNTermination + 45, // 1102: diode.v1.JournalEntry.assigned_object_location:type_name -> diode.v1.Location + 46, // 1103: diode.v1.JournalEntry.assigned_object_mac_address:type_name -> diode.v1.MACAddress + 47, // 1104: diode.v1.JournalEntry.assigned_object_manufacturer:type_name -> diode.v1.Manufacturer + 48, // 1105: diode.v1.JournalEntry.assigned_object_module:type_name -> diode.v1.Module + 49, // 1106: diode.v1.JournalEntry.assigned_object_module_bay:type_name -> diode.v1.ModuleBay + 50, // 1107: diode.v1.JournalEntry.assigned_object_module_type:type_name -> diode.v1.ModuleType + 97, // 1108: diode.v1.JournalEntry.assigned_object_module_type_profile:type_name -> diode.v1.ModuleTypeProfile + 51, // 1109: diode.v1.JournalEntry.assigned_object_platform:type_name -> diode.v1.Platform + 52, // 1110: diode.v1.JournalEntry.assigned_object_power_feed:type_name -> diode.v1.PowerFeed + 53, // 1111: diode.v1.JournalEntry.assigned_object_power_outlet:type_name -> diode.v1.PowerOutlet + 54, // 1112: diode.v1.JournalEntry.assigned_object_power_panel:type_name -> diode.v1.PowerPanel + 55, // 1113: diode.v1.JournalEntry.assigned_object_power_port:type_name -> diode.v1.PowerPort + 56, // 1114: diode.v1.JournalEntry.assigned_object_prefix:type_name -> diode.v1.Prefix + 57, // 1115: diode.v1.JournalEntry.assigned_object_provider:type_name -> diode.v1.Provider + 58, // 1116: diode.v1.JournalEntry.assigned_object_provider_account:type_name -> diode.v1.ProviderAccount + 59, // 1117: diode.v1.JournalEntry.assigned_object_provider_network:type_name -> diode.v1.ProviderNetwork + 60, // 1118: diode.v1.JournalEntry.assigned_object_rir:type_name -> diode.v1.RIR + 61, // 1119: diode.v1.JournalEntry.assigned_object_rack:type_name -> diode.v1.Rack + 62, // 1120: diode.v1.JournalEntry.assigned_object_rack_reservation:type_name -> diode.v1.RackReservation + 63, // 1121: diode.v1.JournalEntry.assigned_object_rack_role:type_name -> diode.v1.RackRole + 64, // 1122: diode.v1.JournalEntry.assigned_object_rack_type:type_name -> diode.v1.RackType + 65, // 1123: diode.v1.JournalEntry.assigned_object_rear_port:type_name -> diode.v1.RearPort + 66, // 1124: diode.v1.JournalEntry.assigned_object_region:type_name -> diode.v1.Region + 67, // 1125: diode.v1.JournalEntry.assigned_object_role:type_name -> diode.v1.Role + 68, // 1126: diode.v1.JournalEntry.assigned_object_route_target:type_name -> diode.v1.RouteTarget + 69, // 1127: diode.v1.JournalEntry.assigned_object_service:type_name -> diode.v1.Service + 70, // 1128: diode.v1.JournalEntry.assigned_object_site:type_name -> diode.v1.Site + 71, // 1129: diode.v1.JournalEntry.assigned_object_site_group:type_name -> diode.v1.SiteGroup + 72, // 1130: diode.v1.JournalEntry.assigned_object_tag:type_name -> diode.v1.Tag + 73, // 1131: diode.v1.JournalEntry.assigned_object_tenant:type_name -> diode.v1.Tenant + 74, // 1132: diode.v1.JournalEntry.assigned_object_tenant_group:type_name -> diode.v1.TenantGroup + 75, // 1133: diode.v1.JournalEntry.assigned_object_tunnel:type_name -> diode.v1.Tunnel + 76, // 1134: diode.v1.JournalEntry.assigned_object_tunnel_group:type_name -> diode.v1.TunnelGroup + 77, // 1135: diode.v1.JournalEntry.assigned_object_tunnel_termination:type_name -> diode.v1.TunnelTermination + 78, // 1136: diode.v1.JournalEntry.assigned_object_vlan:type_name -> diode.v1.VLAN + 79, // 1137: diode.v1.JournalEntry.assigned_object_vlan_group:type_name -> diode.v1.VLANGroup + 80, // 1138: diode.v1.JournalEntry.assigned_object_vlan_translation_policy:type_name -> diode.v1.VLANTranslationPolicy + 81, // 1139: diode.v1.JournalEntry.assigned_object_vlan_translation_rule:type_name -> diode.v1.VLANTranslationRule + 82, // 1140: diode.v1.JournalEntry.assigned_object_vm_interface:type_name -> diode.v1.VMInterface + 83, // 1141: diode.v1.JournalEntry.assigned_object_vrf:type_name -> diode.v1.VRF + 84, // 1142: diode.v1.JournalEntry.assigned_object_virtual_chassis:type_name -> diode.v1.VirtualChassis + 85, // 1143: diode.v1.JournalEntry.assigned_object_virtual_circuit:type_name -> diode.v1.VirtualCircuit + 86, // 1144: diode.v1.JournalEntry.assigned_object_virtual_circuit_termination:type_name -> diode.v1.VirtualCircuitTermination + 87, // 1145: diode.v1.JournalEntry.assigned_object_virtual_circuit_type:type_name -> diode.v1.VirtualCircuitType + 88, // 1146: diode.v1.JournalEntry.assigned_object_virtual_device_context:type_name -> diode.v1.VirtualDeviceContext + 89, // 1147: diode.v1.JournalEntry.assigned_object_virtual_disk:type_name -> diode.v1.VirtualDisk + 90, // 1148: diode.v1.JournalEntry.assigned_object_virtual_machine:type_name -> diode.v1.VirtualMachine + 91, // 1149: diode.v1.JournalEntry.assigned_object_wireless_lan:type_name -> diode.v1.WirelessLAN + 92, // 1150: diode.v1.JournalEntry.assigned_object_wireless_lan_group:type_name -> diode.v1.WirelessLANGroup + 93, // 1151: diode.v1.JournalEntry.assigned_object_wireless_link:type_name -> diode.v1.WirelessLink + 98, // 1152: diode.v1.JournalEntry.assigned_object_custom_link:type_name -> diode.v1.CustomLink + 72, // 1153: diode.v1.JournalEntry.tags:type_name -> diode.v1.Tag + 180, // 1154: diode.v1.JournalEntry.custom_fields:type_name -> diode.v1.JournalEntry.CustomFieldsEntry + 72, // 1155: diode.v1.ModuleTypeProfile.tags:type_name -> diode.v1.Tag + 181, // 1156: diode.v1.ModuleTypeProfile.custom_fields:type_name -> diode.v1.ModuleTypeProfile.CustomFieldsEntry + 24, // 1157: diode.v1.ASN.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1158: diode.v1.ASNRange.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1159: diode.v1.Aggregate.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1160: diode.v1.Cable.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1161: diode.v1.Circuit.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1162: diode.v1.CircuitGroup.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1163: diode.v1.CircuitTermination.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1164: diode.v1.CircuitType.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1165: diode.v1.Cluster.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1166: diode.v1.ClusterGroup.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1167: diode.v1.ClusterType.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1168: diode.v1.ConsolePort.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1169: diode.v1.ConsoleServerPort.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1170: diode.v1.Contact.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1171: diode.v1.ContactAssignment.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1172: diode.v1.ContactGroup.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1173: diode.v1.ContactRole.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1174: diode.v1.Device.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1175: diode.v1.DeviceBay.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1176: diode.v1.DeviceRole.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1177: diode.v1.DeviceType.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1178: diode.v1.FHRPGroup.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1179: diode.v1.FrontPort.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1180: diode.v1.IKEPolicy.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1181: diode.v1.IKEProposal.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1182: diode.v1.IPAddress.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1183: diode.v1.IPRange.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1184: diode.v1.IPSecPolicy.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1185: diode.v1.IPSecProfile.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1186: diode.v1.IPSecProposal.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1187: diode.v1.Interface.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1188: diode.v1.InventoryItem.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1189: diode.v1.InventoryItemRole.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1190: diode.v1.L2VPN.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1191: diode.v1.L2VPNTermination.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1192: diode.v1.Location.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1193: diode.v1.MACAddress.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1194: diode.v1.Manufacturer.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1195: diode.v1.Module.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1196: diode.v1.ModuleBay.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1197: diode.v1.ModuleType.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1198: diode.v1.Platform.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1199: diode.v1.PowerFeed.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1200: diode.v1.PowerOutlet.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1201: diode.v1.PowerPanel.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1202: diode.v1.PowerPort.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1203: diode.v1.Prefix.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1204: diode.v1.Provider.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1205: diode.v1.ProviderAccount.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1206: diode.v1.ProviderNetwork.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1207: diode.v1.RIR.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1208: diode.v1.Rack.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1209: diode.v1.RackReservation.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1210: diode.v1.RackRole.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1211: diode.v1.RackType.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1212: diode.v1.RearPort.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1213: diode.v1.Region.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1214: diode.v1.Role.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1215: diode.v1.RouteTarget.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1216: diode.v1.Service.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1217: diode.v1.Site.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1218: diode.v1.SiteGroup.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1219: diode.v1.Tenant.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1220: diode.v1.TenantGroup.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1221: diode.v1.Tunnel.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1222: diode.v1.TunnelGroup.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1223: diode.v1.TunnelTermination.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1224: diode.v1.VLAN.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1225: diode.v1.VLANGroup.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1226: diode.v1.VMInterface.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1227: diode.v1.VRF.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1228: diode.v1.VirtualChassis.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1229: diode.v1.VirtualCircuit.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1230: diode.v1.VirtualCircuitTermination.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1231: diode.v1.VirtualCircuitType.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1232: diode.v1.VirtualDeviceContext.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1233: diode.v1.VirtualDisk.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1234: diode.v1.VirtualMachine.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1235: diode.v1.WirelessLAN.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1236: diode.v1.WirelessLANGroup.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1237: diode.v1.WirelessLink.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1238: diode.v1.JournalEntry.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 24, // 1239: diode.v1.ModuleTypeProfile.CustomFieldsEntry.value:type_name -> diode.v1.CustomFieldValue + 1, // 1240: diode.v1.IngesterService.Ingest:input_type -> diode.v1.IngestRequest + 2, // 1241: diode.v1.IngesterService.Ingest:output_type -> diode.v1.IngestResponse + 1241, // [1241:1242] is the sub-list for method output_type + 1240, // [1240:1241] is the sub-list for method input_type + 1240, // [1240:1240] is the sub-list for extension type_name + 1240, // [1240:1240] is the sub-list for extension extendee + 0, // [0:1240] is the sub-list for field type_name } func init() { file_diode_v1_ingester_proto_init() } diff --git a/diode-server/gen/diode/v1/diodepb/ingester.pb.validate.go b/diode-server/gen/diode/v1/diodepb/ingester.pb.validate.go index 990e1a6b..e26cca6b 100644 --- a/diode-server/gen/diode/v1/diodepb/ingester.pb.validate.go +++ b/diode-server/gen/diode/v1/diodepb/ingester.pb.validate.go @@ -30411,7 +30411,7 @@ func (m *Interface) validate(all bool) error { if _, ok := _Interface_Type_InLookup[m.GetType()]; !ok { err := InterfaceValidationError{ field: "Type", - reason: "value must be in list [1000base-kx 1000base-lx 1000base-sx 1000base-t 1000base-tx 1000base-x-gbic 1000base-x-sfp 100base-fx 100base-lfx 100base-t1 100base-tx 100base-x-sfp 100gbase-kp4 100gbase-kr2 100gbase-kr4 100gbase-x-cfp 100gbase-x-cfp2 100gbase-x-cfp4 100gbase-x-cpak 100gbase-x-cxp 100gbase-x-dsfp 100gbase-x-qsfp28 100gbase-x-qsfpdd 100gbase-x-sfpdd 10g-epon 10gbase-cx4 10gbase-kr 10gbase-kx4 10gbase-t 10gbase-x-sfpp 10gbase-x-x2 10gbase-x-xenpak 10gbase-x-xfp 128gfc-qsfp28 16gfc-sfpp 1gfc-sfp 2.5gbase-kx 2.5gbase-t 200gbase-x-cfp2 200gbase-x-qsfp56 200gbase-x-qsfpdd 25g-pon 25gbase-kr 25gbase-x-sfp28 2gfc-sfp 32gfc-sfp28 32gfc-sfpp 400gbase-x-cdfp 400gbase-x-cfp2 400gbase-x-cfp8 400gbase-x-osfp 400gbase-x-osfp-rhs 400gbase-x-qsfp112 400gbase-x-qsfpdd 40gbase-kr4 40gbase-x-qsfpp 4g 4gfc-sfp 50g-pon 50gbase-kr 50gbase-x-sfp28 50gbase-x-sfp56 5g 5gbase-kr 5gbase-t 64gfc-qsfpp 64gfc-sfpdd 64gfc-sfpp 800gbase-x-osfp 800gbase-x-qsfpdd 8gfc-sfpp bpon bridge cdma cisco-flexstack cisco-flexstack-plus cisco-stackwise cisco-stackwise-160 cisco-stackwise-1t cisco-stackwise-320 cisco-stackwise-480 cisco-stackwise-80 cisco-stackwise-plus docsis e1 e3 epon extreme-summitstack extreme-summitstack-128 extreme-summitstack-256 extreme-summitstack-512 gpon gsm ieee802.11a ieee802.11ac ieee802.11ad ieee802.11ax ieee802.11ay ieee802.11be ieee802.11g ieee802.11n ieee802.15.1 ieee802.15.4 infiniband-ddr infiniband-edr infiniband-fdr infiniband-fdr10 infiniband-hdr infiniband-ndr infiniband-qdr infiniband-sdr infiniband-xdr juniper-vcp lag lte moca ng-pon2 other other-wireless sonet-oc12 sonet-oc192 sonet-oc1920 sonet-oc3 sonet-oc3840 sonet-oc48 sonet-oc768 t1 t3 virtual xdsl xg-pon xgs-pon]", + reason: "value must be in list [1000base-bx10-d 1000base-bx10-u 1000base-cwdm 1000base-cx 1000base-dwdm 1000base-ex 1000base-kx 1000base-lsx 1000base-lx 1000base-lx10 1000base-sx 1000base-t 1000base-tx 1000base-x-gbic 1000base-x-sfp 1000base-zx 100base-fx 100base-lfx 100base-t1 100base-tx 100base-x-sfp 100gbase-cr1 100gbase-cr10 100gbase-cr2 100gbase-cr4 100gbase-cwdm4 100gbase-dr 100gbase-er4 100gbase-fr1 100gbase-kp4 100gbase-kr2 100gbase-kr4 100gbase-lr1 100gbase-lr4 100gbase-sr1 100gbase-sr1.2 100gbase-sr10 100gbase-sr2 100gbase-sr4 100gbase-x-cfp 100gbase-x-cfp2 100gbase-x-cfp4 100gbase-x-cpak 100gbase-x-cxp 100gbase-x-dsfp 100gbase-x-qsfp28 100gbase-x-qsfpdd 100gbase-x-sfpdd 100gbase-zr 10g-epon 10gbase-br-d 10gbase-br-u 10gbase-cx4 10gbase-er 10gbase-kr 10gbase-kx4 10gbase-lr 10gbase-lrm 10gbase-lx4 10gbase-sr 10gbase-t 10gbase-x-sfpp 10gbase-x-x2 10gbase-x-xenpak 10gbase-x-xfp 10gbase-zr 128gfc-qsfp28 16gfc-sfpp 1gfc-sfp 2.5gbase-kx 2.5gbase-t 200gbase-cr2 200gbase-cr4 200gbase-dr4 200gbase-er4 200gbase-fr4 200gbase-lr4 200gbase-sr2 200gbase-sr4 200gbase-vr2 200gbase-x-cfp2 200gbase-x-qsfp56 200gbase-x-qsfpdd 25g-pon 25gbase-cr 25gbase-er 25gbase-kr 25gbase-lr 25gbase-sr 25gbase-t 25gbase-x-sfp28 2gfc-sfp 32gfc-sfp28 32gfc-sfpp 400gbase-cr4 400gbase-dr4 400gbase-er8 400gbase-fr4 400gbase-fr8 400gbase-lr4 400gbase-lr8 400gbase-sr16 400gbase-sr4 400gbase-sr4_2 400gbase-sr8 400gbase-vr4 400gbase-x-cdfp 400gbase-x-cfp2 400gbase-x-cfp8 400gbase-x-osfp 400gbase-x-osfp-rhs 400gbase-x-qsfp112 400gbase-x-qsfpdd 400gbase-zr 40gbase-cr4 40gbase-er4 40gbase-fr4 40gbase-kr4 40gbase-lr4 40gbase-sr4 40gbase-x-qsfpp 4g 4gfc-sfp 50g-pon 50gbase-cr 50gbase-er 50gbase-fr 50gbase-kr 50gbase-lr 50gbase-sr 50gbase-x-sfp28 50gbase-x-sfp56 5g 5gbase-kr 5gbase-t 64gfc-qsfpp 64gfc-sfpdd 64gfc-sfpp 800gbase-cr8 800gbase-dr8 800gbase-sr8 800gbase-vr8 800gbase-x-osfp 800gbase-x-qsfpdd 8gfc-sfpp bpon bridge cdma cisco-flexstack cisco-flexstack-plus cisco-stackwise cisco-stackwise-160 cisco-stackwise-1t cisco-stackwise-320 cisco-stackwise-480 cisco-stackwise-80 cisco-stackwise-plus docsis e1 e3 epon extreme-summitstack extreme-summitstack-128 extreme-summitstack-256 extreme-summitstack-512 gpon gsm ieee802.11a ieee802.11ac ieee802.11ad ieee802.11ax ieee802.11ay ieee802.11be ieee802.11g ieee802.11n ieee802.15.1 ieee802.15.4 infiniband-ddr infiniband-edr infiniband-fdr infiniband-fdr10 infiniband-hdr infiniband-ndr infiniband-qdr infiniband-sdr infiniband-xdr juniper-vcp lag lte moca ng-pon2 other other-wireless sonet-oc12 sonet-oc192 sonet-oc1920 sonet-oc3 sonet-oc3840 sonet-oc48 sonet-oc768 t1 t3 virtual xdsl xg-pon xgs-pon]", } if !all { return err @@ -31110,21 +31110,45 @@ var _ interface { } = InterfaceValidationError{} var _Interface_Type_InLookup = map[string]struct{}{ + "1000base-bx10-d": {}, + "1000base-bx10-u": {}, + "1000base-cwdm": {}, + "1000base-cx": {}, + "1000base-dwdm": {}, + "1000base-ex": {}, "1000base-kx": {}, + "1000base-lsx": {}, "1000base-lx": {}, + "1000base-lx10": {}, "1000base-sx": {}, "1000base-t": {}, "1000base-tx": {}, "1000base-x-gbic": {}, "1000base-x-sfp": {}, + "1000base-zx": {}, "100base-fx": {}, "100base-lfx": {}, "100base-t1": {}, "100base-tx": {}, "100base-x-sfp": {}, + "100gbase-cr1": {}, + "100gbase-cr10": {}, + "100gbase-cr2": {}, + "100gbase-cr4": {}, + "100gbase-cwdm4": {}, + "100gbase-dr": {}, + "100gbase-er4": {}, + "100gbase-fr1": {}, "100gbase-kp4": {}, "100gbase-kr2": {}, "100gbase-kr4": {}, + "100gbase-lr1": {}, + "100gbase-lr4": {}, + "100gbase-sr1": {}, + "100gbase-sr1.2": {}, + "100gbase-sr10": {}, + "100gbase-sr2": {}, + "100gbase-sr4": {}, "100gbase-x-cfp": {}, "100gbase-x-cfp2": {}, "100gbase-x-cfp4": {}, @@ -31134,29 +31158,64 @@ var _Interface_Type_InLookup = map[string]struct{}{ "100gbase-x-qsfp28": {}, "100gbase-x-qsfpdd": {}, "100gbase-x-sfpdd": {}, + "100gbase-zr": {}, "10g-epon": {}, + "10gbase-br-d": {}, + "10gbase-br-u": {}, "10gbase-cx4": {}, + "10gbase-er": {}, "10gbase-kr": {}, "10gbase-kx4": {}, + "10gbase-lr": {}, + "10gbase-lrm": {}, + "10gbase-lx4": {}, + "10gbase-sr": {}, "10gbase-t": {}, "10gbase-x-sfpp": {}, "10gbase-x-x2": {}, "10gbase-x-xenpak": {}, "10gbase-x-xfp": {}, + "10gbase-zr": {}, "128gfc-qsfp28": {}, "16gfc-sfpp": {}, "1gfc-sfp": {}, "2.5gbase-kx": {}, "2.5gbase-t": {}, + "200gbase-cr2": {}, + "200gbase-cr4": {}, + "200gbase-dr4": {}, + "200gbase-er4": {}, + "200gbase-fr4": {}, + "200gbase-lr4": {}, + "200gbase-sr2": {}, + "200gbase-sr4": {}, + "200gbase-vr2": {}, "200gbase-x-cfp2": {}, "200gbase-x-qsfp56": {}, "200gbase-x-qsfpdd": {}, "25g-pon": {}, + "25gbase-cr": {}, + "25gbase-er": {}, "25gbase-kr": {}, + "25gbase-lr": {}, + "25gbase-sr": {}, + "25gbase-t": {}, "25gbase-x-sfp28": {}, "2gfc-sfp": {}, "32gfc-sfp28": {}, "32gfc-sfpp": {}, + "400gbase-cr4": {}, + "400gbase-dr4": {}, + "400gbase-er8": {}, + "400gbase-fr4": {}, + "400gbase-fr8": {}, + "400gbase-lr4": {}, + "400gbase-lr8": {}, + "400gbase-sr16": {}, + "400gbase-sr4": {}, + "400gbase-sr4_2": {}, + "400gbase-sr8": {}, + "400gbase-vr4": {}, "400gbase-x-cdfp": {}, "400gbase-x-cfp2": {}, "400gbase-x-cfp8": {}, @@ -31164,12 +31223,23 @@ var _Interface_Type_InLookup = map[string]struct{}{ "400gbase-x-osfp-rhs": {}, "400gbase-x-qsfp112": {}, "400gbase-x-qsfpdd": {}, + "400gbase-zr": {}, + "40gbase-cr4": {}, + "40gbase-er4": {}, + "40gbase-fr4": {}, "40gbase-kr4": {}, + "40gbase-lr4": {}, + "40gbase-sr4": {}, "40gbase-x-qsfpp": {}, "4g": {}, "4gfc-sfp": {}, "50g-pon": {}, + "50gbase-cr": {}, + "50gbase-er": {}, + "50gbase-fr": {}, "50gbase-kr": {}, + "50gbase-lr": {}, + "50gbase-sr": {}, "50gbase-x-sfp28": {}, "50gbase-x-sfp56": {}, "5g": {}, @@ -31178,6 +31248,10 @@ var _Interface_Type_InLookup = map[string]struct{}{ "64gfc-qsfpp": {}, "64gfc-sfpdd": {}, "64gfc-sfpp": {}, + "800gbase-cr8": {}, + "800gbase-dr8": {}, + "800gbase-sr8": {}, + "800gbase-vr8": {}, "800gbase-x-osfp": {}, "800gbase-x-qsfpdd": {}, "8gfc-sfpp": {}, @@ -38518,6 +38592,43 @@ func (m *Platform) validate(all bool) error { // no validation rules for Description } + if m.Parent != nil { + + if all { + switch v := interface{}(m.GetParent()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, PlatformValidationError{ + field: "Parent", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, PlatformValidationError{ + field: "Parent", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetParent()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return PlatformValidationError{ + field: "Parent", + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + + if m.Comments != nil { + // no validation rules for Comments + } + if len(errors) > 0 { return PlatformMultiError(errors) } @@ -39152,7 +39263,7 @@ func (m *PowerOutlet) validate(all bool) error { if _, ok := _PowerOutlet_Type_InLookup[m.GetType()]; !ok { err := PowerOutletValidationError{ field: "Type", - reason: "value must be in list [CS6360C CS6364C CS8164C CS8264C CS8364C CS8464C dc-terminal eaton-c39 hardwired hdot-cx iec-60309-2p-e-4h iec-60309-2p-e-6h iec-60309-2p-e-9h iec-60309-3p-e-4h iec-60309-3p-e-6h iec-60309-3p-e-9h iec-60309-3p-n-e-4h iec-60309-3p-n-e-6h iec-60309-3p-n-e-9h iec-60309-p-n-e-4h iec-60309-p-n-e-6h iec-60309-p-n-e-9h iec-60320-c13 iec-60320-c15 iec-60320-c19 iec-60320-c21 iec-60320-c5 iec-60320-c7 iec-60906-1 ita-e ita-f ita-g ita-h ita-i ita-j ita-k ita-l ita-m ita-multistandard ita-n ita-o molex-micro-fit-1x2 molex-micro-fit-2x2 molex-micro-fit-2x4 nbr-14136-10a nbr-14136-20a nema-1-15r nema-10-30r nema-10-50r nema-14-20r nema-14-30r nema-14-50r nema-14-60r nema-15-15r nema-15-20r nema-15-30r nema-15-50r nema-15-60r nema-5-15r nema-5-20r nema-5-30r nema-5-50r nema-6-15r nema-6-20r nema-6-30r nema-6-50r nema-l1-15r nema-l10-30r nema-l14-20r nema-l14-30r nema-l14-50r nema-l14-60r nema-l15-20r nema-l15-30r nema-l15-50r nema-l15-60r nema-l21-20r nema-l21-30r nema-l22-20r nema-l22-30r nema-l5-15r nema-l5-20r nema-l5-30r nema-l5-50r nema-l6-15r nema-l6-20r nema-l6-30r nema-l6-50r neutrik-powercon-20a neutrik-powercon-32a neutrik-powercon-true1 neutrik-powercon-true1-top other saf-d-grid ubiquiti-smartpower usb-a usb-c usb-micro-b]", + reason: "value must be in list [CS6360C CS6364C CS8164C CS8264C CS8364C CS8464C dc-terminal eaton-c39 hardwired hdot-cx iec-60309-2p-e-4h iec-60309-2p-e-6h iec-60309-2p-e-9h iec-60309-3p-e-4h iec-60309-3p-e-6h iec-60309-3p-e-9h iec-60309-3p-n-e-4h iec-60309-3p-n-e-6h iec-60309-3p-n-e-9h iec-60309-p-n-e-4h iec-60309-p-n-e-6h iec-60309-p-n-e-9h iec-60320-c13 iec-60320-c15 iec-60320-c17 iec-60320-c19 iec-60320-c21 iec-60320-c5 iec-60320-c7 iec-60906-1 ita-e ita-f ita-g ita-h ita-i ita-j ita-k ita-l ita-m ita-multistandard ita-n ita-o molex-micro-fit-1x2 molex-micro-fit-2x2 molex-micro-fit-2x4 nbr-14136-10a nbr-14136-20a nema-1-15r nema-10-30r nema-10-50r nema-14-20r nema-14-30r nema-14-50r nema-14-60r nema-15-15r nema-15-20r nema-15-30r nema-15-50r nema-15-60r nema-5-15r nema-5-20r nema-5-30r nema-5-50r nema-6-15r nema-6-20r nema-6-30r nema-6-50r nema-l1-15r nema-l10-30r nema-l14-20r nema-l14-30r nema-l14-50r nema-l14-60r nema-l15-20r nema-l15-30r nema-l15-50r nema-l15-60r nema-l21-20r nema-l21-30r nema-l22-20r nema-l22-30r nema-l5-15r nema-l5-20r nema-l5-30r nema-l5-50r nema-l6-15r nema-l6-20r nema-l6-30r nema-l6-50r neutrik-powercon-20a neutrik-powercon-32a neutrik-powercon-true1 neutrik-powercon-true1-top other saf-d-grid ubiquiti-smartpower usb-a usb-c usb-micro-b]", } if !all { return err @@ -39339,6 +39450,7 @@ var _PowerOutlet_Type_InLookup = map[string]struct{}{ "iec-60309-p-n-e-9h": {}, "iec-60320-c13": {}, "iec-60320-c15": {}, + "iec-60320-c17": {}, "iec-60320-c19": {}, "iec-60320-c21": {}, "iec-60320-c5": {}, @@ -39853,7 +39965,7 @@ func (m *PowerPort) validate(all bool) error { if _, ok := _PowerPort_Type_InLookup[m.GetType()]; !ok { err := PowerPortValidationError{ field: "Type", - reason: "value must be in list [cs6361c cs6365c cs8165c cs8265c cs8365c cs8465c dc-terminal hardwired iec-60309-2p-e-4h iec-60309-2p-e-6h iec-60309-2p-e-9h iec-60309-3p-e-4h iec-60309-3p-e-6h iec-60309-3p-e-9h iec-60309-3p-n-e-4h iec-60309-3p-n-e-6h iec-60309-3p-n-e-9h iec-60309-p-n-e-4h iec-60309-p-n-e-6h iec-60309-p-n-e-9h iec-60320-c14 iec-60320-c16 iec-60320-c20 iec-60320-c22 iec-60320-c6 iec-60320-c8 iec-60906-1 ita-c ita-e ita-ef ita-f ita-g ita-h ita-i ita-j ita-k ita-l ita-m ita-n ita-o molex-micro-fit-1x2 molex-micro-fit-2x2 molex-micro-fit-2x4 nbr-14136-10a nbr-14136-20a nema-1-15p nema-10-30p nema-10-50p nema-14-20p nema-14-30p nema-14-50p nema-14-60p nema-15-15p nema-15-20p nema-15-30p nema-15-50p nema-15-60p nema-5-15p nema-5-20p nema-5-30p nema-5-50p nema-6-15p nema-6-20p nema-6-30p nema-6-50p nema-l1-15p nema-l10-30p nema-l14-20p nema-l14-30p nema-l14-50p nema-l14-60p nema-l15-20p nema-l15-30p nema-l15-50p nema-l15-60p nema-l21-20p nema-l21-30p nema-l22-20p nema-l22-30p nema-l5-15p nema-l5-20p nema-l5-30p nema-l5-50p nema-l6-15p nema-l6-20p nema-l6-30p nema-l6-50p neutrik-powercon-20 neutrik-powercon-32 neutrik-powercon-true1 neutrik-powercon-true1-top other saf-d-grid ubiquiti-smartpower usb-3-b usb-3-micro-b usb-a usb-b usb-c usb-micro-a usb-micro-ab usb-micro-b usb-mini-a usb-mini-b]", + reason: "value must be in list [cs6361c cs6365c cs8165c cs8265c cs8365c cs8465c dc-terminal hardwired iec-60309-2p-e-4h iec-60309-2p-e-6h iec-60309-2p-e-9h iec-60309-3p-e-4h iec-60309-3p-e-6h iec-60309-3p-e-9h iec-60309-3p-n-e-4h iec-60309-3p-n-e-6h iec-60309-3p-n-e-9h iec-60309-p-n-e-4h iec-60309-p-n-e-6h iec-60309-p-n-e-9h iec-60320-c14 iec-60320-c16 iec-60320-c18 iec-60320-c20 iec-60320-c22 iec-60320-c6 iec-60320-c8 iec-60906-1 ita-c ita-e ita-ef ita-f ita-g ita-h ita-i ita-j ita-k ita-l ita-m ita-n ita-o molex-micro-fit-1x2 molex-micro-fit-2x2 molex-micro-fit-2x4 nbr-14136-10a nbr-14136-20a nema-1-15p nema-10-30p nema-10-50p nema-14-20p nema-14-30p nema-14-50p nema-14-60p nema-15-15p nema-15-20p nema-15-30p nema-15-50p nema-15-60p nema-5-15p nema-5-20p nema-5-30p nema-5-50p nema-6-15p nema-6-20p nema-6-30p nema-6-50p nema-l1-15p nema-l10-30p nema-l14-20p nema-l14-30p nema-l14-50p nema-l14-60p nema-l15-20p nema-l15-30p nema-l15-50p nema-l15-60p nema-l21-20p nema-l21-30p nema-l22-20p nema-l22-30p nema-l5-15p nema-l5-20p nema-l5-30p nema-l5-50p nema-l6-15p nema-l6-20p nema-l6-30p nema-l6-50p neutrik-powercon-20 neutrik-powercon-32 neutrik-powercon-true1 neutrik-powercon-true1-top other saf-d-grid ubiquiti-smartpower usb-3-b usb-3-micro-b usb-a usb-b usb-c usb-micro-a usb-micro-ab usb-micro-b usb-mini-a usb-mini-b]", } if !all { return err @@ -39979,6 +40091,7 @@ var _PowerPort_Type_InLookup = map[string]struct{}{ "iec-60309-p-n-e-9h": {}, "iec-60320-c14": {}, "iec-60320-c16": {}, + "iec-60320-c18": {}, "iec-60320-c20": {}, "iec-60320-c22": {}, "iec-60320-c6": {}, @@ -42176,6 +42289,21 @@ func (m *RackReservation) validate(all bool) error { // no validation rules for Comments } + if m.Status != nil { + + if _, ok := _RackReservation_Status_InLookup[m.GetStatus()]; !ok { + err := RackReservationValidationError{ + field: "Status", + reason: "value must be in list [active pending stale]", + } + if !all { + return err + } + errors = append(errors, err) + } + + } + if len(errors) > 0 { return RackReservationMultiError(errors) } @@ -42254,6 +42382,12 @@ var _ interface { ErrorName() string } = RackReservationValidationError{} +var _RackReservation_Status_InLookup = map[string]struct{}{ + "active": {}, + "pending": {}, + "stale": {}, +} + // Validate checks the field values on RackRole with the rules defined in the // proto definition for this message. If any rules are violated, the first // error encountered is returned, or nil if there are no violations. diff --git a/diode-server/gen/diode/v1/diodepb/ingester_grpc.pb.go b/diode-server/gen/diode/v1/diodepb/ingester_grpc.pb.go index 347f40f6..21653636 100644 --- a/diode-server/gen/diode/v1/diodepb/ingester_grpc.pb.go +++ b/diode-server/gen/diode/v1/diodepb/ingester_grpc.pb.go @@ -5,8 +5,8 @@ // source: diode/v1/ingester.proto // Generated Code. DO NOT EDIT. -// Source: NetBox v4.3.4 -// Timestamp: 2025-07-23 01:46:42Z +// Source: NetBox v4.4.2 +// Timestamp: 2025-10-02 12:39:08Z package diodepb diff --git a/diode-server/gen/diode/v1/reconcilerpb/reconciler.pb.go b/diode-server/gen/diode/v1/reconcilerpb/reconciler.pb.go index 898ada8a..059de061 100644 --- a/diode-server/gen/diode/v1/reconcilerpb/reconciler.pb.go +++ b/diode-server/gen/diode/v1/reconcilerpb/reconciler.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.10 // protoc (unknown) // source: diode/v1/reconciler.proto diff --git a/diode-server/gen/netbox/server_utils.go b/diode-server/gen/netbox/server_utils.go index b5b67ce0..0800b228 100644 --- a/diode-server/gen/netbox/server_utils.go +++ b/diode-server/gen/netbox/server_utils.go @@ -1,742 +1,743 @@ // Generated code. DO NOT EDIT. -// Timestamp: 2025-07-23 01:46:44Z +// Timestamp: 2025-10-02 12:39:10Z package netbox import ( - "fmt" + "fmt" - pb "github.com/netboxlabs/diode/diode-server/gen/diode/v1/diodepb" + pb "github.com/netboxlabs/diode/diode-server/gen/diode/v1/diodepb" ) + const ( - ASNObjectType = "ipam.asn" - ASNObjectTypeName = "ASN" - ASNRangeObjectType = "ipam.asnrange" - ASNRangeObjectTypeName = "ASN Range" - AggregateObjectType = "ipam.aggregate" - AggregateObjectTypeName = "Aggregate" - CableObjectType = "dcim.cable" - CableObjectTypeName = "Cable" - CablePathObjectType = "dcim.cablepath" - CablePathObjectTypeName = "Cable Path" - CableTerminationObjectType = "dcim.cabletermination" - CableTerminationObjectTypeName = "Cable Termination" - CircuitObjectType = "circuits.circuit" - CircuitObjectTypeName = "Circuit" - CircuitGroupObjectType = "circuits.circuitgroup" - CircuitGroupObjectTypeName = "Circuit Group" - CircuitGroupAssignmentObjectType = "circuits.circuitgroupassignment" - CircuitGroupAssignmentObjectTypeName = "Circuit Group Assignment" - CircuitTerminationObjectType = "circuits.circuittermination" - CircuitTerminationObjectTypeName = "Circuit Termination" - CircuitTypeObjectType = "circuits.circuittype" - CircuitTypeObjectTypeName = "Circuit Type" - ClusterObjectType = "virtualization.cluster" - ClusterObjectTypeName = "Cluster" - ClusterGroupObjectType = "virtualization.clustergroup" - ClusterGroupObjectTypeName = "Cluster Group" - ClusterTypeObjectType = "virtualization.clustertype" - ClusterTypeObjectTypeName = "Cluster Type" - ConsolePortObjectType = "dcim.consoleport" - ConsolePortObjectTypeName = "Console Port" - ConsoleServerPortObjectType = "dcim.consoleserverport" - ConsoleServerPortObjectTypeName = "Console Server Port" - ContactObjectType = "tenancy.contact" - ContactObjectTypeName = "Contact" - ContactAssignmentObjectType = "tenancy.contactassignment" - ContactAssignmentObjectTypeName = "Contact Assignment" - ContactGroupObjectType = "tenancy.contactgroup" - ContactGroupObjectTypeName = "Contact Group" - ContactRoleObjectType = "tenancy.contactrole" - ContactRoleObjectTypeName = "Contact Role" - DeviceObjectType = "dcim.device" - DeviceObjectTypeName = "Device" - DeviceBayObjectType = "dcim.devicebay" - DeviceBayObjectTypeName = "Device Bay" - DeviceRoleObjectType = "dcim.devicerole" - DeviceRoleObjectTypeName = "Device Role" - DeviceTypeObjectType = "dcim.devicetype" - DeviceTypeObjectTypeName = "Device Type" - FHRPGroupObjectType = "ipam.fhrpgroup" - FHRPGroupObjectTypeName = "FHRP Group" - FHRPGroupAssignmentObjectType = "ipam.fhrpgroupassignment" - FHRPGroupAssignmentObjectTypeName = "FHRP Group Assignment" - FrontPortObjectType = "dcim.frontport" - FrontPortObjectTypeName = "Front Port" - IKEPolicyObjectType = "vpn.ikepolicy" - IKEPolicyObjectTypeName = "IKE Policy" - IKEProposalObjectType = "vpn.ikeproposal" - IKEProposalObjectTypeName = "IKE Proposal" - IPAddressObjectType = "ipam.ipaddress" - IPAddressObjectTypeName = "IP" - IPRangeObjectType = "ipam.iprange" - IPRangeObjectTypeName = "IP Range" - IPSecPolicyObjectType = "vpn.ipsecpolicy" - IPSecPolicyObjectTypeName = "IP Sec Policy" - IPSecProfileObjectType = "vpn.ipsecprofile" - IPSecProfileObjectTypeName = "IP Sec Profile" - IPSecProposalObjectType = "vpn.ipsecproposal" - IPSecProposalObjectTypeName = "IP Sec Proposal" - InterfaceObjectType = "dcim.interface" - InterfaceObjectTypeName = "Interface" - InventoryItemObjectType = "dcim.inventoryitem" - InventoryItemObjectTypeName = "Inventory Item" - InventoryItemRoleObjectType = "dcim.inventoryitemrole" - InventoryItemRoleObjectTypeName = "Inventory Item Role" - L2VPNObjectType = "vpn.l2vpn" - L2VPNObjectTypeName = "L2VPN" - L2VPNTerminationObjectType = "vpn.l2vpntermination" - L2VPNTerminationObjectTypeName = "L2VPN Termination" - LocationObjectType = "dcim.location" - LocationObjectTypeName = "Location" - MACAddressObjectType = "dcim.macaddress" - MACAddressObjectTypeName = "MAC Address" - ManufacturerObjectType = "dcim.manufacturer" - ManufacturerObjectTypeName = "Manufacturer" - ModuleObjectType = "dcim.module" - ModuleObjectTypeName = "Module" - ModuleBayObjectType = "dcim.modulebay" - ModuleBayObjectTypeName = "Module Bay" - ModuleTypeObjectType = "dcim.moduletype" - ModuleTypeObjectTypeName = "Module Type" - PlatformObjectType = "dcim.platform" - PlatformObjectTypeName = "Platform" - PowerFeedObjectType = "dcim.powerfeed" - PowerFeedObjectTypeName = "Power Feed" - PowerOutletObjectType = "dcim.poweroutlet" - PowerOutletObjectTypeName = "Power Outlet" - PowerPanelObjectType = "dcim.powerpanel" - PowerPanelObjectTypeName = "Power Panel" - PowerPortObjectType = "dcim.powerport" - PowerPortObjectTypeName = "Power Port" - PrefixObjectType = "ipam.prefix" - PrefixObjectTypeName = "Prefix" - ProviderObjectType = "circuits.provider" - ProviderObjectTypeName = "Provider" - ProviderAccountObjectType = "circuits.provideraccount" - ProviderAccountObjectTypeName = "Provider Account" - ProviderNetworkObjectType = "circuits.providernetwork" - ProviderNetworkObjectTypeName = "Provider Network" - RIRObjectType = "ipam.rir" - RIRObjectTypeName = "RIR" - RackObjectType = "dcim.rack" - RackObjectTypeName = "Rack" - RackReservationObjectType = "dcim.rackreservation" - RackReservationObjectTypeName = "Rack Reservation" - RackRoleObjectType = "dcim.rackrole" - RackRoleObjectTypeName = "Rack Role" - RackTypeObjectType = "dcim.racktype" - RackTypeObjectTypeName = "Rack Type" - RearPortObjectType = "dcim.rearport" - RearPortObjectTypeName = "Rear Port" - RegionObjectType = "dcim.region" - RegionObjectTypeName = "Region" - RoleObjectType = "ipam.role" - RoleObjectTypeName = "Role" - RouteTargetObjectType = "ipam.routetarget" - RouteTargetObjectTypeName = "Route Target" - ServiceObjectType = "ipam.service" - ServiceObjectTypeName = "Service" - SiteObjectType = "dcim.site" - SiteObjectTypeName = "Site" - SiteGroupObjectType = "dcim.sitegroup" - SiteGroupObjectTypeName = "Site Group" - TagObjectType = "extras.tag" - TagObjectTypeName = "Tag" - TenantObjectType = "tenancy.tenant" - TenantObjectTypeName = "Tenant" - TenantGroupObjectType = "tenancy.tenantgroup" - TenantGroupObjectTypeName = "Tenant Group" - TunnelObjectType = "vpn.tunnel" - TunnelObjectTypeName = "Tunnel" - TunnelGroupObjectType = "vpn.tunnelgroup" - TunnelGroupObjectTypeName = "Tunnel Group" - TunnelTerminationObjectType = "vpn.tunneltermination" - TunnelTerminationObjectTypeName = "Tunnel Termination" - VLANObjectType = "ipam.vlan" - VLANObjectTypeName = "VLAN" - VLANGroupObjectType = "ipam.vlangroup" - VLANGroupObjectTypeName = "VLAN Group" - VLANTranslationPolicyObjectType = "ipam.vlantranslationpolicy" - VLANTranslationPolicyObjectTypeName = "VLAN Translation Policy" - VLANTranslationRuleObjectType = "ipam.vlantranslationrule" - VLANTranslationRuleObjectTypeName = "VLAN Translation Rule" - VMInterfaceObjectType = "virtualization.vminterface" - VMInterfaceObjectTypeName = "VM Interface" - VRFObjectType = "ipam.vrf" - VRFObjectTypeName = "VRF" - VirtualChassisObjectType = "dcim.virtualchassis" - VirtualChassisObjectTypeName = "Virtual Chassis" - VirtualCircuitObjectType = "circuits.virtualcircuit" - VirtualCircuitObjectTypeName = "Virtual Circuit" - VirtualCircuitTerminationObjectType = "circuits.virtualcircuittermination" - VirtualCircuitTerminationObjectTypeName = "Virtual Circuit Termination" - VirtualCircuitTypeObjectType = "circuits.virtualcircuittype" - VirtualCircuitTypeObjectTypeName = "Virtual Circuit Type" - VirtualDeviceContextObjectType = "dcim.virtualdevicecontext" - VirtualDeviceContextObjectTypeName = "Virtual Device Context" - VirtualDiskObjectType = "virtualization.virtualdisk" - VirtualDiskObjectTypeName = "Virtual Disk" - VirtualMachineObjectType = "virtualization.virtualmachine" - VirtualMachineObjectTypeName = "Virtual Machine" - WirelessLANObjectType = "wireless.wirelesslan" - WirelessLANObjectTypeName = "Wireless LAN" - WirelessLANGroupObjectType = "wireless.wirelesslangroup" - WirelessLANGroupObjectTypeName = "Wireless LAN Group" - WirelessLinkObjectType = "wireless.wirelesslink" - WirelessLinkObjectTypeName = "Wireless Link" - CustomFieldObjectType = "extras.customfield" - CustomFieldObjectTypeName = "Custom Field" - CustomFieldChoiceSetObjectType = "extras.customfieldchoiceset" - CustomFieldChoiceSetObjectTypeName = "Custom Field Choice Set" - JournalEntryObjectType = "extras.journalentry" - JournalEntryObjectTypeName = "Journal Entry" - ModuleTypeProfileObjectType = "dcim.moduletypeprofile" - ModuleTypeProfileObjectTypeName = "Module Type Profile" - CustomLinkObjectType = "extras.customlink" - CustomLinkObjectTypeName = "Custom Link" + ASNObjectType = "ipam.asn" + ASNObjectTypeName = "ASN" + ASNRangeObjectType = "ipam.asnrange" + ASNRangeObjectTypeName = "ASN Range" + AggregateObjectType = "ipam.aggregate" + AggregateObjectTypeName = "Aggregate" + CableObjectType = "dcim.cable" + CableObjectTypeName = "Cable" + CablePathObjectType = "dcim.cablepath" + CablePathObjectTypeName = "Cable Path" + CableTerminationObjectType = "dcim.cabletermination" + CableTerminationObjectTypeName = "Cable Termination" + CircuitObjectType = "circuits.circuit" + CircuitObjectTypeName = "Circuit" + CircuitGroupObjectType = "circuits.circuitgroup" + CircuitGroupObjectTypeName = "Circuit Group" + CircuitGroupAssignmentObjectType = "circuits.circuitgroupassignment" + CircuitGroupAssignmentObjectTypeName = "Circuit Group Assignment" + CircuitTerminationObjectType = "circuits.circuittermination" + CircuitTerminationObjectTypeName = "Circuit Termination" + CircuitTypeObjectType = "circuits.circuittype" + CircuitTypeObjectTypeName = "Circuit Type" + ClusterObjectType = "virtualization.cluster" + ClusterObjectTypeName = "Cluster" + ClusterGroupObjectType = "virtualization.clustergroup" + ClusterGroupObjectTypeName = "Cluster Group" + ClusterTypeObjectType = "virtualization.clustertype" + ClusterTypeObjectTypeName = "Cluster Type" + ConsolePortObjectType = "dcim.consoleport" + ConsolePortObjectTypeName = "Console Port" + ConsoleServerPortObjectType = "dcim.consoleserverport" + ConsoleServerPortObjectTypeName = "Console Server Port" + ContactObjectType = "tenancy.contact" + ContactObjectTypeName = "Contact" + ContactAssignmentObjectType = "tenancy.contactassignment" + ContactAssignmentObjectTypeName = "Contact Assignment" + ContactGroupObjectType = "tenancy.contactgroup" + ContactGroupObjectTypeName = "Contact Group" + ContactRoleObjectType = "tenancy.contactrole" + ContactRoleObjectTypeName = "Contact Role" + DeviceObjectType = "dcim.device" + DeviceObjectTypeName = "Device" + DeviceBayObjectType = "dcim.devicebay" + DeviceBayObjectTypeName = "Device Bay" + DeviceRoleObjectType = "dcim.devicerole" + DeviceRoleObjectTypeName = "Device Role" + DeviceTypeObjectType = "dcim.devicetype" + DeviceTypeObjectTypeName = "Device Type" + FHRPGroupObjectType = "ipam.fhrpgroup" + FHRPGroupObjectTypeName = "FHRP Group" + FHRPGroupAssignmentObjectType = "ipam.fhrpgroupassignment" + FHRPGroupAssignmentObjectTypeName = "FHRP Group Assignment" + FrontPortObjectType = "dcim.frontport" + FrontPortObjectTypeName = "Front Port" + IKEPolicyObjectType = "vpn.ikepolicy" + IKEPolicyObjectTypeName = "IKE Policy" + IKEProposalObjectType = "vpn.ikeproposal" + IKEProposalObjectTypeName = "IKE Proposal" + IPAddressObjectType = "ipam.ipaddress" + IPAddressObjectTypeName = "IP" + IPRangeObjectType = "ipam.iprange" + IPRangeObjectTypeName = "IP Range" + IPSecPolicyObjectType = "vpn.ipsecpolicy" + IPSecPolicyObjectTypeName = "IP Sec Policy" + IPSecProfileObjectType = "vpn.ipsecprofile" + IPSecProfileObjectTypeName = "IP Sec Profile" + IPSecProposalObjectType = "vpn.ipsecproposal" + IPSecProposalObjectTypeName = "IP Sec Proposal" + InterfaceObjectType = "dcim.interface" + InterfaceObjectTypeName = "Interface" + InventoryItemObjectType = "dcim.inventoryitem" + InventoryItemObjectTypeName = "Inventory Item" + InventoryItemRoleObjectType = "dcim.inventoryitemrole" + InventoryItemRoleObjectTypeName = "Inventory Item Role" + L2VPNObjectType = "vpn.l2vpn" + L2VPNObjectTypeName = "L2VPN" + L2VPNTerminationObjectType = "vpn.l2vpntermination" + L2VPNTerminationObjectTypeName = "L2VPN Termination" + LocationObjectType = "dcim.location" + LocationObjectTypeName = "Location" + MACAddressObjectType = "dcim.macaddress" + MACAddressObjectTypeName = "MAC Address" + ManufacturerObjectType = "dcim.manufacturer" + ManufacturerObjectTypeName = "Manufacturer" + ModuleObjectType = "dcim.module" + ModuleObjectTypeName = "Module" + ModuleBayObjectType = "dcim.modulebay" + ModuleBayObjectTypeName = "Module Bay" + ModuleTypeObjectType = "dcim.moduletype" + ModuleTypeObjectTypeName = "Module Type" + PlatformObjectType = "dcim.platform" + PlatformObjectTypeName = "Platform" + PowerFeedObjectType = "dcim.powerfeed" + PowerFeedObjectTypeName = "Power Feed" + PowerOutletObjectType = "dcim.poweroutlet" + PowerOutletObjectTypeName = "Power Outlet" + PowerPanelObjectType = "dcim.powerpanel" + PowerPanelObjectTypeName = "Power Panel" + PowerPortObjectType = "dcim.powerport" + PowerPortObjectTypeName = "Power Port" + PrefixObjectType = "ipam.prefix" + PrefixObjectTypeName = "Prefix" + ProviderObjectType = "circuits.provider" + ProviderObjectTypeName = "Provider" + ProviderAccountObjectType = "circuits.provideraccount" + ProviderAccountObjectTypeName = "Provider Account" + ProviderNetworkObjectType = "circuits.providernetwork" + ProviderNetworkObjectTypeName = "Provider Network" + RIRObjectType = "ipam.rir" + RIRObjectTypeName = "RIR" + RackObjectType = "dcim.rack" + RackObjectTypeName = "Rack" + RackReservationObjectType = "dcim.rackreservation" + RackReservationObjectTypeName = "Rack Reservation" + RackRoleObjectType = "dcim.rackrole" + RackRoleObjectTypeName = "Rack Role" + RackTypeObjectType = "dcim.racktype" + RackTypeObjectTypeName = "Rack Type" + RearPortObjectType = "dcim.rearport" + RearPortObjectTypeName = "Rear Port" + RegionObjectType = "dcim.region" + RegionObjectTypeName = "Region" + RoleObjectType = "ipam.role" + RoleObjectTypeName = "Role" + RouteTargetObjectType = "ipam.routetarget" + RouteTargetObjectTypeName = "Route Target" + ServiceObjectType = "ipam.service" + ServiceObjectTypeName = "Service" + SiteObjectType = "dcim.site" + SiteObjectTypeName = "Site" + SiteGroupObjectType = "dcim.sitegroup" + SiteGroupObjectTypeName = "Site Group" + TagObjectType = "extras.tag" + TagObjectTypeName = "Tag" + TenantObjectType = "tenancy.tenant" + TenantObjectTypeName = "Tenant" + TenantGroupObjectType = "tenancy.tenantgroup" + TenantGroupObjectTypeName = "Tenant Group" + TunnelObjectType = "vpn.tunnel" + TunnelObjectTypeName = "Tunnel" + TunnelGroupObjectType = "vpn.tunnelgroup" + TunnelGroupObjectTypeName = "Tunnel Group" + TunnelTerminationObjectType = "vpn.tunneltermination" + TunnelTerminationObjectTypeName = "Tunnel Termination" + VLANObjectType = "ipam.vlan" + VLANObjectTypeName = "VLAN" + VLANGroupObjectType = "ipam.vlangroup" + VLANGroupObjectTypeName = "VLAN Group" + VLANTranslationPolicyObjectType = "ipam.vlantranslationpolicy" + VLANTranslationPolicyObjectTypeName = "VLAN Translation Policy" + VLANTranslationRuleObjectType = "ipam.vlantranslationrule" + VLANTranslationRuleObjectTypeName = "VLAN Translation Rule" + VMInterfaceObjectType = "virtualization.vminterface" + VMInterfaceObjectTypeName = "VM Interface" + VRFObjectType = "ipam.vrf" + VRFObjectTypeName = "VRF" + VirtualChassisObjectType = "dcim.virtualchassis" + VirtualChassisObjectTypeName = "Virtual Chassis" + VirtualCircuitObjectType = "circuits.virtualcircuit" + VirtualCircuitObjectTypeName = "Virtual Circuit" + VirtualCircuitTerminationObjectType = "circuits.virtualcircuittermination" + VirtualCircuitTerminationObjectTypeName = "Virtual Circuit Termination" + VirtualCircuitTypeObjectType = "circuits.virtualcircuittype" + VirtualCircuitTypeObjectTypeName = "Virtual Circuit Type" + VirtualDeviceContextObjectType = "dcim.virtualdevicecontext" + VirtualDeviceContextObjectTypeName = "Virtual Device Context" + VirtualDiskObjectType = "virtualization.virtualdisk" + VirtualDiskObjectTypeName = "Virtual Disk" + VirtualMachineObjectType = "virtualization.virtualmachine" + VirtualMachineObjectTypeName = "Virtual Machine" + WirelessLANObjectType = "wireless.wirelesslan" + WirelessLANObjectTypeName = "Wireless LAN" + WirelessLANGroupObjectType = "wireless.wirelesslangroup" + WirelessLANGroupObjectTypeName = "Wireless LAN Group" + WirelessLinkObjectType = "wireless.wirelesslink" + WirelessLinkObjectTypeName = "Wireless Link" + CustomFieldObjectType = "extras.customfield" + CustomFieldObjectTypeName = "Custom Field" + CustomFieldChoiceSetObjectType = "extras.customfieldchoiceset" + CustomFieldChoiceSetObjectTypeName = "Custom Field Choice Set" + JournalEntryObjectType = "extras.journalentry" + JournalEntryObjectTypeName = "Journal Entry" + ModuleTypeProfileObjectType = "dcim.moduletypeprofile" + ModuleTypeProfileObjectTypeName = "Module Type Profile" + CustomLinkObjectType = "extras.customlink" + CustomLinkObjectTypeName = "Custom Link" ) func GetObjectType(entity *pb.Entity) (string, error) { - switch entity.GetEntity().(type) { - case *pb.Entity_Asn: - return ASNObjectType, nil - case *pb.Entity_AsnRange: - return ASNRangeObjectType, nil - case *pb.Entity_Aggregate: - return AggregateObjectType, nil - case *pb.Entity_Cable: - return CableObjectType, nil - case *pb.Entity_CablePath: - return CablePathObjectType, nil - case *pb.Entity_CableTermination: - return CableTerminationObjectType, nil - case *pb.Entity_Circuit: - return CircuitObjectType, nil - case *pb.Entity_CircuitGroup: - return CircuitGroupObjectType, nil - case *pb.Entity_CircuitGroupAssignment: - return CircuitGroupAssignmentObjectType, nil - case *pb.Entity_CircuitTermination: - return CircuitTerminationObjectType, nil - case *pb.Entity_CircuitType: - return CircuitTypeObjectType, nil - case *pb.Entity_Cluster: - return ClusterObjectType, nil - case *pb.Entity_ClusterGroup: - return ClusterGroupObjectType, nil - case *pb.Entity_ClusterType: - return ClusterTypeObjectType, nil - case *pb.Entity_ConsolePort: - return ConsolePortObjectType, nil - case *pb.Entity_ConsoleServerPort: - return ConsoleServerPortObjectType, nil - case *pb.Entity_Contact: - return ContactObjectType, nil - case *pb.Entity_ContactAssignment: - return ContactAssignmentObjectType, nil - case *pb.Entity_ContactGroup: - return ContactGroupObjectType, nil - case *pb.Entity_ContactRole: - return ContactRoleObjectType, nil - case *pb.Entity_Device: - return DeviceObjectType, nil - case *pb.Entity_DeviceBay: - return DeviceBayObjectType, nil - case *pb.Entity_DeviceRole: - return DeviceRoleObjectType, nil - case *pb.Entity_DeviceType: - return DeviceTypeObjectType, nil - case *pb.Entity_FhrpGroup: - return FHRPGroupObjectType, nil - case *pb.Entity_FhrpGroupAssignment: - return FHRPGroupAssignmentObjectType, nil - case *pb.Entity_FrontPort: - return FrontPortObjectType, nil - case *pb.Entity_IkePolicy: - return IKEPolicyObjectType, nil - case *pb.Entity_IkeProposal: - return IKEProposalObjectType, nil - case *pb.Entity_IpAddress: - return IPAddressObjectType, nil - case *pb.Entity_IpRange: - return IPRangeObjectType, nil - case *pb.Entity_IpSecPolicy: - return IPSecPolicyObjectType, nil - case *pb.Entity_IpSecProfile: - return IPSecProfileObjectType, nil - case *pb.Entity_IpSecProposal: - return IPSecProposalObjectType, nil - case *pb.Entity_Interface: - return InterfaceObjectType, nil - case *pb.Entity_InventoryItem: - return InventoryItemObjectType, nil - case *pb.Entity_InventoryItemRole: - return InventoryItemRoleObjectType, nil - case *pb.Entity_L2Vpn: - return L2VPNObjectType, nil - case *pb.Entity_L2VpnTermination: - return L2VPNTerminationObjectType, nil - case *pb.Entity_Location: - return LocationObjectType, nil - case *pb.Entity_MacAddress: - return MACAddressObjectType, nil - case *pb.Entity_Manufacturer: - return ManufacturerObjectType, nil - case *pb.Entity_Module: - return ModuleObjectType, nil - case *pb.Entity_ModuleBay: - return ModuleBayObjectType, nil - case *pb.Entity_ModuleType: - return ModuleTypeObjectType, nil - case *pb.Entity_Platform: - return PlatformObjectType, nil - case *pb.Entity_PowerFeed: - return PowerFeedObjectType, nil - case *pb.Entity_PowerOutlet: - return PowerOutletObjectType, nil - case *pb.Entity_PowerPanel: - return PowerPanelObjectType, nil - case *pb.Entity_PowerPort: - return PowerPortObjectType, nil - case *pb.Entity_Prefix: - return PrefixObjectType, nil - case *pb.Entity_Provider: - return ProviderObjectType, nil - case *pb.Entity_ProviderAccount: - return ProviderAccountObjectType, nil - case *pb.Entity_ProviderNetwork: - return ProviderNetworkObjectType, nil - case *pb.Entity_Rir: - return RIRObjectType, nil - case *pb.Entity_Rack: - return RackObjectType, nil - case *pb.Entity_RackReservation: - return RackReservationObjectType, nil - case *pb.Entity_RackRole: - return RackRoleObjectType, nil - case *pb.Entity_RackType: - return RackTypeObjectType, nil - case *pb.Entity_RearPort: - return RearPortObjectType, nil - case *pb.Entity_Region: - return RegionObjectType, nil - case *pb.Entity_Role: - return RoleObjectType, nil - case *pb.Entity_RouteTarget: - return RouteTargetObjectType, nil - case *pb.Entity_Service: - return ServiceObjectType, nil - case *pb.Entity_Site: - return SiteObjectType, nil - case *pb.Entity_SiteGroup: - return SiteGroupObjectType, nil - case *pb.Entity_Tag: - return TagObjectType, nil - case *pb.Entity_Tenant: - return TenantObjectType, nil - case *pb.Entity_TenantGroup: - return TenantGroupObjectType, nil - case *pb.Entity_Tunnel: - return TunnelObjectType, nil - case *pb.Entity_TunnelGroup: - return TunnelGroupObjectType, nil - case *pb.Entity_TunnelTermination: - return TunnelTerminationObjectType, nil - case *pb.Entity_Vlan: - return VLANObjectType, nil - case *pb.Entity_VlanGroup: - return VLANGroupObjectType, nil - case *pb.Entity_VlanTranslationPolicy: - return VLANTranslationPolicyObjectType, nil - case *pb.Entity_VlanTranslationRule: - return VLANTranslationRuleObjectType, nil - case *pb.Entity_VmInterface: - return VMInterfaceObjectType, nil - case *pb.Entity_Vrf: - return VRFObjectType, nil - case *pb.Entity_VirtualChassis: - return VirtualChassisObjectType, nil - case *pb.Entity_VirtualCircuit: - return VirtualCircuitObjectType, nil - case *pb.Entity_VirtualCircuitTermination: - return VirtualCircuitTerminationObjectType, nil - case *pb.Entity_VirtualCircuitType: - return VirtualCircuitTypeObjectType, nil - case *pb.Entity_VirtualDeviceContext: - return VirtualDeviceContextObjectType, nil - case *pb.Entity_VirtualDisk: - return VirtualDiskObjectType, nil - case *pb.Entity_VirtualMachine: - return VirtualMachineObjectType, nil - case *pb.Entity_WirelessLan: - return WirelessLANObjectType, nil - case *pb.Entity_WirelessLanGroup: - return WirelessLANGroupObjectType, nil - case *pb.Entity_WirelessLink: - return WirelessLinkObjectType, nil - case *pb.Entity_CustomField: - return CustomFieldObjectType, nil - case *pb.Entity_CustomFieldChoiceSet: - return CustomFieldChoiceSetObjectType, nil - case *pb.Entity_JournalEntry: - return JournalEntryObjectType, nil - case *pb.Entity_ModuleTypeProfile: - return ModuleTypeProfileObjectType, nil - case *pb.Entity_CustomLink: - return CustomLinkObjectType, nil - default: - return "", fmt.Errorf("unknown entity type: %v", entity.GetEntity()) - } + switch entity.GetEntity().(type) { + case *pb.Entity_Asn: + return ASNObjectType, nil + case *pb.Entity_AsnRange: + return ASNRangeObjectType, nil + case *pb.Entity_Aggregate: + return AggregateObjectType, nil + case *pb.Entity_Cable: + return CableObjectType, nil + case *pb.Entity_CablePath: + return CablePathObjectType, nil + case *pb.Entity_CableTermination: + return CableTerminationObjectType, nil + case *pb.Entity_Circuit: + return CircuitObjectType, nil + case *pb.Entity_CircuitGroup: + return CircuitGroupObjectType, nil + case *pb.Entity_CircuitGroupAssignment: + return CircuitGroupAssignmentObjectType, nil + case *pb.Entity_CircuitTermination: + return CircuitTerminationObjectType, nil + case *pb.Entity_CircuitType: + return CircuitTypeObjectType, nil + case *pb.Entity_Cluster: + return ClusterObjectType, nil + case *pb.Entity_ClusterGroup: + return ClusterGroupObjectType, nil + case *pb.Entity_ClusterType: + return ClusterTypeObjectType, nil + case *pb.Entity_ConsolePort: + return ConsolePortObjectType, nil + case *pb.Entity_ConsoleServerPort: + return ConsoleServerPortObjectType, nil + case *pb.Entity_Contact: + return ContactObjectType, nil + case *pb.Entity_ContactAssignment: + return ContactAssignmentObjectType, nil + case *pb.Entity_ContactGroup: + return ContactGroupObjectType, nil + case *pb.Entity_ContactRole: + return ContactRoleObjectType, nil + case *pb.Entity_Device: + return DeviceObjectType, nil + case *pb.Entity_DeviceBay: + return DeviceBayObjectType, nil + case *pb.Entity_DeviceRole: + return DeviceRoleObjectType, nil + case *pb.Entity_DeviceType: + return DeviceTypeObjectType, nil + case *pb.Entity_FhrpGroup: + return FHRPGroupObjectType, nil + case *pb.Entity_FhrpGroupAssignment: + return FHRPGroupAssignmentObjectType, nil + case *pb.Entity_FrontPort: + return FrontPortObjectType, nil + case *pb.Entity_IkePolicy: + return IKEPolicyObjectType, nil + case *pb.Entity_IkeProposal: + return IKEProposalObjectType, nil + case *pb.Entity_IpAddress: + return IPAddressObjectType, nil + case *pb.Entity_IpRange: + return IPRangeObjectType, nil + case *pb.Entity_IpSecPolicy: + return IPSecPolicyObjectType, nil + case *pb.Entity_IpSecProfile: + return IPSecProfileObjectType, nil + case *pb.Entity_IpSecProposal: + return IPSecProposalObjectType, nil + case *pb.Entity_Interface: + return InterfaceObjectType, nil + case *pb.Entity_InventoryItem: + return InventoryItemObjectType, nil + case *pb.Entity_InventoryItemRole: + return InventoryItemRoleObjectType, nil + case *pb.Entity_L2Vpn: + return L2VPNObjectType, nil + case *pb.Entity_L2VpnTermination: + return L2VPNTerminationObjectType, nil + case *pb.Entity_Location: + return LocationObjectType, nil + case *pb.Entity_MacAddress: + return MACAddressObjectType, nil + case *pb.Entity_Manufacturer: + return ManufacturerObjectType, nil + case *pb.Entity_Module: + return ModuleObjectType, nil + case *pb.Entity_ModuleBay: + return ModuleBayObjectType, nil + case *pb.Entity_ModuleType: + return ModuleTypeObjectType, nil + case *pb.Entity_Platform: + return PlatformObjectType, nil + case *pb.Entity_PowerFeed: + return PowerFeedObjectType, nil + case *pb.Entity_PowerOutlet: + return PowerOutletObjectType, nil + case *pb.Entity_PowerPanel: + return PowerPanelObjectType, nil + case *pb.Entity_PowerPort: + return PowerPortObjectType, nil + case *pb.Entity_Prefix: + return PrefixObjectType, nil + case *pb.Entity_Provider: + return ProviderObjectType, nil + case *pb.Entity_ProviderAccount: + return ProviderAccountObjectType, nil + case *pb.Entity_ProviderNetwork: + return ProviderNetworkObjectType, nil + case *pb.Entity_Rir: + return RIRObjectType, nil + case *pb.Entity_Rack: + return RackObjectType, nil + case *pb.Entity_RackReservation: + return RackReservationObjectType, nil + case *pb.Entity_RackRole: + return RackRoleObjectType, nil + case *pb.Entity_RackType: + return RackTypeObjectType, nil + case *pb.Entity_RearPort: + return RearPortObjectType, nil + case *pb.Entity_Region: + return RegionObjectType, nil + case *pb.Entity_Role: + return RoleObjectType, nil + case *pb.Entity_RouteTarget: + return RouteTargetObjectType, nil + case *pb.Entity_Service: + return ServiceObjectType, nil + case *pb.Entity_Site: + return SiteObjectType, nil + case *pb.Entity_SiteGroup: + return SiteGroupObjectType, nil + case *pb.Entity_Tag: + return TagObjectType, nil + case *pb.Entity_Tenant: + return TenantObjectType, nil + case *pb.Entity_TenantGroup: + return TenantGroupObjectType, nil + case *pb.Entity_Tunnel: + return TunnelObjectType, nil + case *pb.Entity_TunnelGroup: + return TunnelGroupObjectType, nil + case *pb.Entity_TunnelTermination: + return TunnelTerminationObjectType, nil + case *pb.Entity_Vlan: + return VLANObjectType, nil + case *pb.Entity_VlanGroup: + return VLANGroupObjectType, nil + case *pb.Entity_VlanTranslationPolicy: + return VLANTranslationPolicyObjectType, nil + case *pb.Entity_VlanTranslationRule: + return VLANTranslationRuleObjectType, nil + case *pb.Entity_VmInterface: + return VMInterfaceObjectType, nil + case *pb.Entity_Vrf: + return VRFObjectType, nil + case *pb.Entity_VirtualChassis: + return VirtualChassisObjectType, nil + case *pb.Entity_VirtualCircuit: + return VirtualCircuitObjectType, nil + case *pb.Entity_VirtualCircuitTermination: + return VirtualCircuitTerminationObjectType, nil + case *pb.Entity_VirtualCircuitType: + return VirtualCircuitTypeObjectType, nil + case *pb.Entity_VirtualDeviceContext: + return VirtualDeviceContextObjectType, nil + case *pb.Entity_VirtualDisk: + return VirtualDiskObjectType, nil + case *pb.Entity_VirtualMachine: + return VirtualMachineObjectType, nil + case *pb.Entity_WirelessLan: + return WirelessLANObjectType, nil + case *pb.Entity_WirelessLanGroup: + return WirelessLANGroupObjectType, nil + case *pb.Entity_WirelessLink: + return WirelessLinkObjectType, nil + case *pb.Entity_CustomField: + return CustomFieldObjectType, nil + case *pb.Entity_CustomFieldChoiceSet: + return CustomFieldChoiceSetObjectType, nil + case *pb.Entity_JournalEntry: + return JournalEntryObjectType, nil + case *pb.Entity_ModuleTypeProfile: + return ModuleTypeProfileObjectType, nil + case *pb.Entity_CustomLink: + return CustomLinkObjectType, nil + default: + return "", fmt.Errorf("unknown entity type: %v", entity.GetEntity()) + } } func GetObjectTypeName(objectType string) (string, error) { - switch objectType { - case ASNObjectType: - return ASNObjectTypeName, nil - case ASNRangeObjectType: - return ASNRangeObjectTypeName, nil - case AggregateObjectType: - return AggregateObjectTypeName, nil - case CableObjectType: - return CableObjectTypeName, nil - case CablePathObjectType: - return CablePathObjectTypeName, nil - case CableTerminationObjectType: - return CableTerminationObjectTypeName, nil - case CircuitObjectType: - return CircuitObjectTypeName, nil - case CircuitGroupObjectType: - return CircuitGroupObjectTypeName, nil - case CircuitGroupAssignmentObjectType: - return CircuitGroupAssignmentObjectTypeName, nil - case CircuitTerminationObjectType: - return CircuitTerminationObjectTypeName, nil - case CircuitTypeObjectType: - return CircuitTypeObjectTypeName, nil - case ClusterObjectType: - return ClusterObjectTypeName, nil - case ClusterGroupObjectType: - return ClusterGroupObjectTypeName, nil - case ClusterTypeObjectType: - return ClusterTypeObjectTypeName, nil - case ConsolePortObjectType: - return ConsolePortObjectTypeName, nil - case ConsoleServerPortObjectType: - return ConsoleServerPortObjectTypeName, nil - case ContactObjectType: - return ContactObjectTypeName, nil - case ContactAssignmentObjectType: - return ContactAssignmentObjectTypeName, nil - case ContactGroupObjectType: - return ContactGroupObjectTypeName, nil - case ContactRoleObjectType: - return ContactRoleObjectTypeName, nil - case DeviceObjectType: - return DeviceObjectTypeName, nil - case DeviceBayObjectType: - return DeviceBayObjectTypeName, nil - case DeviceRoleObjectType: - return DeviceRoleObjectTypeName, nil - case DeviceTypeObjectType: - return DeviceTypeObjectTypeName, nil - case FHRPGroupObjectType: - return FHRPGroupObjectTypeName, nil - case FHRPGroupAssignmentObjectType: - return FHRPGroupAssignmentObjectTypeName, nil - case FrontPortObjectType: - return FrontPortObjectTypeName, nil - case IKEPolicyObjectType: - return IKEPolicyObjectTypeName, nil - case IKEProposalObjectType: - return IKEProposalObjectTypeName, nil - case IPAddressObjectType: - return IPAddressObjectTypeName, nil - case IPRangeObjectType: - return IPRangeObjectTypeName, nil - case IPSecPolicyObjectType: - return IPSecPolicyObjectTypeName, nil - case IPSecProfileObjectType: - return IPSecProfileObjectTypeName, nil - case IPSecProposalObjectType: - return IPSecProposalObjectTypeName, nil - case InterfaceObjectType: - return InterfaceObjectTypeName, nil - case InventoryItemObjectType: - return InventoryItemObjectTypeName, nil - case InventoryItemRoleObjectType: - return InventoryItemRoleObjectTypeName, nil - case L2VPNObjectType: - return L2VPNObjectTypeName, nil - case L2VPNTerminationObjectType: - return L2VPNTerminationObjectTypeName, nil - case LocationObjectType: - return LocationObjectTypeName, nil - case MACAddressObjectType: - return MACAddressObjectTypeName, nil - case ManufacturerObjectType: - return ManufacturerObjectTypeName, nil - case ModuleObjectType: - return ModuleObjectTypeName, nil - case ModuleBayObjectType: - return ModuleBayObjectTypeName, nil - case ModuleTypeObjectType: - return ModuleTypeObjectTypeName, nil - case PlatformObjectType: - return PlatformObjectTypeName, nil - case PowerFeedObjectType: - return PowerFeedObjectTypeName, nil - case PowerOutletObjectType: - return PowerOutletObjectTypeName, nil - case PowerPanelObjectType: - return PowerPanelObjectTypeName, nil - case PowerPortObjectType: - return PowerPortObjectTypeName, nil - case PrefixObjectType: - return PrefixObjectTypeName, nil - case ProviderObjectType: - return ProviderObjectTypeName, nil - case ProviderAccountObjectType: - return ProviderAccountObjectTypeName, nil - case ProviderNetworkObjectType: - return ProviderNetworkObjectTypeName, nil - case RIRObjectType: - return RIRObjectTypeName, nil - case RackObjectType: - return RackObjectTypeName, nil - case RackReservationObjectType: - return RackReservationObjectTypeName, nil - case RackRoleObjectType: - return RackRoleObjectTypeName, nil - case RackTypeObjectType: - return RackTypeObjectTypeName, nil - case RearPortObjectType: - return RearPortObjectTypeName, nil - case RegionObjectType: - return RegionObjectTypeName, nil - case RoleObjectType: - return RoleObjectTypeName, nil - case RouteTargetObjectType: - return RouteTargetObjectTypeName, nil - case ServiceObjectType: - return ServiceObjectTypeName, nil - case SiteObjectType: - return SiteObjectTypeName, nil - case SiteGroupObjectType: - return SiteGroupObjectTypeName, nil - case TagObjectType: - return TagObjectTypeName, nil - case TenantObjectType: - return TenantObjectTypeName, nil - case TenantGroupObjectType: - return TenantGroupObjectTypeName, nil - case TunnelObjectType: - return TunnelObjectTypeName, nil - case TunnelGroupObjectType: - return TunnelGroupObjectTypeName, nil - case TunnelTerminationObjectType: - return TunnelTerminationObjectTypeName, nil - case VLANObjectType: - return VLANObjectTypeName, nil - case VLANGroupObjectType: - return VLANGroupObjectTypeName, nil - case VLANTranslationPolicyObjectType: - return VLANTranslationPolicyObjectTypeName, nil - case VLANTranslationRuleObjectType: - return VLANTranslationRuleObjectTypeName, nil - case VMInterfaceObjectType: - return VMInterfaceObjectTypeName, nil - case VRFObjectType: - return VRFObjectTypeName, nil - case VirtualChassisObjectType: - return VirtualChassisObjectTypeName, nil - case VirtualCircuitObjectType: - return VirtualCircuitObjectTypeName, nil - case VirtualCircuitTerminationObjectType: - return VirtualCircuitTerminationObjectTypeName, nil - case VirtualCircuitTypeObjectType: - return VirtualCircuitTypeObjectTypeName, nil - case VirtualDeviceContextObjectType: - return VirtualDeviceContextObjectTypeName, nil - case VirtualDiskObjectType: - return VirtualDiskObjectTypeName, nil - case VirtualMachineObjectType: - return VirtualMachineObjectTypeName, nil - case WirelessLANObjectType: - return WirelessLANObjectTypeName, nil - case WirelessLANGroupObjectType: - return WirelessLANGroupObjectTypeName, nil - case WirelessLinkObjectType: - return WirelessLinkObjectTypeName, nil - case CustomFieldObjectType: - return CustomFieldObjectTypeName, nil - case CustomFieldChoiceSetObjectType: - return CustomFieldChoiceSetObjectTypeName, nil - case JournalEntryObjectType: - return JournalEntryObjectTypeName, nil - case ModuleTypeProfileObjectType: - return ModuleTypeProfileObjectTypeName, nil - case CustomLinkObjectType: - return CustomLinkObjectTypeName, nil - default: - return "", fmt.Errorf("unknown object type: %v", objectType) - } + switch objectType { + case ASNObjectType: + return ASNObjectTypeName, nil + case ASNRangeObjectType: + return ASNRangeObjectTypeName, nil + case AggregateObjectType: + return AggregateObjectTypeName, nil + case CableObjectType: + return CableObjectTypeName, nil + case CablePathObjectType: + return CablePathObjectTypeName, nil + case CableTerminationObjectType: + return CableTerminationObjectTypeName, nil + case CircuitObjectType: + return CircuitObjectTypeName, nil + case CircuitGroupObjectType: + return CircuitGroupObjectTypeName, nil + case CircuitGroupAssignmentObjectType: + return CircuitGroupAssignmentObjectTypeName, nil + case CircuitTerminationObjectType: + return CircuitTerminationObjectTypeName, nil + case CircuitTypeObjectType: + return CircuitTypeObjectTypeName, nil + case ClusterObjectType: + return ClusterObjectTypeName, nil + case ClusterGroupObjectType: + return ClusterGroupObjectTypeName, nil + case ClusterTypeObjectType: + return ClusterTypeObjectTypeName, nil + case ConsolePortObjectType: + return ConsolePortObjectTypeName, nil + case ConsoleServerPortObjectType: + return ConsoleServerPortObjectTypeName, nil + case ContactObjectType: + return ContactObjectTypeName, nil + case ContactAssignmentObjectType: + return ContactAssignmentObjectTypeName, nil + case ContactGroupObjectType: + return ContactGroupObjectTypeName, nil + case ContactRoleObjectType: + return ContactRoleObjectTypeName, nil + case DeviceObjectType: + return DeviceObjectTypeName, nil + case DeviceBayObjectType: + return DeviceBayObjectTypeName, nil + case DeviceRoleObjectType: + return DeviceRoleObjectTypeName, nil + case DeviceTypeObjectType: + return DeviceTypeObjectTypeName, nil + case FHRPGroupObjectType: + return FHRPGroupObjectTypeName, nil + case FHRPGroupAssignmentObjectType: + return FHRPGroupAssignmentObjectTypeName, nil + case FrontPortObjectType: + return FrontPortObjectTypeName, nil + case IKEPolicyObjectType: + return IKEPolicyObjectTypeName, nil + case IKEProposalObjectType: + return IKEProposalObjectTypeName, nil + case IPAddressObjectType: + return IPAddressObjectTypeName, nil + case IPRangeObjectType: + return IPRangeObjectTypeName, nil + case IPSecPolicyObjectType: + return IPSecPolicyObjectTypeName, nil + case IPSecProfileObjectType: + return IPSecProfileObjectTypeName, nil + case IPSecProposalObjectType: + return IPSecProposalObjectTypeName, nil + case InterfaceObjectType: + return InterfaceObjectTypeName, nil + case InventoryItemObjectType: + return InventoryItemObjectTypeName, nil + case InventoryItemRoleObjectType: + return InventoryItemRoleObjectTypeName, nil + case L2VPNObjectType: + return L2VPNObjectTypeName, nil + case L2VPNTerminationObjectType: + return L2VPNTerminationObjectTypeName, nil + case LocationObjectType: + return LocationObjectTypeName, nil + case MACAddressObjectType: + return MACAddressObjectTypeName, nil + case ManufacturerObjectType: + return ManufacturerObjectTypeName, nil + case ModuleObjectType: + return ModuleObjectTypeName, nil + case ModuleBayObjectType: + return ModuleBayObjectTypeName, nil + case ModuleTypeObjectType: + return ModuleTypeObjectTypeName, nil + case PlatformObjectType: + return PlatformObjectTypeName, nil + case PowerFeedObjectType: + return PowerFeedObjectTypeName, nil + case PowerOutletObjectType: + return PowerOutletObjectTypeName, nil + case PowerPanelObjectType: + return PowerPanelObjectTypeName, nil + case PowerPortObjectType: + return PowerPortObjectTypeName, nil + case PrefixObjectType: + return PrefixObjectTypeName, nil + case ProviderObjectType: + return ProviderObjectTypeName, nil + case ProviderAccountObjectType: + return ProviderAccountObjectTypeName, nil + case ProviderNetworkObjectType: + return ProviderNetworkObjectTypeName, nil + case RIRObjectType: + return RIRObjectTypeName, nil + case RackObjectType: + return RackObjectTypeName, nil + case RackReservationObjectType: + return RackReservationObjectTypeName, nil + case RackRoleObjectType: + return RackRoleObjectTypeName, nil + case RackTypeObjectType: + return RackTypeObjectTypeName, nil + case RearPortObjectType: + return RearPortObjectTypeName, nil + case RegionObjectType: + return RegionObjectTypeName, nil + case RoleObjectType: + return RoleObjectTypeName, nil + case RouteTargetObjectType: + return RouteTargetObjectTypeName, nil + case ServiceObjectType: + return ServiceObjectTypeName, nil + case SiteObjectType: + return SiteObjectTypeName, nil + case SiteGroupObjectType: + return SiteGroupObjectTypeName, nil + case TagObjectType: + return TagObjectTypeName, nil + case TenantObjectType: + return TenantObjectTypeName, nil + case TenantGroupObjectType: + return TenantGroupObjectTypeName, nil + case TunnelObjectType: + return TunnelObjectTypeName, nil + case TunnelGroupObjectType: + return TunnelGroupObjectTypeName, nil + case TunnelTerminationObjectType: + return TunnelTerminationObjectTypeName, nil + case VLANObjectType: + return VLANObjectTypeName, nil + case VLANGroupObjectType: + return VLANGroupObjectTypeName, nil + case VLANTranslationPolicyObjectType: + return VLANTranslationPolicyObjectTypeName, nil + case VLANTranslationRuleObjectType: + return VLANTranslationRuleObjectTypeName, nil + case VMInterfaceObjectType: + return VMInterfaceObjectTypeName, nil + case VRFObjectType: + return VRFObjectTypeName, nil + case VirtualChassisObjectType: + return VirtualChassisObjectTypeName, nil + case VirtualCircuitObjectType: + return VirtualCircuitObjectTypeName, nil + case VirtualCircuitTerminationObjectType: + return VirtualCircuitTerminationObjectTypeName, nil + case VirtualCircuitTypeObjectType: + return VirtualCircuitTypeObjectTypeName, nil + case VirtualDeviceContextObjectType: + return VirtualDeviceContextObjectTypeName, nil + case VirtualDiskObjectType: + return VirtualDiskObjectTypeName, nil + case VirtualMachineObjectType: + return VirtualMachineObjectTypeName, nil + case WirelessLANObjectType: + return WirelessLANObjectTypeName, nil + case WirelessLANGroupObjectType: + return WirelessLANGroupObjectTypeName, nil + case WirelessLinkObjectType: + return WirelessLinkObjectTypeName, nil + case CustomFieldObjectType: + return CustomFieldObjectTypeName, nil + case CustomFieldChoiceSetObjectType: + return CustomFieldChoiceSetObjectTypeName, nil + case JournalEntryObjectType: + return JournalEntryObjectTypeName, nil + case ModuleTypeProfileObjectType: + return ModuleTypeProfileObjectTypeName, nil + case CustomLinkObjectType: + return CustomLinkObjectTypeName, nil + default: + return "", fmt.Errorf("unknown object type: %v", objectType) + } } func GetPrimaryValue(entity *pb.Entity) (string, error) { - switch e := entity.GetEntity().(type) { - case *pb.Entity_Asn: - return fmt.Sprintf("%v", e.Asn.Asn), nil - case *pb.Entity_AsnRange: - return fmt.Sprintf("%v", e.AsnRange.Name), nil - case *pb.Entity_Circuit: - return fmt.Sprintf("%v", e.Circuit.Cid), nil - case *pb.Entity_CircuitGroup: - return fmt.Sprintf("%v", e.CircuitGroup.Name), nil - case *pb.Entity_CircuitType: - return fmt.Sprintf("%v", e.CircuitType.Name), nil - case *pb.Entity_Cluster: - return fmt.Sprintf("%v", e.Cluster.Name), nil - case *pb.Entity_ClusterGroup: - return fmt.Sprintf("%v", e.ClusterGroup.Name), nil - case *pb.Entity_ClusterType: - return fmt.Sprintf("%v", e.ClusterType.Name), nil - case *pb.Entity_ConsolePort: - return fmt.Sprintf("%v", e.ConsolePort.Name), nil - case *pb.Entity_ConsoleServerPort: - return fmt.Sprintf("%v", e.ConsoleServerPort.Name), nil - case *pb.Entity_Contact: - return fmt.Sprintf("%v", e.Contact.Name), nil - case *pb.Entity_ContactGroup: - return fmt.Sprintf("%v", e.ContactGroup.Name), nil - case *pb.Entity_ContactRole: - return fmt.Sprintf("%v", e.ContactRole.Name), nil - case *pb.Entity_CustomField: - return fmt.Sprintf("%v", e.CustomField.Name), nil - case *pb.Entity_CustomFieldChoiceSet: - return fmt.Sprintf("%v", e.CustomFieldChoiceSet.Name), nil - case *pb.Entity_CustomLink: - return fmt.Sprintf("%v", e.CustomLink.Name), nil - case *pb.Entity_Device: - return fmt.Sprintf("%v", e.Device.Name), nil - case *pb.Entity_DeviceBay: - return fmt.Sprintf("%v", e.DeviceBay.Name), nil - case *pb.Entity_DeviceRole: - return fmt.Sprintf("%v", e.DeviceRole.Name), nil - case *pb.Entity_DeviceType: - return fmt.Sprintf("%v", e.DeviceType.Model), nil - case *pb.Entity_FhrpGroup: - return fmt.Sprintf("%v", e.FhrpGroup.Name), nil - case *pb.Entity_FrontPort: - return fmt.Sprintf("%v", e.FrontPort.Name), nil - case *pb.Entity_IkePolicy: - return fmt.Sprintf("%v", e.IkePolicy.Name), nil - case *pb.Entity_IkeProposal: - return fmt.Sprintf("%v", e.IkeProposal.Name), nil - case *pb.Entity_IpAddress: - return fmt.Sprintf("%v", e.IpAddress.Address), nil - case *pb.Entity_IpSecPolicy: - return fmt.Sprintf("%v", e.IpSecPolicy.Name), nil - case *pb.Entity_IpSecProfile: - return fmt.Sprintf("%v", e.IpSecProfile.Name), nil - case *pb.Entity_IpSecProposal: - return fmt.Sprintf("%v", e.IpSecProposal.Name), nil - case *pb.Entity_Interface: - return fmt.Sprintf("%v", e.Interface.Name), nil - case *pb.Entity_InventoryItem: - return fmt.Sprintf("%v", e.InventoryItem.Name), nil - case *pb.Entity_InventoryItemRole: - return fmt.Sprintf("%v", e.InventoryItemRole.Name), nil - case *pb.Entity_L2Vpn: - return fmt.Sprintf("%v", e.L2Vpn.Name), nil - case *pb.Entity_Location: - return fmt.Sprintf("%v", e.Location.Name), nil - case *pb.Entity_MacAddress: - return fmt.Sprintf("%v", e.MacAddress.MacAddress), nil - case *pb.Entity_Manufacturer: - return fmt.Sprintf("%v", e.Manufacturer.Name), nil - case *pb.Entity_ModuleBay: - return fmt.Sprintf("%v", e.ModuleBay.Name), nil - case *pb.Entity_ModuleType: - return fmt.Sprintf("%v", e.ModuleType.Model), nil - case *pb.Entity_ModuleTypeProfile: - return fmt.Sprintf("%v", e.ModuleTypeProfile.Name), nil - case *pb.Entity_Platform: - return fmt.Sprintf("%v", e.Platform.Name), nil - case *pb.Entity_PowerFeed: - return fmt.Sprintf("%v", e.PowerFeed.Name), nil - case *pb.Entity_PowerOutlet: - return fmt.Sprintf("%v", e.PowerOutlet.Name), nil - case *pb.Entity_PowerPanel: - return fmt.Sprintf("%v", e.PowerPanel.Name), nil - case *pb.Entity_PowerPort: - return fmt.Sprintf("%v", e.PowerPort.Name), nil - case *pb.Entity_Prefix: - return fmt.Sprintf("%v", e.Prefix.Prefix), nil - case *pb.Entity_Provider: - return fmt.Sprintf("%v", e.Provider.Name), nil - case *pb.Entity_ProviderAccount: - return fmt.Sprintf("%v", e.ProviderAccount.Name), nil - case *pb.Entity_ProviderNetwork: - return fmt.Sprintf("%v", e.ProviderNetwork.Name), nil - case *pb.Entity_Rir: - return fmt.Sprintf("%v", e.Rir.Name), nil - case *pb.Entity_Rack: - return fmt.Sprintf("%v", e.Rack.Name), nil - case *pb.Entity_RackRole: - return fmt.Sprintf("%v", e.RackRole.Name), nil - case *pb.Entity_RackType: - return fmt.Sprintf("%v", e.RackType.Model), nil - case *pb.Entity_RearPort: - return fmt.Sprintf("%v", e.RearPort.Name), nil - case *pb.Entity_Region: - return fmt.Sprintf("%v", e.Region.Name), nil - case *pb.Entity_Role: - return fmt.Sprintf("%v", e.Role.Name), nil - case *pb.Entity_RouteTarget: - return fmt.Sprintf("%v", e.RouteTarget.Name), nil - case *pb.Entity_Service: - return fmt.Sprintf("%v", e.Service.Name), nil - case *pb.Entity_Site: - return fmt.Sprintf("%v", e.Site.Name), nil - case *pb.Entity_SiteGroup: - return fmt.Sprintf("%v", e.SiteGroup.Name), nil - case *pb.Entity_Tag: - return fmt.Sprintf("%v", e.Tag.Name), nil - case *pb.Entity_Tenant: - return fmt.Sprintf("%v", e.Tenant.Name), nil - case *pb.Entity_TenantGroup: - return fmt.Sprintf("%v", e.TenantGroup.Name), nil - case *pb.Entity_Tunnel: - return fmt.Sprintf("%v", e.Tunnel.Name), nil - case *pb.Entity_TunnelGroup: - return fmt.Sprintf("%v", e.TunnelGroup.Name), nil - case *pb.Entity_Vlan: - return fmt.Sprintf("%v", e.Vlan.Name), nil - case *pb.Entity_VlanGroup: - return fmt.Sprintf("%v", e.VlanGroup.Name), nil - case *pb.Entity_VlanTranslationPolicy: - return fmt.Sprintf("%v", e.VlanTranslationPolicy.Name), nil - case *pb.Entity_VmInterface: - return fmt.Sprintf("%v", e.VmInterface.Name), nil - case *pb.Entity_Vrf: - return fmt.Sprintf("%v", e.Vrf.Name), nil - case *pb.Entity_VirtualChassis: - return fmt.Sprintf("%v", e.VirtualChassis.Name), nil - case *pb.Entity_VirtualCircuit: - return fmt.Sprintf("%v", e.VirtualCircuit.Cid), nil - case *pb.Entity_VirtualCircuitType: - return fmt.Sprintf("%v", e.VirtualCircuitType.Name), nil - case *pb.Entity_VirtualDeviceContext: - return fmt.Sprintf("%v", e.VirtualDeviceContext.Name), nil - case *pb.Entity_VirtualDisk: - return fmt.Sprintf("%v", e.VirtualDisk.Name), nil - case *pb.Entity_VirtualMachine: - return fmt.Sprintf("%v", e.VirtualMachine.Name), nil - case *pb.Entity_WirelessLan: - return fmt.Sprintf("%v", e.WirelessLan.Ssid), nil - case *pb.Entity_WirelessLanGroup: - return fmt.Sprintf("%v", e.WirelessLanGroup.Name), nil - default: - return "", fmt.Errorf("unknown entity type: %v", entity.GetEntity()) - } -} \ No newline at end of file + switch e := entity.GetEntity().(type) { + case *pb.Entity_Asn: + return fmt.Sprintf("%v", e.Asn.Asn), nil + case *pb.Entity_AsnRange: + return fmt.Sprintf("%v", e.AsnRange.Name), nil + case *pb.Entity_Circuit: + return fmt.Sprintf("%v", e.Circuit.Cid), nil + case *pb.Entity_CircuitGroup: + return fmt.Sprintf("%v", e.CircuitGroup.Name), nil + case *pb.Entity_CircuitType: + return fmt.Sprintf("%v", e.CircuitType.Name), nil + case *pb.Entity_Cluster: + return fmt.Sprintf("%v", e.Cluster.Name), nil + case *pb.Entity_ClusterGroup: + return fmt.Sprintf("%v", e.ClusterGroup.Name), nil + case *pb.Entity_ClusterType: + return fmt.Sprintf("%v", e.ClusterType.Name), nil + case *pb.Entity_ConsolePort: + return fmt.Sprintf("%v", e.ConsolePort.Name), nil + case *pb.Entity_ConsoleServerPort: + return fmt.Sprintf("%v", e.ConsoleServerPort.Name), nil + case *pb.Entity_Contact: + return fmt.Sprintf("%v", e.Contact.Name), nil + case *pb.Entity_ContactGroup: + return fmt.Sprintf("%v", e.ContactGroup.Name), nil + case *pb.Entity_ContactRole: + return fmt.Sprintf("%v", e.ContactRole.Name), nil + case *pb.Entity_CustomField: + return fmt.Sprintf("%v", e.CustomField.Name), nil + case *pb.Entity_CustomFieldChoiceSet: + return fmt.Sprintf("%v", e.CustomFieldChoiceSet.Name), nil + case *pb.Entity_CustomLink: + return fmt.Sprintf("%v", e.CustomLink.Name), nil + case *pb.Entity_Device: + return fmt.Sprintf("%v", e.Device.Name), nil + case *pb.Entity_DeviceBay: + return fmt.Sprintf("%v", e.DeviceBay.Name), nil + case *pb.Entity_DeviceRole: + return fmt.Sprintf("%v", e.DeviceRole.Name), nil + case *pb.Entity_DeviceType: + return fmt.Sprintf("%v", e.DeviceType.Model), nil + case *pb.Entity_FhrpGroup: + return fmt.Sprintf("%v", e.FhrpGroup.Name), nil + case *pb.Entity_FrontPort: + return fmt.Sprintf("%v", e.FrontPort.Name), nil + case *pb.Entity_IkePolicy: + return fmt.Sprintf("%v", e.IkePolicy.Name), nil + case *pb.Entity_IkeProposal: + return fmt.Sprintf("%v", e.IkeProposal.Name), nil + case *pb.Entity_IpAddress: + return fmt.Sprintf("%v", e.IpAddress.Address), nil + case *pb.Entity_IpSecPolicy: + return fmt.Sprintf("%v", e.IpSecPolicy.Name), nil + case *pb.Entity_IpSecProfile: + return fmt.Sprintf("%v", e.IpSecProfile.Name), nil + case *pb.Entity_IpSecProposal: + return fmt.Sprintf("%v", e.IpSecProposal.Name), nil + case *pb.Entity_Interface: + return fmt.Sprintf("%v", e.Interface.Name), nil + case *pb.Entity_InventoryItem: + return fmt.Sprintf("%v", e.InventoryItem.Name), nil + case *pb.Entity_InventoryItemRole: + return fmt.Sprintf("%v", e.InventoryItemRole.Name), nil + case *pb.Entity_L2Vpn: + return fmt.Sprintf("%v", e.L2Vpn.Name), nil + case *pb.Entity_Location: + return fmt.Sprintf("%v", e.Location.Name), nil + case *pb.Entity_MacAddress: + return fmt.Sprintf("%v", e.MacAddress.MacAddress), nil + case *pb.Entity_Manufacturer: + return fmt.Sprintf("%v", e.Manufacturer.Name), nil + case *pb.Entity_ModuleBay: + return fmt.Sprintf("%v", e.ModuleBay.Name), nil + case *pb.Entity_ModuleType: + return fmt.Sprintf("%v", e.ModuleType.Model), nil + case *pb.Entity_ModuleTypeProfile: + return fmt.Sprintf("%v", e.ModuleTypeProfile.Name), nil + case *pb.Entity_Platform: + return fmt.Sprintf("%v", e.Platform.Name), nil + case *pb.Entity_PowerFeed: + return fmt.Sprintf("%v", e.PowerFeed.Name), nil + case *pb.Entity_PowerOutlet: + return fmt.Sprintf("%v", e.PowerOutlet.Name), nil + case *pb.Entity_PowerPanel: + return fmt.Sprintf("%v", e.PowerPanel.Name), nil + case *pb.Entity_PowerPort: + return fmt.Sprintf("%v", e.PowerPort.Name), nil + case *pb.Entity_Prefix: + return fmt.Sprintf("%v", e.Prefix.Prefix), nil + case *pb.Entity_Provider: + return fmt.Sprintf("%v", e.Provider.Name), nil + case *pb.Entity_ProviderAccount: + return fmt.Sprintf("%v", e.ProviderAccount.Name), nil + case *pb.Entity_ProviderNetwork: + return fmt.Sprintf("%v", e.ProviderNetwork.Name), nil + case *pb.Entity_Rir: + return fmt.Sprintf("%v", e.Rir.Name), nil + case *pb.Entity_Rack: + return fmt.Sprintf("%v", e.Rack.Name), nil + case *pb.Entity_RackRole: + return fmt.Sprintf("%v", e.RackRole.Name), nil + case *pb.Entity_RackType: + return fmt.Sprintf("%v", e.RackType.Model), nil + case *pb.Entity_RearPort: + return fmt.Sprintf("%v", e.RearPort.Name), nil + case *pb.Entity_Region: + return fmt.Sprintf("%v", e.Region.Name), nil + case *pb.Entity_Role: + return fmt.Sprintf("%v", e.Role.Name), nil + case *pb.Entity_RouteTarget: + return fmt.Sprintf("%v", e.RouteTarget.Name), nil + case *pb.Entity_Service: + return fmt.Sprintf("%v", e.Service.Name), nil + case *pb.Entity_Site: + return fmt.Sprintf("%v", e.Site.Name), nil + case *pb.Entity_SiteGroup: + return fmt.Sprintf("%v", e.SiteGroup.Name), nil + case *pb.Entity_Tag: + return fmt.Sprintf("%v", e.Tag.Name), nil + case *pb.Entity_Tenant: + return fmt.Sprintf("%v", e.Tenant.Name), nil + case *pb.Entity_TenantGroup: + return fmt.Sprintf("%v", e.TenantGroup.Name), nil + case *pb.Entity_Tunnel: + return fmt.Sprintf("%v", e.Tunnel.Name), nil + case *pb.Entity_TunnelGroup: + return fmt.Sprintf("%v", e.TunnelGroup.Name), nil + case *pb.Entity_Vlan: + return fmt.Sprintf("%v", e.Vlan.Name), nil + case *pb.Entity_VlanGroup: + return fmt.Sprintf("%v", e.VlanGroup.Name), nil + case *pb.Entity_VlanTranslationPolicy: + return fmt.Sprintf("%v", e.VlanTranslationPolicy.Name), nil + case *pb.Entity_VmInterface: + return fmt.Sprintf("%v", e.VmInterface.Name), nil + case *pb.Entity_Vrf: + return fmt.Sprintf("%v", e.Vrf.Name), nil + case *pb.Entity_VirtualChassis: + return fmt.Sprintf("%v", e.VirtualChassis.Name), nil + case *pb.Entity_VirtualCircuit: + return fmt.Sprintf("%v", e.VirtualCircuit.Cid), nil + case *pb.Entity_VirtualCircuitType: + return fmt.Sprintf("%v", e.VirtualCircuitType.Name), nil + case *pb.Entity_VirtualDeviceContext: + return fmt.Sprintf("%v", e.VirtualDeviceContext.Name), nil + case *pb.Entity_VirtualDisk: + return fmt.Sprintf("%v", e.VirtualDisk.Name), nil + case *pb.Entity_VirtualMachine: + return fmt.Sprintf("%v", e.VirtualMachine.Name), nil + case *pb.Entity_WirelessLan: + return fmt.Sprintf("%v", e.WirelessLan.Ssid), nil + case *pb.Entity_WirelessLanGroup: + return fmt.Sprintf("%v", e.WirelessLanGroup.Name), nil + default: + return "", fmt.Errorf("unknown entity type: %v", entity.GetEntity()) + } +} diff --git a/docs/diode-proto.md b/docs/diode-proto.md index d9bfa2dd..00f9a9b9 100644 --- a/docs/diode-proto.md +++ b/docs/diode-proto.md @@ -1058,8 +1058,8 @@ | default | [string](#string) | optional | | | related_object_filter | [string](#string) | optional | | | weight | [int64](#int64) | optional | | -| validation_minimum | [int64](#int64) | optional | | -| validation_maximum | [int64](#int64) | optional | | +| validation_minimum | [double](#double) | optional | | +| validation_maximum | [double](#double) | optional | | | validation_regex | [string](#string) | optional | | | choice_set | [CustomFieldChoiceSet](#diode-v1-CustomFieldChoiceSet) | optional | | | comments | [string](#string) | optional | | @@ -2875,6 +2875,8 @@ | description | [string](#string) | optional | | | tags | [Tag](#diode-v1-Tag) | repeated | | | custom_fields | [Platform.CustomFieldsEntry](#diode-v1-Platform-CustomFieldsEntry) | repeated | | +| parent | [Platform](#diode-v1-Platform) | optional | | +| comments | [string](#string) | optional | | @@ -3331,6 +3333,7 @@ | comments | [string](#string) | optional | | | tags | [Tag](#diode-v1-Tag) | repeated | | | custom_fields | [RackReservation.CustomFieldsEntry](#diode-v1-RackReservation-CustomFieldsEntry) | repeated | | +| status | [string](#string) | optional | | From b19a034401edc727095c580c2ad37023acf1af5d Mon Sep 17 00:00:00 2001 From: Michal Fiedorowicz Date: Fri, 3 Oct 2025 14:59:01 +0200 Subject: [PATCH 9/9] fix: chart version (#408) Signed-off-by: Michal Fiedorowicz --- charts/diode/Chart.yaml | 2 +- charts/diode/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/charts/diode/Chart.yaml b/charts/diode/Chart.yaml index 590ea8fe..85da79b4 100644 --- a/charts/diode/Chart.yaml +++ b/charts/diode/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: diode description: A Helm chart for Diode type: application -version: 1.9.0 +version: 1.8.0 appVersion: "1.5.0" home: https://github.com/netboxlabs/diode sources: diff --git a/charts/diode/README.md b/charts/diode/README.md index 8bf14fe0..6c286f42 100644 --- a/charts/diode/README.md +++ b/charts/diode/README.md @@ -2,7 +2,7 @@ A Helm chart for Diode -![Version: 1.9.0](https://img.shields.io/badge/Version-1.9.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.5.0](https://img.shields.io/badge/AppVersion-1.5.0-informational?style=flat-square) +![Version: 1.8.0](https://img.shields.io/badge/Version-1.8.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.5.0](https://img.shields.io/badge/AppVersion-1.5.0-informational?style=flat-square) ## Prerequisites