mirror of
				https://github.com/Telecominfraproject/ols-ucentral-schema.git
				synced 2025-10-31 10:08:06 +00:00 
			
		
		
		
	Compare commits
	
		
			19 Commits
		
	
	
		
			secure_htt
			...
			link_aggre
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | bcde6a7155 | ||
|   | 82f5eb7740 | ||
|   | ceccdef561 | ||
|   | 80a598fadf | ||
|   | 81e8cd5706 | ||
|   | 8a4815187f | ||
|   | e8da89616e | ||
|   | 5da5b090be | ||
|   | f9e15067ff | ||
|   | 4235960ab8 | ||
|   | 7e839b0681 | ||
|   | b98f8a2b46 | ||
|   | 1de6cad7e8 | ||
|   | 0f9f4489d2 | ||
|   | 5dc634f78e | ||
|   | 4d03a432c1 | ||
|   | ee945311e1 | ||
|   | 747ccb4993 | ||
|   | a0fac0b3d7 | 
| @@ -25,6 +25,10 @@ properties: | ||||
|     type: string | ||||
|     description: | ||||
|       Stock keeping unit | ||||
|   compatible: | ||||
|     type: string | ||||
|     description: | ||||
|       Compatibility string, that defines the family of the device | ||||
|   base-mac: | ||||
|     type: string | ||||
|     description: | ||||
|   | ||||
| @@ -7,7 +7,8 @@ set -x | ||||
| ./merge-schema.py schema schema ucentral.yml ucentral.schema.pretty.json 0 1 | ||||
| ./merge-schema.py schema schema ucentral.yml ucentral.schema.full.json 0 0 | ||||
| ./merge-schema.py state state state.yml ucentral.state.pretty.json 0 1 | ||||
| ./generate-reader.uc  > schemareader.uc | ||||
| ./merge-schema.py capabilities capabilities connect.capabilities.yml ucentral.capabilities.pretty.json 0 1  | ||||
| #./generate-reader.uc  > schemareader.uc | ||||
| #./generate-example.uc > input.json | ||||
| mkdir -p docs | ||||
| which generate-schema-doc > /dev/null | ||||
|   | ||||
| @@ -161,3 +161,69 @@ properties: | ||||
|         type: integer | ||||
|         minimum: 1 | ||||
|         maximum: 4094 | ||||
|   trunk-group: | ||||
|     description: Associates this port to a trunk or a port-channel. | ||||
|     type: integer | ||||
|     minimum: 1 | ||||
|     maximum: 64 | ||||
|   lacp-config: | ||||
|     description: | ||||
|       This section describes the 802.3ad Link Aggregation Control Protocol (LACP) configuration for the current interface. | ||||
|     type: object | ||||
|     properties: | ||||
|       lacp-enable: | ||||
|         description: | ||||
|           Enables 802.3ad Link Aggregation Control Protocol (LACP) for the current interface. | ||||
|         type: boolean | ||||
|         default: false | ||||
|       lacp-role: | ||||
|         description: | ||||
|           Configures the port LACP role as actor or partner. | ||||
|         type: string | ||||
|         enum: | ||||
|         - actor | ||||
|         - partner | ||||
|         default: actor | ||||
|       lacp-mode: | ||||
|         description: | ||||
|           Configures the LACP negotiation activity mode as active or passive. | ||||
|         type: string | ||||
|         enum: | ||||
|         - active | ||||
|         - passive | ||||
|         default: passive | ||||
|       lacp-port-admin-key: | ||||
|         description: | ||||
|           Configures the port's LACP administration key. | ||||
|         type: integer | ||||
|         minimum: 1 | ||||
|         maximum: 65535 | ||||
|         default: 1 | ||||
|       lacp-port-priority: | ||||
|         description: | ||||
|           Configures the LACP port priority. | ||||
|         type: integer | ||||
|         minimum: 1 | ||||
|         maximum: 65535 | ||||
|         default: 32768 | ||||
|       lacp-system-priority: | ||||
|         description: | ||||
|           Configures the LACP System priority. | ||||
|         type: integer | ||||
|         minimum: 1 | ||||
|         maximum: 65535 | ||||
|         default: 32768 | ||||
|       lacp-pchan-admin-key: | ||||
|         description: | ||||
|           Configures the port channel's LACP administration key (optional). | ||||
|         type: integer | ||||
|         minimum: 1 | ||||
|         maximum: 65535 | ||||
|       lacp-timeout: | ||||
|         description: | ||||
|           Configures the timeout to wait for the next LACP data unit. | ||||
|         type: string | ||||
|         enum: | ||||
|         - short | ||||
|         - long | ||||
|         default: long | ||||
|   | ||||
| @@ -223,3 +223,20 @@ properties: | ||||
|                   type: array | ||||
|                   items: | ||||
|                     type: string | ||||
|   trunk-balance-method: | ||||
|     description: | ||||
|       Sets the load-distribution method among ports in aggregated links for both static and LACP based trunks. | ||||
|     type: string | ||||
|     enum: | ||||
|     - dst-ip | ||||
|     - dst-mac | ||||
|     - src-dst-ip | ||||
|     - src-dst-mac | ||||
|     - src-ip | ||||
|     - src-mac | ||||
|     default: src-dst-mac | ||||
|   jumbo-frames: | ||||
|     description: | ||||
|       Enables Jumbo frames | ||||
|     type: boolean | ||||
|     default: false | ||||
|   | ||||
							
								
								
									
										222
									
								
								schemareader.uc
									
									
									
									
									
								
							
							
						
						
									
										222
									
								
								schemareader.uc
									
									
									
									
									
								
							| @@ -1044,6 +1044,197 @@ function instantiateEthernet(location, value, errors) { | ||||
| 			obj.ieee8021x = parseIeee8021x(location + "/ieee8021x", value["ieee8021x"], errors); | ||||
| 		} | ||||
|  | ||||
| 		function parseLacpConfig(location, value, errors) { | ||||
| 			if (type(value) == "object") { | ||||
| 				let obj = {}; | ||||
|  | ||||
| 				function parseLacpEnable(location, value, errors) { | ||||
| 					if (type(value) != "bool") | ||||
| 						push(errors, [ location, "must be of type boolean" ]); | ||||
|  | ||||
| 					return value; | ||||
| 				} | ||||
|  | ||||
| 				if (exists(value, "lacp-enable")) { | ||||
| 					obj.lacp_enable = parseLacpEnable(location + "/lacp-enable", value["lacp-enable"], errors); | ||||
| 				} | ||||
| 				else { | ||||
| 					obj.lacp_enable = false; | ||||
| 				} | ||||
|  | ||||
| 				function parseLacpRole(location, value, errors) { | ||||
| 					if (type(value) != "string") | ||||
| 						push(errors, [ location, "must be of type string" ]); | ||||
|  | ||||
| 					if (!(value in [ "actor", "partner" ])) | ||||
| 						push(errors, [ location, "must be one of \"actor\" or \"partner\"" ]); | ||||
|  | ||||
| 					return value; | ||||
| 				} | ||||
|  | ||||
| 				if (exists(value, "lacp-role")) { | ||||
| 					obj.lacp_role = parseLacpRole(location + "/lacp-role", value["lacp-role"], errors); | ||||
| 				} | ||||
| 				else { | ||||
| 					obj.lacp_role = "actor"; | ||||
| 				} | ||||
|  | ||||
| 				function parseLacpMode(location, value, errors) { | ||||
| 					if (type(value) != "string") | ||||
| 						push(errors, [ location, "must be of type string" ]); | ||||
|  | ||||
| 					if (!(value in [ "active", "passive" ])) | ||||
| 						push(errors, [ location, "must be one of \"active\" or \"passive\"" ]); | ||||
|  | ||||
| 					return value; | ||||
| 				} | ||||
|  | ||||
| 				if (exists(value, "lacp-mode")) { | ||||
| 					obj.lacp_mode = parseLacpMode(location + "/lacp-mode", value["lacp-mode"], errors); | ||||
| 				} | ||||
| 				else { | ||||
| 					obj.lacp_mode = "passive"; | ||||
| 				} | ||||
|  | ||||
| 				function parseLacpPortAdminKey(location, value, errors) { | ||||
| 					if (type(value) in [ "int", "double" ]) { | ||||
| 						if (value > 65535) | ||||
| 							push(errors, [ location, "must be lower than or equal to 65535" ]); | ||||
|  | ||||
| 						if (value < 1) | ||||
| 							push(errors, [ location, "must be bigger than or equal to 1" ]); | ||||
|  | ||||
| 					} | ||||
|  | ||||
| 					if (type(value) != "int") | ||||
| 						push(errors, [ location, "must be of type integer" ]); | ||||
|  | ||||
| 					return value; | ||||
| 				} | ||||
|  | ||||
| 				if (exists(value, "lacp-port-admin-key")) { | ||||
| 					obj.lacp_port_admin_key = parseLacpPortAdminKey(location + "/lacp-port-admin-key", value["lacp-port-admin-key"], errors); | ||||
| 				} | ||||
| 				else { | ||||
| 					obj.lacp_port_admin_key = 1; | ||||
| 				} | ||||
|  | ||||
| 				function parseLacpPortPriority(location, value, errors) { | ||||
| 					if (type(value) in [ "int", "double" ]) { | ||||
| 						if (value > 65535) | ||||
| 							push(errors, [ location, "must be lower than or equal to 65535" ]); | ||||
|  | ||||
| 						if (value < 1) | ||||
| 							push(errors, [ location, "must be bigger than or equal to 1" ]); | ||||
|  | ||||
| 					} | ||||
|  | ||||
| 					if (type(value) != "int") | ||||
| 						push(errors, [ location, "must be of type integer" ]); | ||||
|  | ||||
| 					return value; | ||||
| 				} | ||||
|  | ||||
| 				if (exists(value, "lacp-port-priority")) { | ||||
| 					obj.lacp_port_priority = parseLacpPortPriority(location + "/lacp-port-priority", value["lacp-port-priority"], errors); | ||||
| 				} | ||||
| 				else { | ||||
| 					obj.lacp_port_priority = 32768; | ||||
| 				} | ||||
|  | ||||
| 				function parseLacpSystemPriority(location, value, errors) { | ||||
| 					if (type(value) in [ "int", "double" ]) { | ||||
| 						if (value > 65535) | ||||
| 							push(errors, [ location, "must be lower than or equal to 65535" ]); | ||||
|  | ||||
| 						if (value < 1) | ||||
| 							push(errors, [ location, "must be bigger than or equal to 1" ]); | ||||
|  | ||||
| 					} | ||||
|  | ||||
| 					if (type(value) != "int") | ||||
| 						push(errors, [ location, "must be of type integer" ]); | ||||
|  | ||||
| 					return value; | ||||
| 				} | ||||
|  | ||||
| 				if (exists(value, "lacp-system-priority")) { | ||||
| 					obj.lacp_system_priority = parseLacpSystemPriority(location + "/lacp-system-priority", value["lacp-system-priority"], errors); | ||||
| 				} | ||||
| 				else { | ||||
| 					obj.lacp_system_priority = 32768; | ||||
| 				} | ||||
|  | ||||
| 				function parseLacpPchanAdminKey(location, value, errors) { | ||||
| 					if (type(value) in [ "int", "double" ]) { | ||||
| 						if (value > 65535) | ||||
| 							push(errors, [ location, "must be lower than or equal to 65535" ]); | ||||
|  | ||||
| 						if (value < 1) | ||||
| 							push(errors, [ location, "must be bigger than or equal to 1" ]); | ||||
|  | ||||
| 					} | ||||
|  | ||||
| 					if (type(value) != "int") | ||||
| 						push(errors, [ location, "must be of type integer" ]); | ||||
|  | ||||
| 					return value; | ||||
| 				} | ||||
|  | ||||
| 				if (exists(value, "lacp-pchan-admin-key")) { | ||||
| 					obj.lacp_pchan_admin_key = parseLacpPchanAdminKey(location + "/lacp-pchan-admin-key", value["lacp-pchan-admin-key"], errors); | ||||
| 				} | ||||
|  | ||||
| 				function parseLacpTimeout(location, value, errors) { | ||||
| 					if (type(value) != "string") | ||||
| 						push(errors, [ location, "must be of type string" ]); | ||||
|  | ||||
| 					if (!(value in [ "short", "long" ])) | ||||
| 						push(errors, [ location, "must be one of \"short\" or \"long\"" ]); | ||||
|  | ||||
| 					return value; | ||||
| 				} | ||||
|  | ||||
| 				if (exists(value, "lacp-timeout")) { | ||||
| 					obj.lacp_timeout = parseLacpTimeout(location + "/lacp-timeout", value["lacp-timeout"], errors); | ||||
| 				} | ||||
| 				else { | ||||
| 					obj.lacp_timeout = "long"; | ||||
| 				} | ||||
|  | ||||
| 				return obj; | ||||
| 			} | ||||
|  | ||||
| 			if (type(value) != "object") | ||||
| 				push(errors, [ location, "must be of type object" ]); | ||||
|  | ||||
| 			return value; | ||||
| 		} | ||||
|  | ||||
| 		if (exists(value, "lacp-config")) { | ||||
| 			obj.lacp_config = parseLacpConfig(location + "/lacp-config", value["lacp-config"], errors); | ||||
| 		} | ||||
|  | ||||
| 		function parseTrunkGroup(location, value, errors) { | ||||
| 			if (type(value) in [ "int", "double" ]) { | ||||
| 				if (value > 64) | ||||
| 					push(errors, [ location, "must be lower than or equal to 64" ]); | ||||
|  | ||||
| 				if (value < 1) | ||||
| 					push(errors, [ location, "must be bigger than or equal to 1" ]); | ||||
|  | ||||
| 			} | ||||
|  | ||||
| 			if (type(value) != "int") | ||||
| 				push(errors, [ location, "must be of type integer" ]); | ||||
|  | ||||
| 			return value; | ||||
| 		} | ||||
|  | ||||
| 		if (exists(value, "trunk-group")) { | ||||
| 			obj.trunk_group = parseTrunkGroup(location + "/trunk-group", value["trunk-group"], errors); | ||||
| 		} | ||||
|  | ||||
| 		return obj; | ||||
| 	} | ||||
|  | ||||
| @@ -1678,6 +1869,37 @@ function instantiateSwitch(location, value, errors) { | ||||
| 			obj.port_isolation = parsePortIsolation(location + "/port-isolation", value["port-isolation"], errors); | ||||
| 		} | ||||
|  | ||||
| 		function parseJumboFrames(location, value, errors) { | ||||
| 			if (type(value) != "bool") | ||||
| 				push(errors, [ location, "must be of type boolean" ]); | ||||
|  | ||||
| 			return value; | ||||
| 		} | ||||
|  | ||||
| 		if (exists(value, "jumbo-frames")) { | ||||
| 			obj.jumbo_frames = parseJumboFrames(location + "/jumbo-frames", value["jumbo-frames"], errors); | ||||
| 		} | ||||
| 		else { | ||||
| 			obj.jumbo_frames = false; | ||||
| 		} | ||||
|  | ||||
| 		function parseTrunkBalanceMethod(location, value, errors) { | ||||
| 			if (type(value) != "string") | ||||
| 				push(errors, [ location, "must be of type string" ]); | ||||
|  | ||||
| 			if (!(value in [ "dst-ip", "dst-mac", "src-dst-ip", "src-dst-mac", "src-ip", "src-mac" ])) | ||||
| 				push(errors, [ location, "must be one of \"dst-ip\", \"dst-mac\", \"src-dst-ip\", \"src-dst-mac\", \"src-ip\" or \"src-mac\"" ]); | ||||
|  | ||||
| 			return value; | ||||
| 		} | ||||
|  | ||||
| 		if (exists(value, "trunk-balance-method")) { | ||||
| 			obj.trunk_balance_method = parseTrunkBalanceMethod(location + "/trunk-balance-method", value["trunk-balance-method"], errors); | ||||
| 		} | ||||
| 		else { | ||||
| 			obj.trunk_balance_method = "src-dst-mac"; | ||||
| 		} | ||||
|  | ||||
| 		return obj; | ||||
| 	} | ||||
|  | ||||
|   | ||||
| @@ -38,6 +38,8 @@ items: | ||||
|       $ref: "https://ucentral.io/state/v1/interface/clients/" | ||||
|     counters: | ||||
|       $ref: "https://ucentral.io/state/v1/interface/counter/" | ||||
|     delta_counters: | ||||
|       $ref: "https://ucentral.io/state/v1/interface/counter/" | ||||
|     mesh-path: | ||||
|       $ref: "https://ucentral.io/state/v1/interface/mesh-path/" | ||||
|     ssids: | ||||
|   | ||||
							
								
								
									
										67
									
								
								state/lacp-trunks.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								state/lacp-trunks.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,67 @@ | ||||
