The possible properties returned by the controller endpoints were only
partly documented. Add all missing properties and update descriptions
for existing properties.

Update the descriptions of the schemas in the plugin to provide more
detailed information about the different configuration options.

Move all duplicate properties between the GET endpoints into its own
variable, so we can reuse them.

Signed-off-by: Stefan Hanreich <s.hanre...@proxmox.com>
---
 src/PVE/API2/Network/SDN/Controllers.pm       | 111 +++++++++++++++++-
 src/PVE/Network/SDN/Controllers/BgpPlugin.pm  |   6 +-
 src/PVE/Network/SDN/Controllers/EvpnPlugin.pm |   3 +-
 src/PVE/Network/SDN/Controllers/IsisPlugin.pm |  12 +-
 4 files changed, 119 insertions(+), 13 deletions(-)

diff --git a/src/PVE/API2/Network/SDN/Controllers.pm 
b/src/PVE/API2/Network/SDN/Controllers.pm
index 29f6ca4..29f54ee 100644
--- a/src/PVE/API2/Network/SDN/Controllers.pm
+++ b/src/PVE/API2/Network/SDN/Controllers.pm
@@ -34,6 +34,63 @@ my $api_sdn_controllers_config = sub {
     return $scfg;
 };
 
+my $CONTROLLER_PROPERTIES = {
+    asn => {
+       type => 'integer',
+       description => 'The local ASN of the controller. BGP & EVPN only.',
+       optional => 1,
+       minimum => 0,
+       maximum => 4294967295
+    },
+    node => {
+       type => 'string',
+       optional => 1,
+       description => 'Node(s) where this controller is active.',
+    },
+    peers => {
+       type => 'string',
+       optional => 1,
+       description => 'Comma-separated list of the peers IP addresses.',
+    },
+    'bgp-multipath-as-relax' => {
+       type => 'boolean',
+       optional => 1,
+       description => 'Consider different AS paths of equal length for 
multipath computation. BGP only.',
+    },
+    ebgp => {
+       type => 'boolean',
+       optional => 1,
+       description => "Enable eBGP (remote-as external). BGP only.",
+    },
+    'ebgp-multihop' => {
+       type => 'integer',
+       optional => 1,
+       description => "Set maximum amount of hops for eBGP peers. Needs ebgp 
set to 1. BGP only.",
+    },
+    loopback => {
+       description => "Name of the loopback/dummy interface that provides the 
Router-IP. BGP only.",
+       optional => 1,
+       type => 'string'
+    },
+    'isis-domain' => {
+       description => "Name of the IS-IS domain. IS-IS only.",
+       optional => 1,
+       type => 'string'
+    },
+    'isis-ifaces' => {
+       description => "Comma-separated list of interfaces where IS-IS should 
be active. IS-IS only.",
+       optional => 1,
+       type => 'string',
+       format => 'pve-iface-list',
+    },
+    'isis-net' => {
+       description => "Network Entity title for this node in the IS-IS 
network. IS-IS only.",
+       optional => 1,
+       type => 'string',
+       format => 'pve-sdn-isis-net',
+    },
+};
+
 __PACKAGE__->register_method ({
     name => 'index',
     path => '',
@@ -68,10 +125,29 @@ __PACKAGE__->register_method ({
        type => 'array',
        items => {
            type => "object",
-           properties => { controller => { type => 'string' },
-                           type => { type => 'string' },
-                           state => { type => 'string', optional => 1 },
-                           pending => { type => 'boolean', optional => 1 },
+           properties => {
+               digest => {
+                   type => 'string',
+                   description => 'Digest of the controller section.',
+                   optional => 1,
+               },
+               state => get_standard_option('pve-sdn-config-state'),
+               controller => {
+                   type => 'string',
+                   description => 'Name of the controller.',
+               },
+               type => {
+                   type => 'string',
+                   description => 'Type of the controller',
+                   enum => 
PVE::Network::SDN::Controllers::Plugin->lookup_types(),
+               },
+               pending => {
+                   type => 'object',
+                   description => 'Changes that have not yet been applied to 
the running configuration.',
+                   optional => 1,
+                   properties => $CONTROLLER_PROPERTIES,
+               },
+               %$CONTROLLER_PROPERTIES,
            },
        },
        links => [ { rel => 'child', href => "{controller}" } ],
@@ -136,7 +212,32 @@ __PACKAGE__->register_method ({
            },
        },
     },
-    returns => { type => 'object' },
+    returns => {
+       properties => {
+           digest => {
+               type => 'string',
+               description => 'Digest of the controller section.',
+               optional => 1,
+           },
+           state => get_standard_option('pve-sdn-config-state'),
+           controller => {
+               type => 'string',
+               description => 'Name of the controller.',
+           },
+           type => {
+               type => 'string',
+               description => 'Type of the controller',
+               enum => PVE::Network::SDN::Controllers::Plugin->lookup_types(),
+           },
+           pending => {
+               type => 'object',
+               description => 'Changes that have not yet been applied to the 
running configuration.',
+               optional => 1,
+               properties => $CONTROLLER_PROPERTIES,
+           },
+           %$CONTROLLER_PROPERTIES,
+       },
+    },
     code => sub {
        my ($param) = @_;
 
diff --git a/src/PVE/Network/SDN/Controllers/BgpPlugin.pm 
b/src/PVE/Network/SDN/Controllers/BgpPlugin.pm
index 53963e5..278097f 100644
--- a/src/PVE/Network/SDN/Controllers/BgpPlugin.pm
+++ b/src/PVE/Network/SDN/Controllers/BgpPlugin.pm
@@ -22,18 +22,20 @@ sub properties {
        'bgp-multipath-as-path-relax' => {
            type => 'boolean',
            optional => 1,
+           description => 'Consider different AS paths of equal length for 
multipath computation.'
        },
        ebgp => {
            type => 'boolean',
            optional => 1,
-           description => "Enable ebgp. (remote-as external)",
+           description => "Enable eBGP (remote-as external).",
        },
        'ebgp-multihop' => {
            type => 'integer',
            optional => 1,
+           description => 'Set maximum amount of hops for eBGP peers.'
        },
        loopback => {
-           description => "source loopback interface.",
+           description => "Name of the loopback/dummy interface that provides 
the Router-IP.",
            type => 'string'
        },
         node => get_standard_option('pve-node'),
diff --git a/src/PVE/Network/SDN/Controllers/EvpnPlugin.pm 
b/src/PVE/Network/SDN/Controllers/EvpnPlugin.pm
index 78c9798..6aa6825 100644
--- a/src/PVE/Network/SDN/Controllers/EvpnPlugin.pm
+++ b/src/PVE/Network/SDN/Controllers/EvpnPlugin.pm
@@ -28,7 +28,8 @@ sub properties {
        },
        peers => {
            description => "peers address list.",
-           type => 'string', format => 'ip-list'
+           type => 'string',
+           format => 'ip-list'
        },
     };
 }
diff --git a/src/PVE/Network/SDN/Controllers/IsisPlugin.pm 
b/src/PVE/Network/SDN/Controllers/IsisPlugin.pm
index 97c6876..e9f4147 100644
--- a/src/PVE/Network/SDN/Controllers/IsisPlugin.pm
+++ b/src/PVE/Network/SDN/Controllers/IsisPlugin.pm
@@ -30,16 +30,18 @@ sub pve_verify_sdn_isis_net {
 sub properties {
     return {
        'isis-domain' => {
-           description => "ISIS domain.",
+           description => "Name of the IS-IS domain.",
            type => 'string'
        },
        'isis-ifaces' => {
-           description => "ISIS interface.",
-           type => 'string', format => 'pve-iface-list',
+           description => "Comma-separated list of interfaces where IS-IS 
should be active.",
+           type => 'string',
+           format => 'pve-iface-list',
        },
        'isis-net' => {
-           description => "ISIS network entity title.",
-           type => 'string', format => 'pve-sdn-isis-net',
+           description => "Network Entity title for this node in the IS-IS 
network.",
+           type => 'string',
+           format => 'pve-sdn-isis-net',
        },
     };
 }
-- 
2.39.5


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

Reply via email to