diff --git a/.github/workflows/sync_data_schema_updates.yaml b/.github/workflows/sync_data_schema_updates.yaml
new file mode 100644
index 0000000..8485408
--- /dev/null
+++ b/.github/workflows/sync_data_schema_updates.yaml
@@ -0,0 +1,51 @@
+name: Synchronize Repo with Data Schemas
+on:
+ pull_request:
+ types: [opened, synchronize, reopened, ready_for_review]
+ paths:
+ - 'jsonschema/**'
+ - 'scripts/**'
+ - '.github/workflows/sync_data_schema_updates.yaml'
+
+
+jobs:
+ sync:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Check out repo
+ uses: actions/checkout@v4
+
+ - name: Setup Python
+ uses: actions/setup-python@v5
+ with:
+ python-version: '3.13'
+
+ - name: Set git user and generate files
+ run: |
+ git config --global user.name 'equinix-labs@auto-commit-workflow'
+ git config --global user.email 'bot@equinix.noreply.github.com'
+ git config advice.addIgnoredFile false
+ git fetch
+ echo -e "\nThis is executing for branch: ${GITHUB_HEAD_REF##*/}."
+ git checkout ${GITHUB_HEAD_REF##*/}
+
+ - name: Update Data Loaders
+ run: python3 ./scripts/update_data_loader.py
+
+ - name: Update JSON Catalog
+ run: python3 ./scripts/generate_json_catalog.py
+
+ - name: Update README.md
+ run: python3 ./scripts/generate_readme_event_catalog.py
+
+ - name: Auto Commit Updates
+ run: |
+ git add .
+ echo -e "\nGit status:"
+ echo `git status`
+ cdate=`date`
+ cmsg="Auto commit generated client synchronization changes for Data Schema Updates - $cdate"
+ echo -e "\nCommit message created : $cmsg"
+ echo -e "\nCommitting if there are files to update in client dir:"
+ echo `git commit -m "$cmsg"`
+ echo `git push`
diff --git a/.github/workflows/validate_json_schemas.yaml b/.github/workflows/validate_json_schemas.yaml
new file mode 100644
index 0000000..9faf8ca
--- /dev/null
+++ b/.github/workflows/validate_json_schemas.yaml
@@ -0,0 +1,30 @@
+name: Validate JSON Schemas Syntax
+on:
+ pull_request:
+ types: [opened, synchronize, reopened, ready_for_review]
+ paths:
+ - 'jsonschema/**'
+ - 'scripts/**'
+ - '.github/workflows/validate_json_schemas.yaml'
+
+
+jobs:
+ validate:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Check out repo
+ uses: actions/checkout@v4
+
+ - name: Setup Python
+ uses: actions/setup-python@v5
+ with:
+ python-version: '3.13'
+
+ - name: Install Python requirements.txt Dependencies
+ run: python3 -m pip install -r ./scripts/requirements.txt
+
+ - name: Download schema specifications
+ run: curl -o ./scripts/jsonschema-org-schema.json https://json-schema.org/draft-04/schema
+
+ - name: Validate JSON Schema
+ run: python3 ./scripts/validate_json_schemas.py
diff --git a/.gitignore b/.gitignore
index c111e88..01f814d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,3 +6,6 @@
# Local Setup Scripts for Repo
local_helper_scripts/*
+
+# Python Generated Files
+__pycache__
diff --git a/DataLoader.json b/DataLoader.json
index 93738ed..398eef3 100644
--- a/DataLoader.json
+++ b/DataLoader.json
@@ -1,54 +1,185 @@
{
+ "access_manager": {
+ "cloudeventTypes": {
+ "released": [],
+ "preview": []
+ },
+ "metricNames": {
+ "released": [],
+ "preview": []
+ },
+ "alertNames": {
+ "released": [],
+ "preview": []
+ }
+ },
"fabric": {
- "eventTypes": [
- "equinix.fabric.connection.attribute.changed",
- "equinix.fabric.connection.bgpipv4_session_status.connect",
- "equinix.fabric.connection.bgpipv4_session_status.established",
- "equinix.fabric.connection.bgpipv4_session_status.idle",
- "equinix.fabric.connection.bgpipv6_session_status.connect",
- "equinix.fabric.connection.bgpipv6_session_status.established",
- "equinix.fabric.connection.bgpipv6_session_status.idle",
- "equinix.fabric.connection.state.deprovisioned",
- "equinix.fabric.connection.state.deprovisioning",
- "equinix.fabric.connection.state.pending",
- "equinix.fabric.connection.state.pending_approval",
- "equinix.fabric.connection.state.pending_interface_configuration",
- "equinix.fabric.connection.state.provisioned",
- "equinix.fabric.connection.state.provisioning",
- "equinix.fabric.connection.status.down",
- "equinix.fabric.connection.status.up",
- "equinix.fabric.metric",
- "equinix.fabric.network.state.deprovisioned",
- "equinix.fabric.network.state.deprovisioning",
- "equinix.fabric.network.state.provisioned",
- "equinix.fabric.network.state.provisioning",
- "equinix.fabric.port.state.deprovisioned",
- "equinix.fabric.port.state.failed",
- "equinix.fabric.port.state.provisioned",
- "equinix.fabric.port.status.down",
- "equinix.fabric.port.status.up",
- "equinix.fabric.router.state.deprovisioned",
- "equinix.fabric.router.state.deprovisioning",
- "equinix.fabric.router.state.failed",
- "equinix.fabric.router.state.not_deprovisioned",
- "equinix.fabric.router.state.not_provisioned",
- "equinix.fabric.router.state.provisioned",
- "equinix.fabric.router.state.provisioning",
- "equinix.fabric.router.state.reprovisioning",
- "equinix.fabric.service_token.attribute.changed",
- "equinix.fabric.service_token.state.deleted",
- "equinix.fabric.service_token.state.inactive"
- ],
- "metricNames": [
- "equinix.fabric.connection.bandwidth_rx.usage",
- "equinix.fabric.connection.bandwidth_tx.usage",
- "equinix.fabric.metro.{:asideMetroCode}_{:zsideMetroCode}.latency",
- "equinix.fabric.port.bandwidth_rx.usage",
- "equinix.fabric.port.bandwidth_tx.usage",
- "equinix.fabric.port.packets_dropped_rx.count",
- "equinix.fabric.port.packets_dropped_tx.count",
- "equinix.fabric.port.packets_erred_rx.count",
- "equinix.fabric.port.packets_erred_tx.count"
- ]
+ "cloudeventTypes": {
+ "released": [
+ "equinix.fabric.connection.attribute.changed",
+ "equinix.fabric.connection.bgpipv4_session_status.connect",
+ "equinix.fabric.connection.bgpipv4_session_status.established",
+ "equinix.fabric.connection.bgpipv4_session_status.idle",
+ "equinix.fabric.connection.bgpipv4_session_status.open_confirm",
+ "equinix.fabric.connection.bgpipv4_session_status.open_sent",
+ "equinix.fabric.connection.bgpipv6_session_status.connect",
+ "equinix.fabric.connection.bgpipv6_session_status.established",
+ "equinix.fabric.connection.bgpipv6_session_status.idle",
+ "equinix.fabric.connection.ipv4_installed_routes.utilization",
+ "equinix.fabric.connection.ipv6_installed_routes.utilization",
+ "equinix.fabric.connection.state.deprovisioned",
+ "equinix.fabric.connection.state.deprovisioning",
+ "equinix.fabric.connection.state.pending",
+ "equinix.fabric.connection.state.provisioned",
+ "equinix.fabric.connection.state.provisioning",
+ "equinix.fabric.connection.status.down",
+ "equinix.fabric.connection.status.up",
+ "equinix.fabric.metric",
+ "equinix.fabric.network.state.deprovisioned",
+ "equinix.fabric.network.state.deprovisioning",
+ "equinix.fabric.network.state.provisioned",
+ "equinix.fabric.network.state.provisioning",
+ "equinix.fabric.port.state.deprovisioned",
+ "equinix.fabric.port.state.failed",
+ "equinix.fabric.port.state.provisioned",
+ "equinix.fabric.port.status.down",
+ "equinix.fabric.port.status.up",
+ "equinix.fabric.router.ipv4_installed_routes.utilization",
+ "equinix.fabric.router.ipv6_installed_routes.utilization",
+ "equinix.fabric.router.state.deprovisioned",
+ "equinix.fabric.router.state.deprovisioning",
+ "equinix.fabric.router.state.failed",
+ "equinix.fabric.router.state.not_deprovisioned",
+ "equinix.fabric.router.state.not_provisioned",
+ "equinix.fabric.router.state.provisioned",
+ "equinix.fabric.router.state.provisioning",
+ "equinix.fabric.router.state.reprovisioning",
+ "equinix.fabric.service_token.attribute.changed",
+ "equinix.fabric.service_token.state.deleted",
+ "equinix.fabric.service_token.state.inactive"
+ ],
+ "preview": []
+ },
+ "metricNames": {
+ "released": [
+ "equinix.fabric.connection.bandwidth_rx.usage",
+ "equinix.fabric.connection.bandwidth_tx.usage",
+ "equinix.fabric.metro.am_{:metroCode}.latency",
+ "equinix.fabric.metro.at_{:metroCode}.latency",
+ "equinix.fabric.metro.ba_{:metroCode}.latency",
+ "equinix.fabric.metro.bg_{:metroCode}.latency",
+ "equinix.fabric.metro.bl_{:metroCode}.latency",
+ "equinix.fabric.metro.bo_{:metroCode}.latency",
+ "equinix.fabric.metro.bx_{:metroCode}.latency",
+ "equinix.fabric.metro.ca_{:metroCode}.latency",
+ "equinix.fabric.metro.ch_{:metroCode}.latency",
+ "equinix.fabric.metro.cl_{:metroCode}.latency",
+ "equinix.fabric.metro.cu_{:metroCode}.latency",
+ "equinix.fabric.metro.da_{:metroCode}.latency",
+ "equinix.fabric.metro.db_{:metroCode}.latency",
+ "equinix.fabric.metro.dc_{:metroCode}.latency",
+ "equinix.fabric.metro.de_{:metroCode}.latency",
+ "equinix.fabric.metro.dx_{:metroCode}.latency",
+ "equinix.fabric.metro.fr_{:metroCode}.latency",
+ "equinix.fabric.metro.gv_{:metroCode}.latency",
+ "equinix.fabric.metro.he_{:metroCode}.latency",
+ "equinix.fabric.metro.hh_{:metroCode}.latency",
+ "equinix.fabric.metro.hk_{:metroCode}.latency",
+ "equinix.fabric.metro.ho_{:metroCode}.latency",
+ "equinix.fabric.metro.il_{:metroCode}.latency",
+ "equinix.fabric.metro.jh_{:metroCode}.latency",
+ "equinix.fabric.metro.ka_{:metroCode}.latency",
+ "equinix.fabric.metro.kl_{:metroCode}.latency",
+ "equinix.fabric.metro.la_{:metroCode}.latency",
+ "equinix.fabric.metro.ld_{:metroCode}.latency",
+ "equinix.fabric.metro.lm_{:metroCode}.latency",
+ "equinix.fabric.metro.ls_{:metroCode}.latency",
+ "equinix.fabric.metro.ma_{:metroCode}.latency",
+ "equinix.fabric.metro.mb_{:metroCode}.latency",
+ "equinix.fabric.metro.md_{:metroCode}.latency",
+ "equinix.fabric.metro.me_{:metroCode}.latency",
+ "equinix.fabric.metro.mi_{:metroCode}.latency",
+ "equinix.fabric.metro.ml_{:metroCode}.latency",
+ "equinix.fabric.metro.mo_{:metroCode}.latency",
+ "equinix.fabric.metro.mt_{:metroCode}.latency",
+ "equinix.fabric.metro.mu_{:metroCode}.latency",
+ "equinix.fabric.metro.mx_{:metroCode}.latency",
+ "equinix.fabric.metro.ny_{:metroCode}.latency",
+ "equinix.fabric.metro.os_{:metroCode}.latency",
+ "equinix.fabric.metro.ot_{:metroCode}.latency",
+ "equinix.fabric.metro.pa_{:metroCode}.latency",
+ "equinix.fabric.metro.pe_{:metroCode}.latency",
+ "equinix.fabric.metro.ph_{:metroCode}.latency",
+ "equinix.fabric.metro.rj_{:metroCode}.latency",
+ "equinix.fabric.metro.se_{:metroCode}.latency",
+ "equinix.fabric.metro.sg_{:metroCode}.latency",
+ "equinix.fabric.metro.sk_{:metroCode}.latency",
+ "equinix.fabric.metro.sl_{:metroCode}.latency",
+ "equinix.fabric.metro.so_{:metroCode}.latency",
+ "equinix.fabric.metro.sp_{:metroCode}.latency",
+ "equinix.fabric.metro.st_{:metroCode}.latency",
+ "equinix.fabric.metro.sv_{:metroCode}.latency",
+ "equinix.fabric.metro.sy_{:metroCode}.latency",
+ "equinix.fabric.metro.tr_{:metroCode}.latency",
+ "equinix.fabric.metro.ty_{:metroCode}.latency",
+ "equinix.fabric.metro.va_{:metroCode}.latency",
+ "equinix.fabric.metro.wa_{:metroCode}.latency",
+ "equinix.fabric.metro.wi_{:metroCode}.latency",
+ "equinix.fabric.metro.zh_{:metroCode}.latency",
+ "equinix.fabric.port.bandwidth_rx.usage",
+ "equinix.fabric.port.bandwidth_tx.usage",
+ "equinix.fabric.port.packets_dropped_rx.count",
+ "equinix.fabric.port.packets_dropped_tx.count",
+ "equinix.fabric.port.packets_erred_rx.count",
+ "equinix.fabric.port.packets_erred_tx.count"
+ ],
+ "preview": []
+ },
+ "alertNames": {
+ "released": [],
+ "preview": []
+ }
+ },
+ "identity": {
+ "cloudeventTypes": {
+ "released": [],
+ "preview": []
+ },
+ "metricNames": {
+ "released": [],
+ "preview": []
+ },
+ "alertNames": {
+ "released": [],
+ "preview": []
+ }
+ },
+ "network_edge": {
+ "cloudeventTypes": {
+ "released": [],
+ "preview": []
+ },
+ "metricNames": {
+ "released": [],
+ "preview": []
+ },
+ "alertNames": {
+ "released": [],
+ "preview": []
+ }
+ },
+ "resource_manager": {
+ "cloudeventTypes": {
+ "released": [],
+ "preview": []
+ },
+ "metricNames": {
+ "released": [],
+ "preview": []
+ },
+ "alertNames": {
+ "released": [],
+ "preview": []
+ }
}
}
diff --git a/README.md b/README.md
index a47b32b..9ead2e7 100644
--- a/README.md
+++ b/README.md
@@ -9,76 +9,217 @@ Definitive "source of truth" for the Equinix Interconnection Observability event
The following data payloads are the supported events and formats for Equinix Interconnection Observability
+---
+### Equinix Access Manager ChangeEvent
+#### DataSchema [JSON](https://equinix.github.io/equinix-cloudevents/jsonschema/equinix/access_manager/v1/ChangeEvent.json)
+#### Data Type
+`equinix.access_manager.v1.ChangeEvent`
+#### Supported Events, Metrics, and Alerts
+
+
+
+---
### Equinix Fabric ChangeAlert
#### DataSchema [JSON](https://equinix.github.io/equinix-cloudevents/jsonschema/equinix/fabric/v1/ChangeAlert.json)
#### Data Type
-`equinix.events.fabric.v1.ChangeAlert`
-#### CloudEvent Type(s)
+`equinix.fabric.v1.ChangeAlert`
+#### Supported Events, Metrics, and Alerts
+
+---
### Equinix Fabric ChangeEvent
#### DataSchema [JSON](https://equinix.github.io/equinix-cloudevents/jsonschema/equinix/fabric/v1/ChangeEvent.json)
#### Data Type
-`equinix.events.fabric.v1.ChangeEvent`
-#### CloudEvent Type(s)
-`equinix.fabric.router.state.provisioning`
-`equinix.fabric.router.state.provisioned`
-`equinix.fabric.router.state.reprovisioning`
-`equinix.fabric.router.state.deprovisioning`
-`equinix.fabric.router.state.deprovisioned`
-`equinix.fabric.router.state.failed`
-`equinix.fabric.router.state.not_provisioned`
-`equinix.fabric.router.state.not_deprovisioned`
-`equinix.fabric.port.state.provisioned`
-`equinix.fabric.port.state.deprovisioned`
-`equinix.fabric.port.state.failed`
-`equinix.fabric.port.status.up`
-`equinix.fabric.port.status.down`
-`equinix.fabric.service_token.state.inactive`
-`equinix.fabric.service_token.state.deleted`
-`equinix.fabric.service_token.attribute.changed`
-`equinix.fabric.connection.state.pending`
-`equinix.fabric.connection.state.pending_interface_configuration`
-`equinix.fabric.connection.state.provisioning`
-`equinix.fabric.connection.state.provisioned`
-`equinix.fabric.connection.state.deprovisioning`
-`equinix.fabric.connection.state.deprovisioned`
-`equinix.fabric.connection.state.pending_approval`
-`equinix.fabric.connection.attribute.changed`
-`equinix.fabric.connection.status.up`
-`equinix.fabric.connection.status.down`
-`equinix.fabric.connection.bgpipv4_session_status.established`
-`equinix.fabric.connection.bgpipv4_session_status.idle`
-`equinix.fabric.connection.bgpipv4_session_status.connect`
-`equinix.fabric.connection.bgpipv6_session_status.established`
-`equinix.fabric.connection.bgpipv6_session_status.idle`
-`equinix.fabric.connection.bgpipv6_session_status.connect`
-`equinix.fabric.network.state.provisioning`
-`equinix.fabric.network.state.provisioned`
-`equinix.fabric.network.state.deprovisioning`
-`equinix.fabric.network.state.deprovisioned`
+`equinix.fabric.v1.ChangeEvent`
+#### Supported Events, Metrics, and Alerts
+#### Events
+
+
+Released
+
+`equinix.fabric.connection.attribute.changed`
+`equinix.fabric.connection.bgpipv4_session_status.connect`
+`equinix.fabric.connection.bgpipv4_session_status.established`
+`equinix.fabric.connection.bgpipv4_session_status.idle`
+`equinix.fabric.connection.bgpipv4_session_status.open_confirm`
+`equinix.fabric.connection.bgpipv4_session_status.open_confirm`
+`equinix.fabric.connection.bgpipv4_session_status.open_sent`
+`equinix.fabric.connection.bgpipv4_session_status.open_sent`
+`equinix.fabric.connection.bgpipv6_session_status.connect`
+`equinix.fabric.connection.bgpipv6_session_status.established`
+`equinix.fabric.connection.bgpipv6_session_status.idle`
+`equinix.fabric.connection.state.deprovisioned`
+`equinix.fabric.connection.state.deprovisioning`
+`equinix.fabric.connection.state.pending`
+`equinix.fabric.connection.state.provisioned`
+`equinix.fabric.connection.state.provisioning`
+`equinix.fabric.connection.status.down`
+`equinix.fabric.connection.status.up`
+`equinix.fabric.network.state.deprovisioned`
+`equinix.fabric.network.state.deprovisioning`
+`equinix.fabric.network.state.provisioned`
+`equinix.fabric.network.state.provisioning`
+`equinix.fabric.port.state.deprovisioned`
+`equinix.fabric.port.state.failed`
+`equinix.fabric.port.state.provisioned`
+`equinix.fabric.port.status.down`
+`equinix.fabric.port.status.up`
+`equinix.fabric.router.state.deprovisioned`
+`equinix.fabric.router.state.deprovisioning`
+`equinix.fabric.router.state.failed`
+`equinix.fabric.router.state.not_deprovisioned`
+`equinix.fabric.router.state.not_provisioned`
+`equinix.fabric.router.state.provisioned`
+`equinix.fabric.router.state.provisioning`
+`equinix.fabric.router.state.reprovisioning`
+`equinix.fabric.service_token.attribute.changed`
+`equinix.fabric.service_token.state.deleted`
+`equinix.fabric.service_token.state.inactive`
+
+
+
+
+---
### Equinix Fabric MetricAlert
#### DataSchema [JSON](https://equinix.github.io/equinix-cloudevents/jsonschema/equinix/fabric/v1/MetricAlert.json)
#### Data Type
-`equinix.events.fabric.v1.MetricAlert`
-#### CloudEvent Type(s)
+`equinix.fabric.v1.MetricAlert`
+#### Supported Events, Metrics, and Alerts
+#### Events
+
+
+Released
+
+`equinix.fabric.connection.ipv4_installed_routes.utilization`
+`equinix.fabric.connection.ipv6_installed_routes.utilization`
+`equinix.fabric.router.ipv4_installed_routes.utilization`
+`equinix.fabric.router.ipv6_installed_routes.utilization`
+
+
+
+---
### Equinix Fabric MetricEvent
#### DataSchema [JSON](https://equinix.github.io/equinix-cloudevents/jsonschema/equinix/fabric/v1/MetricEvent.json)
#### Data Type
-`equinix.events.fabric.v1.MetricEvent`
-#### CloudEvent Type(s)
+`equinix.fabric.v1.MetricEvent`
+#### Supported Events, Metrics, and Alerts
+#### Events
+
+
+Released
+
`equinix.fabric.metric`
-#### Metric Type(s)
-`equinix.fabric.port.packets_erred_rx.count`
-`equinix.fabric.port.packets_erred_tx.count`
-`equinix.fabric.port.packets_dropped_rx.count`
-`equinix.fabric.port.packets_dropped_tx.count`
-`equinix.fabric.metro.{:asideMetroCode}_{:zsideMetroCode}.latency`
-`equinix.fabric.connection.bandwidth_rx.usage`
-`equinix.fabric.connection.bandwidth_tx.usage`
-`equinix.fabric.port.bandwidth_rx.usage`
-`equinix.fabric.port.bandwidth_tx.usage`
+
+
+
+#### Metrics
+
+
+Released
+
+`equinix.fabric.connection.bandwidth_rx.usage`
+`equinix.fabric.connection.bandwidth_tx.usage`
+`equinix.fabric.metro.am_{:metroCode}.latency`
+`equinix.fabric.metro.at_{:metroCode}.latency`
+`equinix.fabric.metro.ba_{:metroCode}.latency`
+`equinix.fabric.metro.bg_{:metroCode}.latency`
+`equinix.fabric.metro.bl_{:metroCode}.latency`
+`equinix.fabric.metro.bo_{:metroCode}.latency`
+`equinix.fabric.metro.bx_{:metroCode}.latency`
+`equinix.fabric.metro.ca_{:metroCode}.latency`
+`equinix.fabric.metro.ch_{:metroCode}.latency`
+`equinix.fabric.metro.cl_{:metroCode}.latency`
+`equinix.fabric.metro.cu_{:metroCode}.latency`
+`equinix.fabric.metro.da_{:metroCode}.latency`
+`equinix.fabric.metro.db_{:metroCode}.latency`
+`equinix.fabric.metro.dc_{:metroCode}.latency`
+`equinix.fabric.metro.de_{:metroCode}.latency`
+`equinix.fabric.metro.dx_{:metroCode}.latency`
+`equinix.fabric.metro.fr_{:metroCode}.latency`
+`equinix.fabric.metro.gv_{:metroCode}.latency`
+`equinix.fabric.metro.he_{:metroCode}.latency`
+`equinix.fabric.metro.hh_{:metroCode}.latency`
+`equinix.fabric.metro.hk_{:metroCode}.latency`
+`equinix.fabric.metro.ho_{:metroCode}.latency`
+`equinix.fabric.metro.il_{:metroCode}.latency`
+`equinix.fabric.metro.jh_{:metroCode}.latency`
+`equinix.fabric.metro.ka_{:metroCode}.latency`
+`equinix.fabric.metro.kl_{:metroCode}.latency`
+`equinix.fabric.metro.la_{:metroCode}.latency`
+`equinix.fabric.metro.ld_{:metroCode}.latency`
+`equinix.fabric.metro.lm_{:metroCode}.latency`
+`equinix.fabric.metro.ls_{:metroCode}.latency`
+`equinix.fabric.metro.ma_{:metroCode}.latency`
+`equinix.fabric.metro.mb_{:metroCode}.latency`
+`equinix.fabric.metro.md_{:metroCode}.latency`
+`equinix.fabric.metro.me_{:metroCode}.latency`
+`equinix.fabric.metro.mi_{:metroCode}.latency`
+`equinix.fabric.metro.ml_{:metroCode}.latency`
+`equinix.fabric.metro.mo_{:metroCode}.latency`
+`equinix.fabric.metro.mt_{:metroCode}.latency`
+`equinix.fabric.metro.mu_{:metroCode}.latency`
+`equinix.fabric.metro.mx_{:metroCode}.latency`
+`equinix.fabric.metro.ny_{:metroCode}.latency`
+`equinix.fabric.metro.os_{:metroCode}.latency`
+`equinix.fabric.metro.ot_{:metroCode}.latency`
+`equinix.fabric.metro.pa_{:metroCode}.latency`
+`equinix.fabric.metro.pe_{:metroCode}.latency`
+`equinix.fabric.metro.ph_{:metroCode}.latency`
+`equinix.fabric.metro.rj_{:metroCode}.latency`
+`equinix.fabric.metro.se_{:metroCode}.latency`
+`equinix.fabric.metro.sg_{:metroCode}.latency`
+`equinix.fabric.metro.sk_{:metroCode}.latency`
+`equinix.fabric.metro.sl_{:metroCode}.latency`
+`equinix.fabric.metro.so_{:metroCode}.latency`
+`equinix.fabric.metro.sp_{:metroCode}.latency`
+`equinix.fabric.metro.st_{:metroCode}.latency`
+`equinix.fabric.metro.sv_{:metroCode}.latency`
+`equinix.fabric.metro.sy_{:metroCode}.latency`
+`equinix.fabric.metro.tr_{:metroCode}.latency`
+`equinix.fabric.metro.ty_{:metroCode}.latency`
+`equinix.fabric.metro.va_{:metroCode}.latency`
+`equinix.fabric.metro.wa_{:metroCode}.latency`
+`equinix.fabric.metro.wi_{:metroCode}.latency`
+`equinix.fabric.metro.zh_{:metroCode}.latency`
+`equinix.fabric.port.bandwidth_rx.usage`
+`equinix.fabric.port.bandwidth_tx.usage`
+`equinix.fabric.port.packets_dropped_rx.count`
+`equinix.fabric.port.packets_dropped_tx.count`
+`equinix.fabric.port.packets_erred_rx.count`
+`equinix.fabric.port.packets_erred_tx.count`
+
+
+
+
+---
+### Equinix Identity ChangeEvent
+#### DataSchema [JSON](https://equinix.github.io/equinix-cloudevents/jsonschema/equinix/identity/v1/ChangeEvent.json)
+#### Data Type
+`equinix.identity.v1.ChangeEvent`
+#### Supported Events, Metrics, and Alerts
+
+
+
+---
+### Equinix Network Edge ChangeEvent
+#### DataSchema [JSON](https://equinix.github.io/equinix-cloudevents/jsonschema/equinix/network_edge/v1/ChangeEvent.json)
+#### Data Type
+`equinix.network_edge.v1.ChangeEvent`
+#### Supported Events, Metrics, and Alerts
+
+
+
+---
+### Equinix Resource Manager ChangeEvent
+#### DataSchema [JSON](https://equinix.github.io/equinix-cloudevents/jsonschema/equinix/resource_manager/v1/ChangeEvent.json)
+#### Data Type
+`equinix.resource_manager.v1.ChangeEvent`
+#### Supported Events, Metrics, and Alerts
+
+
+
diff --git a/jsonschema/catalog.json b/jsonschema/catalog.json
index 1fe4624..14feb89 100644
--- a/jsonschema/catalog.json
+++ b/jsonschema/catalog.json
@@ -2,87 +2,274 @@
"$schema": "https://json.schemastore.org/schema-catalog",
"version": 1,
"schemas": [
+ {
+ "url": "https://equinix.github.io/equinix-cloudevents/jsonschema/equinix/access_manager/v1/ChangeEvent.json",
+ "domain": "Equinix Access Manager ChangeEvent",
+ "name": "ChangeEvent",
+ "description": "The data within all ChangeEvent events.",
+ "datatype": "equinix.access_manager.v1.ChangeEvent",
+ "cloudeventTypes": {
+ "released": [],
+ "preview": []
+ },
+ "metricNames": {
+ "released": [],
+ "preview": []
+ },
+ "alertNames": {
+ "released": [],
+ "preview": []
+ }
+ },
{
"url": "https://equinix.github.io/equinix-cloudevents/jsonschema/equinix/fabric/v1/ChangeAlert.json",
"domain": "Equinix Fabric ChangeAlert",
"name": "ChangeAlert",
"description": "The data within all ChangeAlert events.",
- "datatype": "equinix.events.fabric.v1.ChangeAlert",
- "cloudeventTypes": []
+ "datatype": "equinix.fabric.v1.ChangeAlert",
+ "cloudeventTypes": {
+ "released": [],
+ "preview": []
+ },
+ "metricNames": {
+ "released": [],
+ "preview": []
+ },
+ "alertNames": {
+ "released": [],
+ "preview": []
+ }
},
{
"url": "https://equinix.github.io/equinix-cloudevents/jsonschema/equinix/fabric/v1/ChangeEvent.json",
"domain": "Equinix Fabric ChangeEvent",
"name": "ChangeEvent",
"description": "The data within all ChangeEvent events.",
- "datatype": "equinix.events.fabric.v1.ChangeEvent",
- "cloudeventTypes": [
- "equinix.fabric.router.state.provisioning",
- "equinix.fabric.router.state.provisioned",
- "equinix.fabric.router.state.reprovisioning",
- "equinix.fabric.router.state.deprovisioning",
- "equinix.fabric.router.state.deprovisioned",
- "equinix.fabric.router.state.failed",
- "equinix.fabric.router.state.not_provisioned",
- "equinix.fabric.router.state.not_deprovisioned",
- "equinix.fabric.port.state.provisioned",
- "equinix.fabric.port.state.deprovisioned",
- "equinix.fabric.port.state.failed",
- "equinix.fabric.port.status.up",
- "equinix.fabric.port.status.down",
- "equinix.fabric.service_token.state.inactive",
- "equinix.fabric.service_token.state.deleted",
- "equinix.fabric.service_token.attribute.changed",
- "equinix.fabric.connection.state.pending",
- "equinix.fabric.connection.state.pending_interface_configuration",
- "equinix.fabric.connection.state.provisioning",
- "equinix.fabric.connection.state.provisioned",
- "equinix.fabric.connection.state.deprovisioning",
- "equinix.fabric.connection.state.deprovisioned",
- "equinix.fabric.connection.state.pending_approval",
- "equinix.fabric.connection.attribute.changed",
- "equinix.fabric.connection.status.up",
- "equinix.fabric.connection.status.down",
- "equinix.fabric.connection.bgpipv4_session_status.established",
- "equinix.fabric.connection.bgpipv4_session_status.idle",
- "equinix.fabric.connection.bgpipv4_session_status.connect",
- "equinix.fabric.connection.bgpipv6_session_status.established",
- "equinix.fabric.connection.bgpipv6_session_status.idle",
- "equinix.fabric.connection.bgpipv6_session_status.connect",
- "equinix.fabric.network.state.provisioning",
- "equinix.fabric.network.state.provisioned",
- "equinix.fabric.network.state.deprovisioning",
- "equinix.fabric.network.state.deprovisioned"
- ]
+ "datatype": "equinix.fabric.v1.ChangeEvent",
+ "cloudeventTypes": {
+ "released": [
+ "equinix.fabric.connection.attribute.changed",
+ "equinix.fabric.connection.bgpipv4_session_status.connect",
+ "equinix.fabric.connection.bgpipv4_session_status.established",
+ "equinix.fabric.connection.bgpipv4_session_status.idle",
+ "equinix.fabric.connection.bgpipv4_session_status.open_confirm",
+ "equinix.fabric.connection.bgpipv4_session_status.open_confirm",
+ "equinix.fabric.connection.bgpipv4_session_status.open_sent",
+ "equinix.fabric.connection.bgpipv4_session_status.open_sent",
+ "equinix.fabric.connection.bgpipv6_session_status.connect",
+ "equinix.fabric.connection.bgpipv6_session_status.established",
+ "equinix.fabric.connection.bgpipv6_session_status.idle",
+ "equinix.fabric.connection.state.deprovisioned",
+ "equinix.fabric.connection.state.deprovisioning",
+ "equinix.fabric.connection.state.pending",
+ "equinix.fabric.connection.state.provisioned",
+ "equinix.fabric.connection.state.provisioning",
+ "equinix.fabric.connection.status.down",
+ "equinix.fabric.connection.status.up",
+ "equinix.fabric.network.state.deprovisioned",
+ "equinix.fabric.network.state.deprovisioning",
+ "equinix.fabric.network.state.provisioned",
+ "equinix.fabric.network.state.provisioning",
+ "equinix.fabric.port.state.deprovisioned",
+ "equinix.fabric.port.state.failed",
+ "equinix.fabric.port.state.provisioned",
+ "equinix.fabric.port.status.down",
+ "equinix.fabric.port.status.up",
+ "equinix.fabric.router.state.deprovisioned",
+ "equinix.fabric.router.state.deprovisioning",
+ "equinix.fabric.router.state.failed",
+ "equinix.fabric.router.state.not_deprovisioned",
+ "equinix.fabric.router.state.not_provisioned",
+ "equinix.fabric.router.state.provisioned",
+ "equinix.fabric.router.state.provisioning",
+ "equinix.fabric.router.state.reprovisioning",
+ "equinix.fabric.service_token.attribute.changed",
+ "equinix.fabric.service_token.state.deleted",
+ "equinix.fabric.service_token.state.inactive"
+ ],
+ "preview": []
+ },
+ "metricNames": {
+ "released": [],
+ "preview": []
+ },
+ "alertNames": {
+ "released": [],
+ "preview": []
+ }
},
{
"url": "https://equinix.github.io/equinix-cloudevents/jsonschema/equinix/fabric/v1/MetricAlert.json",
"domain": "Equinix Fabric MetricAlert",
"name": "MetricAlert",
"description": "The data within all MetricAlert events.",
- "datatype": "equinix.events.fabric.v1.MetricAlert",
- "cloudeventTypes": []
+ "datatype": "equinix.fabric.v1.MetricAlert",
+ "cloudeventTypes": {
+ "released": [
+ "equinix.fabric.connection.ipv4_installed_routes.utilization",
+ "equinix.fabric.connection.ipv6_installed_routes.utilization",
+ "equinix.fabric.router.ipv4_installed_routes.utilization",
+ "equinix.fabric.router.ipv6_installed_routes.utilization"
+ ],
+ "preview": []
+ },
+ "metricNames": {
+ "released": [],
+ "preview": []
+ },
+ "alertNames": {
+ "released": [],
+ "preview": []
+ }
},
{
"url": "https://equinix.github.io/equinix-cloudevents/jsonschema/equinix/fabric/v1/MetricEvent.json",
"domain": "Equinix Fabric MetricEvent",
"name": "MetricEvent",
"description": "The data within all MetricEvent events.",
- "datatype": "equinix.events.fabric.v1.MetricEvent",
- "cloudeventTypes": [
- "equinix.fabric.metric"
- ],
- "metricNames": [
- "equinix.fabric.port.packets_erred_rx.count",
- "equinix.fabric.port.packets_erred_tx.count",
- "equinix.fabric.port.packets_dropped_rx.count",
- "equinix.fabric.port.packets_dropped_tx.count",
- "equinix.fabric.metro.{:asideMetroCode}_{:zsideMetroCode}.latency",
- "equinix.fabric.connection.bandwidth_rx.usage",
- "equinix.fabric.connection.bandwidth_tx.usage",
- "equinix.fabric.port.bandwidth_rx.usage",
- "equinix.fabric.port.bandwidth_tx.usage"
- ]
+ "datatype": "equinix.fabric.v1.MetricEvent",
+ "cloudeventTypes": {
+ "released": [
+ "equinix.fabric.metric"
+ ],
+ "preview": []
+ },
+ "metricNames": {
+ "released": [
+ "equinix.fabric.connection.bandwidth_rx.usage",
+ "equinix.fabric.connection.bandwidth_tx.usage",
+ "equinix.fabric.metro.am_{:metroCode}.latency",
+ "equinix.fabric.metro.at_{:metroCode}.latency",
+ "equinix.fabric.metro.ba_{:metroCode}.latency",
+ "equinix.fabric.metro.bg_{:metroCode}.latency",
+ "equinix.fabric.metro.bl_{:metroCode}.latency",
+ "equinix.fabric.metro.bo_{:metroCode}.latency",
+ "equinix.fabric.metro.bx_{:metroCode}.latency",
+ "equinix.fabric.metro.ca_{:metroCode}.latency",
+ "equinix.fabric.metro.ch_{:metroCode}.latency",
+ "equinix.fabric.metro.cl_{:metroCode}.latency",
+ "equinix.fabric.metro.cu_{:metroCode}.latency",
+ "equinix.fabric.metro.da_{:metroCode}.latency",
+ "equinix.fabric.metro.db_{:metroCode}.latency",
+ "equinix.fabric.metro.dc_{:metroCode}.latency",
+ "equinix.fabric.metro.de_{:metroCode}.latency",
+ "equinix.fabric.metro.dx_{:metroCode}.latency",
+ "equinix.fabric.metro.fr_{:metroCode}.latency",
+ "equinix.fabric.metro.gv_{:metroCode}.latency",
+ "equinix.fabric.metro.he_{:metroCode}.latency",
+ "equinix.fabric.metro.hh_{:metroCode}.latency",
+ "equinix.fabric.metro.hk_{:metroCode}.latency",
+ "equinix.fabric.metro.ho_{:metroCode}.latency",
+ "equinix.fabric.metro.il_{:metroCode}.latency",
+ "equinix.fabric.metro.jh_{:metroCode}.latency",
+ "equinix.fabric.metro.ka_{:metroCode}.latency",
+ "equinix.fabric.metro.kl_{:metroCode}.latency",
+ "equinix.fabric.metro.la_{:metroCode}.latency",
+ "equinix.fabric.metro.ld_{:metroCode}.latency",
+ "equinix.fabric.metro.lm_{:metroCode}.latency",
+ "equinix.fabric.metro.ls_{:metroCode}.latency",
+ "equinix.fabric.metro.ma_{:metroCode}.latency",
+ "equinix.fabric.metro.mb_{:metroCode}.latency",
+ "equinix.fabric.metro.md_{:metroCode}.latency",
+ "equinix.fabric.metro.me_{:metroCode}.latency",
+ "equinix.fabric.metro.mi_{:metroCode}.latency",
+ "equinix.fabric.metro.ml_{:metroCode}.latency",
+ "equinix.fabric.metro.mo_{:metroCode}.latency",
+ "equinix.fabric.metro.mt_{:metroCode}.latency",
+ "equinix.fabric.metro.mu_{:metroCode}.latency",
+ "equinix.fabric.metro.mx_{:metroCode}.latency",
+ "equinix.fabric.metro.ny_{:metroCode}.latency",
+ "equinix.fabric.metro.os_{:metroCode}.latency",
+ "equinix.fabric.metro.ot_{:metroCode}.latency",
+ "equinix.fabric.metro.pa_{:metroCode}.latency",
+ "equinix.fabric.metro.pe_{:metroCode}.latency",
+ "equinix.fabric.metro.ph_{:metroCode}.latency",
+ "equinix.fabric.metro.rj_{:metroCode}.latency",
+ "equinix.fabric.metro.se_{:metroCode}.latency",
+ "equinix.fabric.metro.sg_{:metroCode}.latency",
+ "equinix.fabric.metro.sk_{:metroCode}.latency",
+ "equinix.fabric.metro.sl_{:metroCode}.latency",
+ "equinix.fabric.metro.so_{:metroCode}.latency",
+ "equinix.fabric.metro.sp_{:metroCode}.latency",
+ "equinix.fabric.metro.st_{:metroCode}.latency",
+ "equinix.fabric.metro.sv_{:metroCode}.latency",
+ "equinix.fabric.metro.sy_{:metroCode}.latency",
+ "equinix.fabric.metro.tr_{:metroCode}.latency",
+ "equinix.fabric.metro.ty_{:metroCode}.latency",
+ "equinix.fabric.metro.va_{:metroCode}.latency",
+ "equinix.fabric.metro.wa_{:metroCode}.latency",
+ "equinix.fabric.metro.wi_{:metroCode}.latency",
+ "equinix.fabric.metro.zh_{:metroCode}.latency",
+ "equinix.fabric.port.bandwidth_rx.usage",
+ "equinix.fabric.port.bandwidth_tx.usage",
+ "equinix.fabric.port.packets_dropped_rx.count",
+ "equinix.fabric.port.packets_dropped_tx.count",
+ "equinix.fabric.port.packets_erred_rx.count",
+ "equinix.fabric.port.packets_erred_tx.count"
+ ],
+ "preview": []
+ },
+ "alertNames": {
+ "released": [],
+ "preview": []
+ }
+ },
+ {
+ "url": "https://equinix.github.io/equinix-cloudevents/jsonschema/equinix/identity/v1/ChangeEvent.json",
+ "domain": "Equinix Identity ChangeEvent",
+ "name": "ChangeEvent",
+ "description": "The data within all ChangeEvent events.",
+ "datatype": "equinix.identity.v1.ChangeEvent",
+ "cloudeventTypes": {
+ "released": [],
+ "preview": []
+ },
+ "metricNames": {
+ "released": [],
+ "preview": []
+ },
+ "alertNames": {
+ "released": [],
+ "preview": []
+ }
+ },
+ {
+ "url": "https://equinix.github.io/equinix-cloudevents/jsonschema/equinix/network_edge/v1/ChangeEvent.json",
+ "domain": "Equinix Network Edge ChangeEvent",
+ "name": "ChangeEvent",
+ "description": "The data within all ChangeEvent events.",
+ "datatype": "equinix.network_edge.v1.ChangeEvent",
+ "cloudeventTypes": {
+ "released": [],
+ "preview": []
+ },
+ "metricNames": {
+ "released": [],
+ "preview": []
+ },
+ "alertNames": {
+ "released": [],
+ "preview": []
+ }
+ },
+ {
+ "url": "https://equinix.github.io/equinix-cloudevents/jsonschema/equinix/resource_manager/v1/ChangeEvent.json",
+ "domain": "Equinix Resource Manager ChangeEvent",
+ "name": "ChangeEvent",
+ "description": "The data within all ChangeEvent events.",
+ "datatype": "equinix.resource_manager.v1.ChangeEvent",
+ "cloudeventTypes": {
+ "released": [],
+ "preview": []
+ },
+ "metricNames": {
+ "released": [],
+ "preview": []
+ },
+ "alertNames": {
+ "released": [],
+ "preview": []
+ }
}
]
}
diff --git a/jsonschema/equinix/access_manager/v1/ChangeEvent.json b/jsonschema/equinix/access_manager/v1/ChangeEvent.json
index 0a8c02d..576539c 100644
--- a/jsonschema/equinix/access_manager/v1/ChangeEvent.json
+++ b/jsonschema/equinix/access_manager/v1/ChangeEvent.json
@@ -4,8 +4,6 @@
"examples": [],
"package": "equinix.access_manager.v1",
"datatype": "equinix.access_manager.v1.ChangeEvent",
- "cloudeventTypes": [
- ],
"domain": "Equinix Access Manager ChangeEvent",
"$schema": "http://json-schema.org/draft-04/schema#",
"$ref": "#/definitions/Data",
@@ -33,5 +31,17 @@
"title": "Resource",
"description": "Schema of the resource that fired the event"
}
+ },
+ "cloudeventTypes": {
+ "released": [],
+ "preview": []
+ },
+ "metricNames": {
+ "released": [],
+ "preview": []
+ },
+ "alertNames": {
+ "released": [],
+ "preview": []
}
}
diff --git a/jsonschema/equinix/fabric/v1/ChangeAlert.json b/jsonschema/equinix/fabric/v1/ChangeAlert.json
index 4c0d903..76f5b7f 100644
--- a/jsonschema/equinix/fabric/v1/ChangeAlert.json
+++ b/jsonschema/equinix/fabric/v1/ChangeAlert.json
@@ -4,7 +4,6 @@
"examples": [],
"package": "equinix.fabric.v1",
"datatype": "equinix.fabric.v1.ChangeAlert",
- "cloudeventTypes": [],
"domain": "Equinix Fabric ChangeAlert",
"$schema": "http://json-schema.org/draft-04/schema#",
"$ref": "#/definitions/Data",
@@ -151,5 +150,17 @@
"title": "ChangeData",
"description": "ChangeData attribute schema"
}
+ },
+ "cloudeventTypes": {
+ "released": [],
+ "preview": []
+ },
+ "metricNames": {
+ "released": [],
+ "preview": []
+ },
+ "alertNames": {
+ "released": [],
+ "preview": []
}
}
diff --git a/jsonschema/equinix/fabric/v1/ChangeEvent.json b/jsonschema/equinix/fabric/v1/ChangeEvent.json
index fe4fdf0..f7712b1 100644
--- a/jsonschema/equinix/fabric/v1/ChangeEvent.json
+++ b/jsonschema/equinix/fabric/v1/ChangeEvent.json
@@ -4,46 +4,6 @@
"examples": [],
"package": "equinix.fabric.v1",
"datatype": "equinix.fabric.v1.ChangeEvent",
- "cloudeventTypes": [
- "equinix.fabric.connection.state.pending",
- "equinix.fabric.connection.state.provisioning",
- "equinix.fabric.connection.state.provisioned",
- "equinix.fabric.connection.state.deprovisioning",
- "equinix.fabric.connection.state.deprovisioned",
- "equinix.fabric.connection.attribute.changed",
- "equinix.fabric.connection.status.up",
- "equinix.fabric.connection.status.down",
- "equinix.fabric.connection.bgpipv4_session_status.established",
- "equinix.fabric.connection.bgpipv4_session_status.idle",
- "equinix.fabric.connection.bgpipv4_session_status.connect",
- "equinix.fabric.connection.bgpipv4_session_status.open_sent",
- "equinix.fabric.connection.bgpipv4_session_status.open_confirm",
- "equinix.fabric.connection.bgpipv6_session_status.established",
- "equinix.fabric.connection.bgpipv6_session_status.idle",
- "equinix.fabric.connection.bgpipv6_session_status.connect",
- "equinix.fabric.connection.bgpipv4_session_status.open_sent",
- "equinix.fabric.connection.bgpipv4_session_status.open_confirm",
- "equinix.fabric.network.state.provisioning",
- "equinix.fabric.network.state.provisioned",
- "equinix.fabric.network.state.deprovisioning",
- "equinix.fabric.network.state.deprovisioned",
- "equinix.fabric.port.state.provisioned",
- "equinix.fabric.port.state.deprovisioned",
- "equinix.fabric.port.state.failed",
- "equinix.fabric.port.status.up",
- "equinix.fabric.port.status.down",
- "equinix.fabric.router.state.provisioning",
- "equinix.fabric.router.state.provisioned",
- "equinix.fabric.router.state.reprovisioning",
- "equinix.fabric.router.state.deprovisioning",
- "equinix.fabric.router.state.deprovisioned",
- "equinix.fabric.router.state.failed",
- "equinix.fabric.router.state.not_provisioned",
- "equinix.fabric.router.state.not_deprovisioned",
- "equinix.fabric.service_token.state.inactive",
- "equinix.fabric.service_token.state.deleted",
- "equinix.fabric.service_token.attribute.changed"
- ],
"domain": "Equinix Fabric ChangeEvent",
"$schema": "http://json-schema.org/draft-04/schema#",
"$ref": "#/definitions/Data",
@@ -158,5 +118,56 @@
"title": "ChangeData",
"description": "ChangeData attribute schema"
}
+ },
+ "cloudeventTypes": {
+ "released": [
+ "equinix.fabric.connection.state.pending",
+ "equinix.fabric.connection.state.provisioning",
+ "equinix.fabric.connection.state.provisioned",
+ "equinix.fabric.connection.state.deprovisioning",
+ "equinix.fabric.connection.state.deprovisioned",
+ "equinix.fabric.connection.attribute.changed",
+ "equinix.fabric.connection.status.up",
+ "equinix.fabric.connection.status.down",
+ "equinix.fabric.connection.bgpipv4_session_status.established",
+ "equinix.fabric.connection.bgpipv4_session_status.idle",
+ "equinix.fabric.connection.bgpipv4_session_status.connect",
+ "equinix.fabric.connection.bgpipv4_session_status.open_sent",
+ "equinix.fabric.connection.bgpipv4_session_status.open_confirm",
+ "equinix.fabric.connection.bgpipv6_session_status.established",
+ "equinix.fabric.connection.bgpipv6_session_status.idle",
+ "equinix.fabric.connection.bgpipv6_session_status.connect",
+ "equinix.fabric.connection.bgpipv4_session_status.open_sent",
+ "equinix.fabric.connection.bgpipv4_session_status.open_confirm",
+ "equinix.fabric.network.state.provisioning",
+ "equinix.fabric.network.state.provisioned",
+ "equinix.fabric.network.state.deprovisioning",
+ "equinix.fabric.network.state.deprovisioned",
+ "equinix.fabric.port.state.provisioned",
+ "equinix.fabric.port.state.deprovisioned",
+ "equinix.fabric.port.state.failed",
+ "equinix.fabric.port.status.up",
+ "equinix.fabric.port.status.down",
+ "equinix.fabric.router.state.provisioning",
+ "equinix.fabric.router.state.provisioned",
+ "equinix.fabric.router.state.reprovisioning",
+ "equinix.fabric.router.state.deprovisioning",
+ "equinix.fabric.router.state.deprovisioned",
+ "equinix.fabric.router.state.failed",
+ "equinix.fabric.router.state.not_provisioned",
+ "equinix.fabric.router.state.not_deprovisioned",
+ "equinix.fabric.service_token.state.inactive",
+ "equinix.fabric.service_token.state.deleted",
+ "equinix.fabric.service_token.attribute.changed"
+ ],
+ "preview": []
+ },
+ "metricNames": {
+ "released": [],
+ "preview": []
+ },
+ "alertNames": {
+ "released": [],
+ "preview": []
}
}
diff --git a/jsonschema/equinix/fabric/v1/MetricAlert.json b/jsonschema/equinix/fabric/v1/MetricAlert.json
index bed2798..2aa4090 100644
--- a/jsonschema/equinix/fabric/v1/MetricAlert.json
+++ b/jsonschema/equinix/fabric/v1/MetricAlert.json
@@ -4,12 +4,6 @@
"examples": [],
"package": "equinix.fabric.v1",
"datatype": "equinix.fabric.v1.MetricAlert",
- "cloudeventTypes": [
- "equinix.fabric.connection.ipv4_installed_routes.utilization",
- "equinix.fabric.connection.ipv6_installed_routes.utilization",
- "equinix.fabric.router.ipv4_installed_routes.utilization",
- "equinix.fabric.router.ipv6_installed_routes.utilization"
- ],
"domain": "Equinix Fabric MetricAlert",
"$schema": "http://json-schema.org/draft-04/schema#",
"$ref": "#/definitions/Data",
@@ -155,5 +149,22 @@
"title": "AlertRule",
"description": "Schema definition of AlertRule data"
}
+ },
+ "cloudeventTypes": {
+ "released": [
+ "equinix.fabric.connection.ipv4_installed_routes.utilization",
+ "equinix.fabric.connection.ipv6_installed_routes.utilization",
+ "equinix.fabric.router.ipv4_installed_routes.utilization",
+ "equinix.fabric.router.ipv6_installed_routes.utilization"
+ ],
+ "preview": []
+ },
+ "metricNames": {
+ "released": [],
+ "preview": []
+ },
+ "alertNames": {
+ "released": [],
+ "preview": []
}
}
diff --git a/jsonschema/equinix/fabric/v1/MetricEvent.json b/jsonschema/equinix/fabric/v1/MetricEvent.json
index 955f6f9..8ca2e10 100644
--- a/jsonschema/equinix/fabric/v1/MetricEvent.json
+++ b/jsonschema/equinix/fabric/v1/MetricEvent.json
@@ -4,84 +4,9 @@
"examples": [],
"package": "equinix.fabric.v1",
"datatype": "equinix.fabric.v1.MetricEvent",
- "cloudeventTypes": [
- "equinix.fabric.metric"
- ],
"domain": "Equinix Fabric MetricEvent",
"$schema": "http://json-schema.org/draft-04/schema#",
"$ref": "#/definitions/Data",
- "metricNames": [
- "equinix.fabric.connection.bandwidth_rx.usage",
- "equinix.fabric.connection.bandwidth_tx.usage",
- "equinix.fabric.metro.am_{:metroCode}.latency",
- "equinix.fabric.metro.at_{:metroCode}.latency",
- "equinix.fabric.metro.ba_{:metroCode}.latency",
- "equinix.fabric.metro.bg_{:metroCode}.latency",
- "equinix.fabric.metro.bl_{:metroCode}.latency",
- "equinix.fabric.metro.bo_{:metroCode}.latency",
- "equinix.fabric.metro.bx_{:metroCode}.latency",
- "equinix.fabric.metro.ca_{:metroCode}.latency",
- "equinix.fabric.metro.ch_{:metroCode}.latency",
- "equinix.fabric.metro.cl_{:metroCode}.latency",
- "equinix.fabric.metro.cu_{:metroCode}.latency",
- "equinix.fabric.metro.da_{:metroCode}.latency",
- "equinix.fabric.metro.db_{:metroCode}.latency",
- "equinix.fabric.metro.dc_{:metroCode}.latency",
- "equinix.fabric.metro.de_{:metroCode}.latency",
- "equinix.fabric.metro.dx_{:metroCode}.latency",
- "equinix.fabric.metro.fr_{:metroCode}.latency",
- "equinix.fabric.metro.gv_{:metroCode}.latency",
- "equinix.fabric.metro.he_{:metroCode}.latency",
- "equinix.fabric.metro.hh_{:metroCode}.latency",
- "equinix.fabric.metro.hk_{:metroCode}.latency",
- "equinix.fabric.metro.ho_{:metroCode}.latency",
- "equinix.fabric.metro.il_{:metroCode}.latency",
- "equinix.fabric.metro.jh_{:metroCode}.latency",
- "equinix.fabric.metro.ka_{:metroCode}.latency",
- "equinix.fabric.metro.kl_{:metroCode}.latency",
- "equinix.fabric.metro.la_{:metroCode}.latency",
- "equinix.fabric.metro.ld_{:metroCode}.latency",
- "equinix.fabric.metro.lm_{:metroCode}.latency",
- "equinix.fabric.metro.ls_{:metroCode}.latency",
- "equinix.fabric.metro.ma_{:metroCode}.latency",
- "equinix.fabric.metro.mb_{:metroCode}.latency",
- "equinix.fabric.metro.md_{:metroCode}.latency",
- "equinix.fabric.metro.me_{:metroCode}.latency",
- "equinix.fabric.metro.mi_{:metroCode}.latency",
- "equinix.fabric.metro.ml_{:metroCode}.latency",
- "equinix.fabric.metro.mo_{:metroCode}.latency",
- "equinix.fabric.metro.mt_{:metroCode}.latency",
- "equinix.fabric.metro.mu_{:metroCode}.latency",
- "equinix.fabric.metro.mx_{:metroCode}.latency",
- "equinix.fabric.metro.ny_{:metroCode}.latency",
- "equinix.fabric.metro.os_{:metroCode}.latency",
- "equinix.fabric.metro.ot_{:metroCode}.latency",
- "equinix.fabric.metro.pa_{:metroCode}.latency",
- "equinix.fabric.metro.pe_{:metroCode}.latency",
- "equinix.fabric.metro.ph_{:metroCode}.latency",
- "equinix.fabric.metro.rj_{:metroCode}.latency",
- "equinix.fabric.metro.se_{:metroCode}.latency",
- "equinix.fabric.metro.sg_{:metroCode}.latency",
- "equinix.fabric.metro.sk_{:metroCode}.latency",
- "equinix.fabric.metro.sl_{:metroCode}.latency",
- "equinix.fabric.metro.so_{:metroCode}.latency",
- "equinix.fabric.metro.sp_{:metroCode}.latency",
- "equinix.fabric.metro.st_{:metroCode}.latency",
- "equinix.fabric.metro.sv_{:metroCode}.latency",
- "equinix.fabric.metro.sy_{:metroCode}.latency",
- "equinix.fabric.metro.tr_{:metroCode}.latency",
- "equinix.fabric.metro.ty_{:metroCode}.latency",
- "equinix.fabric.metro.va_{:metroCode}.latency",
- "equinix.fabric.metro.wa_{:metroCode}.latency",
- "equinix.fabric.metro.wi_{:metroCode}.latency",
- "equinix.fabric.metro.zh_{:metroCode}.latency",
- "equinix.fabric.port.bandwidth_rx.usage",
- "equinix.fabric.port.bandwidth_tx.usage",
- "equinix.fabric.port.packets_erred_rx.count",
- "equinix.fabric.port.packets_erred_tx.count",
- "equinix.fabric.port.packets_dropped_rx.count",
- "equinix.fabric.port.packets_dropped_tx.count"
- ],
"definitions": {
"Data": {
"properties": {
@@ -192,5 +117,90 @@
"title": "DataPoints",
"additionalProperties": true
}
+ },
+ "cloudeventTypes": {
+ "released": [
+ "equinix.fabric.metric"
+ ],
+ "preview": []
+ },
+ "metricNames": {
+ "released": [
+ "equinix.fabric.connection.bandwidth_rx.usage",
+ "equinix.fabric.connection.bandwidth_tx.usage",
+ "equinix.fabric.metro.am_{:metroCode}.latency",
+ "equinix.fabric.metro.at_{:metroCode}.latency",
+ "equinix.fabric.metro.ba_{:metroCode}.latency",
+ "equinix.fabric.metro.bg_{:metroCode}.latency",
+ "equinix.fabric.metro.bl_{:metroCode}.latency",
+ "equinix.fabric.metro.bo_{:metroCode}.latency",
+ "equinix.fabric.metro.bx_{:metroCode}.latency",
+ "equinix.fabric.metro.ca_{:metroCode}.latency",
+ "equinix.fabric.metro.ch_{:metroCode}.latency",
+ "equinix.fabric.metro.cl_{:metroCode}.latency",
+ "equinix.fabric.metro.cu_{:metroCode}.latency",
+ "equinix.fabric.metro.da_{:metroCode}.latency",
+ "equinix.fabric.metro.db_{:metroCode}.latency",
+ "equinix.fabric.metro.dc_{:metroCode}.latency",
+ "equinix.fabric.metro.de_{:metroCode}.latency",
+ "equinix.fabric.metro.dx_{:metroCode}.latency",
+ "equinix.fabric.metro.fr_{:metroCode}.latency",
+ "equinix.fabric.metro.gv_{:metroCode}.latency",
+ "equinix.fabric.metro.he_{:metroCode}.latency",
+ "equinix.fabric.metro.hh_{:metroCode}.latency",
+ "equinix.fabric.metro.hk_{:metroCode}.latency",
+ "equinix.fabric.metro.ho_{:metroCode}.latency",
+ "equinix.fabric.metro.il_{:metroCode}.latency",
+ "equinix.fabric.metro.jh_{:metroCode}.latency",
+ "equinix.fabric.metro.ka_{:metroCode}.latency",
+ "equinix.fabric.metro.kl_{:metroCode}.latency",
+ "equinix.fabric.metro.la_{:metroCode}.latency",
+ "equinix.fabric.metro.ld_{:metroCode}.latency",
+ "equinix.fabric.metro.lm_{:metroCode}.latency",
+ "equinix.fabric.metro.ls_{:metroCode}.latency",
+ "equinix.fabric.metro.ma_{:metroCode}.latency",
+ "equinix.fabric.metro.mb_{:metroCode}.latency",
+ "equinix.fabric.metro.md_{:metroCode}.latency",
+ "equinix.fabric.metro.me_{:metroCode}.latency",
+ "equinix.fabric.metro.mi_{:metroCode}.latency",
+ "equinix.fabric.metro.ml_{:metroCode}.latency",
+ "equinix.fabric.metro.mo_{:metroCode}.latency",
+ "equinix.fabric.metro.mt_{:metroCode}.latency",
+ "equinix.fabric.metro.mu_{:metroCode}.latency",
+ "equinix.fabric.metro.mx_{:metroCode}.latency",
+ "equinix.fabric.metro.ny_{:metroCode}.latency",
+ "equinix.fabric.metro.os_{:metroCode}.latency",
+ "equinix.fabric.metro.ot_{:metroCode}.latency",
+ "equinix.fabric.metro.pa_{:metroCode}.latency",
+ "equinix.fabric.metro.pe_{:metroCode}.latency",
+ "equinix.fabric.metro.ph_{:metroCode}.latency",
+ "equinix.fabric.metro.rj_{:metroCode}.latency",
+ "equinix.fabric.metro.se_{:metroCode}.latency",
+ "equinix.fabric.metro.sg_{:metroCode}.latency",
+ "equinix.fabric.metro.sk_{:metroCode}.latency",
+ "equinix.fabric.metro.sl_{:metroCode}.latency",
+ "equinix.fabric.metro.so_{:metroCode}.latency",
+ "equinix.fabric.metro.sp_{:metroCode}.latency",
+ "equinix.fabric.metro.st_{:metroCode}.latency",
+ "equinix.fabric.metro.sv_{:metroCode}.latency",
+ "equinix.fabric.metro.sy_{:metroCode}.latency",
+ "equinix.fabric.metro.tr_{:metroCode}.latency",
+ "equinix.fabric.metro.ty_{:metroCode}.latency",
+ "equinix.fabric.metro.va_{:metroCode}.latency",
+ "equinix.fabric.metro.wa_{:metroCode}.latency",
+ "equinix.fabric.metro.wi_{:metroCode}.latency",
+ "equinix.fabric.metro.zh_{:metroCode}.latency",
+ "equinix.fabric.port.bandwidth_rx.usage",
+ "equinix.fabric.port.bandwidth_tx.usage",
+ "equinix.fabric.port.packets_erred_rx.count",
+ "equinix.fabric.port.packets_erred_tx.count",
+ "equinix.fabric.port.packets_dropped_rx.count",
+ "equinix.fabric.port.packets_dropped_tx.count"
+ ],
+ "preview": []
+ },
+ "alertNames": {
+ "released": [],
+ "preview": []
}
}
diff --git a/jsonschema/equinix/identity/v1/ChangeEvent.json b/jsonschema/equinix/identity/v1/ChangeEvent.json
index f80a3ed..e8bfaf2 100644
--- a/jsonschema/equinix/identity/v1/ChangeEvent.json
+++ b/jsonschema/equinix/identity/v1/ChangeEvent.json
@@ -4,8 +4,6 @@
"examples": [],
"package": "equinix.identity.v1",
"datatype": "equinix.identity.v1.ChangeEvent",
- "cloudeventTypes": [
- ],
"domain": "Equinix Identity ChangeEvent",
"$schema": "http://json-schema.org/draft-04/schema#",
"$ref": "#/definitions/Data",
@@ -33,5 +31,17 @@
"title": "Resource",
"description": "Schema of the resource that fired the event"
}
+ },
+ "cloudeventTypes": {
+ "released": [],
+ "preview": []
+ },
+ "metricNames": {
+ "released": [],
+ "preview": []
+ },
+ "alertNames": {
+ "released": [],
+ "preview": []
}
}
diff --git a/jsonschema/equinix/network_edge/v1/ChangeEvent.json b/jsonschema/equinix/network_edge/v1/ChangeEvent.json
index 7f396aa..fb32ddc 100644
--- a/jsonschema/equinix/network_edge/v1/ChangeEvent.json
+++ b/jsonschema/equinix/network_edge/v1/ChangeEvent.json
@@ -4,8 +4,6 @@
"examples": [],
"package": "equinix.network_edge.v1",
"datatype": "equinix.network_edge.v1.ChangeEvent",
- "cloudeventTypes": [
- ],
"domain": "Equinix Network Edge ChangeEvent",
"$schema": "http://json-schema.org/draft-04/schema#",
"$ref": "#/definitions/Data",
@@ -33,5 +31,17 @@
"title": "Resource",
"description": "Schema of the resource that fired the event"
}
+ },
+ "cloudeventTypes": {
+ "released": [],
+ "preview": []
+ },
+ "metricNames": {
+ "released": [],
+ "preview": []
+ },
+ "alertNames": {
+ "released": [],
+ "preview": []
}
}
diff --git a/jsonschema/equinix/resource_manager/v1/ChangeEvent.json b/jsonschema/equinix/resource_manager/v1/ChangeEvent.json
index 9d15dd6..942a471 100644
--- a/jsonschema/equinix/resource_manager/v1/ChangeEvent.json
+++ b/jsonschema/equinix/resource_manager/v1/ChangeEvent.json
@@ -4,8 +4,6 @@
"examples": [],
"package": "equinix.resource_manager.v1",
"datatype": "equinix.resource_manager.v1.ChangeEvent",
- "cloudeventTypes": [
- ],
"domain": "Equinix Resource Manager ChangeEvent",
"$schema": "http://json-schema.org/draft-04/schema#",
"$ref": "#/definitions/Data",
@@ -33,5 +31,17 @@
"title": "Resource",
"description": "Schema of the resource that fired the event"
}
+ },
+ "cloudeventTypes": {
+ "released": [],
+ "preview": []
+ },
+ "metricNames": {
+ "released": [],
+ "preview": []
+ },
+ "alertNames": {
+ "released": [],
+ "preview": []
}
}
diff --git a/scripts/generate_json_catalog.py b/scripts/generate_json_catalog.py
index f99cd2b..c42c5bd 100644
--- a/scripts/generate_json_catalog.py
+++ b/scripts/generate_json_catalog.py
@@ -1,5 +1,6 @@
import os
import json
+import script_constants as sc
def retrieve_json_schemas():
directory = os.path.dirname(os.path.abspath(__file__)) + '/../jsonschema'
@@ -9,16 +10,28 @@ def retrieve_json_schemas():
if file.endswith('.json') and file != "catalog.json":
with open(root + "/" + file, "r") as eventFile:
data = json.load(eventFile)
+ events = {
+ sc.RELEASED: sorted(data[sc.EVENTS][sc.RELEASED]),
+ sc.PREVIEW: sorted(data[sc.EVENTS][sc.PREVIEW])
+ }
+ metrics = {
+ sc.RELEASED: sorted(data[sc.METRICS][sc.RELEASED]),
+ sc.PREVIEW: sorted(data[sc.METRICS][sc.PREVIEW])
+ }
+ alerts = {
+ sc.RELEASED: sorted(data[sc.ALERTS][sc.RELEASED]),
+ sc.PREVIEW: sorted(data[sc.ALERTS][sc.PREVIEW])
+ }
newItem = {
"url": data["$id"],
"domain": data["domain"],
"name": data["name"],
"description": data["definitions"]["Data"]["description"],
"datatype": data["datatype"],
- "cloudeventTypes": data["cloudeventTypes"]
+ "cloudeventTypes": events,
+ "metricNames": metrics,
+ "alertNames": alerts
}
- if "metricNames" in data:
- newItem["metricNames"] = data["metricNames"]
json_schemas.append(newItem)
json_schemas.sort(key=lambda x: x["url"])
return json_schemas
diff --git a/scripts/generate_readme_event_catalog.py b/scripts/generate_readme_event_catalog.py
index b97fcb3..4ff4774 100644
--- a/scripts/generate_readme_event_catalog.py
+++ b/scripts/generate_readme_event_catalog.py
@@ -1,26 +1,45 @@
import os
import json
+import script_constants as sc
-def table_row(schema):
- cloudEventTypes = "
\n".join(map(lambda x: f"`{x}`", schema["cloudeventTypes"]))
+def dropdowns(type, supported):
+ dropdowns = "#### " + type
+ if len(supported[sc.PREVIEW]) > 0:
+ dropdowns += "\n\n\nIn Preview
\n\n"
+ dropdowns += "
\n".join(map(lambda x: f"`{x}`", supported[sc.PREVIEW]))
+ dropdowns += "\n\n \n\n"
+ if len(supported[sc.RELEASED]) > 0:
+ dropdowns += "\n\n\nReleased
\n\n"
+ dropdowns += "
\n".join(map(lambda x: f"`{x}`", supported[sc.RELEASED]))
+ dropdowns += "\n\n \n"""
+ return dropdowns if len(dropdowns) > 20 else ""
+
+def schema_entry(schema):
+ cloudEventTypes = ""
metrics = ""
- if "metricNames" in schema:
- metricNames = "
\n".join(map(lambda x: f"`{x}`", schema["metricNames"]))
- metrics = f"#### Metric Name(s)\n{metricNames}"
- return f"""### {schema["domain"]}
+ alerts = ""
+ if sc.EVENTS in schema:
+ cloudEventTypes = dropdowns(sc.README_EVENTS, schema[sc.EVENTS])
+ if sc.METRICS in schema:
+ metrics = dropdowns(sc.README_METRICS, schema[sc.METRICS])
+ if sc.ALERTS in schema:
+ alerts = dropdowns(sc.README_ALERTS, schema[sc.ALERTS])
+ return f"""---
+### {schema["domain"]}
#### DataSchema [JSON]({schema["url"]})
#### Data Type
`{schema["datatype"]}`
-#### CloudEvent Type(s)
+#### Supported Events, Metrics, and Alerts
{cloudEventTypes}
-{metrics}"""
+{metrics}
+{alerts}"""
def replace_readme_catalog():
readme_path = os.path.dirname(os.path.abspath(__file__)) + "/../README.md"
catalog_path = os.path.dirname(os.path.abspath(__file__)) + "/../jsonschema/catalog.json"
with open(catalog_path, "r") as catalog_file:
catalog = json.load(catalog_file)
- schemas = "\n".join(map(table_row, catalog["schemas"]))
+ schemas = "\n".join(map(schema_entry, catalog["schemas"]))
with open(readme_path, "r+") as readme_file:
content = readme_file.read()
diff --git a/scripts/requirements.txt b/scripts/requirements.txt
new file mode 100644
index 0000000..89099e3
--- /dev/null
+++ b/scripts/requirements.txt
@@ -0,0 +1 @@
+jsonschema==4.23.0
diff --git a/scripts/script_constants.py b/scripts/script_constants.py
new file mode 100644
index 0000000..120804c
--- /dev/null
+++ b/scripts/script_constants.py
@@ -0,0 +1,10 @@
+RELEASED = "released"
+PREVIEW = "preview"
+
+EVENTS = "cloudeventTypes"
+METRICS = "metricNames"
+ALERTS = "alertNames"
+
+README_EVENTS = "Events"
+README_METRICS = "Metrics"
+README_ALERTS = "Alerts"
\ No newline at end of file
diff --git a/scripts/update_data_loader.py b/scripts/update_data_loader.py
index 570d1e4..a6d7818 100644
--- a/scripts/update_data_loader.py
+++ b/scripts/update_data_loader.py
@@ -1,6 +1,7 @@
import os
import json
from collections import defaultdict
+import script_constants as sc
def retrieve_supported_events():
directory = os.path.dirname(os.path.abspath(__file__)) + '/../jsonschema'
@@ -9,20 +10,41 @@ def retrieve_supported_events():
for file in files:
if file.endswith('.json') and file != "catalog.json":
with open(root + "/" + file, "r") as eventFile:
- product = root.split("/")[-2]
+ domain = root.split("/")[-2]
data = json.load(eventFile)
- if product not in dataLoaderStructure:
- dataLoaderStructure[product] = {
- "eventTypes": [],
- "metricNames": [],
+ if domain not in dataLoaderStructure:
+ dataLoaderStructure[domain] = {
+ sc.EVENTS: {
+ sc.RELEASED: [],
+ sc.PREVIEW: []
+ },
+ sc.METRICS: {
+ sc.RELEASED: [],
+ sc.PREVIEW: []
+ },
+ sc.ALERTS: {
+ sc.RELEASED: [],
+ sc.PREVIEW: []
+ }
}
- dataLoaderStructure[product]["eventTypes"].extend(data["cloudeventTypes"])
- if "metricNames" in data:
- dataLoaderStructure[product]["metricNames"].extend(data["metricNames"])
- dataLoaderStructure[product]["eventTypes"] = sorted(set(dataLoaderStructure[product]["eventTypes"]))
- dataLoaderStructure[product]["metricNames"] = sorted(set(dataLoaderStructure[product]["metricNames"]))
+ data[sc.EVENTS][sc.RELEASED]
+ dataLoaderStructure[domain][sc.EVENTS][sc.RELEASED].extend(data[sc.EVENTS][sc.RELEASED])
+ dataLoaderStructure[domain][sc.EVENTS][sc.PREVIEW].extend(data[sc.EVENTS][sc.PREVIEW])
+ dataLoaderStructure[domain][sc.METRICS][sc.RELEASED].extend(data[sc.METRICS][sc.RELEASED])
+ dataLoaderStructure[domain][sc.METRICS][sc.PREVIEW].extend(data[sc.METRICS][sc.PREVIEW])
+ dataLoaderStructure[domain][sc.ALERTS][sc.RELEASED].extend(data[sc.ALERTS][sc.RELEASED])
+ dataLoaderStructure[domain][sc.ALERTS][sc.PREVIEW].extend(data[sc.ALERTS][sc.PREVIEW])
- return dict(sorted(dataLoaderStructure.items()))
+ dataLoaderStructure[domain][sc.EVENTS][sc.RELEASED] = sorted(set(dataLoaderStructure[domain][sc.EVENTS][sc.RELEASED]))
+ dataLoaderStructure[domain][sc.EVENTS][sc.PREVIEW] = sorted(set(dataLoaderStructure[domain][sc.EVENTS][sc.PREVIEW]))
+ dataLoaderStructure[domain][sc.METRICS][sc.RELEASED] = sorted(set(dataLoaderStructure[domain][sc.METRICS][sc.RELEASED]))
+ dataLoaderStructure[domain][sc.METRICS][sc.PREVIEW] = sorted(set(dataLoaderStructure[domain][sc.METRICS][sc.PREVIEW]))
+ dataLoaderStructure[domain][sc.ALERTS][sc.RELEASED] = sorted(set(dataLoaderStructure[domain][sc.ALERTS][sc.RELEASED]))
+ dataLoaderStructure[domain][sc.ALERTS][sc.PREVIEW] = sorted(set(dataLoaderStructure[domain][sc.ALERTS][sc.PREVIEW]))
+
+ dataLoaderStructure = dict(sorted(dataLoaderStructure.items()))
+
+ return dataLoaderStructure
def writeSupportedEventsToDataLoaderFile(supportedEvents):
with open(os.path.dirname(os.path.abspath(__file__)) + "/../DataLoader.json", "w") as eventsFile:
diff --git a/scripts/validate_json_schemas.py b/scripts/validate_json_schemas.py
new file mode 100644
index 0000000..fd4e7df
--- /dev/null
+++ b/scripts/validate_json_schemas.py
@@ -0,0 +1,19 @@
+import os
+from jsonschema import validate
+import json
+
+def validateJsonSchemas():
+ validationSchemaFile = os.path.dirname(os.path.abspath(__file__))+"/jsonschema-org-schema.json"
+ with open(validationSchemaFile, "r") as schemaFile:
+ schema = json.load(schemaFile)
+ directory = os.path.dirname(os.path.abspath(__file__)) + '/../jsonschema'
+ for root, dirs, files in os.walk(directory):
+ for file in files:
+ if file.endswith('.json') and file != "catalog.json":
+ with open(root + "/" + file, "r") as eventFile:
+ data = json.load(eventFile)
+ validate(instance=data, schema=schema)
+
+
+if __name__ == "__main__":
+ validateJsonSchemas()