| type: array | ||||
| items: | ||||
|   type: object | ||||
|   description: | ||||
|     List of dynamically created trunks. | ||||
|   properties: | ||||
|     trunk-identifier: | ||||
|       type: integer | ||||
|       description: | ||||
|         Logical identifier for the trunk.  | ||||
|       minimum: 1 | ||||
|       maximum: 64 | ||||
|     member-port: | ||||
|       type: string | ||||
|       description: List of member ports under this trunk. | ||||
|     system-priority: | ||||
|       type: number | ||||
|       description: | ||||
|         LACP System priority. | ||||
|     port-priority: | ||||
|       type: number | ||||
|       description: | ||||
|         LACP port priority. | ||||
|     port-state: | ||||
|       type: string | ||||
|       description: | ||||
|         Port state. | ||||
|     lacpdu-sent: | ||||
|       type: number | ||||
|       description: | ||||
|         Number of LACP Data Units (PDUs) sent. | ||||
|     lacpdu-recv: | ||||
|       type: number | ||||
|       description: | ||||
|         Number of LACP Data Units (PDUs) received. | ||||
|     markerpdu-sent: | ||||
|       type: number | ||||
|       description: | ||||
|         Number of Marker PDUs sent. | ||||
|     markerpdu-recv: | ||||
|       type: number | ||||
|       description: | ||||
|         Number of Marker PDUs received. | ||||
|     unknownpkt-recv: | ||||
|       type: number | ||||
|       description: | ||||
|         Number of unknown packets received. | ||||
|     illegalpkt-recv: | ||||
|       type: number | ||||
|       description: | ||||
|         Number of illegal packets received. | ||||
|     port-oper-key: | ||||
|       type: number | ||||
|       description: | ||||
|         Operational key for the port. | ||||
|     partner-oper-key: | ||||
|       type: number | ||||
|       description: | ||||
|         Operational key for the partner. | ||||
|     oper-state: | ||||
|       type: string | ||||
|       description: | ||||
|         Operational state. | ||||
|     partner-oper-state: | ||||
|       type: string | ||||
|       description: | ||||
|         Operational state of the partner. | ||||
| @@ -19,6 +19,8 @@ properties: | ||||
|     - half | ||||
|   counters: | ||||
|     $ref: "https://ucentral.io/state/v1/interface/counter/" | ||||
|   delta_counters: | ||||
|     $ref: "https://ucentral.io/state/v1/interface/counter/" | ||||
|   poe: | ||||
|     description: | ||||
|       This section describes the ethernet poe-port link-state object (statistics + PD info). | ||||
|   | ||||
| @@ -54,3 +54,7 @@ properties: | ||||
|             $ref: "https://ucentral.io/state/v1/link-state/" | ||||
|   mac-address-list: | ||||
|     $ref: "https://ucentral.io/state/v1/mac-address-list/" | ||||
|   static-trunks: | ||||
|     $ref: "https://ucentral.io/state/v1/static-trunks/" | ||||
|   lacp-trunks: | ||||
|     $ref: "https://ucentral.io/state/v1/lacp-trunks/" | ||||
|   | ||||
							
								
								
									
										18
									
								
								state/static-trunks.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								state/static-trunks.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| type: array | ||||
