public inbox for pdm-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: Stefan Hanreich <s.hanreich@proxmox.com>
To: pdm-devel@lists.proxmox.com
Subject: [pdm-devel] [PATCH proxmox 1/3] pve-api-types: add zone / vnet status reporting endpoints
Date: Fri,  7 Nov 2025 09:59:21 +0100	[thread overview]
Message-ID: <20251107085934.118815-2-s.hanreich@proxmox.com> (raw)
In-Reply-To: <20251107085934.118815-1-s.hanreich@proxmox.com>

Signed-off-by: Stefan Hanreich <s.hanreich@proxmox.com>
---
 pve-api-types/pve-api.json | 286 ++++++++++++++++++++++++++++++++++++-
 1 file changed, 282 insertions(+), 4 deletions(-)

diff --git a/pve-api-types/pve-api.json b/pve-api-types/pve-api.json
index 1775fdae..7ac1244b 100644
--- a/pve-api-types/pve-api.json
+++ b/pve-api-types/pve-api.json
@@ -50740,12 +50740,173 @@
                                        "leaf": 1,
                                        "path": "/nodes/{node}/sdn/zones/{zone}/content",
                                        "text": "content"
+                                    },
+                                    {
+                                       "info": {
+                                          "GET": {
+                                             "allowtoken": 1,
+                                             "description": "Get a list of all bridges (vnets) that are part of a zone, as well as the ports that are members of that bridge.",
+                                             "method": "GET",
+                                             "name": "bridges",
+                                             "parameters": {
+                                                "additionalProperties": 0,
+                                                "properties": {
+                                                   "node": {
+                                                      "description": "The cluster node name.",
+                                                      "format": "pve-node",
+                                                      "type": "string"
+                                                   },
+                                                   "zone": {
+                                                      "description": "zone name or \"localnetwork\"",
+                                                      "type": "string"
+                                                   }
+                                                }
+                                             },
+                                             "permissions": {
+                                                "check": [
+                                                   "perm",
+                                                   "/sdn/zones/{zone}",
+                                                   [
+                                                      "SDN.Audit"
+                                                   ]
+                                                ]
+                                             },
+                                             "protected": 1,
+                                             "proxyto": "node",
+                                             "returns": {
+                                                "items": {
+                                                   "description": "List of bridges contained in the SDN zone.",
+                                                   "properties": {
+                                                      "name": {
+                                                         "description": "Name of the bridge.",
+                                                         "type": "string"
+                                                      },
+                                                      "ports": {
+                                                         "description": "All ports that are members of the bridge",
+                                                         "items": {
+                                                            "description": "Information about bridge ports.",
+                                                            "properties": {
+                                                               "index": {
+                                                                  "description": "The index of the guests network device that this interface belongs to.",
+                                                                  "optional": 1,
+                                                                  "type": "number"
+                                                               },
+                                                               "name": {
+                                                                  "description": "The name of the bridge port.",
+                                                                  "type": "string"
+                                                               },
+                                                               "primary_vlan": {
+                                                                  "description": "The primary VLAN configured for the port of this bridge (= PVID). Only for VLAN-aware bridges.",
+                                                                  "optional": 1,
+                                                                  "type": "number"
+                                                               },
+                                                               "vlans": {
+                                                                  "description": "A list of VLANs and VLAN ranges that are allowed for this bridge port in addition to the primary VLAN. Only for VLAN-aware bridges.",
+                                                                  "items": {
+                                                                     "description": "A single VLAN (123) or a VLAN range (234-435).",
+                                                                     "type": "string"
+                                                                  },
+                                                                  "optional": 1,
+                                                                  "type": "array"
+                                                               },
+                                                               "vmid": {
+                                                                  "description": "The ID of the guest that this interface belongs to.",
+                                                                  "optional": 1,
+                                                                  "type": "number"
+                                                               }
+                                                            },
+                                                            "type": "object"
+                                                         },
+                                                         "type": "array"
+                                                      },
+                                                      "vlan_filtering": {
+                                                         "description": "Whether VLAN filtering is enabled for this bridge (= VLAN-aware).",
+                                                         "type": "string"
+                                                      }
+                                                   },
+                                                   "type": "object"
+                                                },
+                                                "type": "array"
+                                             }
+                                          }
+                                       },
+                                       "leaf": 1,
+                                       "path": "/nodes/{node}/sdn/zones/{zone}/bridges",
+                                       "text": "bridges"
+                                    },
+                                    {
+                                       "info": {
+                                          "GET": {
+                                             "allowtoken": 1,
+                                             "description": "Get the IP VRF of an EVPN zone.",
+                                             "method": "GET",
+                                             "name": "ip-vrf",
+                                             "parameters": {
+                                                "additionalProperties": 0,
+                                                "properties": {
+                                                   "node": {
+                                                      "description": "The cluster node name.",
+                                                      "format": "pve-node",
+                                                      "type": "string"
+                                                   },
+                                                   "zone": {
+                                                      "description": "Name of an EVPN zone.",
+                                                      "type": "string"
+                                                   }
+                                                }
+                                             },
+                                             "permissions": {
+                                                "check": [
+                                                   "perm",
+                                                   "/sdn/zones/{zone}",
+                                                   [
+                                                      "SDN.Audit"
+                                                   ]
+                                                ]
+                                             },
+                                             "protected": 1,
+                                             "proxyto": "node",
+                                             "returns": {
+                                                "description": "All entries in the VRF table of zone {zone} of the node.This does not include /32 routes for guests on this host,since they are handled via the respective vnet bridge directly.",
+                                                "items": {
+                                                   "properties": {
+                                                      "ip": {
+                                                         "description": "The CIDR of the route table entry.",
+                                                         "format": "CIDR",
+                                                         "type": "string"
+                                                      },
+                                                      "metric": {
+                                                         "description": "This route's metric.",
+                                                         "type": "integer"
+                                                      },
+                                                      "nexthops": {
+                                                         "description": "A list of nexthops for the route table entry.",
+                                                         "items": {
+                                                            "description": "the interface name or ip address of the next hop",
+                                                            "type": "string"
+                                                         },
+                                                         "type": "array"
+                                                      },
+                                                      "protocol": {
+                                                         "description": "The protocol where this route was learned from (e.g. BGP).",
+                                                         "type": "string"
+                                                      }
+                                                   },
+                                                   "type": "object"
+                                                },
+                                                "type": "array"
+                                             }
+                                          }
+                                       },
+                                       "leaf": 1,
+                                       "path": "/nodes/{node}/sdn/zones/{zone}/ip-vrf",
+                                       "text": "ip-vrf"
                                     }
                                  ],
                                  "info": {
                                     "GET": {
                                        "allowtoken": 1,
-                                       "description": "",
+                                       "description": "Directory index for SDN zone status.",
                                        "method": "GET",
                                        "name": "diridx",
                                        "parameters": {
@@ -50769,9 +50930,7 @@
                                              "/sdn/zones/{zone}",
                                              [
                                                 "SDN.Audit"
-                                             ],
-                                             "any",
-                                             1
+                                             ]
                                           ]
                                        },
                                        "returns": {
@@ -50853,6 +51012,124 @@
                            "leaf": 0,
                            "path": "/nodes/{node}/sdn/zones",
                            "text": "zones"
+                        },
+                        {
+                           "children": [
+                              {
+                                 "children": [
+                                    {
+                                       "info": {
+                                          "GET": {
+                                             "allowtoken": 1,
+                                             "description": "Get the MAC VRF for a VNet in an EVPN zone.",
+                                             "method": "GET",
+                                             "name": "mac-vrf",
+                                             "parameters": {
+                                                "additionalProperties": 0,
+                                                "properties": {
+                                                   "node": {
+                                                      "description": "The cluster node name.",
+                                                      "format": "pve-node",
+                                                      "type": "string"
+                                                   },
+                                                   "vnet": {
+                                                      "completion": ("Code")[],
+                                                      "description": "The SDN vnet object identifier.",
+                                                      "format": "pve-sdn-vnet-id",
+                                                      "type": "string"
+                                                   }
+                                                }
+                                             },
+                                             "permissions": {
+                                                "description": "Require 'SDN.Audit' permissions on '/sdn/zones/<zone>/<vnet>'",
+                                                "user": "all"
+                                             },
+                                             "protected": 1,
+                                             "proxyto": "node",
+                                             "returns": {
+                                                "description": "All routes from the MAC VRF that this node self-originates or has learned via BGP.",
+                                                "items": {
+                                                   "properties": {
+                                                      "ip": {
+                                                         "description": "The IP address of the MAC VRF entry.",
+                                                         "format": "ip",
+                                                         "type": "string"
+                                                      },
+                                                      "mac": {
+                                                         "description": "The MAC address of the MAC VRF entry.",
+                                                         "format": "mac-addr",
+                                                         "type": "string"
+                                                      },
+                                                      "nexthop": {
+                                                         "description": "The IP address of the nexthop.",
+                                                         "format": "ip",
+                                                         "type": "string"
+                                                      }
+                                                   },
+                                                   "type": "object"
+                                                },
+                                                "type": "array"
+                                             }
+                                          }
+                                       },
+                                       "leaf": 1,
+                                       "path": "/nodes/{node}/sdn/vnets/{vnet}/mac-vrf",
+                                       "text": "mac-vrf"
+                                    }
+                                 ],
+                                 "info": {
+                                    "GET": {
+                                       "allowtoken": 1,
+                                       "description": "",
+                                       "method": "GET",
+                                       "name": "diridx",
+                                       "parameters": {
+                                          "additionalProperties": 0,
+                                          "properties": {
+                                             "node": {
+                                                "description": "The cluster node name.",
+                                                "format": "pve-node",
+                                                "type": "string"
+                                             },
+                                             "vnet": {
+                                                "completion": ("Code")[],
+                                                "description": "The SDN vnet object identifier.",
+                                                "format": "pve-sdn-vnet-id",
+                                                "type": "string"
+                                             }
+                                          }
+                                       },
+                                       "permissions": {
+                                          "description": "Require 'SDN.Audit' permissions on '/sdn/zones/<zone>/<vnet>'",
+                                          "user": "all"
+                                       },
+                                       "returns": {
+                                          "items": {
+                                             "properties": {
+                                                "subdir": {
+                                                   "type": "string"
+                                                }
+                                             },
+                                             "type": "object"
+                                          },
+                                          "links": [
+                                             {
+                                                "href": "{subdir}",
+                                                "rel": "child"
+                                             }
+                                          ],
+                                          "type": "array"
+                                       }
+                                    }
+                                 },
+                                 "leaf": 0,
+                                 "path": "/nodes/{node}/sdn/vnets/{vnet}",
+                                 "text": "{vnet}"
+                              }
+                           ],
+                           "leaf": 0,
+                           "path": "/nodes/{node}/sdn/vnets",
+                           "text": "vnets"
                         }
                      ],
                      "info": {
@@ -50874,6 +51151,7 @@
                            "permissions": {
                               "user": "all"
                            },
+                           "proxyto": "node",
                            "returns": {
                               "items": {
                                  "properties": {},
-- 
2.47.3


_______________________________________________
pdm-devel mailing list
pdm-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel


  reply	other threads:[~2025-11-07  8:58 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-07  8:59 [pdm-devel] [PATCH proxmox{, -datacenter-manager} 0/8] Integration of IP-VRF and MAC-VRF status to EVPN panel Stefan Hanreich
2025-11-07  8:59 ` Stefan Hanreich [this message]
2025-11-07  8:59 ` [pdm-devel] [PATCH proxmox 2/3] pve-api-types: generate ip-vrf / mac-vrf endpoints Stefan Hanreich
2025-11-07  8:59 ` [pdm-devel] [PATCH proxmox 3/3] pve-api-types: regenerate Stefan Hanreich
2025-11-07  8:59 ` [pdm-devel] [PATCH proxmox-datacenter-manager 1/5] server: api: sdn: add ip-vrf endpoint Stefan Hanreich
2025-11-07  8:59 ` [pdm-devel] [PATCH proxmox-datacenter-manager 2/5] server: api: sdn: add mac-vrf endpoint Stefan Hanreich
2025-11-07  8:59 ` [pdm-devel] [PATCH proxmox-datacenter-manager 3/5] ui: sdn: evpn: add zone status panel Stefan Hanreich
2025-11-07  8:59 ` [pdm-devel] [PATCH proxmox-datacenter-manager 4/5] ui: sdn: evpn: add vnet " Stefan Hanreich
2025-11-07  8:59 ` [pdm-devel] [PATCH proxmox-datacenter-manager 5/5] sdn: evpn: add detail panel to the evpn panel Stefan Hanreich

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20251107085934.118815-2-s.hanreich@proxmox.com \
    --to=s.hanreich@proxmox.com \
    --cc=pdm-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal