Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The integration team recommends to build your xApp descriptor schema by extending the minimal schema skeleton file.  

View file
nameschema.json
height250

Structure

The schema file includes the following required sections.

  • xapp_name: xapp_name is a string variable. properties are as follows.

    Code Block
        		"xapp_name": {
        			"$id": "#/properties/xapp_name",
        			"type": "string",
        			"title": "The xApp Name",
        			"default": "xapp",
        			"examples": [
        				"example_xapp"	
        			]
        		},


  • version: version is a string variable that follows the semantic versioning syntax.

    Code Block
        		"version": {
        			"$id": "#/properties/version",
        			"type": "string",
        			"title": "The xApp version",
        			"default": "1.0.0",
        			"examples": [
        				"1.0.0"	
        			],
        			"pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$"
        		},


  • containers: containers is a list of container objects that includes name of the container, container image name, registry, tag, entry command  and container http and rmr service portsand entry command . It has a structure of

    Code Block
    "containers": [
        {
            "name": "example_container_1",
            "image": {
                "registry": "example_image_registry_1",
                "name": "example_image_name_1",
                "tag": "example_image_tag_1"
            },
            "command": "example_command_1",
    		"ports":{
    			"http": 8080,
    			"rmr_data": 4560,
    			"rmr_route": 4561
    		}
        },
        {
            "name": "example_container_2",
            "image": {
                "registry": "example_image_registry_2",
                "name": "example_image_name_2",
                "tag": "example_image_tag_2"
            },
            "command": "example_command_2",
    		"ports":{}
    ]

    The following schema defines the above structure 

    Code Block
    		"containers": {
    			"$id": "#/properties/containers",
    			"httptype": 8080"array",
    			"rmr_datatitle": 4560 "The Container Schema",
    			"rmr_routeitems": 4561{
    		}
        }
    ]

    The following schema defines the above structure

    Code Block
        		"containers":{
            		"$id": "		"$id": "#/properties/containers/items",
            				"type": "arrayobject",
            				"title": "The Container Items Schema",
            		"items				"required": [
    					"name",
    					"image"
    				],
    				"properties": {
    					"name": {
                						"$id": "#/properties/containers/items/properties/name",
                						"type": "objectstring",
                						"title": "The xApp Container Items SchemaName",
                						"requireddefault": [
                "xapp",
    						"nameexamples",
                			"image",
                : [
    							"portsxapp",
                
    				"command"
                		],
    					"properties":{},
    						"nameimage": {
        						"$id": "#/properties/containers/items/properties/nameimage",
        						"type": "stringobject",
        						"title": "The xApp Container NameImage",
        						"defaultrequired": "xapp",
        [
    							"examplesregistry": [
        ,
    							"xappname",
    	
        						]
        "tag"
    						}],
        						"imageproperties": {
        							"$idregistry": {
    								"$id": "#/properties/containers/items/properties/image/properties/registry",
                								"type": "objectstring",
                								"title": "The ContainerxApp Image Registry",
                								"requireddefault": [
                "nexus3.o-ran-sc.org:10002",
    								"registryexamples",
                : [
    									"name",
                nexus3.o-ran-sc.org:10002"
    							"tag"
                				],
    								"propertiespattern": "^[A-Za-z0-9\\.-]{1,}\\.[A-Za-z]{1,}(?:\\:\\d+)?$"
    							},
    	"registry						"name": {
        								"$id": "#/properties/containers/items/properties/image/properties/registryname",
        								"type": "string",
        								"title": "The xApp Image RegistryName",
        								"default": "nexus3.o-ran-sc.org:10002xapp",
        								"examples": [
        									"nexus3.o-ran-sc.org:10002"	
        xapp"
    								]
    							},
        								"pattern": "^[A-Za-z0-9\\.-]{1,}\\.[A-Za-z]{1,}(?:\\:\\d+)?$"
        							},
        							"name": {
        	tag": {
    								"$id": "#/properties/containers/items/properties/image/properties/tag",
    								"type": "string",
    								"title": "The xApp Image Tag",
    								"default": "latest",
    								"examples": [
    									"latest"
    								]
    							}
    						}
    					},
    					"command": {
    						"$id": "#/properties/containers/items/properties/command",
    						"type": "string",
    						"title": "Command To Run The xApp Container",
    						"default": "command",
    						"examples": [
    							"command"
    						]
    					}
    				}
    			}
    		},


  • livenessProbe: livenessProbe defines the k8s liveness probe for the xApp pod. It follows the following schema

    Code Block
            "livenessProbe": {
    	        "$id": "#/properties/livenessprobe",
                "type": "object",
    			"title": "The Liveness Probe Definition",
                "properties": {
                    "exec": {
    					"$id": "#/properties/livenessprobe/exec",
                        "type": "object",
    					"title": "Script of Liveness Probe",
                        "properties": {
                             "command": {
    							 "$id": "#/properties/livenessprobe/exec/command",
                                 "type": "array",
                                 "items": [
                                     {
    	 								"$id": "#/properties/livenessprobe/exec/command/item",
    	 								"type": "string",
    	 								"title": "The Command Item",
    	 								"default": "/bin/sh",
    	 								"examples": [
    	 									"/bin/sh"
    	 								]
                                     }
                                 ]
                             }
                        },
                        "required": [
                            "command"
                        ]
                    },
                    "httpGet": {
    					"$id": "#/properties/livenessprobe/httpget",
                        "type": "object",
    					"title": "Http of Liveness Probe",
                        "properties": {
                             "path": {
    							"$id": "#/properties/livenessprobe/httpget/path",
    							"type": "string",
    							"title": "The Path of Http Liveness Probe",
    							"default": "/health",
    							"examples": [
    								"/health"
    							]
                             },
    						 "port": {
    							"$id": "#/properties/livenessprobe/httpget/port",
    							"type": "integer",
    							"title": "The Port of Http Liveness Probe",
    							"default": 80,
    							"examples": [
    								80
    							]
                             }
                        },
                        "required": [
                            "path",
    				        "port"
                        ]
                    },
                    "initialDelaySeconds": {
                        "$id": "#/properties/livenessprobe/initialdelayseconds",
    					"type": "integer",
    					"title": "Initial Delay of Liveness Probe",
    					"default": 5,
    					"examples": [
    						5
    					]
                    },
                    "periodSeconds": {
                        "$id": "#/properties/livenessprobe/periodseconds",
    					"type": "integer",
    					"title": "Period of Liveness Probe",
    					"default": 15,
    					"examples": [
    						15
    					]
                    }
                },
    		    "oneOf": [
    		      { 
    				  "$id": "#/properties/livenessprobe/oneof/exec",
    				  "required": ["exec", "initialDelaySeconds", "periodSeconds"]
    			  },
    		      { 
    				  "$id": "#/properties/livenessprobe/oneof/httpget",
    				  "required": ["httpGet", "initialDelaySeconds", "periodSeconds"]
    			  }
    		    ]
            },


  • readinessProbe: readinessProbe defines the k8s readiness probe for the xApp pod. It follows the following schema

    Code Block
            "readinessProbe": {
    	        "$id": "#/properties/readinessprobe",
                "type": "object",
    			"title": "The Readiness Probe Definition",
                "properties": {
                    "exec": {
    					"$id": "#/properties/readinessprobe/exec",
                        "type": "object",
    					"title": "Script of Readiness Probe",
                        "properties": {
                             "command": {
    							 "$id": "#/properties/readinessprobe/exec/command",
                                 "type": "array",
                                 "items": [
                                     {
                                         "type": "string"
                                     }
                                 ]
                             }
                        },
                        "required": [
                            "command"
                        ]
                    },
                    "httpGet": {
    					"$id": "#/properties/readinessprobe/httpget",
                        "type": "object",
    					"title": "Http of Readiness Probe",
                        "properties": {
                             "path": {
    							"$id": "#/properties/readinessprobe/httpget/path",
    							"type": "string",
    							"title": "The Path of Http Readiness Probe",
    							"default": "/health",
    							"examples": [
    								"/health"
    							]
                             },
    						 "port": {
    							"$id": "#/properties/readinessprobe/httpget/port",
    							"type": "integer",
    							"title": "The Port of Http Readiness Probe",
    							"default": 80,
    							"examples": [
    								80
    							]
                             }
                        },
                        "required": [
                            "path",
    				        "port"
                        ]
                    },
                    "initialDelaySeconds": {
                        "$id": "#/properties/readinessprobe/initialdelayseconds",
    					"type": "integer",
    					"title": "Initial Delay of Readiness Probe",
    					"default": 5,
    					"examples": [
    						5
    					]
                    },
                    "periodSeconds": {
                        "$id": "#/properties/readinessprobe/periodseconds",
    					"type": "integer",
    					"title": "Period of Readiness Probe",
    					"default": 15,
    					"examples": [
    						15
    					]
                    }
                },
    		    "oneOf": [
    		      { 
    				  "$id": "#/properties/readinessprobe/oneof/exec",
    				  "required": ["exec", "initialDelaySeconds", "periodSeconds"]
    			  },
    		      { 
    				  "$id": "#/properties/readinessprobe/oneof/httpget",
    				  "required": ["httpGet", "initialDelaySeconds", "periodSeconds"]
    			  }
    		    ]
            },	



  • messaging: this schema defines the messaging parameters structure

    Code Block
    	    "messaging": {
    			"type": "object",
    			"$id": "#/properties/messaging",
    			"title": "The Messaging Schema",
    			"properties": {
    				"ports": {
    	  	     	   	"$id": "#/properties/messaging/ports",
    	  				"type": "array",
    	  				"title": "The Ports for Messaging",
    					"items":{
    	  					"$id": "#/properties/messaging/ports/items",
    	  					"type": "object",
    	  					"title": "The Item of Port",
    	  					"required": [
    	  						"name",
    	  						"container",
    	  						"port"
    	  					],
    	  					"properties": {
    							"name": {
    								"$id": "#/properties/messaging/ports/items/name",
    								"type": "string",
    								"title": "The Name of the Port",
    								"default": "App",
    								"examples": [
    									"App"
    								]
    							},
    							"container": {
    								"$id": "#/properties/messaging/ports/items/container",
    								"type": "string",
    								"title": "The Container of the Port",
    								"default": "xapp",
    								"examples": [
    									"xapp"
    								]
    							},
    							"port": {
    								"$id": "#/properties/messaging/ports/items/port",
    								"type": "integer",
    								"title": "The Port Number",
    								"default": 8080,
    								"examples": [
    									8080
    								]
    							}
    					  	}
    					}
    				},
    				"maxSize": {
    					"$id": "#/properties/messaging/maxsize",
    					"type": "integer",
    					"title": "The Maximum RMR Buffer Size",
    					"default": 2072,
    					"examples": [
    						2072
    					]
    				},
    				"numWorkers": {
    					"$id": "#/properties/messaging/numworkers",
    					"type": "integer",
    					"title": "The Number of RMR workers",
    					"default": 1,
    					"examples": [
    						1
    					]
    				},
                    "txMessages": {
    					"$id": "#/properties/messaging/txmessages",
                        "type": "array",
    					"title": "The txMessage Types",
                        "items":{
    						"$id": "#/properties/messaging/txmessages/item",
    						"type": "string",
    						"title": "The txMessage Types Item",
    						"default": "RIC_SUB",
    						"examples": [
    							"RIC_SUB"
    						]
    					}
                    },
                    "rxMessages": {
    					"$id": "#/properties/messaging/rxmessages",
                        "type": "array",
    					"title": "The rxMessage Types",
                        "items":{
    							"$id": "#/properties/containersmessaging/items/properties/image/properties/name",
        	rxmessages/item",
    							"type": "string",
        								"title": "The xApprxMessage ImageTypes NameItem",
        								"default": "xappRIC_SUB",
        								"examples": [
        							"RIC_SUB"
    		"xapp"	
        			]
    					]
    	}
                    },
                							},
        							"tag"policies": {
        								"$id": "#/properties/containers/items/properties/image/properties/tagmessaging/policies",
                       								 "type": "stringarray",
        		
    						"title": "The xAppPolicies Image TagTypes",
          								"default": "latest",
        								"examples": [
        									"latest"	
        "items":{
    								]
        "$id": "#/properties/messaging/policies/item",
    							}"type": "integer",
    							}
        "title": "The Policy Types Item",
    					}	"default": 1,
        						"portsexamples": {
        [
    							1
    							"$id": "#/properties/containers/items/properties/ports",
    ]
    					}
                    }
    				"type": "object"},
                				"titlerequired": [
     "The  Container Ports",
                				"requiredports": [,
    		            	"maxSize",
    				"numWorkers",
    				"httptxMessages",
                					"rmr_datarxMessages",
                					"rmr_routepolicies"
                ]
    				],
    					},


  • Controls: controls is an xApp specify section. xApp developer shall defines the schema for this section to describe the internal xApp parameter structure. it has a basic structure of 
    Code Block
    		"propertiescontrols": {
    								"httptype": {
        	"object",
    							"$id": "#/properties/containers/items/properties/ports/properties/http",
        								"type": "integercontrols",
        								"title": "Http PortThe forControls xAppSchema",
    		},


  • metrics: this schema defines the metrics structure

    Code Block
        								"defaultmetrics": 8080,
        {
    								"examplestype": [
        "array",
    									8080	
        								]
        							},
        							"rmr_data"$id": "#/properties/metrics",
    			"title": "The Metrics Schema",
    			"items": {
        								"$id": "#/properties/containersmetrics/items/properties/ports/properties/rmr_data",
        								"type": "integerobject",
        								"title": "RMR DataThe PortMetrics forItems xAppSchema",
        				"required": [
    					"defaultobjectName": 4560,
        								"examplesobjectInstance": [
        ,
    					"name",
    				4560	
        "type",
    					"description"
    				],
        							},
        		"properties": {
    					"rmr_routeobjectName": {
        								"$id": "#/properties/containersmetrics/items/properties/ports/properties/rmr_routeobjectname",
        								"type": "integerstring",
    						"title": "The Object  Name"
    					},
    					"titleobjectInstance": "RMR Route Port for xApp",
        	{
    						"$id": "#/properties/metrics/items/objectinstance",
    							"defaulttype": 4561"string",
        								"examplestitle": [
    "The Object   Instance"
    					},
    				4561	
        "name": {
    								]
        "$id": "#/properties/metrics/items/name",
    							}"type": "string",
    							}
        "title": "The Object Name"
    					},
        					"commandtype": {
        						"$id": "#/properties/containersmetrics/items/properties/commandtype",
        						"type": "string",
        						"title": "CommandThe To Run The xApp Container",
        Object Type"
    					},
    					"description": {
    						"default$id": "command#/properties/metrics/items/description",
        						"examplestype": [
        "string",
    							"commandtitle"	
    : "The Object  Description"
    						]
        	}
    				}
    					}
            		}
            	}