| items: | ||||
|   type: object | ||||
|   description: | ||||
|     List of statically created trunks. | ||||
|   properties: | ||||
|     trunk-identifier: | ||||
|       type: integer | ||||
|       description: | ||||
|         Logical identifier for the trunk. | ||||
|       minimum: 1 | ||||
|       maximum: 64 | ||||
|     member-ports: | ||||
|       type: array | ||||
|       description: | ||||
|         List of member ports under this static trunk. | ||||
|       items: | ||||
|         type: string | ||||
							
								
								
									
										231
									
								
								ucentral.capabilities.pretty.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										231
									
								
								ucentral.capabilities.pretty.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,231 @@ | ||||
| { | ||||
|     "description": "uCentral protocol (OpenLan) device and features capabilities schema", | ||||
|     "type": "object", | ||||
|     "properties": { | ||||
|         "serial": { | ||||
|             "type": "string", | ||||
|             "examples": [ | ||||
|                 "aabbccddeeff" | ||||
|             ] | ||||
|         }, | ||||
|         "firmware": { | ||||
|             "type": "string", | ||||
|             "description": "Platform revision", | ||||
|             "examples": [ | ||||
|                 "Rel 1.6 build 5" | ||||
|             ] | ||||
|         }, | ||||
|         "platform": { | ||||
|             "type": "string", | ||||
|             "enum": [ | ||||
|                 "Switch", | ||||
|                 "AP" | ||||
|             ] | ||||
|         }, | ||||
|         "model": { | ||||
|             "type": "string", | ||||
|             "description": "Device model" | ||||
|         }, | ||||
|         "hw-sku": { | ||||
|             "type": "string", | ||||
|             "description": "Stock keeping unit" | ||||
|         }, | ||||
|         "compatible": { | ||||
|             "type": "string", | ||||
|             "description": "Compatibility string, that defines the family of the device" | ||||
|         }, | ||||
|         "base-mac": { | ||||
|             "type": "string", | ||||
|             "description": "Switch MAC address", | ||||
|             "format": "uc-mac", | ||||
|             "examples": [ | ||||
|                 "aa:bb:cc:dd:ee:ff" | ||||
|             ] | ||||
|         }, | ||||
|         "port-list": { | ||||
|             "type": "array", | ||||
|             "description": "The list of physical network devices", | ||||
|             "items": { | ||||
|                 "type": "object", | ||||
|                 "properties": { | ||||
|                     "name": { | ||||
|                         "type": "string", | ||||
|                         "description": "The logical name of the port that is used by the OS", | ||||
|                         "examples": [ | ||||
|                             "Ethernet0", | ||||
|                             "Ethernet1", | ||||
|                             "Ethernet76" | ||||
|                         ] | ||||
|                     }, | ||||
|                     "front-panel-number": { | ||||
|                         "type": "integer", | ||||
|                         "description": "The identification number of the port as can be seen on the front-panel of the device" | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         }, | ||||
|         "port-capabilities": { | ||||
|             "type": "object", | ||||
|             "description": "Description of physical ports and their form-factors", | ||||
|             "properties": { | ||||
|                 "form-factors": { | ||||
|                     "type": "array", | ||||
|                     "items": { | ||||
|                         "type": "string", | ||||
|                         "enum": [ | ||||
|                             "RJ45", | ||||
|                             "SFP", | ||||
|                             "SFP+", | ||||
|                             "SFP28", | ||||
|                             "SFP-DD", | ||||
|                             "QSFP", | ||||
|                             "QSFP+", | ||||
|                             "QSFP28", | ||||
|                             "QSFP-DD" | ||||
|                         ] | ||||
|                     } | ||||
|                 }, | ||||
|                 "ports-list": { | ||||
|                     "type": "array", | ||||
|                     "items": { | ||||
|                         "type": "object", | ||||
|                         "properties": { | ||||
|                             "type": { | ||||
|                                 "type": "string", | ||||
|                                 "examples": [ | ||||
|                                     "RJ45" | ||||
|                                 ] | ||||
|                             }, | ||||
|                             "ports": { | ||||
|                                 "type": "array", | ||||
|                                 "items": { | ||||
|                                     "type": "string", | ||||
|                                     "examples": [ | ||||
|                                         "Ethernet1" | ||||
|                                     ] | ||||
|                                 } | ||||
|                             } | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         }, | ||||
|         "poe-capabilities": { | ||||
|             "type": "object", | ||||
|             "description": "Description of physical ports and their PoE capabilities", | ||||
|             "properties": { | ||||
|                 "supported-standards": { | ||||
|                     "type": "array", | ||||
|                     "items": { | ||||
|                         "type": "string", | ||||
|                         "enum": [ | ||||
|                             ".3AF-POE", | ||||
|                             ".3AT-POE+", | ||||
|                             ".3BT-PoE++", | ||||
|                             "PreStandard-Passive" | ||||
|                         ] | ||||
|                     } | ||||
|                 }, | ||||
|                 "power-budget": { | ||||
|                     "type": "integer", | ||||
|                     "examples": [ | ||||
|                         2000 | ||||
|                     ] | ||||
|                 }, | ||||
|                 "poe-ports": { | ||||
|                     "type": "array", | ||||
|                     "items": { | ||||
|                         "type": "object", | ||||
|                         "properties": { | ||||
|                             "type": { | ||||
|                                 "type": "string", | ||||
|                                 "examples": [ | ||||
|                                     ".3AF-POE" | ||||
|                                 ] | ||||
|                             }, | ||||
|                             "budget-capacity": { | ||||
|                                 "type": "integer" | ||||
|                             }, | ||||
|                             "ports": { | ||||
|                                 "type": "array", | ||||
|                                 "items": { | ||||
|                                     "type": "string", | ||||
|                                     "examples": [ | ||||
|                                         "Ethernet1" | ||||
|                                     ] | ||||
|                                 } | ||||
|                             } | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         }, | ||||
|         "supported-features": { | ||||
|             "type": "array", | ||||
|             "description": "List of all features supported by the device", | ||||
|             "items": { | ||||
|                 "type": "string", | ||||
|                 "enum": [ | ||||
|                     "VLAN", | ||||
|                     "Port-Isolation", | ||||
|                     "Spanning-Tree", | ||||
|                     "Spanning-Tree-Rapid", | ||||
|                     "Spanning-Tree-Per-VLAN", | ||||
|                     "Spanning-Tree-Per-VLAN-Rapid", | ||||
|                     "Spanning-Tree-MSTP", | ||||
|                     "SVI-StaticIPv4", | ||||
|                     "SVI-StaticIPv6", | ||||
|                     "Interface-StaticIPv4", | ||||
|                     "Interface-StaticIPv6", | ||||
|                     "Routing-VRF", | ||||
|                     "Routing-IPv4-Route-Blackhole", | ||||
|                     "Routing-IPv4-Route-Unreachable", | ||||
|                     "Routing-IPv4-Nexthop", | ||||
|                     "Routing-IPv4-Broadcast", | ||||
|                     "Routing-IPv4-Multicast-IGMP-Snooping", | ||||
|                     "Routing-IPv4-Multicast-IGMP-Querier", | ||||
|                     "Routing-IPv4-Multicast-IGMP-Static", | ||||
|                     "Routing-IPv4-DHCP-Server", | ||||
|                     "Routing-IPv4-DHCP-Relay", | ||||
|                     "Routing-IPv4-DHCP-Snooping", | ||||
|                     "Routing-IPv4-Port-Forward", | ||||
|                     "Routing-IPv6-DHCP-Relay", | ||||
|                     "Routing-IPv6-DHCP-Stateful", | ||||
|                     "Routing-IPv6-DHCP-Stateless", | ||||
|                     "Routing-IPv6-Port-Forward", | ||||
|                     "PoE-Reset", | ||||
|                     "Port-Access-Control", | ||||
|                     "PAC-Dynamic-Auth", | ||||
|                     "System-PasswordChange", | ||||
|                     "System-SwUpdate", | ||||
|                     "System-SwUpdate-Partial", | ||||
|                     "Port-Mirroring", | ||||
|                     "Service-SSH", | ||||
|                     "Service-RSSH", | ||||
|                     "Service-Telnet", | ||||
|                     "Service-LLDP", | ||||
|                     "Service-HTTP", | ||||
|                     "Service-HTTPS", | ||||
|                     "Service-GPS", | ||||
|                     "Service-IGMP", | ||||
|                     "Service-NTP", | ||||
|                     "Service-MDNS", | ||||
|                     "Service-QoS", | ||||
|                     "Service-Syslog", | ||||
|                     "Service-PAC", | ||||
|                     "Service-Wireguard-Overlay", | ||||
|                     "Service-Radius-Proxy", | ||||
|                     "Service-Online-Check", | ||||
|                     "Service-CaptivePortal", | ||||
|                     "Service-PublicIpCheck", | ||||
|                     "Tunneling-VxLAN", | ||||
|                     "Tunneling-GRE", | ||||
|                     "Tunneling-GRE6", | ||||
|                     "Tunneling-L2TP", | ||||
|                     "Tunneling-Mesh" | ||||
|                 ] | ||||
|             } | ||||
|         } | ||||
|     }, | ||||
|     "$defs": {} | ||||
| } | ||||
| @@ -685,6 +685,77 @@ | ||||
|                                 "maximum": 4094 | ||||
|                             } | ||||
|                         } | ||||
|                     }, | ||||
|                     "trunk-group": { | ||||
|                         "description": "Associates this port to a trunk or a port-channel.", | ||||
|                         "type": "integer", | ||||
|                         "minimum": 1, | ||||
|                         "maximum": 64 | ||||
|                     }, | ||||
|                     "lacp-config": { | ||||
|                         "description": "This section describes the 802.3ad Link Aggregation Control Protocol (LACP) configuration for the current interface.", | ||||
|                         "type": "object", | ||||
|                         "properties": { | ||||
|                             "lacp-enable": { | ||||
|                                 "description": "Enables 802.3ad Link Aggregation Control Protocol (LACP) for the current interface.", | ||||
|                                 "type": "boolean", | ||||
|                                 "default": false | ||||
|                             }, | ||||
|                             "lacp-role": { | ||||
|                                 "description": "Configures the port LACP role as actor or partner.", | ||||
|                                 "type": "string", | ||||
|                                 "enum": [ | ||||
|                                     "actor", | ||||
|                                     "partner" | ||||
|                                 ], | ||||
|                                 "default": "actor" | ||||
|                             }, | ||||
|                             "lacp-mode": { | ||||
|                                 "description": "Configures the LACP negotiation activity mode as active or passive.", | ||||
|                                 "type": "string", | ||||
|                                 "enum": [ | ||||
|                                     "active", | ||||
|                                     "passive" | ||||
|                                 ], | ||||
|                                 "default": "passive" | ||||
|                             }, | ||||
|                             "lacp-port-admin-key": { | ||||
|                                 "description": "Configures the port's LACP administration key.", | ||||
|                                 "type": "integer", | ||||
|                                 "minimum": 1, | ||||
|                                 "maximum": 65535, | ||||
|                                 "default": 1 | ||||
|                             }, | ||||
|                             "lacp-port-priority": { | ||||
|                                 "description": "Configures the LACP port priority.", | ||||
|                                 "type": "integer", | ||||
|                                 "minimum": 1, | ||||
|                                 "maximum": 65535, | ||||
|                                 "default": 32768 | ||||
|                             }, | ||||
|                             "lacp-system-priority": { | ||||
|                                 "description": "Configures the LACP System priority.", | ||||
|                                 "type": "integer", | ||||
|                                 "minimum": 1, | ||||
|                                 "maximum": 65535, | ||||
|                                 "default": 32768 | ||||
|                             }, | ||||
|                             "lacp-pchan-admin-key": { | ||||
|                                 "description": "Configures the port channel's LACP administration key (optional).", | ||||
|                                 "type": "integer", | ||||
|                                 "minimum": 1, | ||||
|                                 "maximum": 65535 | ||||
|                             }, | ||||
|                             "lacp-timeout": { | ||||
|                                 "description": "Configures the timeout to wait for the next LACP data unit.", | ||||
|                                 "type": "string", | ||||
|                                 "enum": [ | ||||
|                                     "short", | ||||
|                                     "long" | ||||
|                                 ], | ||||
|                                 "default": "long" | ||||
|                             } | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
| @@ -925,6 +996,23 @@ | ||||
|                             } | ||||
|                         } | ||||
|                     } | ||||
|                 }, | ||||
|                 "trunk-balance-method": { | ||||
|                     "description": "Sets the load-distribution method among ports in aggregated links for both static and LACP based trunks.", | ||||
|                     "type": "string", | ||||
|                     "enum": [ | ||||
|                         "dst-ip", | ||||
|                         "dst-mac", | ||||
|                         "src-dst-ip", | ||||
|                         "src-dst-mac", | ||||
|                         "src-ip", | ||||
|                         "src-mac" | ||||
|                     ], | ||||
|                     "default": "src-dst-mac" | ||||
|                 "jumbo-frames": { | ||||
|                     "description": "Enables Jumbo frames", | ||||
|                     "type": "boolean", | ||||
|                     "default": false | ||||
|                 } | ||||
|             } | ||||
|         }, | ||||
|   | ||||
| @@ -477,6 +477,67 @@ | ||||
|                             "maximum": 4094 | ||||
|                         } | ||||
|                     } | ||||
|                 }, | ||||
|                 "trunk-group": { | ||||
|                     "type": "integer", | ||||
|                     "minimum": 1, | ||||
|                     "maximum": 64 | ||||
|                 }, | ||||
|                 "lacp-config": { | ||||
|                     "type": "object", | ||||
|                     "properties": { | ||||
|                         "lacp-enable": { | ||||
|                             "type": "boolean", | ||||
|                             "default": false | ||||
|                         }, | ||||
|                         "lacp-role": { | ||||
|                             "type": "string", | ||||
|                             "enum": [ | ||||
|                                 "actor", | ||||
|                                 "partner" | ||||
|                             ], | ||||
|                             "default": "actor" | ||||
|                         }, | ||||
|                         "lacp-mode": { | ||||
|                             "type": "string", | ||||
|                             "enum": [ | ||||
|                                 "active", | ||||
|                                 "passive" | ||||
|                             ], | ||||
|                             "default": "passive" | ||||
|                         }, | ||||
|                         "lacp-port-admin-key": { | ||||
|                             "type": "integer", | ||||
|                             "minimum": 1, | ||||
|                             "maximum": 65535, | ||||
|                             "default": 1 | ||||
|                         }, | ||||
|                         "lacp-port-priority": { | ||||
|                             "type": "integer", | ||||
|                             "minimum": 1, | ||||
|                             "maximum": 65535, | ||||
|                             "default": 32768 | ||||
|                         }, | ||||
|                         "lacp-system-priority": { | ||||
|                             "type": "integer", | ||||
|                             "minimum": 1, | ||||
|                             "maximum": 65535, | ||||
|                             "default": 32768 | ||||
|                         }, | ||||
|                         "lacp-pchan-admin-key": { | ||||
|                             "type": "integer", | ||||
|                             "minimum": 1, | ||||
|                             "maximum": 65535 | ||||
|                         }, | ||||
|                         "lacp-timeout": { | ||||
|                             "type": "string", | ||||
|                             "enum": [ | ||||
|                                 "short", | ||||
|                                 "long" | ||||
|                             ], | ||||
|                             "default": "long" | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         }, | ||||
| @@ -678,6 +739,22 @@ | ||||
|                             } | ||||
|                         } | ||||
|                     } | ||||
|                 }, | ||||
|                 "trunk-balance-method": { | ||||
|                     "type": "string", | ||||
|                     "enum": [ | ||||
|                         "dst-ip", | ||||
|                         "dst-mac", | ||||
|                         "src-dst-ip", | ||||
|                         "src-dst-mac", | ||||
|                         "src-ip", | ||||
|                         "src-mac" | ||||
|                     ], | ||||
|                     "default": "src-dst-mac" | ||||
|                 }, | ||||
|                 "jumbo-frames": { | ||||
|                     "type": "boolean", | ||||
|                     "default": false | ||||
|                 } | ||||
|             } | ||||
|         }, | ||||
|   | ||||
| @@ -537,6 +537,77 @@ | ||||
|                             "maximum": 4094 | ||||
|                         } | ||||
|                     } | ||||
|                 }, | ||||
|                 "trunk-group": { | ||||
|                     "description": "Associates this port to a trunk or a port-channel.", | ||||
|                     "type": "integer", | ||||
|                     "minimum": 1, | ||||
|                     "maximum": 64 | ||||
|                 }, | ||||
|                 "lacp-config": { | ||||
|                     "description": "This section describes the 802.3ad Link Aggregation Control Protocol (LACP) configuration for the current interface.", | ||||
|                     "type": "object", | ||||
|                     "properties": { | ||||
|                         "lacp-enable": { | ||||
|                             "description": "Enables 802.3ad Link Aggregation Control Protocol (LACP) for the current interface.", | ||||
|                             "type": "boolean", | ||||
|                             "default": false | ||||
|                         }, | ||||
|                         "lacp-role": { | ||||
|                             "description": "Configures the port LACP role as actor or partner.", | ||||
|                             "type": "string", | ||||
|                             "enum": [ | ||||
|                                 "actor", | ||||
|                                 "partner" | ||||
|                             ], | ||||
|                             "default": "actor" | ||||
|                         }, | ||||
|                         "lacp-mode": { | ||||
|                             "description": "Configures the LACP negotiation activity mode as active or passive.", | ||||
|                             "type": "string", | ||||
|                             "enum": [ | ||||
|                                 "active", | ||||
|                                 "passive" | ||||
|                             ], | ||||
|                             "default": "passive" | ||||
|                         }, | ||||
|                         "lacp-port-admin-key": { | ||||
|                             "description": "Configures the port's LACP administration key.", | ||||
|                             "type": "integer", | ||||
|                             "minimum": 1, | ||||
|                             "maximum": 65535, | ||||
|                             "default": 1 | ||||
|                         }, | ||||
|                         "lacp-port-priority": { | ||||
|                             "description": "Configures the LACP port priority.", | ||||
|                             "type": "integer", | ||||
|                             "minimum": 1, | ||||
|                             "maximum": 65535, | ||||
|                             "default": 32768 | ||||
|                         }, | ||||
|                         "lacp-system-priority": { | ||||
|                             "description": "Configures the LACP System priority.", | ||||
|                             "type": "integer", | ||||
|                             "minimum": 1, | ||||
|                             "maximum": 65535, | ||||
|                             "default": 32768 | ||||
|                         }, | ||||
|                         "lacp-pchan-admin-key": { | ||||
|                             "description": "Configures the port channel's LACP administration key (optional).", | ||||
|                             "type": "integer", | ||||
|                             "minimum": 1, | ||||
|                             "maximum": 65535 | ||||
|                         }, | ||||
|                         "lacp-timeout": { | ||||
|                             "description": "Configures the timeout to wait for the next LACP data unit.", | ||||
|                             "type": "string", | ||||
|                             "enum": [ | ||||
|                                 "short", | ||||
|                                 "long" | ||||
|                             ], | ||||
|                             "default": "long" | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         }, | ||||
| @@ -776,6 +847,24 @@ | ||||
|                             } | ||||
|                         } | ||||
|                     } | ||||
|                 }, | ||||
|                 "trunk-balance-method": { | ||||
|                     "description": "Sets the load-distribution method among ports in aggregated links for both static and LACP based trunks.", | ||||
|                     "type": "string", | ||||
|                     "enum": [ | ||||
|                         "dst-ip", | ||||
|                         "dst-mac", | ||||
|                         "src-dst-ip", | ||||
|                         "src-dst-mac", | ||||
|                         "src-ip", | ||||
|                         "src-mac" | ||||
|                     ], | ||||
|                     "default": "src-dst-mac" | ||||
|                 }, | ||||
|                 "jumbo-frames": { | ||||
|                     "description": "Enables Jumbo frames", | ||||
|                     "type": "boolean", | ||||
|                     "default": false | ||||
|                 } | ||||
|             } | ||||
|         }, | ||||
|   | ||||
| @@ -78,6 +78,12 @@ | ||||
|         }, | ||||
|         "mac-address-list": { | ||||
|             "$ref": "#/$defs/mac-address-list" | ||||
|         }, | ||||
|         "static-trunks": { | ||||
|             "$ref": "#/$defs/static-trunks" | ||||
|         }, | ||||
|         "lacp-trunks": { | ||||
|             "$ref": "#/$defs/lacp-trunks" | ||||
|         } | ||||
|     }, | ||||
|     "$defs": { | ||||
| @@ -759,6 +765,9 @@ | ||||
|                     "counters": { | ||||
|                         "$ref": "#/$defs/interface.counter" | ||||
|                     }, | ||||
|                     "delta_counters": { | ||||
|                         "$ref": "#/$defs/interface.counter" | ||||
|                     }, | ||||
|                     "mesh-path": { | ||||
|                         "$ref": "#/$defs/interface.mesh-path" | ||||
|                     }, | ||||
| @@ -887,6 +896,9 @@ | ||||
|                 "counters": { | ||||
|                     "$ref": "#/$defs/interface.counter" | ||||
|                 }, | ||||
|                 "delta_counters": { | ||||
|                     "$ref": "#/$defs/interface.counter" | ||||
|                 }, | ||||
|                 "poe": { | ||||
|                     "description": "This section describes the ethernet poe-port link-state object (statistics + PD info). Present only in case if port has any Power sourcing capabilities.", | ||||
|                     "type": "object", | ||||
| @@ -1092,6 +1104,99 @@ | ||||
|                     } | ||||
|                 } | ||||
|             ] | ||||
|         }, | ||||
|         "static-trunks": { | ||||
|             "type": "array", | ||||
|             "items": { | ||||
|                 "type": "object", | ||||
|                 "description": "List of statically created trunks.", | ||||
|                 "properties": { | ||||
|                     "trunk-identifier": { | ||||
|                         "type": "integer", | ||||
|                         "description": "Logical identifier for the trunk.", | ||||
|                         "minimum": 1, | ||||
|                         "maximum": 64 | ||||
|                     }, | ||||
|                     "member-ports": { | ||||
|                         "type": "array", | ||||
|                         "description": "List of member ports under this static trunk.", | ||||
|                         "items": { | ||||
|                             "type": "string" | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         }, | ||||
|         "lacp-trunks": { | ||||
|             "type": "array", | ||||
|             "items": { | ||||
|                 "type": "object", | ||||
|                 "description": "List of dynamically created trunks.", | ||||
|                 "properties": { | ||||
|                     "trunk-identifier": { | ||||
|                         "type": "integer", | ||||
|                         "description": "Logical identifier for the trunk.", | ||||
|                         "minimum": 1, | ||||
|                         "maximum": 64 | ||||
|                     }, | ||||
|                     "member-port": { | ||||
|                         "type": "string", | ||||
|                         "description": "List of member ports under this trunk." | ||||
|                     }, | ||||
|                     "system-priority": { | ||||
|                         "type": "number", | ||||
|                         "description": "LACP System priority." | ||||
|                     }, | ||||
|                     "port-priority": { | ||||
|                         "type": "number", | ||||
|                         "description": "LACP port priority." | ||||
|                     }, | ||||
|                     "port-state": { | ||||
|                         "type": "string", | ||||
|                         "description": "Port state." | ||||
|                     }, | ||||
|                     "lacpdu-sent": { | ||||
|                         "type": "number", | ||||
|                         "description": "Number of LACP Data Units (PDUs) sent." | ||||
|                     }, | ||||
|                     "lacpdu-recv": { | ||||
|                         "type": "number", | ||||
|                         "description": "Number of LACP Data Units (PDUs) received." | ||||
|                     }, | ||||
|                     "markerpdu-sent": { | ||||
|                         "type": "number", | ||||
|                         "description": "Number of Marker PDUs sent." | ||||
|                     }, | ||||
|                     "markerpdu-recv": { | ||||
|                         "type": "number", | ||||
|                         "description": "Number of Marker PDUs received." | ||||
|                     }, | ||||
|                     "unknownpkt-recv": { | ||||
|                         "type": "number", | ||||
|                         "description": "Number of unknown packets received." | ||||
|                     }, | ||||
|                     "illegalpkt-recv": { | ||||
|                         "type": "number", | ||||
|                         "description": "Number of illegal packets received." | ||||
|                     }, | ||||
|                     "port-oper-key": { | ||||
|                         "type": "number", | ||||
|                         "description": "Operational key for the port." | ||||
|                     }, | ||||
|                     "partner-oper-key": { | ||||
|                         "type": "number", | ||||
|                         "description": "Operational key for the partner." | ||||
|                     }, | ||||
|                     "oper-state": { | ||||
|                         "type": "string", | ||||
|                         "description": "Operational state." | ||||
|                     }, | ||||
|                     "partner-oper-state": { | ||||
|                         "type": "string", | ||||
|                         "description": "Operational state of the partner." | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user