diff --git a/onos-a1t/README.md b/onos-a1t/README.md new file mode 100644 index 0000000..ad73806 --- /dev/null +++ b/onos-a1t/README.md @@ -0,0 +1,29 @@ + + +# onos-a1t +A1 AP Termination module for ONOS SD-RAN (µONOS Architecture) + +## Overview +The `onos-a1t` is the A1 termination node in the near-RT RIC for A1 interface to communicate the near-RT RIC with the non-RT RIC. +It is the proxy that forwards incoming A1 messages from the non-RT RIC to appropriate xApps or outgoing A1 messages from xApps to the non-RT RIC. +As per the O-RAN Working Group 2 specification, `onos-a1t` should support A1 messages for (i) the policy management, (ii) the enrichment information, and (iii) the machine learning model management. +As of today, since the O-RAN A1 specification only defines the policy management data model, `onos-a1t` only supports the policy management service. + +Regarding O-RAN specifications, `onos-a1t` supports A1 Application Protocol v03.01 and A1 Type Definitions v02.00. + +## Interaction +The `onos-a1t` interacts with at least three nodes: (i) `onos-topo`, (ii) `A1-enabled xApps` and (iii) `non-RT RIC`. +To begin with, `onos-a1t` keeps listening the `onos-topo` to check if there is new `A1-enabled xApps` deployed and if there are `A1-enabled xApps` already running. +Basically, the A1-enabled `xApps` initially stores its A1 interface information, such as supported A1 services (i.e., the policy management, the enrichment information, and the machine learning model management) and A1 interface endpoint (i.e., IP address and port number). +Listening `onos-topo`, `onos-a1t` scrapes the A1 interface information and store it into the `onos-a1t` local store. +With the A1 interface information, `onos-a1t` starts creating the gRPC session with appropriate xApps to communicate with each other. +A gRPC server is the `A1-enabled xApp`, whereas `onos-a1t` acts as the gRPC client (Note that this design is able to support the high availability and reliability by using the replicas for the near future). +In order to communicate with the non-RT RIC, `onos-a1t` has both an HTTP server and an HTTP client. +And of course, the non-RT RIC has to have both the HTTP server and the HTTP client for the bi-directional communication over HTTP. +The HTTP server in `onos-a1t` receives the JSON formatted A1 interface message from the non-RT RIC. +The HTTP client in `onos-a1t` is the client that sends the JSON formatted outgoing A1 interface messages to the non-RT RIC. +The HTTP client and server implementations are auto generated from the OpenAPI definitions provided by the A1 Application Protocol specifications. \ No newline at end of file diff --git a/onos-api/README.md b/onos-api/README.md new file mode 100644 index 0000000..40b325b --- /dev/null +++ b/onos-api/README.md @@ -0,0 +1,49 @@ + + +# onos-api +gRPC API definitions for the µONOS platform + +## Overview +This repository houses not only the `.proto` files, but also a number of automatically generated artifacts, e.g. `.pb.go`, `.py` files and similarly for other languages that may be added in the future. + +The source tree structure is paritioned into `proto`, which contains the canonical protobuf definitions and a top-level directory for each of the supported languages. The structure within each of the language-specific directories reflects the idoms and conventions appropriate to each language. + +## Proto +The top-level package for the protobuf definitions is `onos` and the next level subpackage is the name of the particular platform subsystem, such as `config`, `topo`, etc. This directory tree should contain exclusively the `.proto` files and not be tainted by any other artifacts, especially any language-specific ones. + +The proto files are compiled and processed via `build/bin/compile-protos.sh` script, which is invoked by the `Makefile`. All protofiles here should follow the established guidelines and must pass the protobuf lint checker enforcing these conventions. + +## Golang +The `go` source tree holds the automatically-generated `.pb.go` artifacts and also any manually authored `.go` source files written in support of the Golang bindings. To minimize the churn and to exercise tighter control over versioning, the generated files are also versioned and maintained in the SCM repo. + +The root package of the module is `github.com/onosproject/onos-api/go/onos`, with subpackages being named after each of the platform subsystems, mirroring the structure of the `proto` packages. Golang projects that wish to import µONOS API packages should include the following in the requirements section of their `go.mod` file: + +```go +require ( + ... + github.com/onosproject/onos-api/go v0.6.1 + ... +) + +``` + +Additionally, Go bindings are generated with mocks for testing with [gomock]. Mocks of Protobuf interfaces can be constructed via the same package as the interfaces they mock: + +```go +import topoapi "github.com/onosproject/onos-api/go/onos/topo" +... +mockClient := topoapi.NewMockTopoClient(ctrl) +``` + +## Python + +The `python` source tree holds gRPC bindings are generated for [Python]. Pyhton bindings are generated with the [python-betterproto] protoc plugin and support Python3's `asyncio` framework. + +[gomock]: https://github.com/golang/mock +[Go]: https://golang.org/ +[Protobuf]: https://developers.google.com/protocol-buffers +[Python]: https://www.python.org +[python-betterproto]: https://github.com/danielgtaylor/python-betterproto diff --git a/onos-api/docs/onos/a1t/a1.md b/onos-api/docs/onos/a1t/a1.md new file mode 100644 index 0000000..737df38 --- /dev/null +++ b/onos-api/docs/onos/a1t/a1.md @@ -0,0 +1,201 @@ +# Protocol Documentation + + +## Table of Contents + +- [onos/a1t/admin/admin.proto](#onos_a1t_admin_admin-proto) + - [GetPolicyObjectRequest](#onos-a1t-admin-GetPolicyObjectRequest) + - [GetPolicyObjectResponse](#onos-a1t-admin-GetPolicyObjectResponse) + - [GetPolicyObjectStatusRequest](#onos-a1t-admin-GetPolicyObjectStatusRequest) + - [GetPolicyObjectStatusResponse](#onos-a1t-admin-GetPolicyObjectStatusResponse) + - [GetPolicyTypeObjectRequest](#onos-a1t-admin-GetPolicyTypeObjectRequest) + - [GetPolicyTypeObjectResponse](#onos-a1t-admin-GetPolicyTypeObjectResponse) + - [GetXAppConnectionResponse](#onos-a1t-admin-GetXAppConnectionResponse) + - [GetXAppConnectionsRequest](#onos-a1t-admin-GetXAppConnectionsRequest) + + - [A1TAdminService](#onos-a1t-admin-A1TAdminService) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## onos/a1t/admin/admin.proto + + + + + +### GetPolicyObjectRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| policy_type_id | [string](#string) | | | +| policy_object_id | [string](#string) | | | + + + + + + + + +### GetPolicyObjectResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| policy_type_id | [string](#string) | | | +| policy_object_id | [string](#string) | | | +| policy_object | [string](#string) | | | + + + + + + + + +### GetPolicyObjectStatusRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| policy_type_id | [string](#string) | | | +| policy_object_id | [string](#string) | | | + + + + + + + + +### GetPolicyObjectStatusResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| policy_type_id | [string](#string) | | | +| policy_object_id | [string](#string) | | | +| policy_object_status | [string](#string) | | | + + + + + + + + +### GetPolicyTypeObjectRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| policy_type_id | [string](#string) | | | + + + + + + + + +### GetPolicyTypeObjectResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| policy_type_id | [string](#string) | | | +| policy_ids | [string](#string) | repeated | | +| policy_type_object | [string](#string) | | | + + + + + + + + +### GetXAppConnectionResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| xapp_id | [string](#string) | | | +| supported_a1_service | [string](#string) | | | +| supported_a1_service_type_id | [string](#string) | | | +| xapp_a1_endpoint | [string](#string) | | | + + + + + + + + +### GetXAppConnectionsRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| xapp_id | [string](#string) | | | + + + + + + + + + + + + + + +### A1TAdminService + + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| GetXAppConnections | [GetXAppConnectionsRequest](#onos-a1t-admin-GetXAppConnectionsRequest) | [GetXAppConnectionResponse](#onos-a1t-admin-GetXAppConnectionResponse) stream | GetXAppConnections | +| GetPolicyTypeObject | [GetPolicyTypeObjectRequest](#onos-a1t-admin-GetPolicyTypeObjectRequest) | [GetPolicyTypeObjectResponse](#onos-a1t-admin-GetPolicyTypeObjectResponse) stream | GetPolicyTypeObject | +| GetPolicyObject | [GetPolicyObjectRequest](#onos-a1t-admin-GetPolicyObjectRequest) | [GetPolicyObjectResponse](#onos-a1t-admin-GetPolicyObjectResponse) stream | GetPolicyObject | +| GetPolicyObjectStatus | [GetPolicyObjectStatusRequest](#onos-a1t-admin-GetPolicyObjectStatusRequest) | [GetPolicyObjectStatusResponse](#onos-a1t-admin-GetPolicyObjectStatusResponse) stream | GetPolicyObjectStatus | + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-api/docs/onos/config/admin.md b/onos-api/docs/onos/config/admin.md new file mode 100644 index 0000000..14da166 --- /dev/null +++ b/onos-api/docs/onos/config/admin.md @@ -0,0 +1,690 @@ +# Protocol Documentation + + +## Table of Contents + +- [onos/config/admin/admin.proto](#onos_config_admin_admin-proto) + - [GetConfigurationRequest](#onos-config-admin-GetConfigurationRequest) + - [GetConfigurationResponse](#onos-config-admin-GetConfigurationResponse) + - [GetTransactionRequest](#onos-config-admin-GetTransactionRequest) + - [GetTransactionResponse](#onos-config-admin-GetTransactionResponse) + - [LeafSelectionQueryRequest](#onos-config-admin-LeafSelectionQueryRequest) + - [LeafSelectionQueryResponse](#onos-config-admin-LeafSelectionQueryResponse) + - [ListConfigurationsRequest](#onos-config-admin-ListConfigurationsRequest) + - [ListConfigurationsResponse](#onos-config-admin-ListConfigurationsResponse) + - [ListModelsRequest](#onos-config-admin-ListModelsRequest) + - [ListTransactionsRequest](#onos-config-admin-ListTransactionsRequest) + - [ListTransactionsResponse](#onos-config-admin-ListTransactionsResponse) + - [ModelInfo](#onos-config-admin-ModelInfo) + - [ModelInfoRequest](#onos-config-admin-ModelInfoRequest) + - [ModelInfoResponse](#onos-config-admin-ModelInfoResponse) + - [ModelPlugin](#onos-config-admin-ModelPlugin) + - [Namespace](#onos-config-admin-Namespace) + - [PathValuesRequest](#onos-config-admin-PathValuesRequest) + - [PathValuesResponse](#onos-config-admin-PathValuesResponse) + - [ReadOnlyPath](#onos-config-admin-ReadOnlyPath) + - [ReadOnlySubPath](#onos-config-admin-ReadOnlySubPath) + - [ReadWritePath](#onos-config-admin-ReadWritePath) + - [RollbackRequest](#onos-config-admin-RollbackRequest) + - [RollbackResponse](#onos-config-admin-RollbackResponse) + - [ValidateConfigChunkRequest](#onos-config-admin-ValidateConfigChunkRequest) + - [ValidateConfigRequest](#onos-config-admin-ValidateConfigRequest) + - [ValidateConfigRequestChunk](#onos-config-admin-ValidateConfigRequestChunk) + - [ValidateConfigResponse](#onos-config-admin-ValidateConfigResponse) + - [ValueSelectionRequest](#onos-config-admin-ValueSelectionRequest) + - [ValueSelectionRequestChunk](#onos-config-admin-ValueSelectionRequestChunk) + - [ValueSelectionResponse](#onos-config-admin-ValueSelectionResponse) + - [WatchConfigurationsRequest](#onos-config-admin-WatchConfigurationsRequest) + - [WatchConfigurationsResponse](#onos-config-admin-WatchConfigurationsResponse) + - [WatchTransactionsRequest](#onos-config-admin-WatchTransactionsRequest) + - [WatchTransactionsResponse](#onos-config-admin-WatchTransactionsResponse) + + - [ConfigAdminService](#onos-config-admin-ConfigAdminService) + - [ConfigurationService](#onos-config-admin-ConfigurationService) + - [ModelPluginService](#onos-config-admin-ModelPluginService) + - [TransactionService](#onos-config-admin-TransactionService) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## onos/config/admin/admin.proto + + + + + +### GetConfigurationRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| configuration_id | [string](#string) | | | + + + + + + + + +### GetConfigurationResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| configuration | [onos.config.v2.Configuration](#onos-config-v2-Configuration) | | | + + + + + + + + +### GetTransactionRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | ID of transaction to get | +| index | [uint64](#uint64) | | index of transaction to get; leave 0 for lookup by ID; if specified takes precedence | + + + + + + + + +### GetTransactionResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| transaction | [onos.config.v2.Transaction](#onos-config-v2-Transaction) | | | + + + + + + + + +### LeafSelectionQueryRequest +LeafSelectionQueryRequest carries request for the selection of leaf values + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| target | [string](#string) | | target is the name of the target (device) to perform the query on | +| type | [string](#string) | | type of model plugin to perform the query on | +| version | [string](#string) | | version of model plugin to perform the query on | +| selectionPath | [string](#string) | | selectionPath is a configuration path to a leaf in the format: /a/b[key1=index][key2=index2]/c/d where d is a leaf node | +| changeContext | [gnmi.SetRequest](#gnmi-SetRequest) | | changeContext is the set of changes (e.g. from the GUI form) that have to be superimposed on the current configuration before the leaf selection can be made All the changes in this request should match the target given above optional | + + + + + + + + +### LeafSelectionQueryResponse +LeafSelectionQueryResponse carries response for the model information query + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| selection | [string](#string) | repeated | selection is an array of string values | + + + + + + + + +### ListConfigurationsRequest + + + + + + + + + +### ListConfigurationsResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| configuration | [onos.config.v2.Configuration](#onos-config-v2-Configuration) | | | + + + + + + + + +### ListModelsRequest +ListModelsRequest carries data for querying registered model plugins. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| verbose | [bool](#bool) | | verbose option causes all of the ReadWrite and ReadOnly paths to be included. | +| model_name | [string](#string) | | An optional filter on the name of the model plugins to list. | +| model_version | [string](#string) | | An optional filter on the version of the model plugins to list | + + + + + + + + +### ListTransactionsRequest + + + + + + + + + +### ListTransactionsResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| transaction | [onos.config.v2.Transaction](#onos-config-v2-Transaction) | | | + + + + + + + + +### ModelInfo +ModelInfo is general information about a model plugin. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| name | [string](#string) | | name is the name given to the model plugin - no spaces and title case. | +| version | [string](#string) | | version is the semantic version of the Plugin e.g. 1.0.0. | +| model_data | [gnmi.ModelData](#gnmi-ModelData) | repeated | model_data is a set of metadata about the YANG files that went in to generating the model plugin. It includes name, version and organization for each YANG file, similar to how they are represented in gNMI Capabilities. | +| module | [string](#string) | | **Deprecated.** module is no longer used | +| getStateMode | [uint32](#uint32) | | getStateMode is flag that defines how the "get state" operation works. 0) means that no retrieval of state is attempted 1) means that the synchronizer will make 2 requests to the device - one for Get with State and another for Get with Operational. 2) means that the synchronizer will do a Get request comprising of each one of the ReadOnlyPaths and their sub paths. If there is a `list` in any one of these paths it will be sent down as is, expecting the devices implementation of gNMI will be able to expand wildcards. 3) means that the synchronizer will do a Get request comprising of each one of the ReadOnlyPaths and their sub paths. If there is a `list` in any one of these paths, a separate call will be made first to find all the instances in the list and a Get including these expanded wildcards will be sent down to the device. | +| read_only_path | [ReadOnlyPath](#onos-config-admin-ReadOnlyPath) | repeated | read_only_path is all of the read only paths for the model plugin. | +| read_write_path | [ReadWritePath](#onos-config-admin-ReadWritePath) | repeated | read_write_path is all of the read write paths for the model plugin. | +| supported_encodings | [gnmi.Encoding](#gnmi-Encoding) | repeated | | +| namespace_mappings | [Namespace](#onos-config-admin-Namespace) | repeated | namespace_mappings is a set of all prefix to module name mapping in the model | +| southboundUsePrefix | [bool](#bool) | | southboundUsePrefix indicates that the southbound should add prefixes in gNMI paths | + + + + + + + + +### ModelInfoRequest +ModelInfoRequest carries request for the model information + + + + + + + + +### ModelInfoResponse +ModelInfoResponse carries response for the model information query + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| modelInfo | [ModelInfo](#onos-config-admin-ModelInfo) | | | + + + + + + + + +### ModelPlugin + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | +| endpoint | [string](#string) | | | +| info | [ModelInfo](#onos-config-admin-ModelInfo) | | | +| status | [string](#string) | | | +| error | [string](#string) | | | + + + + + + + + +### Namespace +Namespace is a mapping between a module name and its shorthand prefix + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| module | [string](#string) | | | +| prefix | [string](#string) | | | + + + + + + + + +### PathValuesRequest +PathValuesRequest carries configuration change as a JSON blob + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| pathPrefix | [string](#string) | | | +| json | [bytes](#bytes) | | | + + + + + + + + +### PathValuesResponse +PathValuesResponse carries a list of typed path values + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| pathValues | [onos.config.v2.PathValue](#onos-config-v2-PathValue) | repeated | | + + + + + + + + +### ReadOnlyPath +ReadOnlyPath extracted from the model plugin as the definition of a tree of read only items. +In YANG models items are defined as ReadOnly with the `config false` keyword. +This can be applied to single items (leafs) or collections (containers or lists). +When this `config false` is applied to an object every item beneath it will +also become readonly - here these are shown as subpaths. +The complete read only path then will be a concatenation of both e.g. +/cont1a/cont1b-state/list2b/index and the type is defined in the SubPath as UInt8. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| path | [string](#string) | | path of the topmost `config false` object e.g. /cont1a/cont1b-state | +| sub_path | [ReadOnlySubPath](#onos-config-admin-ReadOnlySubPath) | repeated | ReadOnlySubPath is a set of children of the path including an entry for the type of the topmost object with subpath `/` An example is /list2b/index | + + + + + + + + +### ReadOnlySubPath +ReadOnlySubPath is an extension to the ReadOnlyPath to define the datatype of +the subpath + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| sub_path | [string](#string) | | sub_path is the relative path of a child object e.g. /list2b/index | +| value_type | [onos.config.v2.ValueType](#onos-config-v2-ValueType) | | value_type is the datatype of the read only path | +| type_opts | [uint64](#uint64) | repeated | | +| description | [string](#string) | | | +| units | [string](#string) | | | +| IsAKey | [bool](#bool) | | | +| AttrName | [string](#string) | | | + + + + + + + + +### ReadWritePath +ReadWritePath is extracted from the model plugin as the definition of a writeable attributes. +In YANG models items are writable by default unless they are specified as `config false` or +have an item with `config false` as a parent. +Each configurable item has metadata with meanings taken from the YANG specification RFC 6020. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| path | [string](#string) | | path is the full path to the attribute (leaf or leaf-list) | +| value_type | [onos.config.v2.ValueType](#onos-config-v2-ValueType) | | value_type is the data type of the attribute | +| units | [string](#string) | | units is the unit of measurement e.g. dB, mV | +| description | [string](#string) | | description is an explaination of the meaning of the attribute | +| mandatory | [bool](#bool) | | mandatory shows whether the attribute is optional (false) or required (true) | +| default | [string](#string) | | **Deprecated.** default is a default value used with optional attributes. Replaced by 'defaults' below | +| range | [string](#string) | repeated | range is definition of the range of values a value is allowed | +| length | [string](#string) | repeated | length is a defintion of the length restrictions for the attribute | +| type_opts | [uint64](#uint64) | repeated | | +| IsAKey | [bool](#bool) | | | +| AttrName | [string](#string) | | | +| defaults | [string](#string) | repeated | defaults is a default value(s) used with optional attributes. For leaf-list can have repeated values replaces the 'default' attribute above | + + + + + + + + +### RollbackRequest +RollbackRequest carries the index of the configuration change transaction to rollback. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| index | [uint64](#uint64) | | index of the transaction that should be rolled back | + + + + + + + + +### RollbackResponse +RollbackResponse carries the response of the rollback operation + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | ID of the rollback transaction | +| index | [uint64](#uint64) | | index of the rollback transaction | + + + + + + + + +### ValidateConfigChunkRequest +ValidateConfigRequest carries configuration data to be validated as a JSON blob + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| json | [bytes](#bytes) | | | + + + + + + + + +### ValidateConfigRequest +ValidateConfigRequest carries configuration data to be validated as a JSON blob + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| json | [bytes](#bytes) | | | + + + + + + + + +### ValidateConfigRequestChunk +ValidateConfigRequestChunk carries configuration data to be validated as a JSON blob +Recommended maximum size is 100kB + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| json | [bytes](#bytes) | | | + + + + + + + + +### ValidateConfigResponse +ValidateConfigResponse carries the result of the validation + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| valid | [bool](#bool) | | | +| message | [string](#string) | | | + + + + + + + + +### ValueSelectionRequest +ValueSelectionRequest carries the necessary parts to form a selection context + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| selectionPath | [string](#string) | | selectionPath is a configuration path to a leaf in the format: /a/b[key1=index][key2=index2]/c/d where d is a leaf node | +| configJson | [bytes](#bytes) | | configJson is a JSON tree view of the complete Configuration for a Target | + + + + + + + + +### ValueSelectionRequestChunk +ValueSelectionRequestChunk carries the necessary parts to form a selection context +Recommended maximum size is 100kB + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| selectionPath | [string](#string) | | selectionPath is a configuration path to a leaf in the format: /a/b[key1=index][key2=index2]/c/d where d is a leaf node | +| configJson | [bytes](#bytes) | | configJson is a JSON tree view of the complete Configuration for a Target | + + + + + + + + +### ValueSelectionResponse +ValueSelectionResponse returns the result of applying the selection rules to the selection context + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| selection | [string](#string) | repeated | selection is an array of string values | + + + + + + + + +### WatchConfigurationsRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| configuration_id | [string](#string) | | | +| noreplay | [bool](#bool) | | | + + + + + + + + +### WatchConfigurationsResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| event | [onos.config.v2.ConfigurationEvent](#onos-config-v2-ConfigurationEvent) | | | + + + + + + + + +### WatchTransactionsRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | +| noreplay | [bool](#bool) | | | + + + + + + + + +### WatchTransactionsResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| event | [onos.config.v2.TransactionEvent](#onos-config-v2-TransactionEvent) | | | + + + + + + + + + + + + + + +### ConfigAdminService +ConfigAdminService provides means for enhanced interactions with the configuration subsystem. + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| ListRegisteredModels | [ListModelsRequest](#onos-config-admin-ListModelsRequest) | [ModelPlugin](#onos-config-admin-ModelPlugin) stream | ListRegisteredModels returns a stream of registered models. | +| RollbackTransaction | [RollbackRequest](#onos-config-admin-RollbackRequest) | [RollbackResponse](#onos-config-admin-RollbackResponse) | RollbackTransaction rolls back the specified configuration change transaction. | +| LeafSelectionQuery | [LeafSelectionQueryRequest](#onos-config-admin-LeafSelectionQueryRequest) | [LeafSelectionQueryResponse](#onos-config-admin-LeafSelectionQueryResponse) | LeafSelectionQuery selects values allowable for leaf. It supports the ROC GUI by supplying a list of valid leaf values based off an XPath query defined in a 'leaf-selection' YANG extension Calls on GetValueSelection RPC on Model Plugin | + + + + +### ConfigurationService +ConfigurationService provides means to inspect the contents of the internal configurations store. + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| GetConfiguration | [GetConfigurationRequest](#onos-config-admin-GetConfigurationRequest) | [GetConfigurationResponse](#onos-config-admin-GetConfigurationResponse) | Get configuration by its target ID | +| ListConfigurations | [ListConfigurationsRequest](#onos-config-admin-ListConfigurationsRequest) | [ListConfigurationsResponse](#onos-config-admin-ListConfigurationsResponse) stream | List returns all target configurations | +| WatchConfigurations | [WatchConfigurationsRequest](#onos-config-admin-WatchConfigurationsRequest) | [WatchConfigurationsResponse](#onos-config-admin-WatchConfigurationsResponse) stream | Watch returns a stream of configuration change notifications | + + + + +### ModelPluginService +ModelPluginService is to be implemented by model plugin sidecar + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| GetModelInfo | [ModelInfoRequest](#onos-config-admin-ModelInfoRequest) | [ModelInfoResponse](#onos-config-admin-ModelInfoResponse) | GetModelInfo provides information about the model | +| ValidateConfig | [ValidateConfigRequest](#onos-config-admin-ValidateConfigRequest) | [ValidateConfigResponse](#onos-config-admin-ValidateConfigResponse) | ValidateConfig validates the provided configuration data against the model | +| ValidateConfigChunked | [ValidateConfigRequestChunk](#onos-config-admin-ValidateConfigRequestChunk) stream | [ValidateConfigResponse](#onos-config-admin-ValidateConfigResponse) | ValidateConfigChunked validates the provided configuration data against the model | +| GetPathValues | [PathValuesRequest](#onos-config-admin-PathValuesRequest) | [PathValuesResponse](#onos-config-admin-PathValuesResponse) | GetPathValues produces list of typed path value entries from the specified configuration change JSON tree | +| GetValueSelection | [ValueSelectionRequest](#onos-config-admin-ValueSelectionRequest) | [ValueSelectionResponse](#onos-config-admin-ValueSelectionResponse) | GetValueSelection gets a list of valid options for a leaf by applying selection rules in YANG. Replaced by GetValueSelectionChunked | +| GetValueSelectionChunked | [ValueSelectionRequestChunk](#onos-config-admin-ValueSelectionRequestChunk) stream | [ValueSelectionResponse](#onos-config-admin-ValueSelectionResponse) | GetValueSelectionChunked gets a list of valid options for a leaf by applying selection rules in YANG. The selection rules should be defined as an XPath expression, as an argument to a `leaf-selection` extension in the YANG model (Used to support the ROC GUI) | + + + + +### TransactionService +TransactionService provides means to inspect the contents of the internal transactions store. + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| GetTransaction | [GetTransactionRequest](#onos-config-admin-GetTransactionRequest) | [GetTransactionResponse](#onos-config-admin-GetTransactionResponse) | Get transaction by its ID or index | +| ListTransactions | [ListTransactionsRequest](#onos-config-admin-ListTransactionsRequest) | [ListTransactionsResponse](#onos-config-admin-ListTransactionsResponse) stream | List returns all configuration transactions | +| WatchTransactions | [WatchTransactionsRequest](#onos-config-admin-WatchTransactionsRequest) | [WatchTransactionsResponse](#onos-config-admin-WatchTransactionsResponse) stream | Watch returns a stream of configuration transaction change notifications | + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-api/docs/onos/config/v2/configuration.md b/onos-api/docs/onos/config/v2/configuration.md new file mode 100644 index 0000000..e520179 --- /dev/null +++ b/onos-api/docs/onos/config/v2/configuration.md @@ -0,0 +1,239 @@ +# Protocol Documentation + + +## Table of Contents + +- [onos/config/v2/configuration.proto](#onos_config_v2_configuration-proto) + - [AppliedConfigurationStatus](#onos-config-v2-AppliedConfigurationStatus) + - [AppliedConfigurationStatus.ValuesEntry](#onos-config-v2-AppliedConfigurationStatus-ValuesEntry) + - [CommittedConfigurationStatus](#onos-config-v2-CommittedConfigurationStatus) + - [Configuration](#onos-config-v2-Configuration) + - [Configuration.ValuesEntry](#onos-config-v2-Configuration-ValuesEntry) + - [ConfigurationEvent](#onos-config-v2-ConfigurationEvent) + - [ConfigurationStatus](#onos-config-v2-ConfigurationStatus) + - [MastershipInfo](#onos-config-v2-MastershipInfo) + - [ProposedConfigurationStatus](#onos-config-v2-ProposedConfigurationStatus) + + - [ConfigurationEvent.EventType](#onos-config-v2-ConfigurationEvent-EventType) + - [ConfigurationStatus.State](#onos-config-v2-ConfigurationStatus-State) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## onos/config/v2/configuration.proto + + + + + +### AppliedConfigurationStatus + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| index | [uint64](#uint64) | | | +| mastership | [MastershipInfo](#onos-config-v2-MastershipInfo) | | | +| values | [AppliedConfigurationStatus.ValuesEntry](#onos-config-v2-AppliedConfigurationStatus-ValuesEntry) | repeated | | + + + + + + + + +### AppliedConfigurationStatus.ValuesEntry + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| key | [string](#string) | | | +| value | [PathValue](#onos-config-v2-PathValue) | | | + + + + + + + + +### CommittedConfigurationStatus + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| index | [uint64](#uint64) | | | + + + + + + + + +### Configuration +Configuration represents complete desired target configuration + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| meta | [ObjectMeta](#onos-config-v2-ObjectMeta) | | | +| id | [string](#string) | | 'id' is a unique configuration identifier | +| target_id | [string](#string) | | 'target_id' is the target to which the desired target configuration applies | +| values | [Configuration.ValuesEntry](#onos-config-v2-Configuration-ValuesEntry) | repeated | 'values' is a map of path/values to set | +| index | [uint64](#uint64) | | 'index' is the index of the configuration values | +| status | [ConfigurationStatus](#onos-config-v2-ConfigurationStatus) | | 'ConfigurationStatus' is the current lifecycle status of the configuration | +| target_info | [TargetTypeVersion](#onos-config-v2-TargetTypeVersion) | | | + + + + + + + + +### Configuration.ValuesEntry + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| key | [string](#string) | | | +| value | [PathValue](#onos-config-v2-PathValue) | | | + + + + + + + + +### ConfigurationEvent +ConfigurationEvent configuration store event + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| type | [ConfigurationEvent.EventType](#onos-config-v2-ConfigurationEvent-EventType) | | EventType configuration event type | +| configuration | [Configuration](#onos-config-v2-Configuration) | | | + + + + + + + + +### ConfigurationStatus +ConfigurationStatus is the status of a Configuration + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| state | [ConfigurationStatus.State](#onos-config-v2-ConfigurationStatus-State) | | 'state' is the configuration state | +| mastership | [MastershipInfo](#onos-config-v2-MastershipInfo) | | 'mastership' is the current mastership info for the configuration | +| proposed | [ProposedConfigurationStatus](#onos-config-v2-ProposedConfigurationStatus) | | 'proposed' is the proposed configuration status | +| committed | [CommittedConfigurationStatus](#onos-config-v2-CommittedConfigurationStatus) | | 'committed' is the committed configuration status | +| applied | [AppliedConfigurationStatus](#onos-config-v2-AppliedConfigurationStatus) | | 'applied' is the applied configuration status | + + + + + + + + +### MastershipInfo + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| master | [string](#string) | | | +| term | [uint64](#uint64) | | | + + + + + + + + +### ProposedConfigurationStatus + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| index | [uint64](#uint64) | | | + + + + + + + + + + +### ConfigurationEvent.EventType +EventType configuration event types for configuration store + +| Name | Number | Description | +| ---- | ------ | ----------- | +| UNKNOWN | 0 | UNKNOWN indicates unknown configuration store event | +| CREATED | 1 | CREATED indicates the configuration entry in the store is created | +| UPDATED | 2 | UPDATED indicates the configuration entry in the store is updated | +| DELETED | 3 | DELETED indicates the configuration entry in the store is deleted | +| REPLAYED | 4 | REPLAYED | + + + + + +### ConfigurationStatus.State +State is the configuration state + +| Name | Number | Description | +| ---- | ------ | ----------- | +| UNKNOWN | 0 | | +| SYNCHRONIZING | 1 | | +| SYNCHRONIZED | 2 | | +| PERSISTED | 3 | | + + + + + + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-api/docs/onos/config/v2/extensions.md b/onos-api/docs/onos/config/v2/extensions.md new file mode 100644 index 0000000..80b58b9 --- /dev/null +++ b/onos-api/docs/onos/config/v2/extensions.md @@ -0,0 +1,65 @@ +# Protocol Documentation + + +## Table of Contents + +- [onos/config/v2/extensions.proto](#onos/config/v2/extensions.proto) + - [TransactionInfo](#onos.config.v2.TransactionInfo) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## onos/config/v2/extensions.proto + + + + + +### TransactionInfo +TransactionInfo is an extension providing information about the transaction +to clients in responses. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | +| index | [uint64](#uint64) | | | + + + + + + + + + + + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-api/docs/onos/config/v2/proposal.md b/onos-api/docs/onos/config/v2/proposal.md new file mode 100644 index 0000000..9f9d584 --- /dev/null +++ b/onos-api/docs/onos/config/v2/proposal.md @@ -0,0 +1,382 @@ +# Protocol Documentation + + +## Table of Contents + +- [onos/config/v2/proposal.proto](#onos_config_v2_proposal-proto) + - [ChangeProposal](#onos-config-v2-ChangeProposal) + - [ChangeProposal.ValuesEntry](#onos-config-v2-ChangeProposal-ValuesEntry) + - [Proposal](#onos-config-v2-Proposal) + - [ProposalAbortPhase](#onos-config-v2-ProposalAbortPhase) + - [ProposalApplyPhase](#onos-config-v2-ProposalApplyPhase) + - [ProposalCommitPhase](#onos-config-v2-ProposalCommitPhase) + - [ProposalEvent](#onos-config-v2-ProposalEvent) + - [ProposalInitializePhase](#onos-config-v2-ProposalInitializePhase) + - [ProposalPhaseStatus](#onos-config-v2-ProposalPhaseStatus) + - [ProposalPhases](#onos-config-v2-ProposalPhases) + - [ProposalStatus](#onos-config-v2-ProposalStatus) + - [ProposalStatus.RollbackValuesEntry](#onos-config-v2-ProposalStatus-RollbackValuesEntry) + - [ProposalValidatePhase](#onos-config-v2-ProposalValidatePhase) + - [RollbackProposal](#onos-config-v2-RollbackProposal) + + - [ProposalAbortPhase.State](#onos-config-v2-ProposalAbortPhase-State) + - [ProposalApplyPhase.State](#onos-config-v2-ProposalApplyPhase-State) + - [ProposalCommitPhase.State](#onos-config-v2-ProposalCommitPhase-State) + - [ProposalEvent.EventType](#onos-config-v2-ProposalEvent-EventType) + - [ProposalInitializePhase.State](#onos-config-v2-ProposalInitializePhase-State) + - [ProposalValidatePhase.State](#onos-config-v2-ProposalValidatePhase-State) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## onos/config/v2/proposal.proto + + + + + +### ChangeProposal + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| values | [ChangeProposal.ValuesEntry](#onos-config-v2-ChangeProposal-ValuesEntry) | repeated | 'changes' is the proposed change values | + + + + + + + + +### ChangeProposal.ValuesEntry + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| key | [string](#string) | | | +| value | [PathValue](#onos-config-v2-PathValue) | | | + + + + + + + + +### Proposal + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| meta | [ObjectMeta](#onos-config-v2-ObjectMeta) | | | +| id | [string](#string) | | 'id' is the unique identifier of the proposal | +| target_id | [string](#string) | | 'target_id' is the proposal's target identifier | +| transaction_index | [uint64](#uint64) | | 'transaction_index' is the unique index of the transaction | +| change | [ChangeProposal](#onos-config-v2-ChangeProposal) | | | +| rollback | [RollbackProposal](#onos-config-v2-RollbackProposal) | | | +| status | [ProposalStatus](#onos-config-v2-ProposalStatus) | | 'status' is the current lifecycle status of the proposal | +| target_info | [TargetTypeVersion](#onos-config-v2-TargetTypeVersion) | | | + + + + + + + + +### ProposalAbortPhase + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| status | [ProposalPhaseStatus](#onos-config-v2-ProposalPhaseStatus) | | | +| state | [ProposalAbortPhase.State](#onos-config-v2-ProposalAbortPhase-State) | | | + + + + + + + + +### ProposalApplyPhase + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| status | [ProposalPhaseStatus](#onos-config-v2-ProposalPhaseStatus) | | | +| state | [ProposalApplyPhase.State](#onos-config-v2-ProposalApplyPhase-State) | | | +| term | [uint64](#uint64) | | | +| failure | [Failure](#onos-config-v2-Failure) | | | + + + + + + + + +### ProposalCommitPhase + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| status | [ProposalPhaseStatus](#onos-config-v2-ProposalPhaseStatus) | | | +| state | [ProposalCommitPhase.State](#onos-config-v2-ProposalCommitPhase-State) | | | + + + + + + + + +### ProposalEvent +ProposalEvent proposal store event + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| type | [ProposalEvent.EventType](#onos-config-v2-ProposalEvent-EventType) | | | +| proposal | [Proposal](#onos-config-v2-Proposal) | | | + + + + + + + + +### ProposalInitializePhase + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| status | [ProposalPhaseStatus](#onos-config-v2-ProposalPhaseStatus) | | | +| state | [ProposalInitializePhase.State](#onos-config-v2-ProposalInitializePhase-State) | | | + + + + + + + + +### ProposalPhaseStatus + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| start | [google.protobuf.Timestamp](#google-protobuf-Timestamp) | | | +| end | [google.protobuf.Timestamp](#google-protobuf-Timestamp) | | | + + + + + + + + +### ProposalPhases + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| initialize | [ProposalInitializePhase](#onos-config-v2-ProposalInitializePhase) | | 'initialize' is the proposal initialization phase status | +| validate | [ProposalValidatePhase](#onos-config-v2-ProposalValidatePhase) | | 'validate' is the proposal validation phase status | +| commit | [ProposalCommitPhase](#onos-config-v2-ProposalCommitPhase) | | 'commit' is the proposal commit phase status | +| apply | [ProposalApplyPhase](#onos-config-v2-ProposalApplyPhase) | | 'apply' is the proposal apply phase status | +| abort | [ProposalAbortPhase](#onos-config-v2-ProposalAbortPhase) | | 'abort' is the proposal abort phase status | + + + + + + + + +### ProposalStatus +ProposalStatus is the status of a Proposal + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| phases | [ProposalPhases](#onos-config-v2-ProposalPhases) | | 'phases' is the proposal phases | +| prev_index | [uint64](#uint64) | | 'prev_index' is the index of the previous proposal associated with this target | +| next_index | [uint64](#uint64) | | 'next_index' is the index of the next proposal associated with this target | +| rollback_index | [uint64](#uint64) | | 'rollback_index' is a reference to the index to which to roll back | +| rollback_values | [ProposalStatus.RollbackValuesEntry](#onos-config-v2-ProposalStatus-RollbackValuesEntry) | repeated | 'rollback_values' is the set of values to use to roll back the proposal | + + + + + + + + +### ProposalStatus.RollbackValuesEntry + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| key | [string](#string) | | | +| value | [PathValue](#onos-config-v2-PathValue) | | | + + + + + + + + +### ProposalValidatePhase + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| status | [ProposalPhaseStatus](#onos-config-v2-ProposalPhaseStatus) | | | +| state | [ProposalValidatePhase.State](#onos-config-v2-ProposalValidatePhase-State) | | | +| failure | [Failure](#onos-config-v2-Failure) | | | + + + + + + + + +### RollbackProposal + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| rollback_index | [uint64](#uint64) | | 'rollback_index' is the index of the transaction to roll back | + + + + + + + + + + +### ProposalAbortPhase.State + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| ABORTING | 0 | | +| ABORTED | 1 | | + + + + + +### ProposalApplyPhase.State + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| APPLYING | 0 | | +| APPLIED | 1 | | +| FAILED | 2 | | + + + + + +### ProposalCommitPhase.State + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| COMMITTING | 0 | | +| COMMITTED | 1 | | + + + + + +### ProposalEvent.EventType +EventType proposal event types for proposal store + +| Name | Number | Description | +| ---- | ------ | ----------- | +| UNKNOWN | 0 | | +| CREATED | 1 | | +| UPDATED | 2 | | +| DELETED | 3 | | +| REPLAYED | 4 | | + + + + + +### ProposalInitializePhase.State + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| INITIALIZING | 0 | | +| INITIALIZED | 1 | | + + + + + +### ProposalValidatePhase.State + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| VALIDATING | 0 | | +| VALIDATED | 1 | | +| FAILED | 2 | | + + + + + + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-api/docs/onos/config/v2/transaction.md b/onos-api/docs/onos/config/v2/transaction.md new file mode 100644 index 0000000..c1ba0ab --- /dev/null +++ b/onos-api/docs/onos/config/v2/transaction.md @@ -0,0 +1,476 @@ +# Protocol Documentation + + +## Table of Contents + +- [onos/config/v2/transaction.proto](#onos_config_v2_transaction-proto) + - [ChangeTransaction](#onos-config-v2-ChangeTransaction) + - [ChangeTransaction.ValuesEntry](#onos-config-v2-ChangeTransaction-ValuesEntry) + - [RollbackTransaction](#onos-config-v2-RollbackTransaction) + - [TargetVersionOverrides](#onos-config-v2-TargetVersionOverrides) + - [TargetVersionOverrides.OverridesEntry](#onos-config-v2-TargetVersionOverrides-OverridesEntry) + - [Transaction](#onos-config-v2-Transaction) + - [TransactionAbortPhase](#onos-config-v2-TransactionAbortPhase) + - [TransactionApplyPhase](#onos-config-v2-TransactionApplyPhase) + - [TransactionCommitPhase](#onos-config-v2-TransactionCommitPhase) + - [TransactionEvent](#onos-config-v2-TransactionEvent) + - [TransactionInfo](#onos-config-v2-TransactionInfo) + - [TransactionInitializePhase](#onos-config-v2-TransactionInitializePhase) + - [TransactionPhaseStatus](#onos-config-v2-TransactionPhaseStatus) + - [TransactionPhases](#onos-config-v2-TransactionPhases) + - [TransactionStatus](#onos-config-v2-TransactionStatus) + - [TransactionStrategy](#onos-config-v2-TransactionStrategy) + - [TransactionValidatePhase](#onos-config-v2-TransactionValidatePhase) + + - [TransactionAbortPhase.State](#onos-config-v2-TransactionAbortPhase-State) + - [TransactionApplyPhase.State](#onos-config-v2-TransactionApplyPhase-State) + - [TransactionCommitPhase.State](#onos-config-v2-TransactionCommitPhase-State) + - [TransactionEvent.EventType](#onos-config-v2-TransactionEvent-EventType) + - [TransactionInitializePhase.State](#onos-config-v2-TransactionInitializePhase-State) + - [TransactionStatus.State](#onos-config-v2-TransactionStatus-State) + - [TransactionStrategy.Isolation](#onos-config-v2-TransactionStrategy-Isolation) + - [TransactionStrategy.Synchronicity](#onos-config-v2-TransactionStrategy-Synchronicity) + - [TransactionValidatePhase.State](#onos-config-v2-TransactionValidatePhase-State) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## onos/config/v2/transaction.proto + + + + + +### ChangeTransaction + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| values | [ChangeTransaction.ValuesEntry](#onos-config-v2-ChangeTransaction-ValuesEntry) | repeated | 'values' is a set of changes to apply to targets | + + + + + + + + +### ChangeTransaction.ValuesEntry + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| key | [string](#string) | | | +| value | [PathValues](#onos-config-v2-PathValues) | | | + + + + + + + + +### RollbackTransaction + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| rollback_index | [uint64](#uint64) | | 'rollback_index' is the index of the transaction to roll back | + + + + + + + + +### TargetVersionOverrides +TargetVersionOverrides carries optional mappings of targets to their model type and version overrides. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| overrides | [TargetVersionOverrides.OverridesEntry](#onos-config-v2-TargetVersionOverrides-OverridesEntry) | repeated | | + + + + + + + + +### TargetVersionOverrides.OverridesEntry + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| key | [string](#string) | | | +| value | [TargetTypeVersion](#onos-config-v2-TargetTypeVersion) | | | + + + + + + + + +### Transaction +Transaction refers to a transaction change or transaction rollback + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| meta | [ObjectMeta](#onos-config-v2-ObjectMeta) | | | +| id | [string](#string) | | 'id' is the unique identifier of the transaction This field should be set prior to persisting the object. | +| index | [uint64](#uint64) | | 'index' is a monotonically increasing, globally unique index of the change The index is provided by the store, is static and unique for each unique change identifier, and should not be modified by client code. | +| username | [string](#string) | | 'username' is the name of the user that made the transaction | +| strategy | [TransactionStrategy](#onos-config-v2-TransactionStrategy) | | 'strategy' is the transaction strategy | +| change | [ChangeTransaction](#onos-config-v2-ChangeTransaction) | | | +| rollback | [RollbackTransaction](#onos-config-v2-RollbackTransaction) | | | +| status | [TransactionStatus](#onos-config-v2-TransactionStatus) | | 'status' is the current lifecycle status of the transaction | +| version_overrides | [TargetVersionOverrides](#onos-config-v2-TargetVersionOverrides) | | Optional target type/version overrides. | + + + + + + + + +### TransactionAbortPhase + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| status | [TransactionPhaseStatus](#onos-config-v2-TransactionPhaseStatus) | | | +| state | [TransactionAbortPhase.State](#onos-config-v2-TransactionAbortPhase-State) | | | + + + + + + + + +### TransactionApplyPhase + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| status | [TransactionPhaseStatus](#onos-config-v2-TransactionPhaseStatus) | | | +| state | [TransactionApplyPhase.State](#onos-config-v2-TransactionApplyPhase-State) | | | +| failure | [Failure](#onos-config-v2-Failure) | | | + + + + + + + + +### TransactionCommitPhase + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| status | [TransactionPhaseStatus](#onos-config-v2-TransactionPhaseStatus) | | | +| state | [TransactionCommitPhase.State](#onos-config-v2-TransactionCommitPhase-State) | | | + + + + + + + + +### TransactionEvent +TransactionEvent transaction store event + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| type | [TransactionEvent.EventType](#onos-config-v2-TransactionEvent-EventType) | | | +| transaction | [Transaction](#onos-config-v2-Transaction) | | | + + + + + + + + +### TransactionInfo +TransactionInfo is an extension providing information about the transaction +to clients in responses. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | +| index | [uint64](#uint64) | | | + + + + + + + + +### TransactionInitializePhase + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| status | [TransactionPhaseStatus](#onos-config-v2-TransactionPhaseStatus) | | | +| state | [TransactionInitializePhase.State](#onos-config-v2-TransactionInitializePhase-State) | | | +| failure | [Failure](#onos-config-v2-Failure) | | | + + + + + + + + +### TransactionPhaseStatus + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| start | [google.protobuf.Timestamp](#google-protobuf-Timestamp) | | | +| end | [google.protobuf.Timestamp](#google-protobuf-Timestamp) | | | + + + + + + + + +### TransactionPhases + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| initialize | [TransactionInitializePhase](#onos-config-v2-TransactionInitializePhase) | | 'initialize' is the transaction initialization phase status | +| validate | [TransactionValidatePhase](#onos-config-v2-TransactionValidatePhase) | | 'validate' is the transaction validation phase status | +| commit | [TransactionCommitPhase](#onos-config-v2-TransactionCommitPhase) | | 'commit' is the transaction commit phase status | +| apply | [TransactionApplyPhase](#onos-config-v2-TransactionApplyPhase) | | 'apply' is the transaction apply phase status | +| abort | [TransactionAbortPhase](#onos-config-v2-TransactionAbortPhase) | | 'abort' is the transaction abort phase status | + + + + + + + + +### TransactionStatus + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| phases | [TransactionPhases](#onos-config-v2-TransactionPhases) | | 'phases' is the transaction phases | +| proposals | [string](#string) | repeated | 'proposals' is the set of proposals managed by the transaction | +| state | [TransactionStatus.State](#onos-config-v2-TransactionStatus-State) | | 'state' is the overall transaction state | +| failure | [Failure](#onos-config-v2-Failure) | | 'failure' is the transaction failure (if any) | + + + + + + + + +### TransactionStrategy + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| synchronicity | [TransactionStrategy.Synchronicity](#onos-config-v2-TransactionStrategy-Synchronicity) | | 'synchronicity' indicates the transaction synchronicity level | +| isolation | [TransactionStrategy.Isolation](#onos-config-v2-TransactionStrategy-Isolation) | | 'isolation' indicates the transaction isolation level | + + + + + + + + +### TransactionValidatePhase + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| status | [TransactionPhaseStatus](#onos-config-v2-TransactionPhaseStatus) | | | +| state | [TransactionValidatePhase.State](#onos-config-v2-TransactionValidatePhase-State) | | | +| failure | [Failure](#onos-config-v2-Failure) | | | + + + + + + + + + + +### TransactionAbortPhase.State + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| ABORTING | 0 | | +| ABORTED | 1 | | + + + + + +### TransactionApplyPhase.State + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| APPLYING | 0 | | +| APPLIED | 1 | | +| FAILED | 2 | | + + + + + +### TransactionCommitPhase.State + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| COMMITTING | 0 | | +| COMMITTED | 1 | | + + + + + +### TransactionEvent.EventType +EventType transaction event types for transaction store + +| Name | Number | Description | +| ---- | ------ | ----------- | +| UNKNOWN | 0 | | +| CREATED | 1 | | +| UPDATED | 2 | | +| DELETED | 3 | | +| REPLAYED | 4 | | + + + + + +### TransactionInitializePhase.State + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| INITIALIZING | 0 | | +| INITIALIZED | 1 | | +| FAILED | 2 | | + + + + + +### TransactionStatus.State + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| PENDING | 0 | | +| VALIDATED | 1 | | +| COMMITTED | 2 | | +| APPLIED | 3 | | +| FAILED | 4 | | + + + + + +### TransactionStrategy.Isolation + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| DEFAULT | 0 | | +| SERIALIZABLE | 1 | | + + + + + +### TransactionStrategy.Synchronicity + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| ASYNCHRONOUS | 0 | | +| SYNCHRONOUS | 1 | | + + + + + +### TransactionValidatePhase.State + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| VALIDATING | 0 | | +| VALIDATED | 1 | | +| FAILED | 2 | | + + + + + + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-api/docs/onos/config/v2/value.md b/onos-api/docs/onos/config/v2/value.md new file mode 100644 index 0000000..fc0d8c1 --- /dev/null +++ b/onos-api/docs/onos/config/v2/value.md @@ -0,0 +1,146 @@ +# Protocol Documentation + + +## Table of Contents + +- [onos/config/v2/value.proto](#onos_config_v2_value-proto) + - [PathValue](#onos-config-v2-PathValue) + - [PathValues](#onos-config-v2-PathValues) + - [PathValues.ValuesEntry](#onos-config-v2-PathValues-ValuesEntry) + - [TypedValue](#onos-config-v2-TypedValue) + + - [ValueType](#onos-config-v2-ValueType) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## onos/config/v2/value.proto + + + + + +### PathValue +PathValue is the state of a path/value in the configuration tree + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| path | [string](#string) | | 'path' is the path to change | +| value | [TypedValue](#onos-config-v2-TypedValue) | | 'value' is the change value | +| deleted | [bool](#bool) | | 'deleted' indicates whether this is a delete | +| index | [uint64](#uint64) | | index transaction index | + + + + + + + + +### PathValues +PathValues is a set of path/value pairs + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| values | [PathValues.ValuesEntry](#onos-config-v2-PathValues-ValuesEntry) | repeated | 'values' is a set of change values to apply | + + + + + + + + +### PathValues.ValuesEntry + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| key | [string](#string) | | | +| value | [PathValue](#onos-config-v2-PathValue) | | | + + + + + + + + +### TypedValue +TypedValue is a value represented as a byte array + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| bytes | [bytes](#bytes) | | 'bytes' is the bytes array | +| type | [ValueType](#onos-config-v2-ValueType) | | 'type' is the value type | +| type_opts | [int32](#int32) | repeated | 'type_opts' is a set of type options | + + + + + + + + + + +### ValueType +ValueType is the type for a value + +| Name | Number | Description | +| ---- | ------ | ----------- | +| EMPTY | 0 | | +| STRING | 1 | | +| INT | 2 | | +| UINT | 3 | | +| BOOL | 4 | | +| DECIMAL | 5 | | +| FLOAT | 6 | | +| BYTES | 7 | | +| LEAFLIST_STRING | 8 | | +| LEAFLIST_INT | 9 | | +| LEAFLIST_UINT | 10 | | +| LEAFLIST_BOOL | 11 | | +| LEAFLIST_DECIMAL | 12 | | +| LEAFLIST_FLOAT | 13 | | +| LEAFLIST_BYTES | 14 | | +| DOUBLE | 15 | | +| LEAFLIST_DOUBLE | 16 | | + + + + + + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-api/docs/onos/config/v3/admin.md b/onos-api/docs/onos/config/v3/admin.md new file mode 100644 index 0000000..18bf337 --- /dev/null +++ b/onos-api/docs/onos/config/v3/admin.md @@ -0,0 +1,683 @@ +# Protocol Documentation + + +## Table of Contents + +- [onos/config/v3/admin.proto](#onos_config_v3_admin-proto) + - [GetConfigurationRequest](#onos-config-v3-GetConfigurationRequest) + - [GetConfigurationResponse](#onos-config-v3-GetConfigurationResponse) + - [GetTransactionRequest](#onos-config-v3-GetTransactionRequest) + - [GetTransactionResponse](#onos-config-v3-GetTransactionResponse) + - [LeafSelectionQueryRequest](#onos-config-v3-LeafSelectionQueryRequest) + - [LeafSelectionQueryResponse](#onos-config-v3-LeafSelectionQueryResponse) + - [ListConfigurationsRequest](#onos-config-v3-ListConfigurationsRequest) + - [ListConfigurationsResponse](#onos-config-v3-ListConfigurationsResponse) + - [ListModelsRequest](#onos-config-v3-ListModelsRequest) + - [ListTransactionsRequest](#onos-config-v3-ListTransactionsRequest) + - [ListTransactionsResponse](#onos-config-v3-ListTransactionsResponse) + - [ModelInfo](#onos-config-v3-ModelInfo) + - [ModelInfoRequest](#onos-config-v3-ModelInfoRequest) + - [ModelInfoResponse](#onos-config-v3-ModelInfoResponse) + - [ModelPlugin](#onos-config-v3-ModelPlugin) + - [Namespace](#onos-config-v3-Namespace) + - [PathValuesRequest](#onos-config-v3-PathValuesRequest) + - [PathValuesResponse](#onos-config-v3-PathValuesResponse) + - [ReadOnlyPath](#onos-config-v3-ReadOnlyPath) + - [ReadOnlySubPath](#onos-config-v3-ReadOnlySubPath) + - [ReadWritePath](#onos-config-v3-ReadWritePath) + - [RollbackRequest](#onos-config-v3-RollbackRequest) + - [RollbackResponse](#onos-config-v3-RollbackResponse) + - [ValidateConfigChunkRequest](#onos-config-v3-ValidateConfigChunkRequest) + - [ValidateConfigRequest](#onos-config-v3-ValidateConfigRequest) + - [ValidateConfigRequestChunk](#onos-config-v3-ValidateConfigRequestChunk) + - [ValidateConfigResponse](#onos-config-v3-ValidateConfigResponse) + - [ValueSelectionRequest](#onos-config-v3-ValueSelectionRequest) + - [ValueSelectionRequestChunk](#onos-config-v3-ValueSelectionRequestChunk) + - [ValueSelectionResponse](#onos-config-v3-ValueSelectionResponse) + - [WatchConfigurationsRequest](#onos-config-v3-WatchConfigurationsRequest) + - [WatchConfigurationsResponse](#onos-config-v3-WatchConfigurationsResponse) + - [WatchTransactionsRequest](#onos-config-v3-WatchTransactionsRequest) + - [WatchTransactionsResponse](#onos-config-v3-WatchTransactionsResponse) + + - [ConfigAdminService](#onos-config-v3-ConfigAdminService) + - [ConfigurationService](#onos-config-v3-ConfigurationService) + - [ModelPluginService](#onos-config-v3-ModelPluginService) + - [TransactionService](#onos-config-v3-TransactionService) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## onos/config/v3/admin.proto + + + + + +### GetConfigurationRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| configuration_id | [ConfigurationID](#onos-config-v3-ConfigurationID) | | | + + + + + + + + +### GetConfigurationResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| configuration | [Configuration](#onos-config-v3-Configuration) | | | + + + + + + + + +### GetTransactionRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [TransactionID](#onos-config-v3-TransactionID) | | | + + + + + + + + +### GetTransactionResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| transaction | [Transaction](#onos-config-v3-Transaction) | | | + + + + + + + + +### LeafSelectionQueryRequest +LeafSelectionQueryRequest carries request for the selection of leaf values + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| target | [string](#string) | | target is the name of the target (device) to perform the query on | +| type | [string](#string) | | type of model plugin to perform the query on | +| version | [string](#string) | | version of model plugin to perform the query on | +| selectionPath | [string](#string) | | selectionPath is a configuration path to a leaf in the format: /a/b[key1=index][key2=index2]/c/d where d is a leaf node | +| changeContext | [gnmi.SetRequest](#gnmi-SetRequest) | | changeContext is the set of changes (e.g. from the GUI form) that have to be superimposed on the current configuration before the leaf selection can be made All the changes in this request should match the target given above optional | + + + + + + + + +### LeafSelectionQueryResponse +LeafSelectionQueryResponse carries response for the model information query + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| selection | [string](#string) | repeated | selection is an array of string values | + + + + + + + + +### ListConfigurationsRequest + + + + + + + + + +### ListConfigurationsResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| configuration | [Configuration](#onos-config-v3-Configuration) | | | + + + + + + + + +### ListModelsRequest +ListModelsRequest carries data for querying registered model plugins. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| verbose | [bool](#bool) | | verbose option causes all of the ReadWrite and ReadOnly paths to be included. | +| model_name | [string](#string) | | An optional filter on the name of the model plugins to list. | +| model_version | [string](#string) | | An optional filter on the version of the model plugins to list | + + + + + + + + +### ListTransactionsRequest + + + + + + + + + +### ListTransactionsResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| transaction | [Transaction](#onos-config-v3-Transaction) | | | + + + + + + + + +### ModelInfo +ModelInfo is general information about a model plugin. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| name | [string](#string) | | name is the name given to the model plugin - no spaces and title case. | +| version | [string](#string) | | version is the semantic version of the Plugin e.g. 1.0.0. | +| model_data | [gnmi.ModelData](#gnmi-ModelData) | repeated | model_data is a set of metadata about the YANG files that went in to generating the model plugin. It includes name, version and organization for each YANG file, similar to how they are represented in gNMI Capabilities. | +| module | [string](#string) | | **Deprecated.** module is no longer used | +| getStateMode | [uint32](#uint32) | | getStateMode is flag that defines how the "get state" operation works. 0) means that no retrieval of state is attempted 1) means that the synchronizer will make 2 requests to the device - one for Get with State and another for Get with Operational. 2) means that the synchronizer will do a Get request comprising of each one of the ReadOnlyPaths and their sub paths. If there is a `list` in any one of these paths it will be sent down as is, expecting the devices implementation of gNMI will be able to expand wildcards. 3) means that the synchronizer will do a Get request comprising of each one of the ReadOnlyPaths and their sub paths. If there is a `list` in any one of these paths, a separate call will be made first to find all the instances in the list and a Get including these expanded wildcards will be sent down to the device. | +| read_only_path | [ReadOnlyPath](#onos-config-v3-ReadOnlyPath) | repeated | read_only_path is all of the read only paths for the model plugin. | +| read_write_path | [ReadWritePath](#onos-config-v3-ReadWritePath) | repeated | read_write_path is all of the read write paths for the model plugin. | +| supported_encodings | [gnmi.Encoding](#gnmi-Encoding) | repeated | | +| namespace_mappings | [Namespace](#onos-config-v3-Namespace) | repeated | namespace_mappings is a set of all prefix to module name mapping in the model | +| southboundUsePrefix | [bool](#bool) | | southboundUsePrefix indicates that the southbound should add prefixes in gNMI paths | + + + + + + + + +### ModelInfoRequest +ModelInfoRequest carries request for the model information + + + + + + + + +### ModelInfoResponse +ModelInfoResponse carries response for the model information query + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| modelInfo | [ModelInfo](#onos-config-v3-ModelInfo) | | | + + + + + + + + +### ModelPlugin + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | +| endpoint | [string](#string) | | | +| info | [ModelInfo](#onos-config-v3-ModelInfo) | | | +| status | [string](#string) | | | +| error | [string](#string) | | | + + + + + + + + +### Namespace +Namespace is a mapping between a module name and its shorthand prefix + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| module | [string](#string) | | | +| prefix | [string](#string) | | | + + + + + + + + +### PathValuesRequest +PathValuesRequest carries configuration change as a JSON blob + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| pathPrefix | [string](#string) | | | +| json | [bytes](#bytes) | | | + + + + + + + + +### PathValuesResponse +PathValuesResponse carries a list of typed path values + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| pathValues | [PathValue](#onos-config-v3-PathValue) | repeated | | + + + + + + + + +### ReadOnlyPath +ReadOnlyPath extracted from the model plugin as the definition of a tree of read only items. +In YANG models items are defined as ReadOnly with the `config false` keyword. +This can be applied to single items (leafs) or collections (containers or lists). +When this `config false` is applied to an object every item beneath it will +also become readonly - here these are shown as subpaths. +The complete read only path then will be a concatenation of both e.g. +/cont1a/cont1b-state/list2b/index and the type is defined in the SubPath as UInt8. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| path | [string](#string) | | path of the topmost `config false` object e.g. /cont1a/cont1b-state | +| sub_path | [ReadOnlySubPath](#onos-config-v3-ReadOnlySubPath) | repeated | ReadOnlySubPath is a set of children of the path including an entry for the type of the topmost object with subpath `/` An example is /list2b/index | + + + + + + + + +### ReadOnlySubPath +ReadOnlySubPath is an extension to the ReadOnlyPath to define the datatype of +the subpath + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| sub_path | [string](#string) | | sub_path is the relative path of a child object e.g. /list2b/index | +| value_type | [ValueType](#onos-config-v3-ValueType) | | value_type is the datatype of the read only path | +| type_opts | [uint64](#uint64) | repeated | | +| description | [string](#string) | | | +| units | [string](#string) | | | +| IsAKey | [bool](#bool) | | | +| AttrName | [string](#string) | | | + + + + + + + + +### ReadWritePath +ReadWritePath is extracted from the model plugin as the definition of a writeable attributes. +In YANG models items are writable by default unless they are specified as `config false` or +have an item with `config false` as a parent. +Each configurable item has metadata with meanings taken from the YANG specification RFC 6020. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| path | [string](#string) | | path is the full path to the attribute (leaf or leaf-list) | +| value_type | [ValueType](#onos-config-v3-ValueType) | | value_type is the data type of the attribute | +| units | [string](#string) | | units is the unit of measurement e.g. dB, mV | +| description | [string](#string) | | description is an explaination of the meaning of the attribute | +| mandatory | [bool](#bool) | | mandatory shows whether the attribute is optional (false) or required (true) | +| default | [string](#string) | | **Deprecated.** default is a default value used with optional attributes. Replaced by 'defaults' below | +| range | [string](#string) | repeated | range is definition of the range of values a value is allowed | +| length | [string](#string) | repeated | length is a defintion of the length restrictions for the attribute | +| type_opts | [uint64](#uint64) | repeated | | +| IsAKey | [bool](#bool) | | | +| AttrName | [string](#string) | | | +| defaults | [string](#string) | repeated | defaults is a default value(s) used with optional attributes. For leaf-list can have repeated values replaces the 'default' attribute above | + + + + + + + + +### RollbackRequest +RollbackRequest carries the index of the configuration change transaction to rollback. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| transaction_id | [TransactionID](#onos-config-v3-TransactionID) | | | + + + + + + + + +### RollbackResponse +RollbackResponse carries the response of the rollback operation + + + + + + + + +### ValidateConfigChunkRequest +ValidateConfigRequest carries configuration data to be validated as a JSON blob + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| json | [bytes](#bytes) | | | + + + + + + + + +### ValidateConfigRequest +ValidateConfigRequest carries configuration data to be validated as a JSON blob + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| json | [bytes](#bytes) | | | + + + + + + + + +### ValidateConfigRequestChunk +ValidateConfigRequestChunk carries configuration data to be validated as a JSON blob +Recommended maximum size is 100kB + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| json | [bytes](#bytes) | | | + + + + + + + + +### ValidateConfigResponse +ValidateConfigResponse carries the result of the validation + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| valid | [bool](#bool) | | | +| message | [string](#string) | | | + + + + + + + + +### ValueSelectionRequest +ValueSelectionRequest carries the necessary parts to form a selection context + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| selectionPath | [string](#string) | | selectionPath is a configuration path to a leaf in the format: /a/b[key1=index][key2=index2]/c/d where d is a leaf node | +| configJson | [bytes](#bytes) | | configJson is a JSON tree view of the complete Configuration for a Target | + + + + + + + + +### ValueSelectionRequestChunk +ValueSelectionRequestChunk carries the necessary parts to form a selection context +Recommended maximum size is 100kB + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| selectionPath | [string](#string) | | selectionPath is a configuration path to a leaf in the format: /a/b[key1=index][key2=index2]/c/d where d is a leaf node | +| configJson | [bytes](#bytes) | | configJson is a JSON tree view of the complete Configuration for a Target | + + + + + + + + +### ValueSelectionResponse +ValueSelectionResponse returns the result of applying the selection rules to the selection context + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| selection | [string](#string) | repeated | selection is an array of string values | + + + + + + + + +### WatchConfigurationsRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| configuration_id | [ConfigurationID](#onos-config-v3-ConfigurationID) | | | +| noreplay | [bool](#bool) | | | + + + + + + + + +### WatchConfigurationsResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| event | [ConfigurationEvent](#onos-config-v3-ConfigurationEvent) | | | + + + + + + + + +### WatchTransactionsRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| transaction_id | [TransactionID](#onos-config-v3-TransactionID) | | | +| noreplay | [bool](#bool) | | | + + + + + + + + +### WatchTransactionsResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| event | [TransactionEvent](#onos-config-v3-TransactionEvent) | | | + + + + + + + + + + + + + + +### ConfigAdminService +ConfigAdminService provides means for enhanced interactions with the configuration subsystem. + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| ListRegisteredModels | [ListModelsRequest](#onos-config-v3-ListModelsRequest) | [ModelPlugin](#onos-config-v3-ModelPlugin) stream | ListRegisteredModels returns a stream of registered models. | +| RollbackTransaction | [RollbackRequest](#onos-config-v3-RollbackRequest) | [RollbackResponse](#onos-config-v3-RollbackResponse) | RollbackTransaction rolls back the specified configuration change transaction. | +| LeafSelectionQuery | [LeafSelectionQueryRequest](#onos-config-v3-LeafSelectionQueryRequest) | [LeafSelectionQueryResponse](#onos-config-v3-LeafSelectionQueryResponse) | LeafSelectionQuery selects values allowable for leaf. It supports the ROC GUI by supplying a list of valid leaf values based off an XPath query defined in a 'leaf-selection' YANG extension Calls on GetValueSelection RPC on Model Plugin | + + + + +### ConfigurationService +ConfigurationService provides means to inspect the contents of the internal configurations store. + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| GetConfiguration | [GetConfigurationRequest](#onos-config-v3-GetConfigurationRequest) | [GetConfigurationResponse](#onos-config-v3-GetConfigurationResponse) | Get configuration by its target ID | +| ListConfigurations | [ListConfigurationsRequest](#onos-config-v3-ListConfigurationsRequest) | [ListConfigurationsResponse](#onos-config-v3-ListConfigurationsResponse) stream | List returns all target configurations | +| WatchConfigurations | [WatchConfigurationsRequest](#onos-config-v3-WatchConfigurationsRequest) | [WatchConfigurationsResponse](#onos-config-v3-WatchConfigurationsResponse) stream | Watch returns a stream of configuration change notifications | + + + + +### ModelPluginService +ModelPluginService is to be implemented by model plugin sidecar + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| GetModelInfo | [ModelInfoRequest](#onos-config-v3-ModelInfoRequest) | [ModelInfoResponse](#onos-config-v3-ModelInfoResponse) | GetModelInfo provides information about the model | +| ValidateConfig | [ValidateConfigRequest](#onos-config-v3-ValidateConfigRequest) | [ValidateConfigResponse](#onos-config-v3-ValidateConfigResponse) | ValidateConfig validates the provided configuration data against the model | +| ValidateConfigChunked | [ValidateConfigRequestChunk](#onos-config-v3-ValidateConfigRequestChunk) stream | [ValidateConfigResponse](#onos-config-v3-ValidateConfigResponse) | ValidateConfigChunked validates the provided configuration data against the model | +| GetPathValues | [PathValuesRequest](#onos-config-v3-PathValuesRequest) | [PathValuesResponse](#onos-config-v3-PathValuesResponse) | GetPathValues produces list of typed path value entries from the specified configuration change JSON tree | +| GetValueSelection | [ValueSelectionRequest](#onos-config-v3-ValueSelectionRequest) | [ValueSelectionResponse](#onos-config-v3-ValueSelectionResponse) | GetValueSelection gets a list of valid options for a leaf by applying selection rules in YANG. Replaced by GetValueSelectionChunked | +| GetValueSelectionChunked | [ValueSelectionRequestChunk](#onos-config-v3-ValueSelectionRequestChunk) stream | [ValueSelectionResponse](#onos-config-v3-ValueSelectionResponse) | GetValueSelectionChunked gets a list of valid options for a leaf by applying selection rules in YANG. The selection rules should be defined as an XPath expression, as an argument to a `leaf-selection` extension in the YANG model (Used to support the ROC GUI) | + + + + +### TransactionService +TransactionService provides means to inspect the contents of the internal transactions store. + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| GetTransaction | [GetTransactionRequest](#onos-config-v3-GetTransactionRequest) | [GetTransactionResponse](#onos-config-v3-GetTransactionResponse) | Get transaction by its ID or index | +| ListTransactions | [ListTransactionsRequest](#onos-config-v3-ListTransactionsRequest) | [ListTransactionsResponse](#onos-config-v3-ListTransactionsResponse) stream | List returns all configuration transactions | +| WatchTransactions | [WatchTransactionsRequest](#onos-config-v3-WatchTransactionsRequest) | [WatchTransactionsResponse](#onos-config-v3-WatchTransactionsResponse) stream | Watch returns a stream of configuration transaction change notifications | + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-api/docs/onos/config/v3/configuration.md b/onos-api/docs/onos/config/v3/configuration.md new file mode 100644 index 0000000..b147aa8 --- /dev/null +++ b/onos-api/docs/onos/config/v3/configuration.md @@ -0,0 +1,242 @@ +# Protocol Documentation + + +## Table of Contents + +- [onos/config/v3/configuration.proto](#onos_config_v3_configuration-proto) + - [AppliedConfiguration](#onos-config-v3-AppliedConfiguration) + - [AppliedConfiguration.ValuesEntry](#onos-config-v3-AppliedConfiguration-ValuesEntry) + - [CommittedConfiguration](#onos-config-v3-CommittedConfiguration) + - [CommittedConfiguration.ValuesEntry](#onos-config-v3-CommittedConfiguration-ValuesEntry) + - [Configuration](#onos-config-v3-Configuration) + - [ConfigurationEvent](#onos-config-v3-ConfigurationEvent) + - [ConfigurationID](#onos-config-v3-ConfigurationID) + - [ConfigurationStatus](#onos-config-v3-ConfigurationStatus) + - [MastershipStatus](#onos-config-v3-MastershipStatus) + + - [ConfigurationEvent.EventType](#onos-config-v3-ConfigurationEvent-EventType) + - [ConfigurationStatus.State](#onos-config-v3-ConfigurationStatus-State) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## onos/config/v3/configuration.proto + + + + + +### AppliedConfiguration + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| index | [uint64](#uint64) | | | +| ordinal | [uint64](#uint64) | | | +| revision | [uint64](#uint64) | | | +| target | [uint64](#uint64) | | | +| term | [uint64](#uint64) | | | +| values | [AppliedConfiguration.ValuesEntry](#onos-config-v3-AppliedConfiguration-ValuesEntry) | repeated | | + + + + + + + + +### AppliedConfiguration.ValuesEntry + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| key | [string](#string) | | | +| value | [PathValue](#onos-config-v3-PathValue) | | | + + + + + + + + +### CommittedConfiguration + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| index | [uint64](#uint64) | | | +| ordinal | [uint64](#uint64) | | | +| revision | [uint64](#uint64) | | | +| target | [uint64](#uint64) | | | +| change | [uint64](#uint64) | | | +| values | [CommittedConfiguration.ValuesEntry](#onos-config-v3-CommittedConfiguration-ValuesEntry) | repeated | | + + + + + + + + +### CommittedConfiguration.ValuesEntry + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| key | [string](#string) | | | +| value | [PathValue](#onos-config-v3-PathValue) | | | + + + + + + + + +### Configuration +Configuration represents complete desired target configuration + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| meta | [ObjectMeta](#onos-config-v3-ObjectMeta) | | | +| id | [ConfigurationID](#onos-config-v3-ConfigurationID) | | 'id' is the unique identifier of the configuration | +| committed | [CommittedConfiguration](#onos-config-v3-CommittedConfiguration) | | | +| applied | [AppliedConfiguration](#onos-config-v3-AppliedConfiguration) | | | +| status | [ConfigurationStatus](#onos-config-v3-ConfigurationStatus) | | 'ConfigurationStatus' is the current lifecycle status of the configuration | + + + + + + + + +### ConfigurationEvent +ConfigurationEvent configuration store event + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| type | [ConfigurationEvent.EventType](#onos-config-v3-ConfigurationEvent-EventType) | | EventType configuration event type | +| configuration | [Configuration](#onos-config-v3-Configuration) | | | + + + + + + + + +### ConfigurationID + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| target | [Target](#onos-config-v3-Target) | | | + + + + + + + + +### ConfigurationStatus +ConfigurationStatus is the status of a Configuration + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| state | [ConfigurationStatus.State](#onos-config-v3-ConfigurationStatus-State) | | 'state' is the configuration state | +| mastership | [MastershipStatus](#onos-config-v3-MastershipStatus) | | | + + + + + + + + +### MastershipStatus + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| master | [string](#string) | | | +| term | [uint64](#uint64) | | | + + + + + + + + + + +### ConfigurationEvent.EventType +EventType configuration event types for configuration store + +| Name | Number | Description | +| ---- | ------ | ----------- | +| UNKNOWN | 0 | UNKNOWN indicates unknown configuration store event | +| CREATED | 1 | CREATED indicates the configuration entry in the store is created | +| UPDATED | 2 | UPDATED indicates the configuration entry in the store is updated | +| DELETED | 3 | DELETED indicates the configuration entry in the store is deleted | +| REPLAYED | 4 | REPLAYED | + + + + + +### ConfigurationStatus.State +State is the configuration state + +| Name | Number | Description | +| ---- | ------ | ----------- | +| UNKNOWN | 0 | | +| SYNCHRONIZING | 1 | | +| SYNCHRONIZED | 2 | | +| PERSISTED | 3 | | + + + + + + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-api/docs/onos/config/v3/transaction.md b/onos-api/docs/onos/config/v3/transaction.md new file mode 100644 index 0000000..d282093 --- /dev/null +++ b/onos-api/docs/onos/config/v3/transaction.md @@ -0,0 +1,285 @@ +# Protocol Documentation + + +## Table of Contents + +- [onos/config/v3/transaction.proto](#onos_config_v3_transaction-proto) + - [Transaction](#onos-config-v3-Transaction) + - [Transaction.ValuesEntry](#onos-config-v3-Transaction-ValuesEntry) + - [TransactionChangeStatus](#onos-config-v3-TransactionChangeStatus) + - [TransactionEvent](#onos-config-v3-TransactionEvent) + - [TransactionID](#onos-config-v3-TransactionID) + - [TransactionPhaseStatus](#onos-config-v3-TransactionPhaseStatus) + - [TransactionRollbackStatus](#onos-config-v3-TransactionRollbackStatus) + - [TransactionRollbackStatus.ValuesEntry](#onos-config-v3-TransactionRollbackStatus-ValuesEntry) + - [TransactionStatus](#onos-config-v3-TransactionStatus) + - [TransactionStrategy](#onos-config-v3-TransactionStrategy) + + - [TransactionEvent.EventType](#onos-config-v3-TransactionEvent-EventType) + - [TransactionPhaseStatus.State](#onos-config-v3-TransactionPhaseStatus-State) + - [TransactionStatus.Phase](#onos-config-v3-TransactionStatus-Phase) + - [TransactionStrategy.Synchronicity](#onos-config-v3-TransactionStrategy-Synchronicity) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## onos/config/v3/transaction.proto + + + + + +### Transaction + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| meta | [ObjectMeta](#onos-config-v3-ObjectMeta) | | | +| id | [TransactionID](#onos-config-v3-TransactionID) | | 'id' is the unique identifier of the transaction | +| values | [Transaction.ValuesEntry](#onos-config-v3-Transaction-ValuesEntry) | repeated | 'values' is a set of changes to apply to targets | +| status | [TransactionStatus](#onos-config-v3-TransactionStatus) | | 'status' is the transaction status | + + + + + + + + +### Transaction.ValuesEntry + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| key | [string](#string) | | | +| value | [PathValue](#onos-config-v3-PathValue) | | | + + + + + + + + +### TransactionChangeStatus + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| ordinal | [uint64](#uint64) | | | +| commit | [TransactionPhaseStatus](#onos-config-v3-TransactionPhaseStatus) | | | +| apply | [TransactionPhaseStatus](#onos-config-v3-TransactionPhaseStatus) | | | + + + + + + + + +### TransactionEvent +TransactionEvent transaction store event + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| type | [TransactionEvent.EventType](#onos-config-v3-TransactionEvent-EventType) | | | +| transaction | [Transaction](#onos-config-v3-Transaction) | | | + + + + + + + + +### TransactionID + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| target | [Target](#onos-config-v3-Target) | | | +| index | [uint64](#uint64) | | | + + + + + + + + +### TransactionPhaseStatus + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| start | [google.protobuf.Timestamp](#google-protobuf-Timestamp) | | | +| end | [google.protobuf.Timestamp](#google-protobuf-Timestamp) | | | +| state | [TransactionPhaseStatus.State](#onos-config-v3-TransactionPhaseStatus-State) | | | +| failure | [Failure](#onos-config-v3-Failure) | | | + + + + + + + + +### TransactionRollbackStatus + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| ordinal | [uint64](#uint64) | | | +| commit | [TransactionPhaseStatus](#onos-config-v3-TransactionPhaseStatus) | | | +| apply | [TransactionPhaseStatus](#onos-config-v3-TransactionPhaseStatus) | | | +| index | [uint64](#uint64) | | | +| values | [TransactionRollbackStatus.ValuesEntry](#onos-config-v3-TransactionRollbackStatus-ValuesEntry) | repeated | | + + + + + + + + +### TransactionRollbackStatus.ValuesEntry + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| key | [string](#string) | | | +| value | [PathValue](#onos-config-v3-PathValue) | | | + + + + + + + + +### TransactionStatus + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| phase | [TransactionStatus.Phase](#onos-config-v3-TransactionStatus-Phase) | | | +| change | [TransactionChangeStatus](#onos-config-v3-TransactionChangeStatus) | | | +| rollback | [TransactionRollbackStatus](#onos-config-v3-TransactionRollbackStatus) | | | + + + + + + + + +### TransactionStrategy + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| synchronicity | [TransactionStrategy.Synchronicity](#onos-config-v3-TransactionStrategy-Synchronicity) | | 'synchronicity' indicates the transaction synchronicity level | + + + + + + + + + + +### TransactionEvent.EventType +EventType transaction event types for transaction store + +| Name | Number | Description | +| ---- | ------ | ----------- | +| UNKNOWN | 0 | | +| CREATED | 1 | | +| UPDATED | 2 | | +| DELETED | 3 | | +| REPLAYED | 4 | | + + + + + +### TransactionPhaseStatus.State + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| PENDING | 0 | | +| IN_PROGRESS | 1 | | +| COMPLETE | 2 | | +| ABORTED | 3 | | +| CANCELED | 4 | | +| FAILED | 5 | | + + + + + +### TransactionStatus.Phase + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| CHANGE | 0 | | +| ROLLBACK | 1 | | + + + + + +### TransactionStrategy.Synchronicity + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| ASYNCHRONOUS | 0 | | +| SYNCHRONOUS | 1 | | + + + + + + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-api/docs/onos/config/v3/value.md b/onos-api/docs/onos/config/v3/value.md new file mode 100644 index 0000000..b7e70cd --- /dev/null +++ b/onos-api/docs/onos/config/v3/value.md @@ -0,0 +1,146 @@ +# Protocol Documentation + + +## Table of Contents + +- [onos/config/v3/value.proto](#onos_config_v3_value-proto) + - [PathValue](#onos-config-v3-PathValue) + - [PathValues](#onos-config-v3-PathValues) + - [PathValues.ValuesEntry](#onos-config-v3-PathValues-ValuesEntry) + - [TypedValue](#onos-config-v3-TypedValue) + + - [ValueType](#onos-config-v3-ValueType) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## onos/config/v3/value.proto + + + + + +### PathValue +PathValue is the state of a path/value in the configuration tree + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| path | [string](#string) | | 'path' is the path to change | +| value | [TypedValue](#onos-config-v3-TypedValue) | | 'value' is the change value | +| deleted | [bool](#bool) | | 'deleted' indicates whether this is a delete | +| index | [uint64](#uint64) | | index transaction index | + + + + + + + + +### PathValues +PathValues is a set of path/value pairs + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| values | [PathValues.ValuesEntry](#onos-config-v3-PathValues-ValuesEntry) | repeated | 'values' is a set of change values to apply | + + + + + + + + +### PathValues.ValuesEntry + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| key | [string](#string) | | | +| value | [PathValue](#onos-config-v3-PathValue) | | | + + + + + + + + +### TypedValue +TypedValue is a value represented as a byte array + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| bytes | [bytes](#bytes) | | 'bytes' is the bytes array | +| type | [ValueType](#onos-config-v3-ValueType) | | 'type' is the value type | +| type_opts | [int32](#int32) | repeated | 'type_opts' is a set of type options | + + + + + + + + + + +### ValueType +ValueType is the type for a value + +| Name | Number | Description | +| ---- | ------ | ----------- | +| EMPTY | 0 | | +| STRING | 1 | | +| INT | 2 | | +| UINT | 3 | | +| BOOL | 4 | | +| DECIMAL | 5 | | +| FLOAT | 6 | | +| BYTES | 7 | | +| LEAFLIST_STRING | 8 | | +| LEAFLIST_INT | 9 | | +| LEAFLIST_UINT | 10 | | +| LEAFLIST_BOOL | 11 | | +| LEAFLIST_DECIMAL | 12 | | +| LEAFLIST_FLOAT | 13 | | +| LEAFLIST_BYTES | 14 | | +| DOUBLE | 15 | | +| LEAFLIST_DOUBLE | 16 | | + + + + + + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-api/docs/onos/discovery/discovery.md b/onos-api/docs/onos/discovery/discovery.md new file mode 100644 index 0000000..48bde1d --- /dev/null +++ b/onos-api/docs/onos/discovery/discovery.md @@ -0,0 +1,221 @@ +# Protocol Documentation + + +## Table of Contents + +- [onos/discovery/discovery.proto](#onos_discovery_discovery-proto) + - [AddPodRequest](#onos-discovery-AddPodRequest) + - [AddPodResponse](#onos-discovery-AddPodResponse) + - [AddRackRequest](#onos-discovery-AddRackRequest) + - [AddRackResponse](#onos-discovery-AddRackResponse) + - [AddServerIPURequest](#onos-discovery-AddServerIPURequest) + - [AddServerIPUResponse](#onos-discovery-AddServerIPUResponse) + - [AddSwitchRequest](#onos-discovery-AddSwitchRequest) + - [AddSwitchResponse](#onos-discovery-AddSwitchResponse) + - [InjectedLink](#onos-discovery-InjectedLink) + - [ManagementInfo](#onos-discovery-ManagementInfo) + + - [DiscoveryService](#onos-discovery-DiscoveryService) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## onos/discovery/discovery.proto + + + + + +### AddPodRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | + + + + + + + + +### AddPodResponse + + + + + + + + + +### AddRackRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | +| pod_id | [string](#string) | | | + + + + + + + + +### AddRackResponse + + + + + + + + + +### AddServerIPURequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | +| pod_id | [string](#string) | | | +| rack_id | [string](#string) | | | +| management_info | [ManagementInfo](#onos-discovery-ManagementInfo) | | | +| links | [InjectedLink](#onos-discovery-InjectedLink) | repeated | Provisional feature used to inject links until dynamic discovery is available | + + + + + + + + +### AddServerIPUResponse + + + + + + + + + +### AddSwitchRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | +| pod_id | [string](#string) | | | +| rack_id | [string](#string) | | | +| management_info | [ManagementInfo](#onos-discovery-ManagementInfo) | | | + + + + + + + + +### AddSwitchResponse + + + + + + + + + +### InjectedLink + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| port | [uint64](#uint64) | | | +| remote_port | [string](#string) | | | + + + + + + + + +### ManagementInfo + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| p4rt_endpoint | [string](#string) | | | +| gnmi_endpoint | [string](#string) | | | +| pipeline_config_id | [string](#string) | | | +| chassis_config_id | [string](#string) | | | +| link_agent_endpoint | [string](#string) | | | +| host_agent_endpoint | [string](#string) | | | +| nat_agent_endpoint | [string](#string) | | | +| device_id | [uint64](#uint64) | | | +| realm | [string](#string) | | | +| role | [string](#string) | | | + + + + + + + + + + + + + + +### DiscoveryService +DiscoveryService allows injection of topology objects to act as seeds for the topology +discovery. + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| AddPod | [AddPodRequest](#onos-discovery-AddPodRequest) | [AddPodResponse](#onos-discovery-AddPodResponse) | AddPod adds a new POD entity with the requisite aspects | +| AddRack | [AddRackRequest](#onos-discovery-AddRackRequest) | [AddRackResponse](#onos-discovery-AddRackResponse) | AddRack adds a new rack entity with the requisite aspects as part of a POD | +| AddSwitch | [AddSwitchRequest](#onos-discovery-AddSwitchRequest) | [AddSwitchResponse](#onos-discovery-AddSwitchResponse) | AddSwitch adds a new switch entity with the requisite aspects into a rack | +| AddServerIPU | [AddServerIPURequest](#onos-discovery-AddServerIPURequest) | [AddServerIPUResponse](#onos-discovery-AddServerIPUResponse) | AddServerIPU adds a new server entity and an associated IPU entity, both with the requisite aspects into a rack | + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-api/docs/onos/e2t/admin.md b/onos-api/docs/onos/e2t/admin.md new file mode 100644 index 0000000..241e80e --- /dev/null +++ b/onos-api/docs/onos/e2t/admin.md @@ -0,0 +1,233 @@ +# Protocol Documentation + + +## Table of Contents + +- [onos/e2t/admin/admin.proto](#onos_e2t_admin_admin-proto) + - [DropE2NodeConnectionsRequest](#onos-e2t-admin-DropE2NodeConnectionsRequest) + - [DropE2NodeConnectionsResponse](#onos-e2t-admin-DropE2NodeConnectionsResponse) + - [ListE2NodeConnectionsRequest](#onos-e2t-admin-ListE2NodeConnectionsRequest) + - [ListE2NodeConnectionsResponse](#onos-e2t-admin-ListE2NodeConnectionsResponse) + - [ListRegisteredServiceModelsRequest](#onos-e2t-admin-ListRegisteredServiceModelsRequest) + - [ListRegisteredServiceModelsResponse](#onos-e2t-admin-ListRegisteredServiceModelsResponse) + - [RANFunction](#onos-e2t-admin-RANFunction) + - [UploadRegisterServiceModelRequest](#onos-e2t-admin-UploadRegisterServiceModelRequest) + - [UploadRegisterServiceModelResponse](#onos-e2t-admin-UploadRegisterServiceModelResponse) + + - [E2NodeConnectionType](#onos-e2t-admin-E2NodeConnectionType) + + - [E2TAdminService](#onos-e2t-admin-E2TAdminService) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## onos/e2t/admin/admin.proto + + + + + +### DropE2NodeConnectionsRequest +DropE2NodeConnectionsRequest carries drop connection request + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| connections | [ListE2NodeConnectionsResponse](#onos-e2t-admin-ListE2NodeConnectionsResponse) | repeated | | + + + + + + + + +### DropE2NodeConnectionsResponse +DropE2NodeConnectionsResponse carries drop connection response + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| success | [bool](#bool) | repeated | | + + + + + + + + +### ListE2NodeConnectionsRequest +ListE2NodeConnectionsRequest carries request for a list of E2 node SCTP connections. + + + + + + + + +### ListE2NodeConnectionsResponse +ListE2NodeConnectionsResponse carries information about the SCTP connection to the remote E2 node. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | +| remote_ip | [string](#string) | repeated | | +| remote_port | [uint32](#uint32) | | | +| node_id | [string](#string) | | | +| plmn_id | [string](#string) | | | +| connection_type | [E2NodeConnectionType](#onos-e2t-admin-E2NodeConnectionType) | | | +| ran_functions | [RANFunction](#onos-e2t-admin-RANFunction) | repeated | | +| age_ms | [int32](#int32) | | | + + + + + + + + +### ListRegisteredServiceModelsRequest +ListRegisteredServiceModelsRequest carries data for querying registered service model plugins. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| model_name | [string](#string) | | An optional filter on the name of the model plugins to list. | +| model_version | [string](#string) | | An optional filter on the version of the model plugins to list | + + + + + + + + +### ListRegisteredServiceModelsResponse +ListRegisteredServiceModelsResponse is general information about a service model plugin. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| name | [string](#string) | | name is the name given to the service model plugin - no spaces and title case. | +| version | [string](#string) | | version is the semantic version of the Plugin e.g. 1.0.0. | + + + + + + + + +### RANFunction + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| oid | [string](#string) | | | +| ran_function_id | [string](#string) | | | +| description | [bytes](#bytes) | | | + + + + + + + + +### UploadRegisterServiceModelRequest +UploadRegisterServiceModelRequest is for streaming a model plugin file to the server. +There is a built in limit in gRPC of 4MB - plugin is usually around 20MB +so break in to chunks of approx 1-2MB. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| so_file | [string](#string) | | so_file is the name being streamed. | +| content | [bytes](#bytes) | | content is the bytes content. | + + + + + + + + +### UploadRegisterServiceModelResponse +UploadRegisterServiceModelResponse carries status of model plugin registration. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| name | [string](#string) | | name is name of the model plugin. | +| version | [string](#string) | | version is the semantic version of the model plugin. | + + + + + + + + + + +### E2NodeConnectionType +E2NodeConnectionType specifies the type of an E2 connection + +| Name | Number | Description | +| ---- | ------ | ----------- | +| UNKNOWN | 0 | | +| G_NB | 1 | | +| E_NB | 2 | | +| ENG_MB | 3 | | +| NGE_NB | 4 | | + + + + + + + + + +### E2TAdminService +E2TAdminService provides means for enhanced interactions with the ONOS RIC E2 Termination service. + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| UploadRegisterServiceModel | [UploadRegisterServiceModelRequest](#onos-e2t-admin-UploadRegisterServiceModelRequest) stream | [UploadRegisterServiceModelResponse](#onos-e2t-admin-UploadRegisterServiceModelResponse) | UploadRegisterServiceModel uploads and adds the model plugin to the list of supported models. The file is serialized in to Chunks of less than 4MB so as not to break the gRPC byte array limit | +| ListRegisteredServiceModels | [ListRegisteredServiceModelsRequest](#onos-e2t-admin-ListRegisteredServiceModelsRequest) | [ListRegisteredServiceModelsResponse](#onos-e2t-admin-ListRegisteredServiceModelsResponse) stream | ListRegisteredServiceModels returns a stream of registered service models. | +| ListE2NodeConnections | [ListE2NodeConnectionsRequest](#onos-e2t-admin-ListE2NodeConnectionsRequest) | [ListE2NodeConnectionsResponse](#onos-e2t-admin-ListE2NodeConnectionsResponse) stream | ListE2NodeConnections returns a stream of existing SCTP connections. | +| DropE2NodeConnections | [DropE2NodeConnectionsRequest](#onos-e2t-admin-DropE2NodeConnectionsRequest) | [DropE2NodeConnectionsResponse](#onos-e2t-admin-DropE2NodeConnectionsResponse) | DropE2NodeConnections drops the specified E2 node SCTP connections | + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-api/docs/onos/e2t/e2.md b/onos-api/docs/onos/e2t/e2.md new file mode 100644 index 0000000..f1468a7 --- /dev/null +++ b/onos-api/docs/onos/e2t/e2.md @@ -0,0 +1,1147 @@ +# Protocol Documentation + + +## Table of Contents + +- [onos/e2t/e2/v1beta1/control.proto](#onos_e2t_e2_v1beta1_control-proto) + - [ControlMessage](#onos-e2t-e2-v1beta1-ControlMessage) + - [ControlOutcome](#onos-e2t-e2-v1beta1-ControlOutcome) + - [ControlRequest](#onos-e2t-e2-v1beta1-ControlRequest) + - [ControlResponse](#onos-e2t-e2-v1beta1-ControlResponse) + + - [ControlService](#onos-e2t-e2-v1beta1-ControlService) + +- [onos/e2t/e2/v1beta1/e2.proto](#onos_e2t_e2_v1beta1_e2-proto) + - [Error](#onos-e2t-e2-v1beta1-Error) + - [Error.Cause](#onos-e2t-e2-v1beta1-Error-Cause) + - [Error.Cause.Misc](#onos-e2t-e2-v1beta1-Error-Cause-Misc) + - [Error.Cause.Protocol](#onos-e2t-e2-v1beta1-Error-Cause-Protocol) + - [Error.Cause.Ric](#onos-e2t-e2-v1beta1-Error-Cause-Ric) + - [Error.Cause.RicService](#onos-e2t-e2-v1beta1-Error-Cause-RicService) + - [Error.Cause.Transport](#onos-e2t-e2-v1beta1-Error-Cause-Transport) + - [Error.Cause.Unknown](#onos-e2t-e2-v1beta1-Error-Cause-Unknown) + - [RequestHeaders](#onos-e2t-e2-v1beta1-RequestHeaders) + - [ResponseHeaders](#onos-e2t-e2-v1beta1-ResponseHeaders) + - [ServiceModel](#onos-e2t-e2-v1beta1-ServiceModel) + + - [Encoding](#onos-e2t-e2-v1beta1-Encoding) + - [Error.Cause.Misc.Type](#onos-e2t-e2-v1beta1-Error-Cause-Misc-Type) + - [Error.Cause.Protocol.Type](#onos-e2t-e2-v1beta1-Error-Cause-Protocol-Type) + - [Error.Cause.Ric.Type](#onos-e2t-e2-v1beta1-Error-Cause-Ric-Type) + - [Error.Cause.RicService.Type](#onos-e2t-e2-v1beta1-Error-Cause-RicService-Type) + - [Error.Cause.Transport.Type](#onos-e2t-e2-v1beta1-Error-Cause-Transport-Type) + +- [onos/e2t/e2/v1beta1/subscription.proto](#onos_e2t_e2_v1beta1_subscription-proto) + - [Acknowledgement](#onos-e2t-e2-v1beta1-Acknowledgement) + - [Action](#onos-e2t-e2-v1beta1-Action) + - [Channel](#onos-e2t-e2-v1beta1-Channel) + - [ChannelEvent](#onos-e2t-e2-v1beta1-ChannelEvent) + - [ChannelMeta](#onos-e2t-e2-v1beta1-ChannelMeta) + - [ChannelSpec](#onos-e2t-e2-v1beta1-ChannelSpec) + - [ChannelStatus](#onos-e2t-e2-v1beta1-ChannelStatus) + - [EventTrigger](#onos-e2t-e2-v1beta1-EventTrigger) + - [GetChannelRequest](#onos-e2t-e2-v1beta1-GetChannelRequest) + - [GetChannelResponse](#onos-e2t-e2-v1beta1-GetChannelResponse) + - [GetSubscriptionRequest](#onos-e2t-e2-v1beta1-GetSubscriptionRequest) + - [GetSubscriptionResponse](#onos-e2t-e2-v1beta1-GetSubscriptionResponse) + - [Indication](#onos-e2t-e2-v1beta1-Indication) + - [ListChannelsRequest](#onos-e2t-e2-v1beta1-ListChannelsRequest) + - [ListChannelsResponse](#onos-e2t-e2-v1beta1-ListChannelsResponse) + - [ListSubscriptionsRequest](#onos-e2t-e2-v1beta1-ListSubscriptionsRequest) + - [ListSubscriptionsResponse](#onos-e2t-e2-v1beta1-ListSubscriptionsResponse) + - [SubscribeRequest](#onos-e2t-e2-v1beta1-SubscribeRequest) + - [SubscribeResponse](#onos-e2t-e2-v1beta1-SubscribeResponse) + - [Subscription](#onos-e2t-e2-v1beta1-Subscription) + - [SubscriptionEvent](#onos-e2t-e2-v1beta1-SubscriptionEvent) + - [SubscriptionMeta](#onos-e2t-e2-v1beta1-SubscriptionMeta) + - [SubscriptionSpec](#onos-e2t-e2-v1beta1-SubscriptionSpec) + - [SubscriptionStatus](#onos-e2t-e2-v1beta1-SubscriptionStatus) + - [SubsequentAction](#onos-e2t-e2-v1beta1-SubsequentAction) + - [UnsubscribeRequest](#onos-e2t-e2-v1beta1-UnsubscribeRequest) + - [UnsubscribeResponse](#onos-e2t-e2-v1beta1-UnsubscribeResponse) + - [WatchChannelsRequest](#onos-e2t-e2-v1beta1-WatchChannelsRequest) + - [WatchChannelsResponse](#onos-e2t-e2-v1beta1-WatchChannelsResponse) + - [WatchSubscriptionsRequest](#onos-e2t-e2-v1beta1-WatchSubscriptionsRequest) + - [WatchSubscriptionsResponse](#onos-e2t-e2-v1beta1-WatchSubscriptionsResponse) + + - [ActionType](#onos-e2t-e2-v1beta1-ActionType) + - [ChannelEventType](#onos-e2t-e2-v1beta1-ChannelEventType) + - [ChannelPhase](#onos-e2t-e2-v1beta1-ChannelPhase) + - [ChannelState](#onos-e2t-e2-v1beta1-ChannelState) + - [SubscriptionEventType](#onos-e2t-e2-v1beta1-SubscriptionEventType) + - [SubscriptionPhase](#onos-e2t-e2-v1beta1-SubscriptionPhase) + - [SubscriptionState](#onos-e2t-e2-v1beta1-SubscriptionState) + - [SubsequentActionType](#onos-e2t-e2-v1beta1-SubsequentActionType) + - [TimeToWait](#onos-e2t-e2-v1beta1-TimeToWait) + + - [SubscriptionAdminService](#onos-e2t-e2-v1beta1-SubscriptionAdminService) + - [SubscriptionService](#onos-e2t-e2-v1beta1-SubscriptionService) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## onos/e2t/e2/v1beta1/control.proto + + + + + +### ControlMessage + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| header | [bytes](#bytes) | | | +| payload | [bytes](#bytes) | | | + + + + + + + + +### ControlOutcome + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| payload | [bytes](#bytes) | | | + + + + + + + + +### ControlRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| headers | [RequestHeaders](#onos-e2t-e2-v1beta1-RequestHeaders) | | | +| message | [ControlMessage](#onos-e2t-e2-v1beta1-ControlMessage) | | | +| call_process_id | [bytes](#bytes) | | | + + + + + + + + +### ControlResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| headers | [ResponseHeaders](#onos-e2t-e2-v1beta1-ResponseHeaders) | | | +| outcome | [ControlOutcome](#onos-e2t-e2-v1beta1-ControlOutcome) | | | + + + + + + + + + + + + + + +### ControlService + + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| Control | [ControlRequest](#onos-e2t-e2-v1beta1-ControlRequest) | [ControlResponse](#onos-e2t-e2-v1beta1-ControlResponse) | | + + + + + + +

Top

+ +## onos/e2t/e2/v1beta1/e2.proto + + + + + +### Error +Error is an E2AP protocol error + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| cause | [Error.Cause](#onos-e2t-e2-v1beta1-Error-Cause) | | | + + + + + + + + +### Error.Cause + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| unknown | [Error.Cause.Unknown](#onos-e2t-e2-v1beta1-Error-Cause-Unknown) | | | +| protocol | [Error.Cause.Protocol](#onos-e2t-e2-v1beta1-Error-Cause-Protocol) | | | +| ric | [Error.Cause.Ric](#onos-e2t-e2-v1beta1-Error-Cause-Ric) | | | +| ric_service | [Error.Cause.RicService](#onos-e2t-e2-v1beta1-Error-Cause-RicService) | | | +| transport | [Error.Cause.Transport](#onos-e2t-e2-v1beta1-Error-Cause-Transport) | | | +| misc | [Error.Cause.Misc](#onos-e2t-e2-v1beta1-Error-Cause-Misc) | | | + + + + + + + + +### Error.Cause.Misc + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| type | [Error.Cause.Misc.Type](#onos-e2t-e2-v1beta1-Error-Cause-Misc-Type) | | | + + + + + + + + +### Error.Cause.Protocol + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| type | [Error.Cause.Protocol.Type](#onos-e2t-e2-v1beta1-Error-Cause-Protocol-Type) | | | + + + + + + + + +### Error.Cause.Ric + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| type | [Error.Cause.Ric.Type](#onos-e2t-e2-v1beta1-Error-Cause-Ric-Type) | | | + + + + + + + + +### Error.Cause.RicService + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| type | [Error.Cause.RicService.Type](#onos-e2t-e2-v1beta1-Error-Cause-RicService-Type) | | | + + + + + + + + +### Error.Cause.Transport + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| type | [Error.Cause.Transport.Type](#onos-e2t-e2-v1beta1-Error-Cause-Transport-Type) | | | + + + + + + + + +### Error.Cause.Unknown + + + + + + + + + +### RequestHeaders + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| app_id | [string](#string) | | | +| app_instance_id | [string](#string) | | | +| e2_node_id | [string](#string) | | | +| service_model | [ServiceModel](#onos-e2t-e2-v1beta1-ServiceModel) | | | +| encoding | [Encoding](#onos-e2t-e2-v1beta1-Encoding) | | | + + + + + + + + +### ResponseHeaders + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| encoding | [Encoding](#onos-e2t-e2-v1beta1-Encoding) | | | + + + + + + + + +### ServiceModel + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| name | [string](#string) | | | +| version | [string](#string) | | | + + + + + + + + + + +### Encoding + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| PROTO | 0 | | +| ASN1_PER | 1 | | +| ASN1_XER | 2 | | + + + + + +### Error.Cause.Misc.Type + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| UNSPECIFIED | 0 | | +| CONTROL_PROCESSING_OVERLOAD | 1 | | +| HARDWARE_FAILURE | 2 | | +| OM_INTERVENTION | 3 | | + + + + + +### Error.Cause.Protocol.Type + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| UNSPECIFIED | 0 | | +| TRANSFER_SYNTAX_ERROR | 1 | | +| ABSTRACT_SYNTAX_ERROR_REJECT | 2 | | +| ABSTRACT_SYNTAX_ERROR_IGNORE_AND_NOTIFY | 3 | | +| MESSAGE_NOT_COMPATIBLE_WITH_RECEIVER_STATE | 4 | | +| SEMANTIC_ERROR | 5 | | +| ABSTRACT_SYNTAX_ERROR_FALSELY_CONSTRUCTED_MESSAGE | 6 | | + + + + + +### Error.Cause.Ric.Type + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| UNSPECIFIED | 0 | | +| RAN_FUNCTION_ID_INVALID | 1 | | +| ACTION_NOT_SUPPORTED | 2 | | +| EXCESSIVE_ACTIONS | 3 | | +| DUPLICATE_ACTION | 4 | | +| DUPLICATE_EVENT | 5 | | +| FUNCTION_RESOURCE_LIMIT | 6 | | +| REQUEST_ID_UNKNOWN | 7 | | +| INCONSISTENT_ACTION_SUBSEQUENT_ACTION_SEQUENCE | 8 | | +| CONTROL_MESSAGE_INVALID | 9 | | +| CALL_PROCESS_ID_INVALID | 10 | | +| CONTROL_TIMER_EXPIRED | 11 | | +| CONTROL_FAILED_TO_EXECUTE | 12 | | +| CONTROL_SYSTEM_NOT_READY | 13 | | + + + + + +### Error.Cause.RicService.Type + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| UNSPECIFIED | 0 | | +| FUNCTION_NOT_REQUIRED | 1 | | +| EXCESSIVE_FUNCTIONS | 2 | | +| RIC_RESOURCE_LIMIT | 3 | | + + + + + +### Error.Cause.Transport.Type + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| UNSPECIFIED | 0 | | +| TRANSPORT_RESOURCE_UNAVAILABLE | 1 | | + + + + + + + + + + + +

Top

+ +## onos/e2t/e2/v1beta1/subscription.proto + + + + + +### Acknowledgement + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| channel_id | [string](#string) | | | + + + + + + + + +### Action + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [int32](#int32) | | | +| type | [ActionType](#onos-e2t-e2-v1beta1-ActionType) | | | +| payload | [bytes](#bytes) | | | +| subsequent_action | [SubsequentAction](#onos-e2t-e2-v1beta1-SubsequentAction) | | | + + + + + + + + +### Channel + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | +| meta | [ChannelMeta](#onos-e2t-e2-v1beta1-ChannelMeta) | | | +| spec | [ChannelSpec](#onos-e2t-e2-v1beta1-ChannelSpec) | | | +| status | [ChannelStatus](#onos-e2t-e2-v1beta1-ChannelStatus) | | | + + + + + + + + +### ChannelEvent + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| type | [ChannelEventType](#onos-e2t-e2-v1beta1-ChannelEventType) | | | +| channel | [Channel](#onos-e2t-e2-v1beta1-Channel) | | | + + + + + + + + +### ChannelMeta +ChannelMeta contains metadata relating to a subscription channel + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| app_id | [string](#string) | | app_id is an identifier for the application that created the channel shared across all instances of the application | +| app_instance_id | [string](#string) | | app_instance_id is an identifier unique to a single node within the application that created the channel | +| e2_node_id | [string](#string) | | e2_node_id is the identifier for the E2 node to which the subscription is targeted | +| transaction_id | [string](#string) | | transaction_id is a persistent identifier for the transaction | +| subscription_id | [string](#string) | | subscription_id is the identifier for the underlying subscription | +| service_model | [ServiceModel](#onos-e2t-e2-v1beta1-ServiceModel) | | service_model is the service model specification | +| encoding | [Encoding](#onos-e2t-e2-v1beta1-Encoding) | | encoding indicates the type of encoding used within the parent message | +| revision | [uint64](#uint64) | | | +| finalizers | [string](#string) | repeated | | + + + + + + + + +### ChannelSpec + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| subscription | [SubscriptionSpec](#onos-e2t-e2-v1beta1-SubscriptionSpec) | | | +| transaction_timeout | [google.protobuf.Duration](#google-protobuf-Duration) | | | + + + + + + + + +### ChannelStatus + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| phase | [ChannelPhase](#onos-e2t-e2-v1beta1-ChannelPhase) | | | +| state | [ChannelState](#onos-e2t-e2-v1beta1-ChannelState) | | | +| error | [Error](#onos-e2t-e2-v1beta1-Error) | | | +| timestamp | [google.protobuf.Timestamp](#google-protobuf-Timestamp) | | | +| term | [uint64](#uint64) | | | +| master | [string](#string) | | | + + + + + + + + +### EventTrigger + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| payload | [bytes](#bytes) | | | + + + + + + + + +### GetChannelRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| channel_id | [string](#string) | | | + + + + + + + + +### GetChannelResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| channel | [Channel](#onos-e2t-e2-v1beta1-Channel) | | | + + + + + + + + +### GetSubscriptionRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| subscription_id | [string](#string) | | | + + + + + + + + +### GetSubscriptionResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| subscription | [Subscription](#onos-e2t-e2-v1beta1-Subscription) | | | + + + + + + + + +### Indication + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| header | [bytes](#bytes) | | | +| payload | [bytes](#bytes) | | | +| call_process_id | [bytes](#bytes) | | | + + + + + + + + +### ListChannelsRequest + + + + + + + + + +### ListChannelsResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| channels | [Channel](#onos-e2t-e2-v1beta1-Channel) | repeated | | + + + + + + + + +### ListSubscriptionsRequest + + + + + + + + + +### ListSubscriptionsResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| subscriptions | [Subscription](#onos-e2t-e2-v1beta1-Subscription) | repeated | | + + + + + + + + +### SubscribeRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| headers | [RequestHeaders](#onos-e2t-e2-v1beta1-RequestHeaders) | | | +| transaction_id | [string](#string) | | | +| subscription | [SubscriptionSpec](#onos-e2t-e2-v1beta1-SubscriptionSpec) | | | +| transaction_timeout | [google.protobuf.Duration](#google-protobuf-Duration) | | | + + + + + + + + +### SubscribeResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| headers | [ResponseHeaders](#onos-e2t-e2-v1beta1-ResponseHeaders) | | | +| ack | [Acknowledgement](#onos-e2t-e2-v1beta1-Acknowledgement) | | | +| indication | [Indication](#onos-e2t-e2-v1beta1-Indication) | | | + + + + + + + + +### Subscription + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | +| meta | [SubscriptionMeta](#onos-e2t-e2-v1beta1-SubscriptionMeta) | | | +| spec | [SubscriptionSpec](#onos-e2t-e2-v1beta1-SubscriptionSpec) | | | +| status | [SubscriptionStatus](#onos-e2t-e2-v1beta1-SubscriptionStatus) | | | + + + + + + + + +### SubscriptionEvent + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| type | [SubscriptionEventType](#onos-e2t-e2-v1beta1-SubscriptionEventType) | | | +| subscription | [Subscription](#onos-e2t-e2-v1beta1-Subscription) | | | + + + + + + + + +### SubscriptionMeta + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| e2_node_id | [string](#string) | | | +| service_model | [ServiceModel](#onos-e2t-e2-v1beta1-ServiceModel) | | | +| encoding | [Encoding](#onos-e2t-e2-v1beta1-Encoding) | | | +| revision | [uint64](#uint64) | | | +| finalizers | [string](#string) | repeated | | + + + + + + + + +### SubscriptionSpec + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| event_trigger | [EventTrigger](#onos-e2t-e2-v1beta1-EventTrigger) | | | +| actions | [Action](#onos-e2t-e2-v1beta1-Action) | repeated | | + + + + + + + + +### SubscriptionStatus + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| phase | [SubscriptionPhase](#onos-e2t-e2-v1beta1-SubscriptionPhase) | | | +| state | [SubscriptionState](#onos-e2t-e2-v1beta1-SubscriptionState) | | | +| error | [Error](#onos-e2t-e2-v1beta1-Error) | | | +| channels | [string](#string) | repeated | | +| term | [uint64](#uint64) | | | +| master | [string](#string) | | | + + + + + + + + +### SubsequentAction + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| type | [SubsequentActionType](#onos-e2t-e2-v1beta1-SubsequentActionType) | | | +| time_to_wait | [TimeToWait](#onos-e2t-e2-v1beta1-TimeToWait) | | | + + + + + + + + +### UnsubscribeRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| headers | [RequestHeaders](#onos-e2t-e2-v1beta1-RequestHeaders) | | | +| transaction_id | [string](#string) | | | + + + + + + + + +### UnsubscribeResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| headers | [ResponseHeaders](#onos-e2t-e2-v1beta1-ResponseHeaders) | | | + + + + + + + + +### WatchChannelsRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| no_replay | [bool](#bool) | | | + + + + + + + + +### WatchChannelsResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| event | [ChannelEvent](#onos-e2t-e2-v1beta1-ChannelEvent) | | | + + + + + + + + +### WatchSubscriptionsRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| no_replay | [bool](#bool) | | | + + + + + + + + +### WatchSubscriptionsResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| event | [SubscriptionEvent](#onos-e2t-e2-v1beta1-SubscriptionEvent) | | | + + + + + + + + + + +### ActionType + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| ACTION_TYPE_REPORT | 0 | | +| ACTION_TYPE_INSERT | 1 | | +| ACTION_TYPE_POLICY | 2 | | + + + + + +### ChannelEventType + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| CHANNEL_EVENT_UNKNOWN | 0 | | +| CHANNEL_CREATED | 1 | | +| CHANNEL_UPDATED | 2 | | +| CHANNEL_DELETED | 3 | | +| CHANNEL_REPLAYED | 4 | | + + + + + +### ChannelPhase + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| CHANNEL_CLOSED | 0 | | +| CHANNEL_OPEN | 1 | | + + + + + +### ChannelState + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| CHANNEL_PENDING | 0 | CHANNEL_PENDING indicates the channel phase is pending | +| CHANNEL_COMPLETE | 1 | CHANNEL_COMPLETE indicates the channel phase is complete | +| CHANNEL_FAILED | 2 | CHANNEL_FAILED indicates the channel phase failed | + + + + + +### SubscriptionEventType + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| SUBSCRIPTION_EVENT_UNKNOWN | 0 | | +| SUBSCRIPTION_CREATED | 1 | | +| SUBSCRIPTION_UPDATED | 2 | | +| SUBSCRIPTION_DELETED | 3 | | +| SUBSCRIPTION_REPLAYED | 4 | | + + + + + +### SubscriptionPhase + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| SUBSCRIPTION_CLOSED | 0 | | +| SUBSCRIPTION_OPEN | 1 | | + + + + + +### SubscriptionState + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| SUBSCRIPTION_PENDING | 0 | SUBSCRIPTION_PENDING indicates the subscription phase is pending | +| SUBSCRIPTION_COMPLETE | 1 | SUBSCRIPTION_COMPLETE indicates the subscription phase is complete | +| SUBSCRIPTION_FAILED | 2 | SUBSCRIPTION_FAILED indicates the subscription phase failed | + + + + + +### SubsequentActionType + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| SUBSEQUENT_ACTION_TYPE_CONTINUE | 0 | | +| SUBSEQUENT_ACTION_TYPE_WAIT | 1 | | + + + + + +### TimeToWait + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| TIME_TO_WAIT_ZERO | 0 | | +| TIME_TO_WAIT_W1MS | 1 | | +| TIME_TO_WAIT_W2MS | 2 | | +| TIME_TO_WAIT_W5MS | 3 | | +| TIME_TO_WAIT_W10MS | 4 | | +| TIME_TO_WAIT_W20MS | 5 | | +| TIME_TO_WAIT_W30MS | 6 | | +| TIME_TO_WAIT_W40MS | 7 | | +| TIME_TO_WAIT_W50MS | 8 | | +| TIME_TO_WAIT_W100MS | 9 | | +| TIME_TO_WAIT_W200MS | 10 | | +| TIME_TO_WAIT_W500MS | 11 | | +| TIME_TO_WAIT_W1S | 12 | | +| TIME_TO_WAIT_W2S | 13 | | +| TIME_TO_WAIT_W5S | 14 | | +| TIME_TO_WAIT_W10S | 15 | | +| TIME_TO_WAIT_W20S | 16 | | +| TIME_TO_WAIT_W60S | 17 | | + + + + + + + + + +### SubscriptionAdminService + + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| GetChannel | [GetChannelRequest](#onos-e2t-e2-v1beta1-GetChannelRequest) | [GetChannelResponse](#onos-e2t-e2-v1beta1-GetChannelResponse) | | +| ListChannels | [ListChannelsRequest](#onos-e2t-e2-v1beta1-ListChannelsRequest) | [ListChannelsResponse](#onos-e2t-e2-v1beta1-ListChannelsResponse) | | +| WatchChannels | [WatchChannelsRequest](#onos-e2t-e2-v1beta1-WatchChannelsRequest) | [WatchChannelsResponse](#onos-e2t-e2-v1beta1-WatchChannelsResponse) stream | | +| GetSubscription | [GetSubscriptionRequest](#onos-e2t-e2-v1beta1-GetSubscriptionRequest) | [GetSubscriptionResponse](#onos-e2t-e2-v1beta1-GetSubscriptionResponse) | | +| ListSubscriptions | [ListSubscriptionsRequest](#onos-e2t-e2-v1beta1-ListSubscriptionsRequest) | [ListSubscriptionsResponse](#onos-e2t-e2-v1beta1-ListSubscriptionsResponse) | | +| WatchSubscriptions | [WatchSubscriptionsRequest](#onos-e2t-e2-v1beta1-WatchSubscriptionsRequest) | [WatchSubscriptionsResponse](#onos-e2t-e2-v1beta1-WatchSubscriptionsResponse) stream | | + + + + +### SubscriptionService + + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| Subscribe | [SubscribeRequest](#onos-e2t-e2-v1beta1-SubscribeRequest) | [SubscribeResponse](#onos-e2t-e2-v1beta1-SubscribeResponse) stream | | +| Unsubscribe | [UnsubscribeRequest](#onos-e2t-e2-v1beta1-UnsubscribeRequest) | [UnsubscribeResponse](#onos-e2t-e2-v1beta1-UnsubscribeResponse) | | + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-api/docs/onos/fabricsim/devices.md b/onos-api/docs/onos/fabricsim/devices.md new file mode 100644 index 0000000..1691b9d --- /dev/null +++ b/onos-api/docs/onos/fabricsim/devices.md @@ -0,0 +1,432 @@ +# Protocol Documentation + + +## Table of Contents + +- [onos/fabricsim/devices.proto](#onos_fabricsim_devices-proto) + - [AddDeviceRequest](#onos-fabricsim-AddDeviceRequest) + - [AddDeviceResponse](#onos-fabricsim-AddDeviceResponse) + - [Device](#onos-fabricsim-Device) + - [DisablePortRequest](#onos-fabricsim-DisablePortRequest) + - [DisablePortResponse](#onos-fabricsim-DisablePortResponse) + - [EmitLLDPPacketRequest](#onos-fabricsim-EmitLLDPPacketRequest) + - [EmitLLDPPacketResponse](#onos-fabricsim-EmitLLDPPacketResponse) + - [EnablePortRequest](#onos-fabricsim-EnablePortRequest) + - [EnablePortResponse](#onos-fabricsim-EnablePortResponse) + - [EntitiesInfo](#onos-fabricsim-EntitiesInfo) + - [GetDeviceRequest](#onos-fabricsim-GetDeviceRequest) + - [GetDeviceResponse](#onos-fabricsim-GetDeviceResponse) + - [GetDevicesRequest](#onos-fabricsim-GetDevicesRequest) + - [GetDevicesResponse](#onos-fabricsim-GetDevicesResponse) + - [PipelineInfo](#onos-fabricsim-PipelineInfo) + - [Port](#onos-fabricsim-Port) + - [RemoveDeviceRequest](#onos-fabricsim-RemoveDeviceRequest) + - [RemoveDeviceResponse](#onos-fabricsim-RemoveDeviceResponse) + - [StartDeviceRequest](#onos-fabricsim-StartDeviceRequest) + - [StartDeviceResponse](#onos-fabricsim-StartDeviceResponse) + - [StopDeviceRequest](#onos-fabricsim-StopDeviceRequest) + - [StopDeviceResponse](#onos-fabricsim-StopDeviceResponse) + + - [DeviceType](#onos-fabricsim-DeviceType) + - [StopMode](#onos-fabricsim-StopMode) + + - [DeviceService](#onos-fabricsim-DeviceService) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## onos/fabricsim/devices.proto + + + + + +### AddDeviceRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| device | [Device](#onos-fabricsim-Device) | | | + + + + + + + + +### AddDeviceResponse + + + + + + + + + +### Device +Device describes a simulated switch or IPU + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | unique device id and device type | +| type | [DeviceType](#onos-fabricsim-DeviceType) | | | +| ports | [Port](#onos-fabricsim-Port) | repeated | list of ports | +| control_port | [int32](#int32) | | control port for p4 and gnmi simulation | +| chassis_id | [uint64](#uint64) | | unique chassis ID | +| pipeline_info | [PipelineInfo](#onos-fabricsim-PipelineInfo) | | forwarding pipeline information | +| pos | [onos.misc.GridPosition](#onos-misc-GridPosition) | | Screen coordinates | +| connections | [onos.misc.Connection](#onos-misc-Connection) | repeated | Current connections and total connection count | +| total_connections | [int32](#int32) | | | +| io_stats | [onos.misc.IOStats](#onos-misc-IOStats) | | Cumulative I/O stats for the device P4Runtime, gNMI and gNOI agent(s) | + + + + + + + + +### DisablePortRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | +| mode | [StopMode](#onos-fabricsim-StopMode) | | | + + + + + + + + +### DisablePortResponse + + + + + + + + + +### EmitLLDPPacketRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| port_id | [string](#string) | | | +| packet | [bytes](#bytes) | | | + + + + + + + + +### EmitLLDPPacketResponse + + + + + + + + + +### EnablePortRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | + + + + + + + + +### EnablePortResponse + + + + + + + + + +### EntitiesInfo +EntitiesInfo provides information about size of pipeline entities, tables, meters, counters + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [uint32](#uint32) | | | +| size | [uint32](#uint32) | | | +| name | [string](#string) | | | + + + + + + + + +### GetDeviceRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | + + + + + + + + +### GetDeviceResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| device | [Device](#onos-fabricsim-Device) | | | + + + + + + + + +### GetDevicesRequest +filters? + + + + + + + + +### GetDevicesResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| devices | [Device](#onos-fabricsim-Device) | repeated | | + + + + + + + + +### PipelineInfo +PipelineInfo provides information about the currently deployed forwarding pipeline + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| cookie | [uint64](#uint64) | | | +| p4_info | [bytes](#bytes) | | | +| tables | [EntitiesInfo](#onos-fabricsim-EntitiesInfo) | repeated | summary information about tables, counters, meters, groups, etc. | +| counters | [EntitiesInfo](#onos-fabricsim-EntitiesInfo) | repeated | | +| meters | [EntitiesInfo](#onos-fabricsim-EntitiesInfo) | repeated | | +| groups | [EntitiesInfo](#onos-fabricsim-EntitiesInfo) | repeated | | +| multicast_groups | [EntitiesInfo](#onos-fabricsim-EntitiesInfo) | repeated | | +| clone_sessions | [EntitiesInfo](#onos-fabricsim-EntitiesInfo) | repeated | | + + + + + + + + +### Port +Port describes a simulated device port + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | unique port id and port type | +| name | [string](#string) | | display/friendly name | +| number | [uint32](#uint32) | | port number | +| internal_number | [uint32](#uint32) | | sdn/internal port number | +| speed | [string](#string) | | speed and status | +| enabled | [bool](#bool) | | | + + + + + + + + +### RemoveDeviceRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | + + + + + + + + +### RemoveDeviceResponse + + + + + + + + + +### StartDeviceRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | + + + + + + + + +### StartDeviceResponse + + + + + + + + + +### StopDeviceRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | +| mode | [StopMode](#onos-fabricsim-StopMode) | | | + + + + + + + + +### StopDeviceResponse + + + + + + + + + + + +### DeviceType +DeviceType represents type of a device, i.e. switch, IPU, etc. + +| Name | Number | Description | +| ---- | ------ | ----------- | +| SWITCH | 0 | default assumption | +| IPU | 1 | | + + + + + +### StopMode +StopMode indicates whether to simulate orderly (administrative) or chaotic (power off) shutdown + +| Name | Number | Description | +| ---- | ------ | ----------- | +| ORDERLY_STOP | 0 | | +| CHAOTIC_STOP | 1 | | + + + + + + + + + +### DeviceService +DeviceService provides means to control inventory of simulated devices (switches and IPUs) and their ports + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| GetDevices | [GetDevicesRequest](#onos-fabricsim-GetDevicesRequest) | [GetDevicesResponse](#onos-fabricsim-GetDevicesResponse) | GetDevices gets a list of all simulated devices (switches and/or IPUs) | +| GetDevice | [GetDeviceRequest](#onos-fabricsim-GetDeviceRequest) | [GetDeviceResponse](#onos-fabricsim-GetDeviceResponse) | GetDevice gets a specific device entry | +| AddDevice | [AddDeviceRequest](#onos-fabricsim-AddDeviceRequest) | [AddDeviceResponse](#onos-fabricsim-AddDeviceResponse) | AddDevice creates a new simulated deviceand start its P4Runtime and gNMI services | +| RemoveDevice | [RemoveDeviceRequest](#onos-fabricsim-RemoveDeviceRequest) | [RemoveDeviceResponse](#onos-fabricsim-RemoveDeviceResponse) | RemoveDevice removes a simulated device | +| StopDevice | [StopDeviceRequest](#onos-fabricsim-StopDeviceRequest) | [StopDeviceResponse](#onos-fabricsim-StopDeviceResponse) | StopDevice stops the simulated deviceP4Runtime and gNMI services | +| StartDevice | [StartDeviceRequest](#onos-fabricsim-StartDeviceRequest) | [StartDeviceResponse](#onos-fabricsim-StartDeviceResponse) | StartDevice starts the simulated deviceP4Runtime and gNMI services | +| DisablePort | [DisablePortRequest](#onos-fabricsim-DisablePortRequest) | [DisablePortResponse](#onos-fabricsim-DisablePortResponse) | DisablePort disables the specified port | +| EnablePort | [EnablePortRequest](#onos-fabricsim-EnablePortRequest) | [EnablePortResponse](#onos-fabricsim-EnablePortResponse) | EnablePort enables the specified port | +| EmitLLDPPacket | [EmitLLDPPacketRequest](#onos-fabricsim-EmitLLDPPacketRequest) | [EmitLLDPPacketResponse](#onos-fabricsim-EmitLLDPPacketResponse) | EmitLLDPPacket emits the specified LLDP packet on a given device port. | + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-api/docs/onos/fabricsim/hosts.md b/onos-api/docs/onos/fabricsim/hosts.md new file mode 100644 index 0000000..765034a --- /dev/null +++ b/onos-api/docs/onos/fabricsim/hosts.md @@ -0,0 +1,275 @@ +# Protocol Documentation + + +## Table of Contents + +- [onos/fabricsim/hosts.proto](#onos_fabricsim_hosts-proto) + - [AddHostRequest](#onos-fabricsim-AddHostRequest) + - [AddHostResponse](#onos-fabricsim-AddHostResponse) + - [EmitARPsRequest](#onos-fabricsim-EmitARPsRequest) + - [EmitARPsResponse](#onos-fabricsim-EmitARPsResponse) + - [GetHostRequest](#onos-fabricsim-GetHostRequest) + - [GetHostResponse](#onos-fabricsim-GetHostResponse) + - [GetHostsRequest](#onos-fabricsim-GetHostsRequest) + - [GetHostsResponse](#onos-fabricsim-GetHostsResponse) + - [Host](#onos-fabricsim-Host) + - [NetworkInterface](#onos-fabricsim-NetworkInterface) + - [NetworkInterfaceBehavior](#onos-fabricsim-NetworkInterfaceBehavior) + - [RemoveHostRequest](#onos-fabricsim-RemoveHostRequest) + - [RemoveHostResponse](#onos-fabricsim-RemoveHostResponse) + + - [HostType](#onos-fabricsim-HostType) + + - [HostService](#onos-fabricsim-HostService) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## onos/fabricsim/hosts.proto + + + + + +### AddHostRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| host | [Host](#onos-fabricsim-Host) | | | +| hosted_by | [string](#string) | | | + + + + + + + + +### AddHostResponse + + + + + + + + + +### EmitARPsRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | +| mac_address | [string](#string) | | | +| ip_addresses | [string](#string) | repeated | | + + + + + + + + +### EmitARPsResponse + + + + + + + + + +### GetHostRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | + + + + + + + + +### GetHostResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| host | [Host](#onos-fabricsim-Host) | | | + + + + + + + + +### GetHostsRequest +filters? + + + + + + + + +### GetHostsResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| hosts | [Host](#onos-fabricsim-Host) | repeated | | + + + + + + + + +### Host +Host describes a simulated host (bare metal, VM or container) + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | unique host id and host type | +| type | [HostType](#onos-fabricsim-HostType) | | | +| interfaces | [NetworkInterface](#onos-fabricsim-NetworkInterface) | repeated | network interfaces | +| pos | [onos.misc.GridPosition](#onos-misc-GridPosition) | | | +| hosts | [Host](#onos-fabricsim-Host) | repeated | virtual hosts being hosted by this (bare metal) host | + + + + + + + + +### NetworkInterface +NetworkInterface describes simulated host's attachment to the network + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | unique port id | +| mac_address | [string](#string) | | mac address and VLAN | +| vlan | [uint32](#uint32) | | | +| ip_address | [string](#string) | | ipv4 address | +| ipv6_address | [string](#string) | | ipv6 address | +| behavior | [NetworkInterfaceBehavior](#onos-fabricsim-NetworkInterfaceBehavior) | | behavior | + + + + + + + + +### NetworkInterfaceBehavior +NetworkInterfaceBehavior describes dynamic aspects of a simulated host interface +and how it manifests its presence on the network. + +TBD + + + + + + + + +### RemoveHostRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | + + + + + + + + +### RemoveHostResponse + + + + + + + + + + + +### HostType +HostType represents type of a host, i.e. bare metal, virtual, etc. + +| Name | Number | Description | +| ---- | ------ | ----------- | +| BARE_METAL | 0 | default assumption | +| VIRTUAL | 1 | | + + + + + + + + + +### HostService +HostService provides means to control inventory of simulated hosts + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| GetHosts | [GetHostsRequest](#onos-fabricsim-GetHostsRequest) | [GetHostsResponse](#onos-fabricsim-GetHostsResponse) | GetHosts gets a list of all simulated hosts | +| GetHost | [GetHostRequest](#onos-fabricsim-GetHostRequest) | [GetHostResponse](#onos-fabricsim-GetHostResponse) | GetHost gets a specific host entry | +| AddHost | [AddHostRequest](#onos-fabricsim-AddHostRequest) | [AddHostResponse](#onos-fabricsim-AddHostResponse) | AddHost adds a new simulated host | +| RemoveHost | [RemoveHostRequest](#onos-fabricsim-RemoveHostRequest) | [RemoveHostResponse](#onos-fabricsim-RemoveHostResponse) | RemoveHost removes a simulated host | +| EmitARPs | [EmitARPsRequest](#onos-fabricsim-EmitARPsRequest) | [EmitARPsResponse](#onos-fabricsim-EmitARPsResponse) | EmitARPs triggers the specified host NIC to send ARP requests for a set of IP addresses | + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-api/docs/onos/fabricsim/links.md b/onos-api/docs/onos/fabricsim/links.md new file mode 100644 index 0000000..76339e6 --- /dev/null +++ b/onos-api/docs/onos/fabricsim/links.md @@ -0,0 +1,210 @@ +# Protocol Documentation + + +## Table of Contents + +- [onos/fabricsim/links.proto](#onos_fabricsim_links-proto) + - [AddLinkRequest](#onos-fabricsim-AddLinkRequest) + - [AddLinkResponse](#onos-fabricsim-AddLinkResponse) + - [GetLinkRequest](#onos-fabricsim-GetLinkRequest) + - [GetLinkResponse](#onos-fabricsim-GetLinkResponse) + - [GetLinksRequest](#onos-fabricsim-GetLinksRequest) + - [GetLinksResponse](#onos-fabricsim-GetLinksResponse) + - [Link](#onos-fabricsim-Link) + - [RemoveLinkRequest](#onos-fabricsim-RemoveLinkRequest) + - [RemoveLinkResponse](#onos-fabricsim-RemoveLinkResponse) + + - [LinkStatus](#onos-fabricsim-LinkStatus) + + - [LinkService](#onos-fabricsim-LinkService) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## onos/fabricsim/links.proto + + + + + +### AddLinkRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| link | [Link](#onos-fabricsim-Link) | | | + + + + + + + + +### AddLinkResponse + + + + + + + + + +### GetLinkRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | + + + + + + + + +### GetLinkResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| link | [Link](#onos-fabricsim-Link) | | | + + + + + + + + +### GetLinksRequest +filters? + + + + + + + + +### GetLinksResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| links | [Link](#onos-fabricsim-Link) | repeated | | + + + + + + + + +### Link +Link describes a simulated link, i.e a link between two device or host ports + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | unique port id and port type | +| src_id | [string](#string) | | unique port ids of source and target ports | +| tgt_id | [string](#string) | | | +| status | [LinkStatus](#onos-fabricsim-LinkStatus) | | status (operational state derived from the status of its adjacent ports) + +read-only entity | + + + + + + + + +### RemoveLinkRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | + + + + + + + + +### RemoveLinkResponse + + + + + + + + + + + +### LinkStatus +LinkStatus represents the operational status of the link, derived from the status of its adjacent ports + +| Name | Number | Description | +| ---- | ------ | ----------- | +| LINK_DOWN | 0 | | +| LINK_UP | 1 | | + + + + + + + + + +### LinkService +LinkService provides means to control inventory of simulated links + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| GetLinks | [GetLinksRequest](#onos-fabricsim-GetLinksRequest) | [GetLinksResponse](#onos-fabricsim-GetLinksResponse) | GetLinks gets a list of all simulated links | +| GetLink | [GetLinkRequest](#onos-fabricsim-GetLinkRequest) | [GetLinkResponse](#onos-fabricsim-GetLinkResponse) | GetLink gets a specific link entry | +| AddLink | [AddLinkRequest](#onos-fabricsim-AddLinkRequest) | [AddLinkResponse](#onos-fabricsim-AddLinkResponse) | AddLink adds a new simulated link | +| RemoveLink | [RemoveLinkRequest](#onos-fabricsim-RemoveLinkRequest) | [RemoveLinkResponse](#onos-fabricsim-RemoveLinkResponse) | RemoveLink removes a simulated link | + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-api/docs/onos/fabricsim/types.md b/onos-api/docs/onos/fabricsim/types.md new file mode 100644 index 0000000..51fa5bb --- /dev/null +++ b/onos-api/docs/onos/fabricsim/types.md @@ -0,0 +1,142 @@ +# Protocol Documentation + + +## Table of Contents + +- [onos/fabricsim/types.proto](#onos_fabricsim_types-proto) + - [Device](#onos-fabricsim-Device) + - [Host](#onos-fabricsim-Host) + - [Link](#onos-fabricsim-Link) + - [NetworkInterface](#onos-fabricsim-NetworkInterface) + - [NetworkInterfaceBehavior](#onos-fabricsim-NetworkInterfaceBehavior) + - [Port](#onos-fabricsim-Port) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## onos/fabricsim/types.proto + + + + + +### Device +Device describes a simulated switch or IPU + +unique_id +type - switch, IPU, etc. +p4_port +gnmi_port +list of ports +behavior? +gnmi models + + + + + + + + +### Host +Host describes a simulated host (bare metal, VM or container) + +network interfaces + + + + + + + + +### Link +Link describes a simulated interdevice link, i.e a link between two device ports + +source port unique id +destination port unique id +status (operational state derived from adjacent ports status) + + + + + + + + +### NetworkInterface +NetworkInterface describes simulated host's attachment to the network + +mac address +ipv4 address +ipv6 address +behavior + + + + + + + + +### NetworkInterfaceBehavior +NetworkInterfaceBehavior describes dynamic aspects of a simulated host interface +and how it manifests its presence on the network. + + + + + + + + +### Port +Port describes a simulated device port + +unique_id +type? +name +port number +sdn port number +speed +p4 behaviors? (counters, etc.) +gnmi behaviors? (counters, etc.) + + + + + + + + + + + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-api/docs/onos/kpimon/kpimon.md b/onos-api/docs/onos/kpimon/kpimon.md new file mode 100644 index 0000000..fb58e01 --- /dev/null +++ b/onos-api/docs/onos/kpimon/kpimon.md @@ -0,0 +1,202 @@ +# Protocol Documentation + + +## Table of Contents + +- [onos/kpimon/kpimon.proto](#onos_kpimon_kpimon-proto) + - [GetRequest](#onos-kpimon-GetRequest) + - [GetResponse](#onos-kpimon-GetResponse) + - [GetResponse.MeasurementsEntry](#onos-kpimon-GetResponse-MeasurementsEntry) + - [IntegerValue](#onos-kpimon-IntegerValue) + - [MeasurementItem](#onos-kpimon-MeasurementItem) + - [MeasurementItems](#onos-kpimon-MeasurementItems) + - [MeasurementRecord](#onos-kpimon-MeasurementRecord) + - [NoValue](#onos-kpimon-NoValue) + - [RealValue](#onos-kpimon-RealValue) + + - [Kpimon](#onos-kpimon-Kpimon) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## onos/kpimon/kpimon.proto + + + + + +### GetRequest + + + + + + + + + +### GetResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| measurements | [GetResponse.MeasurementsEntry](#onos-kpimon-GetResponse-MeasurementsEntry) | repeated | | + + + + + + + + +### GetResponse.MeasurementsEntry + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| key | [string](#string) | | | +| value | [MeasurementItems](#onos-kpimon-MeasurementItems) | | | + + + + + + + + +### IntegerValue + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| value | [int64](#int64) | | | + + + + + + + + +### MeasurementItem + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| measurement_records | [MeasurementRecord](#onos-kpimon-MeasurementRecord) | repeated | | + + + + + + + + +### MeasurementItems + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| measurement_items | [MeasurementItem](#onos-kpimon-MeasurementItem) | repeated | | + + + + + + + + +### MeasurementRecord + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| timestamp | [uint64](#uint64) | | | +| measurement_name | [string](#string) | | | +| measurement_value | [google.protobuf.Any](#google-protobuf-Any) | | | + + + + + + + + +### NoValue + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| value | [int32](#int32) | | | + + + + + + + + +### RealValue + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| value | [double](#double) | | | + + + + + + + + + + + + + + +### Kpimon + + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| ListMeasurements | [GetRequest](#onos-kpimon-GetRequest) | [GetResponse](#onos-kpimon-GetResponse) | | +| WatchMeasurements | [GetRequest](#onos-kpimon-GetRequest) | [GetResponse](#onos-kpimon-GetResponse) stream | | + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-api/docs/onos/misc/misc.md b/onos-api/docs/onos/misc/misc.md new file mode 100644 index 0000000..187f143 --- /dev/null +++ b/onos-api/docs/onos/misc/misc.md @@ -0,0 +1,103 @@ +# Protocol Documentation + + +## Table of Contents + +- [onos/misc/misc.proto](#onos_misc_misc-proto) + - [Connection](#onos-misc-Connection) + - [GridPosition](#onos-misc-GridPosition) + - [IOStats](#onos-misc-IOStats) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## onos/misc/misc.proto + + + + + +### Connection +Connection contains information about a single gRPC client connection + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| from_address | [string](#string) | | | +| protocol | [string](#string) | | | +| time | [int64](#int64) | | | + + + + + + + + +### GridPosition +GridPosition indicates where on a grid an entity should be located; used for visualization purposes + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| x | [int32](#int32) | | | +| y | [int32](#int32) | | | + + + + + + + + +### IOStats +IOStats represents I/O statistics for a single device agent + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| in_bytes | [uint32](#uint32) | | | +| in_messages | [uint32](#uint32) | | | +| out_bytes | [uint32](#uint32) | | | +| out_messages | [uint32](#uint32) | | | +| first_update_time | [uint64](#uint64) | | | +| last_update_time | [uint64](#uint64) | | | + + + + + + + + + + + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-api/docs/onos/mlb/mlb.md b/onos-api/docs/onos/mlb/mlb.md new file mode 100644 index 0000000..6205148 --- /dev/null +++ b/onos-api/docs/onos/mlb/mlb.md @@ -0,0 +1,214 @@ +# Protocol Documentation + + +## Table of Contents + +- [onos/mlb/mlb.proto](#onos_mlb_mlb-proto) + - [GetMlbParamRequest](#onos-mlb-GetMlbParamRequest) + - [GetMlbParamResponse](#onos-mlb-GetMlbParamResponse) + - [GetOcnRequest](#onos-mlb-GetOcnRequest) + - [GetOcnResponse](#onos-mlb-GetOcnResponse) + - [GetOcnResponse.OcnMapEntry](#onos-mlb-GetOcnResponse-OcnMapEntry) + - [OcnIDs](#onos-mlb-OcnIDs) + - [OcnRecord](#onos-mlb-OcnRecord) + - [OcnRecord.OcnRecordEntry](#onos-mlb-OcnRecord-OcnRecordEntry) + - [SetMlbParamRequest](#onos-mlb-SetMlbParamRequest) + - [SetMlbParamResponse](#onos-mlb-SetMlbParamResponse) + + - [Mlb](#onos-mlb-Mlb) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## onos/mlb/mlb.proto + + + + + +### GetMlbParamRequest + + + + + + + + + +### GetMlbParamResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| interval | [int32](#int32) | | | +| overload_threshold | [int32](#int32) | | | +| target_threshold | [int32](#int32) | | | +| delta_ocn | [int32](#int32) | | | + + + + + + + + +### GetOcnRequest + + + + + + + + + +### GetOcnResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| ocn_map | [GetOcnResponse.OcnMapEntry](#onos-mlb-GetOcnResponse-OcnMapEntry) | repeated | | + + + + + + + + +### GetOcnResponse.OcnMapEntry + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| key | [string](#string) | | | +| value | [OcnRecord](#onos-mlb-OcnRecord) | | | + + + + + + + + +### OcnIDs + + + + + + + + + +### OcnRecord + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| ocn_record | [OcnRecord.OcnRecordEntry](#onos-mlb-OcnRecord-OcnRecordEntry) | repeated | | + + + + + + + + +### OcnRecord.OcnRecordEntry + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| key | [string](#string) | | | +| value | [int32](#int32) | | | + + + + + + + + +### SetMlbParamRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| interval | [int32](#int32) | | | +| overload_threshold | [int32](#int32) | | | +| target_threshold | [int32](#int32) | | | +| delta_ocn | [int32](#int32) | | | + + + + + + + + +### SetMlbParamResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| success | [bool](#bool) | | | + + + + + + + + + + + + + + +### Mlb + + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| GetMlbParams | [GetMlbParamRequest](#onos-mlb-GetMlbParamRequest) | [GetMlbParamResponse](#onos-mlb-GetMlbParamResponse) | GetMlbParams gets MLB parameters | +| SetMlbParams | [SetMlbParamRequest](#onos-mlb-SetMlbParamRequest) | [SetMlbParamResponse](#onos-mlb-SetMlbParamResponse) | SetMlbParams sets MLB parameters | +| GetOcn | [GetOcnRequest](#onos-mlb-GetOcnRequest) | [GetOcnResponse](#onos-mlb-GetOcnResponse) | GetOcn gets Ocn map | + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-api/docs/onos/p4rt/pipeline_config.md b/onos-api/docs/onos/p4rt/pipeline_config.md new file mode 100644 index 0000000..0e8a243 --- /dev/null +++ b/onos-api/docs/onos/p4rt/pipeline_config.md @@ -0,0 +1,202 @@ +# Protocol Documentation + + +## Table of Contents + +- [onos/p4rt/v1/pipeline_config.proto](#onos_p4rt_v1_pipeline_config-proto) + - [ConfigurationEvent](#onos-p4rt-v1-ConfigurationEvent) + - [Cookie](#onos-p4rt-v1-Cookie) + - [MastershipInfo](#onos-p4rt-v1-MastershipInfo) + - [PipelineConfig](#onos-p4rt-v1-PipelineConfig) + - [PipelineConfigSpec](#onos-p4rt-v1-PipelineConfigSpec) + - [PipelineConfigStatus](#onos-p4rt-v1-PipelineConfigStatus) + + - [ConfigurationAction](#onos-p4rt-v1-ConfigurationAction) + - [ConfigurationEvent.Type](#onos-p4rt-v1-ConfigurationEvent-Type) + - [PipelineConfigStatus.PipelineConfigState](#onos-p4rt-v1-PipelineConfigStatus-PipelineConfigState) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## onos/p4rt/v1/pipeline_config.proto + + + + + +### ConfigurationEvent +ConfigurationEvent configuration store event + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| type | [ConfigurationEvent.Type](#onos-p4rt-v1-ConfigurationEvent-Type) | | EventType configuration event type | +| pipeline_config | [PipelineConfig](#onos-p4rt-v1-PipelineConfig) | | | + + + + + + + + +### Cookie +Cookie + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| cookie | [uint64](#uint64) | | | + + + + + + + + +### MastershipInfo + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| master | [string](#string) | | | +| term | [uint64](#uint64) | | | + + + + + + + + +### PipelineConfig +PipelineConfig P4 device pipeline config + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| meta | [ObjectMeta](#onos-p4rt-v1-ObjectMeta) | | | +| id | [string](#string) | | 'id' is a unique configuration identifier | +| target_id | [string](#string) | | 'target_id' is the target to which the desired target configuration applies | +| cookie | [Cookie](#onos-p4rt-v1-Cookie) | | 'cookie' to uniquely identify a forwarding-pipeline configuration among others managed by the same control plane | +| status | [PipelineConfigStatus](#onos-p4rt-v1-PipelineConfigStatus) | | 'ConfigurationStatus' is the current lifecycle status of the configuration | +| action | [ConfigurationAction](#onos-p4rt-v1-ConfigurationAction) | | ConfigurationAction | +| spec | [PipelineConfigSpec](#onos-p4rt-v1-PipelineConfigSpec) | | PipelineConfigSpec device pipeline config spec | + + + + + + + + +### PipelineConfigSpec +PipelineConfigSpec device pipeline configuration spec + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| p4_device_config | [bytes](#bytes) | | 'p4_device_config' P4 device configuration bytes | +| p4_info | [bytes](#bytes) | | TODO since p4 info is target agnostic, we can import it from P4runtime and use it as it is, a new version of proto compiler image is needed 'p4_info' P4 info | + + + + + + + + +### PipelineConfigStatus +PipelineConfigStatus pipelineConfig status + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| state | [PipelineConfigStatus.PipelineConfigState](#onos-p4rt-v1-PipelineConfigStatus-PipelineConfigState) | | 'PipelineConfigState' pipeline config state | +| mastership | [MastershipInfo](#onos-p4rt-v1-MastershipInfo) | | 'mastership' is the current mastership info for the configuration | + + + + + + + + + + +### ConfigurationAction +ConfigurationAction + +| Name | Number | Description | +| ---- | ------ | ----------- | +| UNSPECIFIED | 0 | | +| VERIFY | 1 | Verifies that the target can realize the given config. The forwarding state in the target is not modified. | +| VERIFY_AND_SAVE | 2 | Saves the config if the P4Runtime target can realize it. The forwarding state in the target is not modified. | +| VERIFY_AND_COMMIT | 3 | Saves and realizes the given config if the P4Runtime target can realize it. The forwarding state in the target is cleared. | +| COMMIT | 4 | Realizes the last saved, but not yet committed, config. The forwarding state in the target is updated by replaying the write requests to the target device since the last config was saved | +| RECONCILE_AND_COMMIT | 5 | Verifies, saves and realizes the given config, while preserving the forwarding state in the target. | + + + + + +### ConfigurationEvent.Type +Type configuration event types for configuration store + +| Name | Number | Description | +| ---- | ------ | ----------- | +| UNKNOWN | 0 | UNKNOWN indicates unknown configuration store event | +| CREATED | 1 | CREATED indicates the configuration entry in the store is created | +| UPDATED | 2 | UPDATED indicates the configuration entry in the store is updated | +| DELETED | 3 | DELETED indicates the configuration entry in the store is deleted | +| REPLAYED | 4 | REPLAYED | + + + + + +### PipelineConfigStatus.PipelineConfigState + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| UNKNOWN | 0 | UNKNOWN indicates the pipeline configuration state is unknown | +| PENDING | 1 | PENDING indicates the pipeline configuration state is pending | +| COMPLETE | 2 | COMPLETE indicates the pipeline configuration state is complete | +| FAILED | 3 | FAILED indicates the pipeline configuration state failed | + + + + + + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-api/docs/onos/pci/pci.md b/onos-api/docs/onos/pci/pci.md new file mode 100644 index 0000000..ffcc83a --- /dev/null +++ b/onos-api/docs/onos/pci/pci.md @@ -0,0 +1,254 @@ +# Protocol Documentation + + +## Table of Contents + +- [onos/pci/pci.proto](#onos_pci_pci-proto) + - [CellResolution](#onos-pci-CellResolution) + - [GetCellRequest](#onos-pci-GetCellRequest) + - [GetCellResponse](#onos-pci-GetCellResponse) + - [GetCellsRequest](#onos-pci-GetCellsRequest) + - [GetCellsResponse](#onos-pci-GetCellsResponse) + - [GetConflictsRequest](#onos-pci-GetConflictsRequest) + - [GetConflictsResponse](#onos-pci-GetConflictsResponse) + - [GetResolvedConflictsRequest](#onos-pci-GetResolvedConflictsRequest) + - [GetResolvedConflictsResponse](#onos-pci-GetResolvedConflictsResponse) + - [PciCell](#onos-pci-PciCell) + - [PciRange](#onos-pci-PciRange) + + - [CellType](#onos-pci-CellType) + + - [Pci](#onos-pci-Pci) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## onos/pci/pci.proto + + + + + +### CellResolution + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [uint64](#uint64) | | | +| resolved_pci | [uint32](#uint32) | | | +| original_pci | [uint32](#uint32) | | | +| resolved_conflicts | [uint32](#uint32) | | | + + + + + + + + +### GetCellRequest +cell id required + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| cell_id | [uint64](#uint64) | | | + + + + + + + + +### GetCellResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| cell | [PciCell](#onos-pci-PciCell) | | | + + + + + + + + +### GetCellsRequest + + + + + + + + + +### GetCellsResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| cells | [PciCell](#onos-pci-PciCell) | repeated | | + + + + + + + + +### GetConflictsRequest +if cell id is not specified, will return all cells with conflicts + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| cell_id | [uint64](#uint64) | | | + + + + + + + + +### GetConflictsResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| cells | [PciCell](#onos-pci-PciCell) | repeated | | + + + + + + + + +### GetResolvedConflictsRequest + + + + + + + + + +### GetResolvedConflictsResponse +returns all the resolved conflicts in the store + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| cells | [CellResolution](#onos-pci-CellResolution) | repeated | | + + + + + + + + +### PciCell + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [uint64](#uint64) | | | +| node_id | [string](#string) | | | +| arfcn | [uint32](#uint32) | | | +| cell_type | [CellType](#onos-pci-CellType) | | | +| pci | [uint32](#uint32) | | | +| pci_pool | [PciRange](#onos-pci-PciRange) | repeated | | +| neighbor_ids | [uint64](#uint64) | repeated | | + + + + + + + + +### PciRange + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| min | [uint32](#uint32) | | | +| max | [uint32](#uint32) | | | + + + + + + + + + + +### CellType + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| FEMTO | 0 | | +| ENTERPRISE | 1 | | +| OUTDOOR_SMALL | 2 | | +| MACRO | 3 | | + + + + + + + + + +### Pci + + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| GetConflicts | [GetConflictsRequest](#onos-pci-GetConflictsRequest) | [GetConflictsResponse](#onos-pci-GetConflictsResponse) | | +| GetResolvedConflicts | [GetResolvedConflictsRequest](#onos-pci-GetResolvedConflictsRequest) | [GetResolvedConflictsResponse](#onos-pci-GetResolvedConflictsResponse) | | +| GetCell | [GetCellRequest](#onos-pci-GetCellRequest) | [GetCellResponse](#onos-pci-GetCellResponse) | | +| GetCells | [GetCellsRequest](#onos-pci-GetCellsRequest) | [GetCellsResponse](#onos-pci-GetCellsResponse) | | + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-api/docs/onos/provisioner/pipeline.md b/onos-api/docs/onos/provisioner/pipeline.md new file mode 100644 index 0000000..3069ec4 --- /dev/null +++ b/onos-api/docs/onos/provisioner/pipeline.md @@ -0,0 +1,380 @@ +# Protocol Documentation + + +## Table of Contents + +- [onos/provisioner/aspects.proto](#onos_provisioner_aspects-proto) + - [ChassisConfigState](#onos-provisioner-ChassisConfigState) + - [ConfigStatus](#onos-provisioner-ConfigStatus) + - [DeviceConfig](#onos-provisioner-DeviceConfig) + - [Failure](#onos-provisioner-Failure) + - [PipelineConfigState](#onos-provisioner-PipelineConfigState) + + - [ConfigStatus.State](#onos-provisioner-ConfigStatus-State) + - [Failure.Type](#onos-provisioner-Failure-Type) + +- [onos/provisioner/config.proto](#onos_provisioner_config-proto) + - [AddConfigRequest](#onos-provisioner-AddConfigRequest) + - [AddConfigResponse](#onos-provisioner-AddConfigResponse) + - [Config](#onos-provisioner-Config) + - [Config.ArtifactsEntry](#onos-provisioner-Config-ArtifactsEntry) + - [ConfigRecord](#onos-provisioner-ConfigRecord) + - [DeleteConfigRequest](#onos-provisioner-DeleteConfigRequest) + - [DeleteConfigResponse](#onos-provisioner-DeleteConfigResponse) + - [GetConfigRequest](#onos-provisioner-GetConfigRequest) + - [GetConfigResponse](#onos-provisioner-GetConfigResponse) + - [ListConfigsRequest](#onos-provisioner-ListConfigsRequest) + - [ListConfigsResponse](#onos-provisioner-ListConfigsResponse) + + - [ProvisionerService](#onos-provisioner-ProvisionerService) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## onos/provisioner/aspects.proto + + + + + +### ChassisConfigState +ChassisConfigState is a topology entity aspect used to indicate what chassis config a device has presently applied to it + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| config_id | [string](#string) | | | +| updated | [google.protobuf.Timestamp](#google-protobuf-Timestamp) | | | +| status | [ConfigStatus](#onos-provisioner-ConfigStatus) | | | + + + + + + + + +### ConfigStatus + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| state | [ConfigStatus.State](#onos-provisioner-ConfigStatus-State) | | 'state' config state | +| failure | [Failure](#onos-provisioner-Failure) | | 'failure' is the transaction failure (if any) | + + + + + + + + +### DeviceConfig +DeviceConfig is a topology entity aspect used to specify what pipeline and chassis config a device should have applied to it + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| pipeline_config_id | [string](#string) | | | +| chassis_config_id | [string](#string) | | | + + + + + + + + +### Failure +Failure config update failure type and description + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| type | [Failure.Type](#onos-provisioner-Failure-Type) | | | +| description | [string](#string) | | | + + + + + + + + +### PipelineConfigState +PipelineConfigState is a topology entity aspect used to indicate what pipeline config a device has presently applied to it + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| config_id | [string](#string) | | | +| cookie | [uint64](#uint64) | | | +| updated | [google.protobuf.Timestamp](#google-protobuf-Timestamp) | | | +| status | [ConfigStatus](#onos-provisioner-ConfigStatus) | | | + + + + + + + + + + +### ConfigStatus.State + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| PENDING | 0 | | +| APPLIED | 3 | | +| FAILED | 4 | | + + + + + +### Failure.Type + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| UNKNOWN | 0 | UNKNOWN unknown failure | +| CANCELED | 1 | CANCELED | +| NOT_FOUND | 2 | NOT_FOUND | +| ALREADY_EXISTS | 3 | ALREADY_EXISTS | +| UNAUTHORIZED | 4 | UNAUTHORIZED | +| FORBIDDEN | 5 | FORBIDDEN | +| CONFLICT | 6 | CONFLICT | +| INVALID | 7 | INVALID | +| UNAVAILABLE | 8 | UNAVAILABLE | +| NOT_SUPPORTED | 9 | NOT_SUPPORTED | +| TIMEOUT | 10 | TIMEOUT | +| INTERNAL | 11 | INTERNAL | + + + + + + + + + + + +

Top

+ +## onos/provisioner/config.proto + + + + + +### AddConfigRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| config | [Config](#onos-provisioner-Config) | | | + + + + + + + + +### AddConfigResponse + + + + + + + + + +### Config +Config represents + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| record | [ConfigRecord](#onos-provisioner-ConfigRecord) | | | +| artifacts | [Config.ArtifactsEntry](#onos-provisioner-Config-ArtifactsEntry) | repeated | | + + + + + + + + +### Config.ArtifactsEntry + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| key | [string](#string) | | | +| value | [bytes](#bytes) | | | + + + + + + + + +### ConfigRecord +ConfigRecord is used for storing a record of the pipeline or chassis configuration with +references to its related file artifact(s) + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| config_id | [string](#string) | | | +| kind | [string](#string) | | pipeline, chassis, etc. | +| artifacts | [string](#string) | repeated | list of associated artifact types | + + + + + + + + +### DeleteConfigRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| config_id | [string](#string) | | | + + + + + + + + +### DeleteConfigResponse + + + + + + + + + +### GetConfigRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| config_id | [string](#string) | | | +| include_artifacts | [bool](#bool) | | | + + + + + + + + +### GetConfigResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| config | [Config](#onos-provisioner-Config) | | | + + + + + + + + +### ListConfigsRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| kind | [string](#string) | | | +| include_artifacts | [bool](#bool) | | | +| watch | [bool](#bool) | | | + + + + + + + + +### ListConfigsResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| config | [Config](#onos-provisioner-Config) | | | + + + + + + + + + + + + + + +### ProvisionerService +ProvisionerService allows managing inventory of various device configuratoins, e.g., pipeline, chassis. + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| Add | [AddConfigRequest](#onos-provisioner-AddConfigRequest) | [AddConfigResponse](#onos-provisioner-AddConfigResponse) | Add registers new pipeline configuration | +| Delete | [DeleteConfigRequest](#onos-provisioner-DeleteConfigRequest) | [DeleteConfigResponse](#onos-provisioner-DeleteConfigResponse) | Delete removes a pipeline configuration | +| Get | [GetConfigRequest](#onos-provisioner-GetConfigRequest) | [GetConfigResponse](#onos-provisioner-GetConfigResponse) | Get returns pipeline configuration based on a given ID | +| List | [ListConfigsRequest](#onos-provisioner-ListConfigsRequest) | [ListConfigsResponse](#onos-provisioner-ListConfigsResponse) stream | List returns all registered pipelines | + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-api/docs/onos/ransim/metrics.md b/onos-api/docs/onos/ransim/metrics.md new file mode 100644 index 0000000..05d5319 --- /dev/null +++ b/onos-api/docs/onos/ransim/metrics.md @@ -0,0 +1,274 @@ +# Protocol Documentation + + +## Table of Contents + +- [onos/ransim/metrics/metrics.proto](#onos_ransim_metrics_metrics-proto) + - [DeleteAllRequest](#onos-ransim-metrics-DeleteAllRequest) + - [DeleteAllResponse](#onos-ransim-metrics-DeleteAllResponse) + - [DeleteRequest](#onos-ransim-metrics-DeleteRequest) + - [DeleteResponse](#onos-ransim-metrics-DeleteResponse) + - [GetRequest](#onos-ransim-metrics-GetRequest) + - [GetResponse](#onos-ransim-metrics-GetResponse) + - [ListRequest](#onos-ransim-metrics-ListRequest) + - [ListResponse](#onos-ransim-metrics-ListResponse) + - [Metric](#onos-ransim-metrics-Metric) + - [SetRequest](#onos-ransim-metrics-SetRequest) + - [SetResponse](#onos-ransim-metrics-SetResponse) + - [WatchRequest](#onos-ransim-metrics-WatchRequest) + - [WatchResponse](#onos-ransim-metrics-WatchResponse) + + - [EventType](#onos-ransim-metrics-EventType) + + - [MetricsService](#onos-ransim-metrics-MetricsService) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## onos/ransim/metrics/metrics.proto + + + + + +### DeleteAllRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| entityid | [uint64](#uint64) | | | + + + + + + + + +### DeleteAllResponse + + + + + + + + + +### DeleteRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| entityid | [uint64](#uint64) | | | +| name | [string](#string) | | | + + + + + + + + +### DeleteResponse + + + + + + + + + +### GetRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| entityid | [uint64](#uint64) | | | +| name | [string](#string) | | | + + + + + + + + +### GetResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| metric | [Metric](#onos-ransim-metrics-Metric) | | | + + + + + + + + +### ListRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| entityid | [uint64](#uint64) | | | + + + + + + + + +### ListResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| entityid | [uint64](#uint64) | | | +| metrics | [Metric](#onos-ransim-metrics-Metric) | repeated | | + + + + + + + + +### Metric + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| entityid | [uint64](#uint64) | | | +| key | [string](#string) | | | +| value | [string](#string) | | | +| type | [string](#string) | | intX, uintX, floatX, string; X := {8|16|32|64} | + + + + + + + + +### SetRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| metric | [Metric](#onos-ransim-metrics-Metric) | | | + + + + + + + + +### SetResponse + + + + + + + + + +### WatchRequest + + + + + + + + + +### WatchResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| metric | [Metric](#onos-ransim-metrics-Metric) | | | +| type | [EventType](#onos-ransim-metrics-EventType) | | | + + + + + + + + + + +### EventType +Change event type + +| Name | Number | Description | +| ---- | ------ | ----------- | +| NONE | 0 | NONE indicates unknown event type | +| UPDATED | 1 | UPDATED indicates a metric value was set (updated) | +| DELETED | 2 | DELETED indicates a metric was deleted | + + + + + + + + + +### MetricsService +Model provides means to create, delete and read RAN simulation model. + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| List | [ListRequest](#onos-ransim-metrics-ListRequest) | [ListResponse](#onos-ransim-metrics-ListResponse) | List returns an array of all metrics for the specified entity (Node, Cell or UE) | +| Set | [SetRequest](#onos-ransim-metrics-SetRequest) | [SetResponse](#onos-ransim-metrics-SetResponse) | Set sets value of the named metric for the specified entity | +| Get | [GetRequest](#onos-ransim-metrics-GetRequest) | [GetResponse](#onos-ransim-metrics-GetResponse) | Get retrieves the named metric for the specified entity | +| Delete | [DeleteRequest](#onos-ransim-metrics-DeleteRequest) | [DeleteResponse](#onos-ransim-metrics-DeleteResponse) | Delete deletes the the named metric for the specified entity | +| DeleteAll | [DeleteAllRequest](#onos-ransim-metrics-DeleteAllRequest) | [DeleteAllResponse](#onos-ransim-metrics-DeleteAllResponse) | DeleteAll deletes all metrics for the specified entity | +| Watch | [WatchRequest](#onos-ransim-metrics-WatchRequest) | [WatchResponse](#onos-ransim-metrics-WatchResponse) stream | Watch returns a stream of ongoing changes to the metrics | + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-api/docs/onos/ransim/model.md b/onos-api/docs/onos/ransim/model.md new file mode 100644 index 0000000..ec8d187 --- /dev/null +++ b/onos-api/docs/onos/ransim/model.md @@ -0,0 +1,1002 @@ +# Protocol Documentation + + +## Table of Contents + +- [onos/ransim/model/model.proto](#onos_ransim_model_model-proto) + - [AgentControlRequest](#onos-ransim-model-AgentControlRequest) + - [AgentControlResponse](#onos-ransim-model-AgentControlResponse) + - [ClearRequest](#onos-ransim-model-ClearRequest) + - [ClearResponse](#onos-ransim-model-ClearResponse) + - [CreateCellRequest](#onos-ransim-model-CreateCellRequest) + - [CreateCellResponse](#onos-ransim-model-CreateCellResponse) + - [CreateNodeRequest](#onos-ransim-model-CreateNodeRequest) + - [CreateNodeResponse](#onos-ransim-model-CreateNodeResponse) + - [CreateRouteRequest](#onos-ransim-model-CreateRouteRequest) + - [CreateRouteResponse](#onos-ransim-model-CreateRouteResponse) + - [DataSet](#onos-ransim-model-DataSet) + - [DeleteCellRequest](#onos-ransim-model-DeleteCellRequest) + - [DeleteCellResponse](#onos-ransim-model-DeleteCellResponse) + - [DeleteNodeRequest](#onos-ransim-model-DeleteNodeRequest) + - [DeleteNodeResponse](#onos-ransim-model-DeleteNodeResponse) + - [DeleteRouteRequest](#onos-ransim-model-DeleteRouteRequest) + - [DeleteRouteResponse](#onos-ransim-model-DeleteRouteResponse) + - [DeleteUERequest](#onos-ransim-model-DeleteUERequest) + - [DeleteUEResponse](#onos-ransim-model-DeleteUEResponse) + - [GetCellRequest](#onos-ransim-model-GetCellRequest) + - [GetCellResponse](#onos-ransim-model-GetCellResponse) + - [GetNodeRequest](#onos-ransim-model-GetNodeRequest) + - [GetNodeResponse](#onos-ransim-model-GetNodeResponse) + - [GetRouteRequest](#onos-ransim-model-GetRouteRequest) + - [GetRouteResponse](#onos-ransim-model-GetRouteResponse) + - [GetUECountRequest](#onos-ransim-model-GetUECountRequest) + - [GetUECountResponse](#onos-ransim-model-GetUECountResponse) + - [GetUERequest](#onos-ransim-model-GetUERequest) + - [GetUEResponse](#onos-ransim-model-GetUEResponse) + - [ListCellsRequest](#onos-ransim-model-ListCellsRequest) + - [ListCellsResponse](#onos-ransim-model-ListCellsResponse) + - [ListNodesRequest](#onos-ransim-model-ListNodesRequest) + - [ListNodesResponse](#onos-ransim-model-ListNodesResponse) + - [ListRoutesRequest](#onos-ransim-model-ListRoutesRequest) + - [ListRoutesResponse](#onos-ransim-model-ListRoutesResponse) + - [ListUEsRequest](#onos-ransim-model-ListUEsRequest) + - [ListUEsResponse](#onos-ransim-model-ListUEsResponse) + - [LoadRequest](#onos-ransim-model-LoadRequest) + - [LoadResponse](#onos-ransim-model-LoadResponse) + - [MoveToCellRequest](#onos-ransim-model-MoveToCellRequest) + - [MoveToCellResponse](#onos-ransim-model-MoveToCellResponse) + - [MoveToLocationRequest](#onos-ransim-model-MoveToLocationRequest) + - [MoveToLocationResponse](#onos-ransim-model-MoveToLocationResponse) + - [PlmnIDRequest](#onos-ransim-model-PlmnIDRequest) + - [PlmnIDResponse](#onos-ransim-model-PlmnIDResponse) + - [SetUECountRequest](#onos-ransim-model-SetUECountRequest) + - [SetUECountResponse](#onos-ransim-model-SetUECountResponse) + - [UpdateCellRequest](#onos-ransim-model-UpdateCellRequest) + - [UpdateCellResponse](#onos-ransim-model-UpdateCellResponse) + - [UpdateNodeRequest](#onos-ransim-model-UpdateNodeRequest) + - [UpdateNodeResponse](#onos-ransim-model-UpdateNodeResponse) + - [WatchCellsRequest](#onos-ransim-model-WatchCellsRequest) + - [WatchCellsResponse](#onos-ransim-model-WatchCellsResponse) + - [WatchNodesRequest](#onos-ransim-model-WatchNodesRequest) + - [WatchNodesResponse](#onos-ransim-model-WatchNodesResponse) + - [WatchRoutesRequest](#onos-ransim-model-WatchRoutesRequest) + - [WatchRoutesResponse](#onos-ransim-model-WatchRoutesResponse) + - [WatchUEsRequest](#onos-ransim-model-WatchUEsRequest) + - [WatchUEsResponse](#onos-ransim-model-WatchUEsResponse) + + - [EventType](#onos-ransim-model-EventType) + + - [CellModel](#onos-ransim-model-CellModel) + - [ModelService](#onos-ransim-model-ModelService) + - [NodeModel](#onos-ransim-model-NodeModel) + - [RouteModel](#onos-ransim-model-RouteModel) + - [UEModel](#onos-ransim-model-UEModel) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## onos/ransim/model/model.proto + + + + + +### AgentControlRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| enbid | [uint64](#uint64) | | | +| command | [string](#string) | | start, stop, drop, reconnect, etc. | +| args | [string](#string) | repeated | optional command parameters | + + + + + + + + +### AgentControlResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| node | [onos.ransim.types.Node](#onos-ransim-types-Node) | | | + + + + + + + + +### ClearRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| resume | [bool](#bool) | | | + + + + + + + + +### ClearResponse + + + + + + + + + +### CreateCellRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| cell | [onos.ransim.types.Cell](#onos-ransim-types-Cell) | | | + + + + + + + + +### CreateCellResponse + + + + + + + + + +### CreateNodeRequest +CreateNodeRequest create a node request + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| node | [onos.ransim.types.Node](#onos-ransim-types-Node) | | | + + + + + + + + +### CreateNodeResponse +CreateNodeResponse create a node response + + + + + + + + +### CreateRouteRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| route | [onos.ransim.types.Route](#onos-ransim-types-Route) | | | + + + + + + + + +### CreateRouteResponse + + + + + + + + + +### DataSet + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| type | [string](#string) | | | +| data | [bytes](#bytes) | | | + + + + + + + + +### DeleteCellRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| enbid | [uint64](#uint64) | | | + + + + + + + + +### DeleteCellResponse + + + + + + + + + +### DeleteNodeRequest +DeleteNodeRequest delete a node request + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| enbid | [uint64](#uint64) | | | + + + + + + + + +### DeleteNodeResponse +DeleteNodeResponse delete a node response + + + + + + + + +### DeleteRouteRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| enbid | [uint64](#uint64) | | | + + + + + + + + +### DeleteRouteResponse + + + + + + + + + +### DeleteUERequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| imsi | [uint32](#uint32) | | | + + + + + + + + +### DeleteUEResponse + + + + + + + + + +### GetCellRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| ecgi | [uint64](#uint64) | | | + + + + + + + + +### GetCellResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| cell | [onos.ransim.types.Cell](#onos-ransim-types-Cell) | | | + + + + + + + + +### GetNodeRequest +GetNodeRequest get a node request + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| enbid | [uint64](#uint64) | | | + + + + + + + + +### GetNodeResponse +GetNodeResponse get a node response + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| node | [onos.ransim.types.Node](#onos-ransim-types-Node) | | | + + + + + + + + +### GetRouteRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| imsi | [uint32](#uint32) | | | + + + + + + + + +### GetRouteResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| route | [onos.ransim.types.Route](#onos-ransim-types-Route) | | | + + + + + + + + +### GetUECountRequest + + + + + + + + + +### GetUECountResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| count | [uint32](#uint32) | | | + + + + + + + + +### GetUERequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| imsi | [uint32](#uint32) | | | + + + + + + + + +### GetUEResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| ue | [onos.ransim.types.Ue](#onos-ransim-types-Ue) | | | + + + + + + + + +### ListCellsRequest + + + + + + + + + +### ListCellsResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| Cell | [onos.ransim.types.Cell](#onos-ransim-types-Cell) | | | + + + + + + + + +### ListNodesRequest + + + + + + + + + +### ListNodesResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| node | [onos.ransim.types.Node](#onos-ransim-types-Node) | | | + + + + + + + + +### ListRoutesRequest + + + + + + + + + +### ListRoutesResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| route | [onos.ransim.types.Route](#onos-ransim-types-Route) | | | + + + + + + + + +### ListUEsRequest + + + + + + + + + +### ListUEsResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| ue | [onos.ransim.types.Ue](#onos-ransim-types-Ue) | | | + + + + + + + + +### LoadRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| dataSet | [DataSet](#onos-ransim-model-DataSet) | repeated | | +| resume | [bool](#bool) | | | + + + + + + + + +### LoadResponse + + + + + + + + + +### MoveToCellRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| imsi | [uint32](#uint32) | | | +| ecgi | [uint32](#uint32) | | | + + + + + + + + +### MoveToCellResponse + + + + + + + + + +### MoveToLocationRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| imsi | [uint32](#uint32) | | | +| location | [onos.ransim.types.Point](#onos-ransim-types-Point) | | | +| heading | [uint32](#uint32) | | | + + + + + + + + +### MoveToLocationResponse + + + + + + + + + +### PlmnIDRequest + + + + + + + + + +### PlmnIDResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| plmnid | [uint32](#uint32) | | | + + + + + + + + +### SetUECountRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| count | [uint32](#uint32) | | | + + + + + + + + +### SetUECountResponse + + + + + + + + + +### UpdateCellRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| cell | [onos.ransim.types.Cell](#onos-ransim-types-Cell) | | | + + + + + + + + +### UpdateCellResponse + + + + + + + + + +### UpdateNodeRequest +UpdateNodeRequest update a node request + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| node | [onos.ransim.types.Node](#onos-ransim-types-Node) | | | + + + + + + + + +### UpdateNodeResponse +UpdateNodeResponse update a node response + + + + + + + + +### WatchCellsRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| no_replay | [bool](#bool) | | | +| no_subscribe | [bool](#bool) | | | + + + + + + + + +### WatchCellsResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| cell | [onos.ransim.types.Cell](#onos-ransim-types-Cell) | | | +| type | [EventType](#onos-ransim-model-EventType) | | | + + + + + + + + +### WatchNodesRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| no_replay | [bool](#bool) | | | +| no_subscribe | [bool](#bool) | | | + + + + + + + + +### WatchNodesResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| node | [onos.ransim.types.Node](#onos-ransim-types-Node) | | | +| type | [EventType](#onos-ransim-model-EventType) | | | + + + + + + + + +### WatchRoutesRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| no_replay | [bool](#bool) | | | +| no_subscribe | [bool](#bool) | | | + + + + + + + + +### WatchRoutesResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| route | [onos.ransim.types.Route](#onos-ransim-types-Route) | | | +| type | [EventType](#onos-ransim-model-EventType) | | | + + + + + + + + +### WatchUEsRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| no_replay | [bool](#bool) | | | +| no_subscribe | [bool](#bool) | | | + + + + + + + + +### WatchUEsResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| ue | [onos.ransim.types.Ue](#onos-ransim-types-Ue) | | | +| type | [EventType](#onos-ransim-model-EventType) | | | + + + + + + + + + + +### EventType +Change event type + +| Name | Number | Description | +| ---- | ------ | ----------- | +| NONE | 0 | NONE indicates this response represents a pre-existing entity | +| CREATED | 1 | CREATED indicates a new entity was created | +| UPDATED | 2 | UPDATED indicates an existing entity was updated | +| DELETED | 3 | DELETED indicates an entity was deleted | + + + + + + + + + +### CellModel +CellModel provides means to create, delete and read simulated RAN cells. + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| CreateCell | [CreateCellRequest](#onos-ransim-model-CreateCellRequest) | [CreateCellResponse](#onos-ransim-model-CreateCellResponse) | | +| DeleteCell | [DeleteCellRequest](#onos-ransim-model-DeleteCellRequest) | [DeleteCellResponse](#onos-ransim-model-DeleteCellResponse) | | +| UpdateCell | [UpdateCellRequest](#onos-ransim-model-UpdateCellRequest) | [UpdateCellResponse](#onos-ransim-model-UpdateCellResponse) | | +| GetCell | [GetCellRequest](#onos-ransim-model-GetCellRequest) | [GetCellResponse](#onos-ransim-model-GetCellResponse) | | +| WatchCells | [WatchCellsRequest](#onos-ransim-model-WatchCellsRequest) | [WatchCellsResponse](#onos-ransim-model-WatchCellsResponse) stream | | +| ListCells | [ListCellsRequest](#onos-ransim-model-ListCellsRequest) | [ListCellsResponse](#onos-ransim-model-ListCellsResponse) stream | | + + + + +### ModelService +ModelService provides means to clear and load node and cell model in bulk + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| Load | [LoadRequest](#onos-ransim-model-LoadRequest) | [LoadResponse](#onos-ransim-model-LoadResponse) | | +| Clear | [ClearRequest](#onos-ransim-model-ClearRequest) | [ClearResponse](#onos-ransim-model-ClearResponse) | | + + + + +### NodeModel +NodeModel provides means to create, delete and read simulated RAN nodes. + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| GetPlmnID | [PlmnIDRequest](#onos-ransim-model-PlmnIDRequest) | [PlmnIDResponse](#onos-ransim-model-PlmnIDResponse) | | +| CreateNode | [CreateNodeRequest](#onos-ransim-model-CreateNodeRequest) | [CreateNodeResponse](#onos-ransim-model-CreateNodeResponse) | | +| GetNode | [GetNodeRequest](#onos-ransim-model-GetNodeRequest) | [GetNodeResponse](#onos-ransim-model-GetNodeResponse) | | +| UpdateNode | [UpdateNodeRequest](#onos-ransim-model-UpdateNodeRequest) | [UpdateNodeResponse](#onos-ransim-model-UpdateNodeResponse) | | +| DeleteNode | [DeleteNodeRequest](#onos-ransim-model-DeleteNodeRequest) | [DeleteNodeResponse](#onos-ransim-model-DeleteNodeResponse) | | +| WatchNodes | [WatchNodesRequest](#onos-ransim-model-WatchNodesRequest) | [WatchNodesResponse](#onos-ransim-model-WatchNodesResponse) stream | | +| ListNodes | [ListNodesRequest](#onos-ransim-model-ListNodesRequest) | [ListNodesResponse](#onos-ransim-model-ListNodesResponse) stream | | +| AgentControl | [AgentControlRequest](#onos-ransim-model-AgentControlRequest) | [AgentControlResponse](#onos-ransim-model-AgentControlResponse) | | + + + + +### RouteModel +RouteModel provides means to create, delete and read simulated mobile UE routes. + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| CreateRoute | [CreateRouteRequest](#onos-ransim-model-CreateRouteRequest) | [CreateRouteResponse](#onos-ransim-model-CreateRouteResponse) | | +| DeleteRoute | [DeleteRouteRequest](#onos-ransim-model-DeleteRouteRequest) | [DeleteRouteResponse](#onos-ransim-model-DeleteRouteResponse) | | +| GetRoute | [GetRouteRequest](#onos-ransim-model-GetRouteRequest) | [GetRouteResponse](#onos-ransim-model-GetRouteResponse) | | +| WatchRoutes | [WatchRoutesRequest](#onos-ransim-model-WatchRoutesRequest) | [WatchRoutesResponse](#onos-ransim-model-WatchRoutesResponse) stream | | +| ListRoutes | [ListRoutesRequest](#onos-ransim-model-ListRoutesRequest) | [ListRoutesResponse](#onos-ransim-model-ListRoutesResponse) stream | | + + + + +### UEModel +UEModel provides means to simulate mobile UEs. + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| GetUE | [GetUERequest](#onos-ransim-model-GetUERequest) | [GetUEResponse](#onos-ransim-model-GetUEResponse) | | +| MoveToCell | [MoveToCellRequest](#onos-ransim-model-MoveToCellRequest) | [MoveToCellResponse](#onos-ransim-model-MoveToCellResponse) | | +| MoveToLocation | [MoveToLocationRequest](#onos-ransim-model-MoveToLocationRequest) | [MoveToLocationResponse](#onos-ransim-model-MoveToLocationResponse) | | +| DeleteUE | [DeleteUERequest](#onos-ransim-model-DeleteUERequest) | [DeleteUEResponse](#onos-ransim-model-DeleteUEResponse) | | +| WatchUEs | [WatchUEsRequest](#onos-ransim-model-WatchUEsRequest) | [WatchUEsResponse](#onos-ransim-model-WatchUEsResponse) stream | | +| ListUEs | [ListUEsRequest](#onos-ransim-model-ListUEsRequest) | [ListUEsResponse](#onos-ransim-model-ListUEsResponse) stream | | +| GetUECount | [GetUECountRequest](#onos-ransim-model-GetUECountRequest) | [GetUECountResponse](#onos-ransim-model-GetUECountResponse) | | +| SetUECount | [SetUECountRequest](#onos-ransim-model-SetUECountRequest) | [SetUECountResponse](#onos-ransim-model-SetUECountResponse) | | + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-api/docs/onos/ransim/trafficsim.md b/onos-api/docs/onos/ransim/trafficsim.md new file mode 100644 index 0000000..d952ac6 --- /dev/null +++ b/onos-api/docs/onos/ransim/trafficsim.md @@ -0,0 +1,245 @@ +# Protocol Documentation + + +## Table of Contents + +- [onos/ransim/trafficsim/trafficsim.proto](#onos_ransim_trafficsim_trafficsim-proto) + - [ListRoutesRequest](#onos-ransim-trafficsim-ListRoutesRequest) + - [ListRoutesResponse](#onos-ransim-trafficsim-ListRoutesResponse) + - [ListUesRequest](#onos-ransim-trafficsim-ListUesRequest) + - [ListUesResponse](#onos-ransim-trafficsim-ListUesResponse) + - [MapLayoutRequest](#onos-ransim-trafficsim-MapLayoutRequest) + - [ResetMetricsMsg](#onos-ransim-trafficsim-ResetMetricsMsg) + - [SetNumberUEsRequest](#onos-ransim-trafficsim-SetNumberUEsRequest) + - [SetNumberUEsResponse](#onos-ransim-trafficsim-SetNumberUEsResponse) + - [WatchUesRequest](#onos-ransim-trafficsim-WatchUesRequest) + - [WatchUesResponse](#onos-ransim-trafficsim-WatchUesResponse) + + - [Type](#onos-ransim-trafficsim-Type) + - [UpdateType](#onos-ransim-trafficsim-UpdateType) + + - [Traffic](#onos-ransim-trafficsim-Traffic) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## onos/ransim/trafficsim/trafficsim.proto + + + + + +### ListRoutesRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| no_replay | [bool](#bool) | | | +| no_subscribe | [bool](#bool) | | | + + + + + + + + +### ListRoutesResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| route | [onos.ransim.types.Route](#onos-ransim-types-Route) | | route is the route change on which the event occurred | +| type | [Type](#onos-ransim-trafficsim-Type) | | type is a qualification of the type of change being made | + + + + + + + + +### ListUesRequest + + + + + + + + + +### ListUesResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| ue | [onos.ransim.types.Ue](#onos-ransim-types-Ue) | | Ue is the UserEquipment change on which the event occurred | + + + + + + + + +### MapLayoutRequest + + + + + + + + + +### ResetMetricsMsg + + + + + + + + + +### SetNumberUEsRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| number | [uint32](#uint32) | | | + + + + + + + + +### SetNumberUEsResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| number | [uint32](#uint32) | | | + + + + + + + + +### WatchUesRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| no_replay | [bool](#bool) | | | +| no_subscribe | [bool](#bool) | | | + + + + + + + + +### WatchUesResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| ue | [onos.ransim.types.Ue](#onos-ransim-types-Ue) | | Ue is the UserEquipment change on which the event occurred | +| type | [Type](#onos-ransim-trafficsim-Type) | | type is a qualification of the type of change being made | +| update_type | [UpdateType](#onos-ransim-trafficsim-UpdateType) | | update_type is a qualification of the type of UE change | + + + + + + + + + + +### Type +Change event type + +| Name | Number | Description | +| ---- | ------ | ----------- | +| NONE | 0 | NONE indicates this response does not represent a modification of the Change | +| ADDED | 1 | ADDED is an event which occurs when a Change is added to the topology | +| UPDATED | 2 | UPDATED is an event which occurs when a Change is updated | +| REMOVED | 3 | REMOVED is an event which occurs when a Change is removed from the configuration | + + + + + +### UpdateType +In the case of an update this helps qualify the update type - add items as necessary + +| Name | Number | Description | +| ---- | ------ | ----------- | +| NOUPDATETYPE | 0 | | +| POSITION | 1 | POSITION An update in position of UE only, without a change in the Tower affinity | +| TOWER | 2 | TOWER An update in non-serving tower affinity (and also position) of UE | +| HANDOVER | 3 | HANDOVER An update of the serving tower | + + + + + + + + + +### Traffic +Traffic - provides a stream of traffic data to GUI + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| GetMapLayout | [MapLayoutRequest](#onos-ransim-trafficsim-MapLayoutRequest) | [.onos.ransim.types.MapLayout](#onos-ransim-types-MapLayout) | | +| ListRoutes | [ListRoutesRequest](#onos-ransim-trafficsim-ListRoutesRequest) | [ListRoutesResponse](#onos-ransim-trafficsim-ListRoutesResponse) stream | | +| ListUes | [ListUesRequest](#onos-ransim-trafficsim-ListUesRequest) | [ListUesResponse](#onos-ransim-trafficsim-ListUesResponse) stream | | +| WatchUes | [WatchUesRequest](#onos-ransim-trafficsim-WatchUesRequest) | [WatchUesResponse](#onos-ransim-trafficsim-WatchUesResponse) stream | | +| SetNumberUEs | [SetNumberUEsRequest](#onos-ransim-trafficsim-SetNumberUEsRequest) | [SetNumberUEsResponse](#onos-ransim-trafficsim-SetNumberUEsResponse) | | +| ResetMetrics | [ResetMetricsMsg](#onos-ransim-trafficsim-ResetMetricsMsg) | [ResetMetricsMsg](#onos-ransim-trafficsim-ResetMetricsMsg) | | + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-api/docs/onos/ransim/types.md b/onos-api/docs/onos/ransim/types.md new file mode 100644 index 0000000..9d2ca02 --- /dev/null +++ b/onos-api/docs/onos/ransim/types.md @@ -0,0 +1,356 @@ +# Protocol Documentation + + +## Table of Contents + +- [onos/ransim/types/types.proto](#onos_ransim_types_types-proto) + - [Cell](#onos-ransim-types-Cell) + - [Cell.CrntiMapEntry](#onos-ransim-types-Cell-CrntiMapEntry) + - [EventA3Params](#onos-ransim-types-EventA3Params) + - [Guami](#onos-ransim-types-Guami) + - [MapLayout](#onos-ransim-types-MapLayout) + - [MeasurementParams](#onos-ransim-types-MeasurementParams) + - [MeasurementParams.NcellIndividualOffsetsEntry](#onos-ransim-types-MeasurementParams-NcellIndividualOffsetsEntry) + - [Node](#onos-ransim-types-Node) + - [Point](#onos-ransim-types-Point) + - [Route](#onos-ransim-types-Route) + - [Sector](#onos-ransim-types-Sector) + - [Ue](#onos-ransim-types-Ue) + - [UeIdentity](#onos-ransim-types-UeIdentity) + - [UeMetrics](#onos-ransim-types-UeMetrics) + + - [CellType](#onos-ransim-types-CellType) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## onos/ransim/types/types.proto + + + + + +### Cell + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| ecgi | [uint64](#uint64) | | | +| location | [Point](#onos-ransim-types-Point) | | | +| sector | [Sector](#onos-ransim-types-Sector) | | | +| color | [string](#string) | | | +| max_ues | [uint32](#uint32) | | | +| neighbors | [uint64](#uint64) | repeated | | +| tx_power_db | [double](#double) | | The cell transmit power in decibels | +| measurement_params | [MeasurementParams](#onos-ransim-types-MeasurementParams) | | | +| crnti_map | [Cell.CrntiMapEntry](#onos-ransim-types-Cell-CrntiMapEntry) | repeated | crntis maps a ue's name to its crnti | +| crnti_index | [uint32](#uint32) | | | +| port | [uint32](#uint32) | | | +| pci | [uint32](#uint32) | | | +| earfcn | [uint32](#uint32) | | | +| cell_type | [CellType](#onos-ransim-types-CellType) | | | +| rrc_idle_count | [uint32](#uint32) | | | +| rrc_connected_count | [uint32](#uint32) | | | + + + + + + + + +### Cell.CrntiMapEntry + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| key | [uint32](#uint32) | | | +| value | [uint64](#uint64) | | | + + + + + + + + +### EventA3Params + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| a3_offset | [int32](#int32) | | | +| report_on_leave | [bool](#bool) | | | + + + + + + + + +### Guami + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| plmnid | [uint32](#uint32) | | 24 bits (12 bits for MCC and 12 bits for MNC) | +| amf_region_id | [uint32](#uint32) | | 8 bits | +| amf_set_id | [uint32](#uint32) | | 10 bits | +| amf_pointer | [uint32](#uint32) | | 6 bits | + + + + + + + + +### MapLayout + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| center | [Point](#onos-ransim-types-Point) | | Map center latitude and longitude | +| zoom | [float](#float) | | The starting Zoom level | +| fade | [bool](#bool) | | Show map as faded on start | +| show_routes | [bool](#bool) | | Show routes on start | +| show_power | [bool](#bool) | | Show power as circle on start | +| locations_scale | [float](#float) | | Ratio of random locations diameter to tower grid width | +| min_ues | [uint32](#uint32) | | FIXME: These are deprecated; remove Max number of UEs for complete simulation | +| max_ues | [uint32](#uint32) | | Max number of UEs for complete simulation | +| current_routes | [uint32](#uint32) | | the current number of routes | + + + + + + + + +### MeasurementParams + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| time_to_trigger | [int32](#int32) | | | +| frequency_offset | [int32](#int32) | | | +| pcell_individual_offset | [int32](#int32) | | | +| ncell_individual_offsets | [MeasurementParams.NcellIndividualOffsetsEntry](#onos-ransim-types-MeasurementParams-NcellIndividualOffsetsEntry) | repeated | | +| hysteresis | [int32](#int32) | | | +| event_a3_params | [EventA3Params](#onos-ransim-types-EventA3Params) | | | + + + + + + + + +### MeasurementParams.NcellIndividualOffsetsEntry + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| key | [uint64](#uint64) | | | +| value | [int32](#int32) | | | + + + + + + + + +### Node + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| enbid | [uint32](#uint32) | | | +| controllers | [string](#string) | repeated | | +| service_models | [string](#string) | repeated | | +| cell_ecgis | [uint64](#uint64) | repeated | | +| status | [string](#string) | | | + + + + + + + + +### Point + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| lat | [double](#double) | | | +| lng | [double](#double) | | | + + + + + + + + +### Route + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| name | [uint64](#uint64) | | | +| waypoints | [Point](#onos-ransim-types-Point) | repeated | | +| color | [string](#string) | | | +| speed_avg | [uint32](#uint32) | | | +| speed_stdev | [uint32](#uint32) | | | +| reverse | [bool](#bool) | | | +| next_point | [uint32](#uint32) | | | + + + + + + + + +### Sector + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| azimuth | [int32](#int32) | | | +| arc | [int32](#int32) | | | +| centroid | [Point](#onos-ransim-types-Point) | | | +| height | [int32](#int32) | | | +| tilt | [int32](#int32) | | | + + + + + + + + +### Ue + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| imsi | [uint64](#uint64) | | | +| type | [string](#string) | | | +| position | [Point](#onos-ransim-types-Point) | | | +| rotation | [uint32](#uint32) | | | +| serving_tower | [uint64](#uint64) | | | +| serving_tower_strength | [double](#double) | | | +| tower1 | [uint64](#uint64) | | | +| tower1_strength | [double](#double) | | | +| tower2 | [uint64](#uint64) | | | +| tower2_strength | [double](#double) | | | +| tower3 | [uint64](#uint64) | | | +| tower3_strength | [double](#double) | | | +| crnti | [uint32](#uint32) | | | +| admitted | [bool](#bool) | | | +| metrics | [UeMetrics](#onos-ransim-types-UeMetrics) | | | +| rrc_state | [uint32](#uint32) | | | +| five_qi | [int32](#int32) | | | +| ueid | [UeIdentity](#onos-ransim-types-UeIdentity) | | | + + + + + + + + +### UeIdentity + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| guami | [Guami](#onos-ransim-types-Guami) | | | +| amf_ue_ngap_id | [uint64](#uint64) | | | + + + + + + + + +### UeMetrics + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| ho_latency | [int64](#int64) | | Latency (in nanoseconds) of the most recent hand-over | +| ho_report_timestamp | [int64](#int64) | | Handover report timestamp (in nanoseconds since epoch) | +| is_first | [bool](#bool) | | flag to indicate the first measurement | + + + + + + + + + + +### CellType + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| FEMTO | 0 | | +| ENTERPRISE | 1 | | +| OUTDOOR_SMALL | 2 | | +| MACRO | 3 | | + + + + + + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-api/docs/onos/rsm/rsm.md b/onos-api/docs/onos/rsm/rsm.md new file mode 100644 index 0000000..7ae53d9 --- /dev/null +++ b/onos-api/docs/onos/rsm/rsm.md @@ -0,0 +1,319 @@ +# Protocol Documentation + + +## Table of Contents + +- [onos/rsm/rsm.proto](#onos_rsm_rsm-proto) + - [Ack](#onos-rsm-Ack) + - [CreateSliceRequest](#onos-rsm-CreateSliceRequest) + - [CreateSliceResponse](#onos-rsm-CreateSliceResponse) + - [DeleteSliceRequest](#onos-rsm-DeleteSliceRequest) + - [DeleteSliceResponse](#onos-rsm-DeleteSliceResponse) + - [SetUeSliceAssociationRequest](#onos-rsm-SetUeSliceAssociationRequest) + - [SetUeSliceAssociationResponse](#onos-rsm-SetUeSliceAssociationResponse) + - [SliceAssocItem](#onos-rsm-SliceAssocItem) + - [SliceItem](#onos-rsm-SliceItem) + - [UeId](#onos-rsm-UeId) + - [UpdateSliceRequest](#onos-rsm-UpdateSliceRequest) + - [UpdateSliceResponse](#onos-rsm-UpdateSliceResponse) + + - [SchedulerType](#onos-rsm-SchedulerType) + - [SliceType](#onos-rsm-SliceType) + - [UeIdType](#onos-rsm-UeIdType) + + - [Rsm](#onos-rsm-Rsm) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## onos/rsm/rsm.proto + + + + + +### Ack + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| success | [bool](#bool) | | | +| cause | [string](#string) | | | + + + + + + + + +### CreateSliceRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| e2_node_id | [string](#string) | | | +| slice_id | [string](#string) | | | +| scheduler_type | [SchedulerType](#onos-rsm-SchedulerType) | | | +| weight | [string](#string) | | | +| sliceType | [SliceType](#onos-rsm-SliceType) | | | + + + + + + + + +### CreateSliceResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| ack | [Ack](#onos-rsm-Ack) | | | + + + + + + + + +### DeleteSliceRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| e2_node_id | [string](#string) | | | +| slice_id | [string](#string) | | | +| sliceType | [SliceType](#onos-rsm-SliceType) | | | + + + + + + + + +### DeleteSliceResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| ack | [Ack](#onos-rsm-Ack) | | | + + + + + + + + +### SetUeSliceAssociationRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| e2_node_id | [string](#string) | | | +| ue_id | [UeId](#onos-rsm-UeId) | repeated | | +| dl_slice_id | [string](#string) | | | +| ul_slice_id | [string](#string) | | | +| drb_id | [string](#string) | | | + + + + + + + + +### SetUeSliceAssociationResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| ack | [Ack](#onos-rsm-Ack) | | | +| assigned_ue_slice_assoc_id | [string](#string) | | | + + + + + + + + +### SliceAssocItem + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| ue_slice_assoc_id | [string](#string) | | | +| e2_node_id | [string](#string) | | | +| ue_id | [UeIdType](#onos-rsm-UeIdType) | repeated | | +| slice_id | [string](#string) | | | + + + + + + + + +### SliceItem + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| e2_node_id | [string](#string) | | | +| slice_ids | [string](#string) | repeated | | + + + + + + + + +### UeId + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| ue_id | [string](#string) | | | +| type | [UeIdType](#onos-rsm-UeIdType) | | | + + + + + + + + +### UpdateSliceRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| e2_node_id | [string](#string) | | | +| slice_id | [string](#string) | | | +| scheduler_type | [SchedulerType](#onos-rsm-SchedulerType) | | | +| weight | [string](#string) | | | +| sliceType | [SliceType](#onos-rsm-SliceType) | | | + + + + + + + + +### UpdateSliceResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| ack | [Ack](#onos-rsm-Ack) | | | + + + + + + + + + + +### SchedulerType + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| SCHEDULER_TYPE_ROUND_ROBIN | 0 | | +| SCHEDULER_TYPE_PROPORTIONALLY_FAIR | 1 | | +| SCHEDULER_TYPE_QOS_BASED | 2 | | + + + + + +### SliceType + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| SLICE_TYPE_DL_SLICE | 0 | | +| SLICE_TYPE_UL_SLICE | 1 | | + + + + + +### UeIdType + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| UE_ID_TYPE_CU_UE_F1_AP_ID | 0 | | +| UE_ID_TYPE_DU_UE_F1_AP_ID | 1 | | +| UE_ID_TYPE_RAN_UE_NGAP_ID | 2 | | +| UE_ID_TYPE_AMF_UE_NGAP_ID | 3 | | +| UE_ID_TYPE_ENB_UE_S1_AP_ID | 4 | | + + + + + + + + + +### Rsm + + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| CreateSlice | [CreateSliceRequest](#onos-rsm-CreateSliceRequest) | [CreateSliceResponse](#onos-rsm-CreateSliceResponse) | Slice management | +| UpdateSlice | [UpdateSliceRequest](#onos-rsm-UpdateSliceRequest) | [UpdateSliceResponse](#onos-rsm-UpdateSliceResponse) | | +| DeleteSlice | [DeleteSliceRequest](#onos-rsm-DeleteSliceRequest) | [DeleteSliceResponse](#onos-rsm-DeleteSliceResponse) | | +| SetUeSliceAssociation | [SetUeSliceAssociationRequest](#onos-rsm-SetUeSliceAssociationRequest) | [SetUeSliceAssociationResponse](#onos-rsm-SetUeSliceAssociationResponse) | UE-Slice association | + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-api/docs/onos/topo/topo.md b/onos-api/docs/onos/topo/topo.md new file mode 100644 index 0000000..3c71692 --- /dev/null +++ b/onos-api/docs/onos/topo/topo.md @@ -0,0 +1,582 @@ +# Protocol Documentation + + +## Table of Contents + +- [onos/topo/topo.proto](#onos_topo_topo-proto) + - [CreateRequest](#onos-topo-CreateRequest) + - [CreateResponse](#onos-topo-CreateResponse) + - [DeleteRequest](#onos-topo-DeleteRequest) + - [DeleteResponse](#onos-topo-DeleteResponse) + - [Entity](#onos-topo-Entity) + - [EqualFilter](#onos-topo-EqualFilter) + - [Event](#onos-topo-Event) + - [Filter](#onos-topo-Filter) + - [Filters](#onos-topo-Filters) + - [GetRequest](#onos-topo-GetRequest) + - [GetResponse](#onos-topo-GetResponse) + - [InFilter](#onos-topo-InFilter) + - [Kind](#onos-topo-Kind) + - [ListRequest](#onos-topo-ListRequest) + - [ListResponse](#onos-topo-ListResponse) + - [NotFilter](#onos-topo-NotFilter) + - [Object](#onos-topo-Object) + - [Object.AspectsEntry](#onos-topo-Object-AspectsEntry) + - [Object.LabelsEntry](#onos-topo-Object-LabelsEntry) + - [QueryRequest](#onos-topo-QueryRequest) + - [QueryResponse](#onos-topo-QueryResponse) + - [Relation](#onos-topo-Relation) + - [RelationFilter](#onos-topo-RelationFilter) + - [UpdateRequest](#onos-topo-UpdateRequest) + - [UpdateResponse](#onos-topo-UpdateResponse) + - [WatchRequest](#onos-topo-WatchRequest) + - [WatchResponse](#onos-topo-WatchResponse) + + - [EventType](#onos-topo-EventType) + - [Object.Type](#onos-topo-Object-Type) + - [RelationFilterScope](#onos-topo-RelationFilterScope) + - [SortOrder](#onos-topo-SortOrder) + + - [Topo](#onos-topo-Topo) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## onos/topo/topo.proto + + + + + +### CreateRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| object | [Object](#onos-topo-Object) | | | + + + + + + + + +### CreateResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| object | [Object](#onos-topo-Object) | | | + + + + + + + + +### DeleteRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | +| revision | [uint64](#uint64) | | | + + + + + + + + +### DeleteResponse + + + + + + + + + +### Entity +Entity represents any "thing" that is represented in the topology + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| kind_id | [string](#string) | | user-defined entity kind | +| src_relation_ids | [string](#string) | repeated | these lists are maintained by the system and are provided as read-only values for clients | +| tgt_relation_ids | [string](#string) | repeated | | + + + + + + + + +### EqualFilter + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| value | [string](#string) | | | + + + + + + + + +### Event +Event is a topo operation event + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| type | [EventType](#onos-topo-EventType) | | | +| object | [Object](#onos-topo-Object) | | | + + + + + + + + +### Filter + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| equal | [EqualFilter](#onos-topo-EqualFilter) | | | +| not | [NotFilter](#onos-topo-NotFilter) | | | +| in | [InFilter](#onos-topo-InFilter) | | | +| key | [string](#string) | | optional key | + + + + + + + + +### Filters + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| kind_filter | [Filter](#onos-topo-Filter) | | | +| label_filters | [Filter](#onos-topo-Filter) | repeated | | +| relation_filter | [RelationFilter](#onos-topo-RelationFilter) | | | +| object_types | [Object.Type](#onos-topo-Object-Type) | repeated | | +| with_aspects | [string](#string) | repeated | | + + + + + + + + +### GetRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | + + + + + + + + +### GetResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| object | [Object](#onos-topo-Object) | | | + + + + + + + + +### InFilter + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| values | [string](#string) | repeated | | + + + + + + + + +### Kind +Kind represents an archetype of an object, i.e. entity or relation + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| name | [string](#string) | | Friendly name of the kind | + + + + + + + + +### ListRequest +DEPRECATED + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| filters | [Filters](#onos-topo-Filters) | | | +| sort_order | [SortOrder](#onos-topo-SortOrder) | | | + + + + + + + + +### ListResponse +DEPRECATED + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| objects | [Object](#onos-topo-Object) | repeated | | + + + + + + + + +### NotFilter + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| inner | [Filter](#onos-topo-Filter) | | | + + + + + + + + +### Object +Object is an one of the following: a kind (archetype of entity or relation), an entity, a relation + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| uuid | [string](#string) | | | +| id | [string](#string) | | | +| revision | [uint64](#uint64) | | | +| type | [Object.Type](#onos-topo-Object-Type) | | | +| entity | [Entity](#onos-topo-Entity) | | | +| relation | [Relation](#onos-topo-Relation) | | | +| kind | [Kind](#onos-topo-Kind) | | | +| aspects | [Object.AspectsEntry](#onos-topo-Object-AspectsEntry) | repeated | Map of aspects as typed values; for kind, these represent expected aspects and their default values | +| labels | [Object.LabelsEntry](#onos-topo-Object-LabelsEntry) | repeated | Arbitrary labels for classification/search | + + + + + + + + +### Object.AspectsEntry + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| key | [string](#string) | | | +| value | [google.protobuf.Any](#google-protobuf-Any) | | | + + + + + + + + +### Object.LabelsEntry + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| key | [string](#string) | | | +| value | [string](#string) | | | + + + + + + + + +### QueryRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| filters | [Filters](#onos-topo-Filters) | | | + + + + + + + + +### QueryResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| object | [Object](#onos-topo-Object) | | | + + + + + + + + +### Relation +Relation represents any "relation" between two entitites in the topology. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| kind_id | [string](#string) | | user defined relation kind | +| src_entity_id | [string](#string) | | | +| tgt_entity_id | [string](#string) | | | + + + + + + + + +### RelationFilter +Filter for targets of given relation kinds and given source ids; optionally, filters by specified target kind + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| src_id | [string](#string) | | | +| relation_kind | [string](#string) | | | +| target_kind | [string](#string) | | | +| scope | [RelationFilterScope](#onos-topo-RelationFilterScope) | | | +| target_id | [string](#string) | | | + + + + + + + + +### UpdateRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| object | [Object](#onos-topo-Object) | | | + + + + + + + + +### UpdateResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| object | [Object](#onos-topo-Object) | | | + + + + + + + + +### WatchRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| filters | [Filters](#onos-topo-Filters) | | | +| noreplay | [bool](#bool) | | | + + + + + + + + +### WatchResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| event | [Event](#onos-topo-Event) | | | + + + + + + + + + + +### EventType +EventType is a topo operation event type + +| Name | Number | Description | +| ---- | ------ | ----------- | +| NONE | 0 | | +| ADDED | 1 | | +| UPDATED | 2 | | +| REMOVED | 3 | | + + + + + +### Object.Type + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| UNSPECIFIED | 0 | | +| ENTITY | 1 | | +| RELATION | 2 | | +| KIND | 3 | | + + + + + +### RelationFilterScope + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| TARGETS_ONLY | 0 | Indicates only the target entities are desired when searching by src_id, or source entities when searching by target_id | +| ALL | 1 | Indicated source, target entities and all relations are desired | +| SOURCE_AND_TARGETS | 2 | Indicates only source and target entities are desired, regardless of search criteria | +| RELATIONS_ONLY | 3 | Indicates only relations are desired; no entities | +| RELATIONS_AND_TARGETS | 4 | Indicates only relations and target entities desired when searching by src_id, or relations and source entities when searching by target_id | + + + + + +### SortOrder + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| UNORDERED | 0 | | +| ASCENDING | 1 | | +| DESCENDING | 2 | | + + + + + + + + + +### Topo +EntityService provides an API for managing entities. + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| Create | [CreateRequest](#onos-topo-CreateRequest) | [CreateResponse](#onos-topo-CreateResponse) | Create a new topology object | +| Get | [GetRequest](#onos-topo-GetRequest) | [GetResponse](#onos-topo-GetResponse) | Get an object from topology | +| Update | [UpdateRequest](#onos-topo-UpdateRequest) | [UpdateResponse](#onos-topo-UpdateResponse) | Update an existing topology object | +| Delete | [DeleteRequest](#onos-topo-DeleteRequest) | [DeleteResponse](#onos-topo-DeleteResponse) | Delete an object from topology | +| Query | [QueryRequest](#onos-topo-QueryRequest) | [QueryResponse](#onos-topo-QueryResponse) stream | Query gets a stream of requested objects | +| List | [ListRequest](#onos-topo-ListRequest) | [ListResponse](#onos-topo-ListResponse) | DEPRECATED: List gets a list of requested objects | +| Watch | [WatchRequest](#onos-topo-WatchRequest) | [WatchResponse](#onos-topo-WatchResponse) stream | Watch returns a stream of topo change notifications | + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-api/docs/onos/uenib/uenib.md b/onos-api/docs/onos/uenib/uenib.md new file mode 100644 index 0000000..8046684 --- /dev/null +++ b/onos-api/docs/onos/uenib/uenib.md @@ -0,0 +1,312 @@ +# Protocol Documentation + + +## Table of Contents + +- [onos/uenib/uenib.proto](#onos_uenib_uenib-proto) + - [CreateUERequest](#onos-uenib-CreateUERequest) + - [CreateUEResponse](#onos-uenib-CreateUEResponse) + - [DeleteUERequest](#onos-uenib-DeleteUERequest) + - [DeleteUEResponse](#onos-uenib-DeleteUEResponse) + - [Event](#onos-uenib-Event) + - [GetUERequest](#onos-uenib-GetUERequest) + - [GetUEResponse](#onos-uenib-GetUEResponse) + - [ListUERequest](#onos-uenib-ListUERequest) + - [ListUEResponse](#onos-uenib-ListUEResponse) + - [UE](#onos-uenib-UE) + - [UE.AspectsEntry](#onos-uenib-UE-AspectsEntry) + - [UpdateUERequest](#onos-uenib-UpdateUERequest) + - [UpdateUEResponse](#onos-uenib-UpdateUEResponse) + - [WatchUERequest](#onos-uenib-WatchUERequest) + - [WatchUEResponse](#onos-uenib-WatchUEResponse) + + - [EventType](#onos-uenib-EventType) + + - [UEService](#onos-uenib-UEService) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## onos/uenib/uenib.proto + + + + + +### CreateUERequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| ue | [UE](#onos-uenib-UE) | | | + + + + + + + + +### CreateUEResponse + + + + + + + + + +### DeleteUERequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | +| aspect_types | [string](#string) | repeated | | + + + + + + + + +### DeleteUEResponse + + + + + + + + + +### Event +Event is a record of an operation on a UE + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| type | [EventType](#onos-uenib-EventType) | | | +| ue | [UE](#onos-uenib-UE) | | | + + + + + + + + +### GetUERequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | +| aspect_types | [string](#string) | repeated | | + + + + + + + + +### GetUEResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| ue | [UE](#onos-uenib-UE) | | | + + + + + + + + +### ListUERequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| aspect_types | [string](#string) | repeated | | + + + + + + + + +### ListUEResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| ue | [UE](#onos-uenib-UE) | | | + + + + + + + + +### UE +UE entity is merely an ID and a map of arbitrary aspects. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | +| aspects | [UE.AspectsEntry](#onos-uenib-UE-AspectsEntry) | repeated | Map of aspects as typed values | + + + + + + + + +### UE.AspectsEntry + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| key | [string](#string) | | | +| value | [google.protobuf.Any](#google-protobuf-Any) | | | + + + + + + + + +### UpdateUERequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| ue | [UE](#onos-uenib-UE) | | | + + + + + + + + +### UpdateUEResponse + + + + + + + + + +### WatchUERequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| noreplay | [bool](#bool) | | | +| aspect_types | [string](#string) | repeated | | + + + + + + + + +### WatchUEResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| event | [Event](#onos-uenib-Event) | | | + + + + + + + + + + +### EventType +EventType is a UE operation event type + +| Name | Number | Description | +| ---- | ------ | ----------- | +| NONE | 0 | | +| ADDED | 1 | | +| UPDATED | 2 | | +| REMOVED | 3 | | + + + + + + + + + +### UEService +UEService provides an API for managing UEs and various aspects of +information associated with UEs. + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| CreateUE | [CreateUERequest](#onos-uenib-CreateUERequest) | [CreateUEResponse](#onos-uenib-CreateUEResponse) | Create a new UE entity and its initial set of aspects. | +| GetUE | [GetUERequest](#onos-uenib-GetUERequest) | [GetUEResponse](#onos-uenib-GetUEResponse) | Get a UE entity populated with the requested aspects. | +| UpdateUE | [UpdateUERequest](#onos-uenib-UpdateUERequest) | [UpdateUEResponse](#onos-uenib-UpdateUEResponse) | Update an existing UE entity populated with the requested aspects. Only the aspects present in the UE entity will be updated; others will be left unmodified. New aspects can be added via update. | +| DeleteUE | [DeleteUERequest](#onos-uenib-DeleteUERequest) | [DeleteUEResponse](#onos-uenib-DeleteUEResponse) | Delete the specified aspects of a UE entity. | +| ListUEs | [ListUERequest](#onos-uenib-ListUERequest) | [ListUEResponse](#onos-uenib-ListUEResponse) stream | ListUEs returns a stream of UE entities populated the requested aspects. | +| WatchUEs | [WatchUERequest](#onos-uenib-WatchUERequest) | [WatchUEResponse](#onos-uenib-WatchUEResponse) stream | WatchUEs returns a stream of UE change notifications, with each UE populated with only the requested aspects. | + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-cli/README.md b/onos-cli/README.md new file mode 100644 index 0000000..32faf0f --- /dev/null +++ b/onos-cli/README.md @@ -0,0 +1,20 @@ + + +# onos-cli +[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/onosproject/onos-cli/blob/master/LICENSE) +[![Go Report Card](https://goreportcard.com/badge/github.com/onosproject/onos-cli)](https://goreportcard.com/report/github.com/onosproject/onos-cli) +[![GoDoc](https://godoc.org/github.com/onosproject/onos-cli?status.svg)](https://godoc.org/github.com/onosproject/onos-cli) + +This is the implementation of a consolidated `onos` command-line interface for ONOS (µONOS Architecture) + +The goal is to provide a single CLI executable that can be used as a means to access CLI functionality +of a number of different ONOS subsystems, e.g. topo, config, control. + +* [Deploying onos-cli with Helm](docs/deployment.md) +* [ONOS command line client](docs/cli/onos.md) + + + diff --git a/onos-cli/docs/cli/onos.md b/onos-cli/docs/cli/onos.md new file mode 100644 index 0000000..2783cd3 --- /dev/null +++ b/onos-cli/docs/cli/onos.md @@ -0,0 +1,36 @@ + + +## onos + +ONOS command line client + +### Options + +``` + -h, --help help for onos +``` + +### SEE ALSO + +* [onos a1t](onos_a1t.md) - ONOS a1t subsystem commands +* [onos completion](onos_completion.md) - Generated bash or zsh auto-completion script +* [onos config](onos_config.md) - ONOS configuration subsystem commands +* [onos discovery](onos_discovery.md) - Topology discovery subsystem commands +* [onos e2t](onos_e2t.md) - ONOS e2t subsystem commands +* [onos fabric-sim](onos_fabric-sim.md) - ONOS fabric simulator commands +* [onos kpimon](onos_kpimon.md) - ONOS KPIMON subsystem commands +* [onos mho](onos_mho.md) - ONOS MHO subsystem commands +* [onos mlb](onos_mlb.md) - ONOS MLB subsystem commands +* [onos pci](onos_pci.md) - ONOS PCI subsystem commands +* [onos perf](onos_perf.md) - simple gRPC performance measurement client +* [onos provisioner](onos_provisioner.md) - Device provisioner subsystem commands +* [onos ransim](onos_ransim.md) - ONOS RAN simulator commands +* [onos rsm](onos_rsm.md) - ONOS RSM subsystem commands +* [onos topo](onos_topo.md) - ONOS topology resource commands +* [onos uenib](onos_uenib.md) - ONOS UE-NIB subsystem commands + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_a1t.md b/onos-cli/docs/cli/onos_a1t.md new file mode 100644 index 0000000..642eb28 --- /dev/null +++ b/onos-cli/docs/cli/onos_a1t.md @@ -0,0 +1,27 @@ + + +## onos a1t + +ONOS a1t subsystem commands + +### Options + +``` + --auth-header string Auth header in the form 'Bearer ' + -h, --help help for a1t + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-a1t:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos](onos.md) - ONOS command line client +* [onos a1t get](onos_a1t_get.md) - Get command + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_a1t_get.md b/onos-cli/docs/cli/onos_a1t_get.md new file mode 100644 index 0000000..e4b8bad --- /dev/null +++ b/onos-cli/docs/cli/onos_a1t_get.md @@ -0,0 +1,33 @@ + + +## onos a1t get + +Get command + +### Options + +``` + -h, --help help for get +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-a1t:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos a1t](onos_a1t.md) - ONOS a1t subsystem commands +* [onos a1t get policy](onos_a1t_get_policy.md) - Policy command +* [onos a1t get subscription](onos_a1t_get_subscription.md) - Get A1 subscription(s) + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_a1t_get_policy.md b/onos-cli/docs/cli/onos_a1t_get_policy.md new file mode 100644 index 0000000..9acbf0b --- /dev/null +++ b/onos-cli/docs/cli/onos_a1t_get_policy.md @@ -0,0 +1,34 @@ + + +## onos a1t get policy + +Policy command + +### Options + +``` + -h, --help help for policy +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-a1t:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos a1t get](onos_a1t_get.md) - Get command +* [onos a1t get policy object](onos_a1t_get_policy_object.md) - Get policy object +* [onos a1t get policy status](onos_a1t_get_policy_status.md) - Get policy status +* [onos a1t get policy type](onos_a1t_get_policy_type.md) - Get policy type + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_a1t_get_policy_object.md b/onos-cli/docs/cli/onos_a1t_get_policy_object.md new file mode 100644 index 0000000..b1c01f6 --- /dev/null +++ b/onos-cli/docs/cli/onos_a1t_get_policy_object.md @@ -0,0 +1,38 @@ + + +## onos a1t get policy object + +Get policy object + +``` +onos a1t get policy object [args] [flags] +``` + +### Options + +``` + -h, --help help for object + --no-headers disables output headers + --policyObjectID string Policy Object ID + --policyTypeID string Policy Type ID +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-a1t:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos a1t get policy](onos_a1t_get_policy.md) - Policy command + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_a1t_get_policy_status.md b/onos-cli/docs/cli/onos_a1t_get_policy_status.md new file mode 100644 index 0000000..b8e0df3 --- /dev/null +++ b/onos-cli/docs/cli/onos_a1t_get_policy_status.md @@ -0,0 +1,38 @@ + + +## onos a1t get policy status + +Get policy status + +``` +onos a1t get policy status [args] [flags] +``` + +### Options + +``` + -h, --help help for status + --no-headers disables output headers + --policyObjectID string Policy Object ID + --policyTypeID string Policy Type ID +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-a1t:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos a1t get policy](onos_a1t_get_policy.md) - Policy command + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_a1t_get_policy_type.md b/onos-cli/docs/cli/onos_a1t_get_policy_type.md new file mode 100644 index 0000000..646fd67 --- /dev/null +++ b/onos-cli/docs/cli/onos_a1t_get_policy_type.md @@ -0,0 +1,37 @@ + + +## onos a1t get policy type + +Get policy type + +``` +onos a1t get policy type [args] [flags] +``` + +### Options + +``` + -h, --help help for type + --no-headers disables output headers + --policyTypeID string Policy Type ID +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-a1t:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos a1t get policy](onos_a1t_get_policy.md) - Policy command + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_a1t_get_subscription.md b/onos-cli/docs/cli/onos_a1t_get_subscription.md new file mode 100644 index 0000000..5952c5b --- /dev/null +++ b/onos-cli/docs/cli/onos_a1t_get_subscription.md @@ -0,0 +1,37 @@ + + +## onos a1t get subscription + +Get A1 subscription(s) + +``` +onos a1t get subscription [flags] +``` + +### Options + +``` + -h, --help help for subscription + --no-headers disables output headers + --xAppID string xApp ID (optional) +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-a1t:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos a1t get](onos_a1t_get.md) - Get command + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_completion.md b/onos-cli/docs/cli/onos_completion.md new file mode 100644 index 0000000..2cb475c --- /dev/null +++ b/onos-cli/docs/cli/onos_completion.md @@ -0,0 +1,33 @@ + + +## onos completion + +Generated bash or zsh auto-completion script + +``` +onos completion [flags] +``` + +### Examples + +``` +For bash run the following command from the shell: eval $(onos completion bash). +For zsh run the following command from the shell: source <(onos completion zsh). +For fish run the following command from the shell: onos completion fish > ~/.config/fish/completions/onos.fish +``` + +### Options + +``` + -h, --help help for completion +``` + +### SEE ALSO + +* [onos](onos.md) - ONOS command line client + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_config.md b/onos-cli/docs/cli/onos_config.md new file mode 100644 index 0000000..4c1cabe --- /dev/null +++ b/onos-cli/docs/cli/onos_config.md @@ -0,0 +1,31 @@ + + +## onos config + +ONOS configuration subsystem commands + +### Options + +``` + --auth-header string Auth header in the form 'Bearer ' + -h, --help help for config + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-config:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos](onos.md) - ONOS command line client +* [onos config config](onos_config_config.md) - Manage the CLI configuration +* [onos config get](onos_config_get.md) - Get config resources +* [onos config log](onos_config_log.md) - logging api commands +* [onos config rollback](onos_config_rollback.md) - Rolls-back a transaction +* [onos config watch](onos_config_watch.md) - Watch for updates to a config resource type + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_config_config.md b/onos-cli/docs/cli/onos_config_config.md new file mode 100644 index 0000000..9a98202 --- /dev/null +++ b/onos-cli/docs/cli/onos_config_config.md @@ -0,0 +1,35 @@ + + +## onos config config + +Manage the CLI configuration + +### Options + +``` + -h, --help help for config +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-config:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos config](onos_config.md) - ONOS configuration subsystem commands +* [onos config config delete](onos_config_config_delete.md) - Delete CLI option value +* [onos config config get](onos_config_config_get.md) - Get CLI option value +* [onos config config init](onos_config_config_init.md) - Initialize the kpimon CLI configuration +* [onos config config set](onos_config_config_set.md) - Set CLI option value + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_config_config_delete.md b/onos-cli/docs/cli/onos_config_config_delete.md new file mode 100644 index 0000000..1da517c --- /dev/null +++ b/onos-cli/docs/cli/onos_config_config_delete.md @@ -0,0 +1,35 @@ + + +## onos config config delete + +Delete CLI option value + +``` +onos config config delete [flags] +``` + +### Options + +``` + -h, --help help for delete +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-config:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos config config](onos_config_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_config_config_get.md b/onos-cli/docs/cli/onos_config_config_get.md new file mode 100644 index 0000000..acda931 --- /dev/null +++ b/onos-cli/docs/cli/onos_config_config_get.md @@ -0,0 +1,35 @@ + + +## onos config config get + +Get CLI option value + +``` +onos config config get [flags] +``` + +### Options + +``` + -h, --help help for get +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-config:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos config config](onos_config_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_config_config_init.md b/onos-cli/docs/cli/onos_config_config_init.md new file mode 100644 index 0000000..00d7a63 --- /dev/null +++ b/onos-cli/docs/cli/onos_config_config_init.md @@ -0,0 +1,35 @@ + + +## onos config config init + +Initialize the kpimon CLI configuration + +``` +onos config config init [flags] +``` + +### Options + +``` + -h, --help help for init +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-config:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos config config](onos_config_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_config_config_set.md b/onos-cli/docs/cli/onos_config_config_set.md new file mode 100644 index 0000000..a45d125 --- /dev/null +++ b/onos-cli/docs/cli/onos_config_config_set.md @@ -0,0 +1,35 @@ + + +## onos config config set + +Set CLI option value + +``` +onos config config set [flags] +``` + +### Options + +``` + -h, --help help for set +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-config:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos config config](onos_config_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_config_get.md b/onos-cli/docs/cli/onos_config_get.md new file mode 100644 index 0000000..1b3956c --- /dev/null +++ b/onos-cli/docs/cli/onos_config_get.md @@ -0,0 +1,34 @@ + + +## onos config get + +Get config resources + +### Options + +``` + -h, --help help for get +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-config:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos config](onos_config.md) - ONOS configuration subsystem commands +* [onos config get configurations](onos_config_get_configurations.md) - List target configurations +* [onos config get plugins](onos_config_get_plugins.md) - plugins +* [onos config get transactions](onos_config_get_transactions.md) - Get list of configuration transactions + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_config_get_configurations.md b/onos-cli/docs/cli/onos_config_get_configurations.md new file mode 100644 index 0000000..c38a73d --- /dev/null +++ b/onos-cli/docs/cli/onos_config_get_configurations.md @@ -0,0 +1,37 @@ + + +## onos config get configurations + +List target configurations + +``` +onos config get configurations [configurationID] [flags] +``` + +### Options + +``` + -h, --help help for configurations + --no-headers disables output headers + -v, --verbose whether to print the change with verbose output +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-config:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos config get](onos_config_get.md) - Get config resources + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_config_get_plugins.md b/onos-cli/docs/cli/onos_config_get_plugins.md new file mode 100644 index 0000000..28f18a9 --- /dev/null +++ b/onos-cli/docs/cli/onos_config_get_plugins.md @@ -0,0 +1,37 @@ + + +## onos config get plugins + +plugins + +``` +onos config get plugins [flags] +``` + +### Options + +``` + -h, --help help for plugins + --no-headers disables output headers + -v, --verbose prints all the models in a plugin +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-config:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos config get](onos_config_get.md) - Get config resources + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_config_get_transactions.md b/onos-cli/docs/cli/onos_config_get_transactions.md new file mode 100644 index 0000000..1d4d6e9 --- /dev/null +++ b/onos-cli/docs/cli/onos_config_get_transactions.md @@ -0,0 +1,38 @@ + + +## onos config get transactions + +Get list of configuration transactions + +``` +onos config get transactions [transactionID] [flags] +``` + +### Options + +``` + -h, --help help for transactions + --index uint optional index for transaction lookup; takes precedence over ID + --no-headers disables output headers + -v, --verbose whether to print the change with verbose output +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-config:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos config get](onos_config_get.md) - Get config resources + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_config_log.md b/onos-cli/docs/cli/onos_config_log.md new file mode 100644 index 0000000..84144bf --- /dev/null +++ b/onos-cli/docs/cli/onos_config_log.md @@ -0,0 +1,33 @@ + + +## onos config log + +logging api commands + +### Options + +``` + -h, --help help for log +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-config:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos config](onos_config.md) - ONOS configuration subsystem commands +* [onos config log get](onos_config_log_get.md) - Gets a logger attribute (e.g. level) +* [onos config log set](onos_config_log_set.md) - Sets a logger attribute (e.g. level) + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_config_log_get.md b/onos-cli/docs/cli/onos_config_log_get.md new file mode 100644 index 0000000..4c631e9 --- /dev/null +++ b/onos-cli/docs/cli/onos_config_log_get.md @@ -0,0 +1,32 @@ + + +## onos config log get + +Gets a logger attribute (e.g. level) + +### Options + +``` + -h, --help help for get +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-config:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos config log](onos_config_log.md) - logging api commands +* [onos config log get level](onos_config_log_get_level.md) - Gets a logger level + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_config_log_get_level.md b/onos-cli/docs/cli/onos_config_log_get_level.md new file mode 100644 index 0000000..2c9e817 --- /dev/null +++ b/onos-cli/docs/cli/onos_config_log_get_level.md @@ -0,0 +1,35 @@ + + +## onos config log get level + +Gets a logger level + +``` +onos config log get level logger_name [flags] +``` + +### Options + +``` + -h, --help help for level +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-config:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos config log get](onos_config_log_get.md) - Gets a logger attribute (e.g. level) + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_config_log_set.md b/onos-cli/docs/cli/onos_config_log_set.md new file mode 100644 index 0000000..de4bdf2 --- /dev/null +++ b/onos-cli/docs/cli/onos_config_log_set.md @@ -0,0 +1,32 @@ + + +## onos config log set + +Sets a logger attribute (e.g. level) + +### Options + +``` + -h, --help help for set +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-config:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos config log](onos_config_log.md) - logging api commands +* [onos config log set level](onos_config_log_set_level.md) - Sets a logger level + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_config_log_set_level.md b/onos-cli/docs/cli/onos_config_log_set_level.md new file mode 100644 index 0000000..f811937 --- /dev/null +++ b/onos-cli/docs/cli/onos_config_log_set_level.md @@ -0,0 +1,35 @@ + + +## onos config log set level + +Sets a logger level + +``` +onos config log set level logger_name [flags] +``` + +### Options + +``` + -h, --help help for level +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-config:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos config log set](onos_config_log_set.md) - Sets a logger attribute (e.g. level) + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_config_rollback.md b/onos-cli/docs/cli/onos_config_rollback.md new file mode 100644 index 0000000..e7c19d2 --- /dev/null +++ b/onos-cli/docs/cli/onos_config_rollback.md @@ -0,0 +1,35 @@ + + +## onos config rollback + +Rolls-back a transaction + +``` +onos config rollback [flags] +``` + +### Options + +``` + -h, --help help for rollback +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-config:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos config](onos_config.md) - ONOS configuration subsystem commands + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_config_watch.md b/onos-cli/docs/cli/onos_config_watch.md new file mode 100644 index 0000000..866d04d --- /dev/null +++ b/onos-cli/docs/cli/onos_config_watch.md @@ -0,0 +1,33 @@ + + +## onos config watch + +Watch for updates to a config resource type + +### Options + +``` + -h, --help help for watch +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-config:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos config](onos_config.md) - ONOS configuration subsystem commands +* [onos config watch configurations](onos_config_watch_configurations.md) - Watch target configurations +* [onos config watch transactions](onos_config_watch_transactions.md) - Watch configuration transaction changes + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_config_watch_configurations.md b/onos-cli/docs/cli/onos_config_watch_configurations.md new file mode 100644 index 0000000..979ea6b --- /dev/null +++ b/onos-cli/docs/cli/onos_config_watch_configurations.md @@ -0,0 +1,38 @@ + + +## onos config watch configurations + +Watch target configurations + +``` +onos config watch configurations [configurationID] [flags] +``` + +### Options + +``` + -h, --help help for configurations + --no-headers disables output headers + -r, --no-replay do not replay existing configurations + -v, --verbose whether to print the change with verbose output +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-config:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos config watch](onos_config_watch.md) - Watch for updates to a config resource type + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_config_watch_transactions.md b/onos-cli/docs/cli/onos_config_watch_transactions.md new file mode 100644 index 0000000..6d43267 --- /dev/null +++ b/onos-cli/docs/cli/onos_config_watch_transactions.md @@ -0,0 +1,37 @@ + + +## onos config watch transactions + +Watch configuration transaction changes + +``` +onos config watch transactions [transactionID] [flags] +``` + +### Options + +``` + -h, --help help for transactions + --no-headers disables output headers + -r, --no-replay do not replay existing transactions +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-config:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos config watch](onos_config_watch.md) - Watch for updates to a config resource type + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_discovery.md b/onos-cli/docs/cli/onos_discovery.md new file mode 100644 index 0000000..3e3d35c --- /dev/null +++ b/onos-cli/docs/cli/onos_discovery.md @@ -0,0 +1,29 @@ + + +## onos discovery + +Topology discovery subsystem commands + +### Options + +``` + --auth-header string Auth header in the form 'Bearer ' + -h, --help help for discovery + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "topo-discovery:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos](onos.md) - ONOS command line client +* [onos discovery add](onos_discovery_add.md) - Add new topology discovery seed entity +* [onos discovery config](onos_discovery_config.md) - Manage the CLI configuration +* [onos discovery log](onos_discovery_log.md) - logging api commands + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_discovery_add.md b/onos-cli/docs/cli/onos_discovery_add.md new file mode 100644 index 0000000..cf58a54 --- /dev/null +++ b/onos-cli/docs/cli/onos_discovery_add.md @@ -0,0 +1,35 @@ + + +## onos discovery add + +Add new topology discovery seed entity + +### Options + +``` + -h, --help help for add +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "topo-discovery:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos discovery](onos_discovery.md) - Topology discovery subsystem commands +* [onos discovery add ipu](onos_discovery_add_ipu.md) - Add a new server with an IPU to a rack +* [onos discovery add pod](onos_discovery_add_pod.md) - Add a new pod +* [onos discovery add rack](onos_discovery_add_rack.md) - Add a new rack to a pod +* [onos discovery add switch](onos_discovery_add_switch.md) - Add a new switch to a rack + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_discovery_add_ipu.md b/onos-cli/docs/cli/onos_discovery_add_ipu.md new file mode 100644 index 0000000..e57dad9 --- /dev/null +++ b/onos-cli/docs/cli/onos_discovery_add_ipu.md @@ -0,0 +1,47 @@ + + +## onos discovery add ipu + +Add a new server with an IPU to a rack + +``` +onos discovery add ipu [flags] +``` + +### Options + +``` + --chassis-config string chassis configuration ID + --gnmi-endpoint string gNMI endpoint as host:port + -h, --help help for ipu + --host-agent-endpoint string host agent endpoint as host:port + --link-agent-endpoint string link agent endpoint as host:port + --nat-agent-endpoint string NAT agent endpoint as host:port + --p4rt-device-id uint P4Runtime device ID as a number + --p4rt-endpoint string P4Runtime endpoint as host:port + --pipeline-config string pipeline configuration ID + --pod string ID of the parent pod + --rack string ID of the parent rack + --realm string optional realm label value + --role string optional role label value +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "topo-discovery:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos discovery add](onos_discovery_add.md) - Add new topology discovery seed entity + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_discovery_add_pod.md b/onos-cli/docs/cli/onos_discovery_add_pod.md new file mode 100644 index 0000000..f7ecd56 --- /dev/null +++ b/onos-cli/docs/cli/onos_discovery_add_pod.md @@ -0,0 +1,35 @@ + + +## onos discovery add pod + +Add a new pod + +``` +onos discovery add pod [flags] +``` + +### Options + +``` + -h, --help help for pod +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "topo-discovery:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos discovery add](onos_discovery_add.md) - Add new topology discovery seed entity + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_discovery_add_rack.md b/onos-cli/docs/cli/onos_discovery_add_rack.md new file mode 100644 index 0000000..084eb30 --- /dev/null +++ b/onos-cli/docs/cli/onos_discovery_add_rack.md @@ -0,0 +1,36 @@ + + +## onos discovery add rack + +Add a new rack to a pod + +``` +onos discovery add rack [flags] +``` + +### Options + +``` + -h, --help help for rack + --pod string ID of the parent pod +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "topo-discovery:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos discovery add](onos_discovery_add.md) - Add new topology discovery seed entity + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_discovery_add_switch.md b/onos-cli/docs/cli/onos_discovery_add_switch.md new file mode 100644 index 0000000..6812b7e --- /dev/null +++ b/onos-cli/docs/cli/onos_discovery_add_switch.md @@ -0,0 +1,47 @@ + + +## onos discovery add switch + +Add a new switch to a rack + +``` +onos discovery add switch [flags] +``` + +### Options + +``` + --chassis-config string chassis configuration ID + --gnmi-endpoint string gNMI endpoint as host:port + -h, --help help for switch + --host-agent-endpoint string host agent endpoint as host:port + --link-agent-endpoint string link agent endpoint as host:port + --nat-agent-endpoint string NAT agent endpoint as host:port + --p4rt-device-id uint P4Runtime device ID as a number + --p4rt-endpoint string P4Runtime endpoint as host:port + --pipeline-config string pipeline configuration ID + --pod string ID of the parent pod + --rack string ID of the parent rack + --realm string optional realm label value + --role string optional role label value +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "topo-discovery:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos discovery add](onos_discovery_add.md) - Add new topology discovery seed entity + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_discovery_config.md b/onos-cli/docs/cli/onos_discovery_config.md new file mode 100644 index 0000000..ad7812d --- /dev/null +++ b/onos-cli/docs/cli/onos_discovery_config.md @@ -0,0 +1,35 @@ + + +## onos discovery config + +Manage the CLI configuration + +### Options + +``` + -h, --help help for config +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "topo-discovery:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos discovery](onos_discovery.md) - Topology discovery subsystem commands +* [onos discovery config delete](onos_discovery_config_delete.md) - Delete CLI option value +* [onos discovery config get](onos_discovery_config_get.md) - Get CLI option value +* [onos discovery config init](onos_discovery_config_init.md) - Initialize the kpimon CLI configuration +* [onos discovery config set](onos_discovery_config_set.md) - Set CLI option value + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_discovery_config_delete.md b/onos-cli/docs/cli/onos_discovery_config_delete.md new file mode 100644 index 0000000..e546358 --- /dev/null +++ b/onos-cli/docs/cli/onos_discovery_config_delete.md @@ -0,0 +1,35 @@ + + +## onos discovery config delete + +Delete CLI option value + +``` +onos discovery config delete [flags] +``` + +### Options + +``` + -h, --help help for delete +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "topo-discovery:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos discovery config](onos_discovery_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_discovery_config_get.md b/onos-cli/docs/cli/onos_discovery_config_get.md new file mode 100644 index 0000000..2defdb1 --- /dev/null +++ b/onos-cli/docs/cli/onos_discovery_config_get.md @@ -0,0 +1,35 @@ + + +## onos discovery config get + +Get CLI option value + +``` +onos discovery config get [flags] +``` + +### Options + +``` + -h, --help help for get +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "topo-discovery:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos discovery config](onos_discovery_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_discovery_config_init.md b/onos-cli/docs/cli/onos_discovery_config_init.md new file mode 100644 index 0000000..737fd31 --- /dev/null +++ b/onos-cli/docs/cli/onos_discovery_config_init.md @@ -0,0 +1,35 @@ + + +## onos discovery config init + +Initialize the kpimon CLI configuration + +``` +onos discovery config init [flags] +``` + +### Options + +``` + -h, --help help for init +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "topo-discovery:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos discovery config](onos_discovery_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_discovery_config_set.md b/onos-cli/docs/cli/onos_discovery_config_set.md new file mode 100644 index 0000000..4777cde --- /dev/null +++ b/onos-cli/docs/cli/onos_discovery_config_set.md @@ -0,0 +1,35 @@ + + +## onos discovery config set + +Set CLI option value + +``` +onos discovery config set [flags] +``` + +### Options + +``` + -h, --help help for set +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "topo-discovery:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos discovery config](onos_discovery_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_discovery_log.md b/onos-cli/docs/cli/onos_discovery_log.md new file mode 100644 index 0000000..1398101 --- /dev/null +++ b/onos-cli/docs/cli/onos_discovery_log.md @@ -0,0 +1,33 @@ + + +## onos discovery log + +logging api commands + +### Options + +``` + -h, --help help for log +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "topo-discovery:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos discovery](onos_discovery.md) - Topology discovery subsystem commands +* [onos discovery log get](onos_discovery_log_get.md) - Gets a logger attribute (e.g. level) +* [onos discovery log set](onos_discovery_log_set.md) - Sets a logger attribute (e.g. level) + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_discovery_log_get.md b/onos-cli/docs/cli/onos_discovery_log_get.md new file mode 100644 index 0000000..3f0cb27 --- /dev/null +++ b/onos-cli/docs/cli/onos_discovery_log_get.md @@ -0,0 +1,32 @@ + + +## onos discovery log get + +Gets a logger attribute (e.g. level) + +### Options + +``` + -h, --help help for get +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "topo-discovery:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos discovery log](onos_discovery_log.md) - logging api commands +* [onos discovery log get level](onos_discovery_log_get_level.md) - Gets a logger level + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_discovery_log_get_level.md b/onos-cli/docs/cli/onos_discovery_log_get_level.md new file mode 100644 index 0000000..47dad23 --- /dev/null +++ b/onos-cli/docs/cli/onos_discovery_log_get_level.md @@ -0,0 +1,35 @@ + + +## onos discovery log get level + +Gets a logger level + +``` +onos discovery log get level logger_name [flags] +``` + +### Options + +``` + -h, --help help for level +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "topo-discovery:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos discovery log get](onos_discovery_log_get.md) - Gets a logger attribute (e.g. level) + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_discovery_log_set.md b/onos-cli/docs/cli/onos_discovery_log_set.md new file mode 100644 index 0000000..6c70bda --- /dev/null +++ b/onos-cli/docs/cli/onos_discovery_log_set.md @@ -0,0 +1,32 @@ + + +## onos discovery log set + +Sets a logger attribute (e.g. level) + +### Options + +``` + -h, --help help for set +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "topo-discovery:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos discovery log](onos_discovery_log.md) - logging api commands +* [onos discovery log set level](onos_discovery_log_set_level.md) - Sets a logger level + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_discovery_log_set_level.md b/onos-cli/docs/cli/onos_discovery_log_set_level.md new file mode 100644 index 0000000..aa39ddb --- /dev/null +++ b/onos-cli/docs/cli/onos_discovery_log_set_level.md @@ -0,0 +1,35 @@ + + +## onos discovery log set level + +Sets a logger level + +``` +onos discovery log set level logger_name [flags] +``` + +### Options + +``` + -h, --help help for level +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "topo-discovery:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos discovery log set](onos_discovery_log_set.md) - Sets a logger attribute (e.g. level) + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_e2t.md b/onos-cli/docs/cli/onos_e2t.md new file mode 100644 index 0000000..3f90a3f --- /dev/null +++ b/onos-cli/docs/cli/onos_e2t.md @@ -0,0 +1,30 @@ + + +## onos e2t + +ONOS e2t subsystem commands + +### Options + +``` + --auth-header string Auth header in the form 'Bearer ' + -h, --help help for e2t + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-e2t:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos](onos.md) - ONOS command line client +* [onos e2t config](onos_e2t_config.md) - Manage the CLI configuration +* [onos e2t get](onos_e2t_get.md) - Get command +* [onos e2t log](onos_e2t_log.md) - logging api commands +* [onos e2t watch](onos_e2t_watch.md) - Watch command + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_e2t_config.md b/onos-cli/docs/cli/onos_e2t_config.md new file mode 100644 index 0000000..83c905f --- /dev/null +++ b/onos-cli/docs/cli/onos_e2t_config.md @@ -0,0 +1,35 @@ + + +## onos e2t config + +Manage the CLI configuration + +### Options + +``` + -h, --help help for config +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-e2t:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos e2t](onos_e2t.md) - ONOS e2t subsystem commands +* [onos e2t config delete](onos_e2t_config_delete.md) - Delete CLI option value +* [onos e2t config get](onos_e2t_config_get.md) - Get CLI option value +* [onos e2t config init](onos_e2t_config_init.md) - Initialize the kpimon CLI configuration +* [onos e2t config set](onos_e2t_config_set.md) - Set CLI option value + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_e2t_config_delete.md b/onos-cli/docs/cli/onos_e2t_config_delete.md new file mode 100644 index 0000000..780adde --- /dev/null +++ b/onos-cli/docs/cli/onos_e2t_config_delete.md @@ -0,0 +1,35 @@ + + +## onos e2t config delete + +Delete CLI option value + +``` +onos e2t config delete [flags] +``` + +### Options + +``` + -h, --help help for delete +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-e2t:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos e2t config](onos_e2t_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_e2t_config_get.md b/onos-cli/docs/cli/onos_e2t_config_get.md new file mode 100644 index 0000000..ec0bde4 --- /dev/null +++ b/onos-cli/docs/cli/onos_e2t_config_get.md @@ -0,0 +1,35 @@ + + +## onos e2t config get + +Get CLI option value + +``` +onos e2t config get [flags] +``` + +### Options + +``` + -h, --help help for get +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-e2t:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos e2t config](onos_e2t_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_e2t_config_init.md b/onos-cli/docs/cli/onos_e2t_config_init.md new file mode 100644 index 0000000..0efafe1 --- /dev/null +++ b/onos-cli/docs/cli/onos_e2t_config_init.md @@ -0,0 +1,35 @@ + + +## onos e2t config init + +Initialize the kpimon CLI configuration + +``` +onos e2t config init [flags] +``` + +### Options + +``` + -h, --help help for init +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-e2t:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos e2t config](onos_e2t_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_e2t_config_set.md b/onos-cli/docs/cli/onos_e2t_config_set.md new file mode 100644 index 0000000..22f106c --- /dev/null +++ b/onos-cli/docs/cli/onos_e2t_config_set.md @@ -0,0 +1,35 @@ + + +## onos e2t config set + +Set CLI option value + +``` +onos e2t config set [flags] +``` + +### Options + +``` + -h, --help help for set +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-e2t:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos e2t config](onos_e2t_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_e2t_get.md b/onos-cli/docs/cli/onos_e2t_get.md new file mode 100644 index 0000000..7a39cf4 --- /dev/null +++ b/onos-cli/docs/cli/onos_e2t_get.md @@ -0,0 +1,33 @@ + + +## onos e2t get + +Get command + +### Options + +``` + -h, --help help for get +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-e2t:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos e2t](onos_e2t.md) - ONOS e2t subsystem commands +* [onos e2t get subscription](onos_e2t_get_subscription.md) - Get SB subscription +* [onos e2t get subscriptions](onos_e2t_get_subscriptions.md) - Get SB subscriptions + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_e2t_get_subscription.md b/onos-cli/docs/cli/onos_e2t_get_subscription.md new file mode 100644 index 0000000..7e771c0 --- /dev/null +++ b/onos-cli/docs/cli/onos_e2t_get_subscription.md @@ -0,0 +1,35 @@ + + +## onos e2t get subscription + +Get SB subscription + +``` +onos e2t get subscription [flags] +``` + +### Options + +``` + -h, --help help for subscription +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-e2t:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos e2t get](onos_e2t_get.md) - Get command + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_e2t_get_subscriptions.md b/onos-cli/docs/cli/onos_e2t_get_subscriptions.md new file mode 100644 index 0000000..2d54350 --- /dev/null +++ b/onos-cli/docs/cli/onos_e2t_get_subscriptions.md @@ -0,0 +1,36 @@ + + +## onos e2t get subscriptions + +Get SB subscriptions + +``` +onos e2t get subscriptions [flags] +``` + +### Options + +``` + -h, --help help for subscriptions + --no-headers disables output headers +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-e2t:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos e2t get](onos_e2t_get.md) - Get command + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_e2t_log.md b/onos-cli/docs/cli/onos_e2t_log.md new file mode 100644 index 0000000..124eada --- /dev/null +++ b/onos-cli/docs/cli/onos_e2t_log.md @@ -0,0 +1,33 @@ + + +## onos e2t log + +logging api commands + +### Options + +``` + -h, --help help for log +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-e2t:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos e2t](onos_e2t.md) - ONOS e2t subsystem commands +* [onos e2t log get](onos_e2t_log_get.md) - Gets a logger attribute (e.g. level) +* [onos e2t log set](onos_e2t_log_set.md) - Sets a logger attribute (e.g. level) + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_e2t_log_get.md b/onos-cli/docs/cli/onos_e2t_log_get.md new file mode 100644 index 0000000..bfcd4a2 --- /dev/null +++ b/onos-cli/docs/cli/onos_e2t_log_get.md @@ -0,0 +1,32 @@ + + +## onos e2t log get + +Gets a logger attribute (e.g. level) + +### Options + +``` + -h, --help help for get +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-e2t:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos e2t log](onos_e2t_log.md) - logging api commands +* [onos e2t log get level](onos_e2t_log_get_level.md) - Gets a logger level + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_e2t_log_get_level.md b/onos-cli/docs/cli/onos_e2t_log_get_level.md new file mode 100644 index 0000000..ac05c99 --- /dev/null +++ b/onos-cli/docs/cli/onos_e2t_log_get_level.md @@ -0,0 +1,35 @@ + + +## onos e2t log get level + +Gets a logger level + +``` +onos e2t log get level logger_name [flags] +``` + +### Options + +``` + -h, --help help for level +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-e2t:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos e2t log get](onos_e2t_log_get.md) - Gets a logger attribute (e.g. level) + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_e2t_log_set.md b/onos-cli/docs/cli/onos_e2t_log_set.md new file mode 100644 index 0000000..2296b59 --- /dev/null +++ b/onos-cli/docs/cli/onos_e2t_log_set.md @@ -0,0 +1,32 @@ + + +## onos e2t log set + +Sets a logger attribute (e.g. level) + +### Options + +``` + -h, --help help for set +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-e2t:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos e2t log](onos_e2t_log.md) - logging api commands +* [onos e2t log set level](onos_e2t_log_set_level.md) - Sets a logger level + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_e2t_log_set_level.md b/onos-cli/docs/cli/onos_e2t_log_set_level.md new file mode 100644 index 0000000..e4470c6 --- /dev/null +++ b/onos-cli/docs/cli/onos_e2t_log_set_level.md @@ -0,0 +1,35 @@ + + +## onos e2t log set level + +Sets a logger level + +``` +onos e2t log set level logger_name [flags] +``` + +### Options + +``` + -h, --help help for level +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-e2t:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos e2t log set](onos_e2t_log_set.md) - Sets a logger attribute (e.g. level) + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_e2t_watch.md b/onos-cli/docs/cli/onos_e2t_watch.md new file mode 100644 index 0000000..040c7b9 --- /dev/null +++ b/onos-cli/docs/cli/onos_e2t_watch.md @@ -0,0 +1,32 @@ + + +## onos e2t watch + +Watch command + +### Options + +``` + -h, --help help for watch +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-e2t:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos e2t](onos_e2t.md) - ONOS e2t subsystem commands +* [onos e2t watch subscriptions](onos_e2t_watch_subscriptions.md) - Watch SB subscriptions + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_e2t_watch_subscriptions.md b/onos-cli/docs/cli/onos_e2t_watch_subscriptions.md new file mode 100644 index 0000000..6602ad6 --- /dev/null +++ b/onos-cli/docs/cli/onos_e2t_watch_subscriptions.md @@ -0,0 +1,37 @@ + + +## onos e2t watch subscriptions + +Watch SB subscriptions + +``` +onos e2t watch subscriptions [flags] +``` + +### Options + +``` + -h, --help help for subscriptions + --no-headers disables output headers + --no-replay disables replay of existing state +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-e2t:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos e2t watch](onos_e2t_watch.md) - Watch command + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim.md b/onos-cli/docs/cli/onos_fabric-sim.md new file mode 100644 index 0000000..efcd3ee --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim.md @@ -0,0 +1,36 @@ + + +## onos fabric-sim + +ONOS fabric simulator commands + +### Options + +``` + --auth-header string Auth header in the form 'Bearer ' + -h, --help help for fabric-sim + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos](onos.md) - ONOS command line client +* [onos fabric-sim config](onos_fabric-sim_config.md) - Manage the CLI configuration +* [onos fabric-sim create](onos_fabric-sim_create.md) - Commands for creating simulated entities +* [onos fabric-sim delete](onos_fabric-sim_delete.md) - Commands for deleting simulated entities +* [onos fabric-sim disable](onos_fabric-sim_disable.md) - Commands for disabling simulated entities +* [onos fabric-sim emit](onos_fabric-sim_emit.md) - Emit ARP, DHCP requests, etc +* [onos fabric-sim enable](onos_fabric-sim_enable.md) - Commands for enabling simulated entities +* [onos fabric-sim get](onos_fabric-sim_get.md) - Commands for retrieving simulated entities related information +* [onos fabric-sim log](onos_fabric-sim_log.md) - logging api commands +* [onos fabric-sim start](onos_fabric-sim_start.md) - Commands for starting simulated entities +* [onos fabric-sim stop](onos_fabric-sim_stop.md) - Commands for stopping simulated entities + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_config.md b/onos-cli/docs/cli/onos_fabric-sim_config.md new file mode 100644 index 0000000..3ea03f7 --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_config.md @@ -0,0 +1,35 @@ + + +## onos fabric-sim config + +Manage the CLI configuration + +### Options + +``` + -h, --help help for config +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim](onos_fabric-sim.md) - ONOS fabric simulator commands +* [onos fabric-sim config delete](onos_fabric-sim_config_delete.md) - Delete CLI option value +* [onos fabric-sim config get](onos_fabric-sim_config_get.md) - Get CLI option value +* [onos fabric-sim config init](onos_fabric-sim_config_init.md) - Initialize the kpimon CLI configuration +* [onos fabric-sim config set](onos_fabric-sim_config_set.md) - Set CLI option value + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_config_delete.md b/onos-cli/docs/cli/onos_fabric-sim_config_delete.md new file mode 100644 index 0000000..be39d3f --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_config_delete.md @@ -0,0 +1,35 @@ + + +## onos fabric-sim config delete + +Delete CLI option value + +``` +onos fabric-sim config delete [flags] +``` + +### Options + +``` + -h, --help help for delete +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim config](onos_fabric-sim_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_config_get.md b/onos-cli/docs/cli/onos_fabric-sim_config_get.md new file mode 100644 index 0000000..bf7d534 --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_config_get.md @@ -0,0 +1,35 @@ + + +## onos fabric-sim config get + +Get CLI option value + +``` +onos fabric-sim config get [flags] +``` + +### Options + +``` + -h, --help help for get +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim config](onos_fabric-sim_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_config_init.md b/onos-cli/docs/cli/onos_fabric-sim_config_init.md new file mode 100644 index 0000000..39046a8 --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_config_init.md @@ -0,0 +1,35 @@ + + +## onos fabric-sim config init + +Initialize the kpimon CLI configuration + +``` +onos fabric-sim config init [flags] +``` + +### Options + +``` + -h, --help help for init +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim config](onos_fabric-sim_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_config_set.md b/onos-cli/docs/cli/onos_fabric-sim_config_set.md new file mode 100644 index 0000000..df13688 --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_config_set.md @@ -0,0 +1,35 @@ + + +## onos fabric-sim config set + +Set CLI option value + +``` +onos fabric-sim config set [flags] +``` + +### Options + +``` + -h, --help help for set +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim config](onos_fabric-sim_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_create.md b/onos-cli/docs/cli/onos_fabric-sim_create.md new file mode 100644 index 0000000..41ca460 --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_create.md @@ -0,0 +1,34 @@ + + +## onos fabric-sim create + +Commands for creating simulated entities + +### Options + +``` + -h, --help help for create +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim](onos_fabric-sim.md) - ONOS fabric simulator commands +* [onos fabric-sim create device](onos_fabric-sim_create_device.md) - Create a new simulated device +* [onos fabric-sim create host](onos_fabric-sim_create_host.md) - Create a new simulated host +* [onos fabric-sim create link](onos_fabric-sim_create_link.md) - Create a new simulated link + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_create_device.md b/onos-cli/docs/cli/onos_fabric-sim_create_device.md new file mode 100644 index 0000000..69127c4 --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_create_device.md @@ -0,0 +1,39 @@ + + +## onos fabric-sim create device + +Create a new simulated device + +``` +onos fabric-sim create device [field options] [flags] +``` + +### Options + +``` + --agent-port uint16 agent gRPC (TCP) port (default 20000) + -h, --help help for device + --port-count uint16 number of ports to create; default 32 (default 32) + --start-agent starts agent upon creation (default true) + --type string switch (default) or IPU (default "switch") +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim create](onos_fabric-sim_create.md) - Commands for creating simulated entities + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_create_host.md b/onos-cli/docs/cli/onos_fabric-sim_create_host.md new file mode 100644 index 0000000..98d6101 --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_create_host.md @@ -0,0 +1,35 @@ + + +## onos fabric-sim create host + +Create a new simulated host + +``` +onos fabric-sim create host [field options] [flags] +``` + +### Options + +``` + -h, --help help for host +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim create](onos_fabric-sim_create.md) - Commands for creating simulated entities + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_create_link.md b/onos-cli/docs/cli/onos_fabric-sim_create_link.md new file mode 100644 index 0000000..111fd79 --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_create_link.md @@ -0,0 +1,36 @@ + + +## onos fabric-sim create link + +Create a new simulated link + +``` +onos fabric-sim create link [field options] [flags] +``` + +### Options + +``` + --bidirectional create inverse link too (default true) + -h, --help help for link +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim create](onos_fabric-sim_create.md) - Commands for creating simulated entities + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_delete.md b/onos-cli/docs/cli/onos_fabric-sim_delete.md new file mode 100644 index 0000000..8e3e031 --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_delete.md @@ -0,0 +1,34 @@ + + +## onos fabric-sim delete + +Commands for deleting simulated entities + +### Options + +``` + -h, --help help for delete +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim](onos_fabric-sim.md) - ONOS fabric simulator commands +* [onos fabric-sim delete device](onos_fabric-sim_delete_device.md) - Delete a simulated device +* [onos fabric-sim delete host](onos_fabric-sim_delete_host.md) - Delete a simulated host +* [onos fabric-sim delete link](onos_fabric-sim_delete_link.md) - Delete a simulated link + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_delete_device.md b/onos-cli/docs/cli/onos_fabric-sim_delete_device.md new file mode 100644 index 0000000..3181bea --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_delete_device.md @@ -0,0 +1,35 @@ + + +## onos fabric-sim delete device + +Delete a simulated device + +``` +onos fabric-sim delete device [flags] +``` + +### Options + +``` + -h, --help help for device +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim delete](onos_fabric-sim_delete.md) - Commands for deleting simulated entities + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_delete_host.md b/onos-cli/docs/cli/onos_fabric-sim_delete_host.md new file mode 100644 index 0000000..f3e6ead --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_delete_host.md @@ -0,0 +1,35 @@ + + +## onos fabric-sim delete host + +Delete a simulated host + +``` +onos fabric-sim delete host [flags] +``` + +### Options + +``` + -h, --help help for host +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim delete](onos_fabric-sim_delete.md) - Commands for deleting simulated entities + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_delete_link.md b/onos-cli/docs/cli/onos_fabric-sim_delete_link.md new file mode 100644 index 0000000..1be6ed4 --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_delete_link.md @@ -0,0 +1,36 @@ + + +## onos fabric-sim delete link + +Delete a simulated link + +``` +onos fabric-sim delete link {|} [ [flags] +``` + +### Options + +``` + --bidirectional create inverse link too (default true) + -h, --help help for link +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim delete](onos_fabric-sim_delete.md) - Commands for deleting simulated entities + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_disable.md b/onos-cli/docs/cli/onos_fabric-sim_disable.md new file mode 100644 index 0000000..fdd30f0 --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_disable.md @@ -0,0 +1,32 @@ + + +## onos fabric-sim disable + +Commands for disabling simulated entities + +### Options + +``` + -h, --help help for disable +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim](onos_fabric-sim.md) - ONOS fabric simulator commands +* [onos fabric-sim disable port](onos_fabric-sim_disable_port.md) - Disable a simulated device port + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_disable_port.md b/onos-cli/docs/cli/onos_fabric-sim_disable_port.md new file mode 100644 index 0000000..39a69e0 --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_disable_port.md @@ -0,0 +1,36 @@ + + +## onos fabric-sim disable port + +Disable a simulated device port + +``` +onos fabric-sim disable port [flags] +``` + +### Options + +``` + --chaotic use chaotic stop mode + -h, --help help for port +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim disable](onos_fabric-sim_disable.md) - Commands for disabling simulated entities + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_emit.md b/onos-cli/docs/cli/onos_fabric-sim_emit.md new file mode 100644 index 0000000..37d7bbb --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_emit.md @@ -0,0 +1,32 @@ + + +## onos fabric-sim emit + +Emit ARP, DHCP requests, etc + +### Options + +``` + -h, --help help for emit +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim](onos_fabric-sim.md) - ONOS fabric simulator commands +* [onos fabric-sim emit arp](onos_fabric-sim_emit_arp.md) - Emit ARP request(s) via specified host NIC + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_emit_arp.md b/onos-cli/docs/cli/onos_fabric-sim_emit_arp.md new file mode 100644 index 0000000..963ffd8 --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_emit_arp.md @@ -0,0 +1,35 @@ + + +## onos fabric-sim emit arp + +Emit ARP request(s) via specified host NIC + +``` +onos fabric-sim emit arp ... [flags] +``` + +### Options + +``` + -h, --help help for arp +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim emit](onos_fabric-sim_emit.md) - Emit ARP, DHCP requests, etc + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_enable.md b/onos-cli/docs/cli/onos_fabric-sim_enable.md new file mode 100644 index 0000000..41acb09 --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_enable.md @@ -0,0 +1,32 @@ + + +## onos fabric-sim enable + +Commands for enabling simulated entities + +### Options + +``` + -h, --help help for enable +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim](onos_fabric-sim.md) - ONOS fabric simulator commands +* [onos fabric-sim enable port](onos_fabric-sim_enable_port.md) - Enable a simulated device port + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_enable_port.md b/onos-cli/docs/cli/onos_fabric-sim_enable_port.md new file mode 100644 index 0000000..086ff7e --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_enable_port.md @@ -0,0 +1,35 @@ + + +## onos fabric-sim enable port + +Enable a simulated device port + +``` +onos fabric-sim enable port [flags] +``` + +### Options + +``` + -h, --help help for port +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim enable](onos_fabric-sim_enable.md) - Commands for enabling simulated entities + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_get.md b/onos-cli/docs/cli/onos_fabric-sim_get.md new file mode 100644 index 0000000..582f75b --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_get.md @@ -0,0 +1,38 @@ + + +## onos fabric-sim get + +Commands for retrieving simulated entities related information + +### Options + +``` + -h, --help help for get +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim](onos_fabric-sim.md) - ONOS fabric simulator commands +* [onos fabric-sim get device](onos_fabric-sim_get_device.md) - Get a simulated device +* [onos fabric-sim get devices](onos_fabric-sim_get_devices.md) - Get all simulated devices +* [onos fabric-sim get host](onos_fabric-sim_get_host.md) - Get a simulated host +* [onos fabric-sim get hosts](onos_fabric-sim_get_hosts.md) - Get all simulated hosts +* [onos fabric-sim get link](onos_fabric-sim_get_link.md) - Get a simulated link +* [onos fabric-sim get links](onos_fabric-sim_get_links.md) - Get all simulated links +* [onos fabric-sim get stats](onos_fabric-sim_get_stats.md) - Get cumulative I/O stats + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_get_device.md b/onos-cli/docs/cli/onos_fabric-sim_get_device.md new file mode 100644 index 0000000..46cd205 --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_get_device.md @@ -0,0 +1,41 @@ + + +## onos fabric-sim get device + +Get a simulated device + +``` +onos fabric-sim get device [flags] +``` + +### Options + +``` + --connections enables listing of current connections + -h, --help help for device + --info enables listing of entity info + --no-empty-info disables listing of entities with size 0 + --no-headers disables output headers + --ports enables listing of ports + --stats enables listing of I/O stats +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim get](onos_fabric-sim_get.md) - Commands for retrieving simulated entities related information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_get_devices.md b/onos-cli/docs/cli/onos_fabric-sim_get_devices.md new file mode 100644 index 0000000..ae446f3 --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_get_devices.md @@ -0,0 +1,41 @@ + + +## onos fabric-sim get devices + +Get all simulated devices + +``` +onos fabric-sim get devices [flags] +``` + +### Options + +``` + --connections enables listing of current connections + -h, --help help for devices + --info enables listing of entity info + --no-empty-info disables listing of entities with size 0 + --no-headers disables output headers + --ports enables listing of ports + --stats enables listing of I/O stats +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim get](onos_fabric-sim_get.md) - Commands for retrieving simulated entities related information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_get_host.md b/onos-cli/docs/cli/onos_fabric-sim_get_host.md new file mode 100644 index 0000000..03d3afb --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_get_host.md @@ -0,0 +1,37 @@ + + +## onos fabric-sim get host + +Get a simulated host + +``` +onos fabric-sim get host [flags] +``` + +### Options + +``` + -h, --help help for host + --no-headers disables output headers + --no-nics disables listing of NICs +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim get](onos_fabric-sim_get.md) - Commands for retrieving simulated entities related information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_get_hosts.md b/onos-cli/docs/cli/onos_fabric-sim_get_hosts.md new file mode 100644 index 0000000..75b5907 --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_get_hosts.md @@ -0,0 +1,37 @@ + + +## onos fabric-sim get hosts + +Get all simulated hosts + +``` +onos fabric-sim get hosts [flags] +``` + +### Options + +``` + -h, --help help for hosts + --no-headers disables output headers + --no-nics disables listing of NICs +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim get](onos_fabric-sim_get.md) - Commands for retrieving simulated entities related information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_get_link.md b/onos-cli/docs/cli/onos_fabric-sim_get_link.md new file mode 100644 index 0000000..9e2dff8 --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_get_link.md @@ -0,0 +1,36 @@ + + +## onos fabric-sim get link + +Get a simulated link + +``` +onos fabric-sim get link [flags] +``` + +### Options + +``` + -h, --help help for link + --no-headers disables output headers +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim get](onos_fabric-sim_get.md) - Commands for retrieving simulated entities related information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_get_links.md b/onos-cli/docs/cli/onos_fabric-sim_get_links.md new file mode 100644 index 0000000..39a19d8 --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_get_links.md @@ -0,0 +1,36 @@ + + +## onos fabric-sim get links + +Get all simulated links + +``` +onos fabric-sim get links [flags] +``` + +### Options + +``` + -h, --help help for links + --no-headers disables output headers +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim get](onos_fabric-sim_get.md) - Commands for retrieving simulated entities related information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_get_stats.md b/onos-cli/docs/cli/onos_fabric-sim_get_stats.md new file mode 100644 index 0000000..5b3bc46 --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_get_stats.md @@ -0,0 +1,36 @@ + + +## onos fabric-sim get stats + +Get cumulative I/O stats + +``` +onos fabric-sim get stats [flags] +``` + +### Options + +``` + -h, --help help for stats + --no-headers disables output headers +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim get](onos_fabric-sim_get.md) - Commands for retrieving simulated entities related information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_log.md b/onos-cli/docs/cli/onos_fabric-sim_log.md new file mode 100644 index 0000000..c5b0abd --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_log.md @@ -0,0 +1,33 @@ + + +## onos fabric-sim log + +logging api commands + +### Options + +``` + -h, --help help for log +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim](onos_fabric-sim.md) - ONOS fabric simulator commands +* [onos fabric-sim log get](onos_fabric-sim_log_get.md) - Gets a logger attribute (e.g. level) +* [onos fabric-sim log set](onos_fabric-sim_log_set.md) - Sets a logger attribute (e.g. level) + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_log_get.md b/onos-cli/docs/cli/onos_fabric-sim_log_get.md new file mode 100644 index 0000000..47cba60 --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_log_get.md @@ -0,0 +1,32 @@ + + +## onos fabric-sim log get + +Gets a logger attribute (e.g. level) + +### Options + +``` + -h, --help help for get +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim log](onos_fabric-sim_log.md) - logging api commands +* [onos fabric-sim log get level](onos_fabric-sim_log_get_level.md) - Gets a logger level + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_log_get_level.md b/onos-cli/docs/cli/onos_fabric-sim_log_get_level.md new file mode 100644 index 0000000..9e8ac2f --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_log_get_level.md @@ -0,0 +1,35 @@ + + +## onos fabric-sim log get level + +Gets a logger level + +``` +onos fabric-sim log get level logger_name [flags] +``` + +### Options + +``` + -h, --help help for level +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim log get](onos_fabric-sim_log_get.md) - Gets a logger attribute (e.g. level) + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_log_set.md b/onos-cli/docs/cli/onos_fabric-sim_log_set.md new file mode 100644 index 0000000..33d40b7 --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_log_set.md @@ -0,0 +1,32 @@ + + +## onos fabric-sim log set + +Sets a logger attribute (e.g. level) + +### Options + +``` + -h, --help help for set +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim log](onos_fabric-sim_log.md) - logging api commands +* [onos fabric-sim log set level](onos_fabric-sim_log_set_level.md) - Sets a logger level + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_log_set_level.md b/onos-cli/docs/cli/onos_fabric-sim_log_set_level.md new file mode 100644 index 0000000..bbdc6bb --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_log_set_level.md @@ -0,0 +1,35 @@ + + +## onos fabric-sim log set level + +Sets a logger level + +``` +onos fabric-sim log set level logger_name [flags] +``` + +### Options + +``` + -h, --help help for level +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim log set](onos_fabric-sim_log_set.md) - Sets a logger attribute (e.g. level) + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_start.md b/onos-cli/docs/cli/onos_fabric-sim_start.md new file mode 100644 index 0000000..60906c1 --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_start.md @@ -0,0 +1,32 @@ + + +## onos fabric-sim start + +Commands for starting simulated entities + +### Options + +``` + -h, --help help for start +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim](onos_fabric-sim.md) - ONOS fabric simulator commands +* [onos fabric-sim start device](onos_fabric-sim_start_device.md) - Start a simulated device + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_start_device.md b/onos-cli/docs/cli/onos_fabric-sim_start_device.md new file mode 100644 index 0000000..7a1c912 --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_start_device.md @@ -0,0 +1,35 @@ + + +## onos fabric-sim start device + +Start a simulated device + +``` +onos fabric-sim start device [flags] +``` + +### Options + +``` + -h, --help help for device +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim start](onos_fabric-sim_start.md) - Commands for starting simulated entities + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_stop.md b/onos-cli/docs/cli/onos_fabric-sim_stop.md new file mode 100644 index 0000000..c9170f7 --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_stop.md @@ -0,0 +1,32 @@ + + +## onos fabric-sim stop + +Commands for stopping simulated entities + +### Options + +``` + -h, --help help for stop +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim](onos_fabric-sim.md) - ONOS fabric simulator commands +* [onos fabric-sim stop device](onos_fabric-sim_stop_device.md) - Stop a simulated device + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_fabric-sim_stop_device.md b/onos-cli/docs/cli/onos_fabric-sim_stop_device.md new file mode 100644 index 0000000..a07639e --- /dev/null +++ b/onos-cli/docs/cli/onos_fabric-sim_stop_device.md @@ -0,0 +1,36 @@ + + +## onos fabric-sim stop device + +Stop a simulated device + +``` +onos fabric-sim stop device [flags] +``` + +### Options + +``` + --chaotic use chaotic stop mode + -h, --help help for device +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "fabric-sim:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos fabric-sim stop](onos_fabric-sim_stop.md) - Commands for stopping simulated entities + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_kpimon.md b/onos-cli/docs/cli/onos_kpimon.md new file mode 100644 index 0000000..3fdeda5 --- /dev/null +++ b/onos-cli/docs/cli/onos_kpimon.md @@ -0,0 +1,30 @@ + + +## onos kpimon + +ONOS KPIMON subsystem commands + +### Options + +``` + --auth-header string Auth header in the form 'Bearer ' + -h, --help help for kpimon + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-kpimon:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos](onos.md) - ONOS command line client +* [onos kpimon list](onos_kpimon_list.md) - List KPIMON resources +* [onos kpimon log](onos_kpimon_log.md) - logging api commands +* [onos kpimon set](onos_kpimon_set.md) - Set KPIMON parameters +* [onos kpimon watch](onos_kpimon_watch.md) - Watch KPIMON resources + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_kpimon_list.md b/onos-cli/docs/cli/onos_kpimon_list.md new file mode 100644 index 0000000..ad03401 --- /dev/null +++ b/onos-cli/docs/cli/onos_kpimon_list.md @@ -0,0 +1,32 @@ + + +## onos kpimon list + +List KPIMON resources + +### Options + +``` + -h, --help help for list +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-kpimon:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos kpimon](onos_kpimon.md) - ONOS KPIMON subsystem commands +* [onos kpimon list metrics](onos_kpimon_list_metrics.md) - Get metrics + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_kpimon_list_metrics.md b/onos-cli/docs/cli/onos_kpimon_list_metrics.md new file mode 100644 index 0000000..c3216ba --- /dev/null +++ b/onos-cli/docs/cli/onos_kpimon_list_metrics.md @@ -0,0 +1,36 @@ + + +## onos kpimon list metrics + +Get metrics + +``` +onos kpimon list metrics [flags] +``` + +### Options + +``` + -h, --help help for metrics + --no-headers disables output headers +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-kpimon:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos kpimon list](onos_kpimon_list.md) - List KPIMON resources + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_kpimon_log.md b/onos-cli/docs/cli/onos_kpimon_log.md new file mode 100644 index 0000000..b92e4e4 --- /dev/null +++ b/onos-cli/docs/cli/onos_kpimon_log.md @@ -0,0 +1,33 @@ + + +## onos kpimon log + +logging api commands + +### Options + +``` + -h, --help help for log +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-kpimon:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos kpimon](onos_kpimon.md) - ONOS KPIMON subsystem commands +* [onos kpimon log get](onos_kpimon_log_get.md) - Gets a logger attribute (e.g. level) +* [onos kpimon log set](onos_kpimon_log_set.md) - Sets a logger attribute (e.g. level) + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_kpimon_log_get.md b/onos-cli/docs/cli/onos_kpimon_log_get.md new file mode 100644 index 0000000..678e5c6 --- /dev/null +++ b/onos-cli/docs/cli/onos_kpimon_log_get.md @@ -0,0 +1,32 @@ + + +## onos kpimon log get + +Gets a logger attribute (e.g. level) + +### Options + +``` + -h, --help help for get +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-kpimon:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos kpimon log](onos_kpimon_log.md) - logging api commands +* [onos kpimon log get level](onos_kpimon_log_get_level.md) - Gets a logger level + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_kpimon_log_get_level.md b/onos-cli/docs/cli/onos_kpimon_log_get_level.md new file mode 100644 index 0000000..690f7c7 --- /dev/null +++ b/onos-cli/docs/cli/onos_kpimon_log_get_level.md @@ -0,0 +1,35 @@ + + +## onos kpimon log get level + +Gets a logger level + +``` +onos kpimon log get level logger_name [flags] +``` + +### Options + +``` + -h, --help help for level +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-kpimon:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos kpimon log get](onos_kpimon_log_get.md) - Gets a logger attribute (e.g. level) + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_kpimon_log_set.md b/onos-cli/docs/cli/onos_kpimon_log_set.md new file mode 100644 index 0000000..b7c97da --- /dev/null +++ b/onos-cli/docs/cli/onos_kpimon_log_set.md @@ -0,0 +1,32 @@ + + +## onos kpimon log set + +Sets a logger attribute (e.g. level) + +### Options + +``` + -h, --help help for set +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-kpimon:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos kpimon log](onos_kpimon_log.md) - logging api commands +* [onos kpimon log set level](onos_kpimon_log_set_level.md) - Sets a logger level + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_kpimon_log_set_level.md b/onos-cli/docs/cli/onos_kpimon_log_set_level.md new file mode 100644 index 0000000..48ab010 --- /dev/null +++ b/onos-cli/docs/cli/onos_kpimon_log_set_level.md @@ -0,0 +1,35 @@ + + +## onos kpimon log set level + +Sets a logger level + +``` +onos kpimon log set level logger_name [flags] +``` + +### Options + +``` + -h, --help help for level +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-kpimon:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos kpimon log set](onos_kpimon_log_set.md) - Sets a logger attribute (e.g. level) + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_kpimon_set.md b/onos-cli/docs/cli/onos_kpimon_set.md new file mode 100644 index 0000000..9df19f1 --- /dev/null +++ b/onos-cli/docs/cli/onos_kpimon_set.md @@ -0,0 +1,32 @@ + + +## onos kpimon set + +Set KPIMON parameters + +### Options + +``` + -h, --help help for set +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-kpimon:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos kpimon](onos_kpimon.md) - ONOS KPIMON subsystem commands +* [onos kpimon set report-interval](onos_kpimon_set_report-interval.md) - Set report period interval + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_kpimon_set_report-interval.md b/onos-cli/docs/cli/onos_kpimon_set_report-interval.md new file mode 100644 index 0000000..1002b10 --- /dev/null +++ b/onos-cli/docs/cli/onos_kpimon_set_report-interval.md @@ -0,0 +1,36 @@ + + +## onos kpimon set report-interval + +Set report period interval + +``` +onos kpimon set report-interval [flags] +``` + +### Options + +``` + -h, --help help for report-interval + --no-headers disables output headers +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-kpimon:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos kpimon set](onos_kpimon_set.md) - Set KPIMON parameters + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_kpimon_watch.md b/onos-cli/docs/cli/onos_kpimon_watch.md new file mode 100644 index 0000000..7cca7fc --- /dev/null +++ b/onos-cli/docs/cli/onos_kpimon_watch.md @@ -0,0 +1,32 @@ + + +## onos kpimon watch + +Watch KPIMON resources + +### Options + +``` + -h, --help help for watch +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-kpimon:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos kpimon](onos_kpimon.md) - ONOS KPIMON subsystem commands +* [onos kpimon watch metrics](onos_kpimon_watch_metrics.md) - Watch metrics + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_kpimon_watch_metrics.md b/onos-cli/docs/cli/onos_kpimon_watch_metrics.md new file mode 100644 index 0000000..919f6fe --- /dev/null +++ b/onos-cli/docs/cli/onos_kpimon_watch_metrics.md @@ -0,0 +1,36 @@ + + +## onos kpimon watch metrics + +Watch metrics + +``` +onos kpimon watch metrics [flags] +``` + +### Options + +``` + -h, --help help for metrics + --no-headers disables output headers +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-kpimon:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos kpimon watch](onos_kpimon_watch.md) - Watch KPIMON resources + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_mho.md b/onos-cli/docs/cli/onos_mho.md new file mode 100644 index 0000000..fd75719 --- /dev/null +++ b/onos-cli/docs/cli/onos_mho.md @@ -0,0 +1,28 @@ + + +## onos mho + +ONOS MHO subsystem commands + +### Options + +``` + --auth-header string Auth header in the form 'Bearer ' + -h, --help help for mho + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-mho:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos](onos.md) - ONOS command line client +* [onos mho get](onos_mho_get.md) - Get UE, Cell info +* [onos mho log](onos_mho_log.md) - logging api commands + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_mho_get.md b/onos-cli/docs/cli/onos_mho_get.md new file mode 100644 index 0000000..dbb76ea --- /dev/null +++ b/onos-cli/docs/cli/onos_mho_get.md @@ -0,0 +1,33 @@ + + +## onos mho get + +Get UE, Cell info + +### Options + +``` + -h, --help help for get +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-mho:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos mho](onos_mho.md) - ONOS MHO subsystem commands +* [onos mho get cells](onos_mho_get_cells.md) - Get cells +* [onos mho get ues](onos_mho_get_ues.md) - Get ues + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_mho_get_cells.md b/onos-cli/docs/cli/onos_mho_get_cells.md new file mode 100644 index 0000000..d49cdcd --- /dev/null +++ b/onos-cli/docs/cli/onos_mho_get_cells.md @@ -0,0 +1,36 @@ + + +## onos mho get cells + +Get cells + +``` +onos mho get cells [flags] +``` + +### Options + +``` + -h, --help help for cells + --no-headers disables output headers +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-mho:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos mho get](onos_mho_get.md) - Get UE, Cell info + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_mho_get_ues.md b/onos-cli/docs/cli/onos_mho_get_ues.md new file mode 100644 index 0000000..f738dd6 --- /dev/null +++ b/onos-cli/docs/cli/onos_mho_get_ues.md @@ -0,0 +1,36 @@ + + +## onos mho get ues + +Get ues + +``` +onos mho get ues [flags] +``` + +### Options + +``` + -h, --help help for ues + --no-headers disables output headers +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-mho:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos mho get](onos_mho_get.md) - Get UE, Cell info + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_mho_log.md b/onos-cli/docs/cli/onos_mho_log.md new file mode 100644 index 0000000..2115a0e --- /dev/null +++ b/onos-cli/docs/cli/onos_mho_log.md @@ -0,0 +1,33 @@ + + +## onos mho log + +logging api commands + +### Options + +``` + -h, --help help for log +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-mho:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos mho](onos_mho.md) - ONOS MHO subsystem commands +* [onos mho log get](onos_mho_log_get.md) - Gets a logger attribute (e.g. level) +* [onos mho log set](onos_mho_log_set.md) - Sets a logger attribute (e.g. level) + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_mho_log_get.md b/onos-cli/docs/cli/onos_mho_log_get.md new file mode 100644 index 0000000..2e51217 --- /dev/null +++ b/onos-cli/docs/cli/onos_mho_log_get.md @@ -0,0 +1,32 @@ + + +## onos mho log get + +Gets a logger attribute (e.g. level) + +### Options + +``` + -h, --help help for get +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-mho:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos mho log](onos_mho_log.md) - logging api commands +* [onos mho log get level](onos_mho_log_get_level.md) - Gets a logger level + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_mho_log_get_level.md b/onos-cli/docs/cli/onos_mho_log_get_level.md new file mode 100644 index 0000000..065c121 --- /dev/null +++ b/onos-cli/docs/cli/onos_mho_log_get_level.md @@ -0,0 +1,35 @@ + + +## onos mho log get level + +Gets a logger level + +``` +onos mho log get level logger_name [flags] +``` + +### Options + +``` + -h, --help help for level +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-mho:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos mho log get](onos_mho_log_get.md) - Gets a logger attribute (e.g. level) + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_mho_log_set.md b/onos-cli/docs/cli/onos_mho_log_set.md new file mode 100644 index 0000000..af03d98 --- /dev/null +++ b/onos-cli/docs/cli/onos_mho_log_set.md @@ -0,0 +1,32 @@ + + +## onos mho log set + +Sets a logger attribute (e.g. level) + +### Options + +``` + -h, --help help for set +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-mho:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos mho log](onos_mho_log.md) - logging api commands +* [onos mho log set level](onos_mho_log_set_level.md) - Sets a logger level + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_mho_log_set_level.md b/onos-cli/docs/cli/onos_mho_log_set_level.md new file mode 100644 index 0000000..e6d1c97 --- /dev/null +++ b/onos-cli/docs/cli/onos_mho_log_set_level.md @@ -0,0 +1,35 @@ + + +## onos mho log set level + +Sets a logger level + +``` +onos mho log set level logger_name [flags] +``` + +### Options + +``` + -h, --help help for level +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-mho:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos mho log set](onos_mho_log_set.md) - Sets a logger attribute (e.g. level) + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_mlb.md b/onos-cli/docs/cli/onos_mlb.md new file mode 100644 index 0000000..105282e --- /dev/null +++ b/onos-cli/docs/cli/onos_mlb.md @@ -0,0 +1,28 @@ + + +## onos mlb + +ONOS MLB subsystem commands + +### Options + +``` + --auth-header string Auth header in the form 'Bearer ' + -h, --help help for mlb + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-mlb:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos](onos.md) - ONOS command line client +* [onos mlb list](onos_mlb_list.md) - List MLB resources +* [onos mlb set](onos_mlb_set.md) - Set MLB resources + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_mlb_list.md b/onos-cli/docs/cli/onos_mlb_list.md new file mode 100644 index 0000000..5d23f37 --- /dev/null +++ b/onos-cli/docs/cli/onos_mlb_list.md @@ -0,0 +1,33 @@ + + +## onos mlb list + +List MLB resources + +### Options + +``` + -h, --help help for list +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-mlb:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos mlb](onos_mlb.md) - ONOS MLB subsystem commands +* [onos mlb list ocns](onos_mlb_list_ocns.md) - Get all Ocn for all cells +* [onos mlb list parameters](onos_mlb_list_parameters.md) - Get all MLB parameters + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_mlb_list_ocns.md b/onos-cli/docs/cli/onos_mlb_list_ocns.md new file mode 100644 index 0000000..7fdd314 --- /dev/null +++ b/onos-cli/docs/cli/onos_mlb_list_ocns.md @@ -0,0 +1,36 @@ + + +## onos mlb list ocns + +Get all Ocn for all cells + +``` +onos mlb list ocns [flags] +``` + +### Options + +``` + -h, --help help for ocns + --no-headers disable output headers +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-mlb:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos mlb list](onos_mlb_list.md) - List MLB resources + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_mlb_list_parameters.md b/onos-cli/docs/cli/onos_mlb_list_parameters.md new file mode 100644 index 0000000..7c093cb --- /dev/null +++ b/onos-cli/docs/cli/onos_mlb_list_parameters.md @@ -0,0 +1,36 @@ + + +## onos mlb list parameters + +Get all MLB parameters + +``` +onos mlb list parameters [flags] +``` + +### Options + +``` + -h, --help help for parameters + --no-headers disable output headers +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-mlb:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos mlb list](onos_mlb_list.md) - List MLB resources + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_mlb_set.md b/onos-cli/docs/cli/onos_mlb_set.md new file mode 100644 index 0000000..83c5549 --- /dev/null +++ b/onos-cli/docs/cli/onos_mlb_set.md @@ -0,0 +1,32 @@ + + +## onos mlb set + +Set MLB resources + +### Options + +``` + -h, --help help for set +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-mlb:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos mlb](onos_mlb.md) - ONOS MLB subsystem commands +* [onos mlb set parameters](onos_mlb_set_parameters.md) - Set MLB parameters + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_mlb_set_parameters.md b/onos-cli/docs/cli/onos_mlb_set_parameters.md new file mode 100644 index 0000000..e495ac0 --- /dev/null +++ b/onos-cli/docs/cli/onos_mlb_set_parameters.md @@ -0,0 +1,39 @@ + + +## onos mlb set parameters + +Set MLB parameters + +``` +onos mlb set parameters [flags] +``` + +### Options + +``` + --delta-ocn int32 Delta Ocn per step (default 3) + -h, --help help for parameters + --interval int32 MLB interval (default 10) + --overload-threshold int32 Overload threshold [%] (default 100) + --target-threshold int32 Target threshold [%] (default 100) +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-mlb:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos mlb set](onos_mlb_set.md) - Set MLB resources + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_pci.md b/onos-cli/docs/cli/onos_pci.md new file mode 100644 index 0000000..e9df697 --- /dev/null +++ b/onos-cli/docs/cli/onos_pci.md @@ -0,0 +1,27 @@ + + +## onos pci + +ONOS PCI subsystem commands + +### Options + +``` + --auth-header string Auth header in the form 'Bearer ' + -h, --help help for pci + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-pci:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos](onos.md) - ONOS command line client +* [onos pci get](onos_pci_get.md) - Get PCI resources + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_pci_get.md b/onos-cli/docs/cli/onos_pci_get.md new file mode 100644 index 0000000..e1a1ef3 --- /dev/null +++ b/onos-cli/docs/cli/onos_pci_get.md @@ -0,0 +1,35 @@ + + +## onos pci get + +Get PCI resources + +### Options + +``` + -h, --help help for get +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-pci:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos pci](onos_pci.md) - ONOS PCI subsystem commands +* [onos pci get cell](onos_pci_get_cell.md) - Get a single cell's info +* [onos pci get cells](onos_pci_get_cells.md) - Get all cells +* [onos pci get conflicts](onos_pci_get_conflicts.md) - Get the conflicting cells for a specific cell or all cells if not specified +* [onos pci get resolved](onos_pci_get_resolved.md) - Get the number of resolutions and most recent resolution for all cells + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_pci_get_cell.md b/onos-cli/docs/cli/onos_pci_get_cell.md new file mode 100644 index 0000000..cb6b8af --- /dev/null +++ b/onos-cli/docs/cli/onos_pci_get_cell.md @@ -0,0 +1,35 @@ + + +## onos pci get cell + +Get a single cell's info + +``` +onos pci get cell [flags] +``` + +### Options + +``` + -h, --help help for cell +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-pci:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos pci get](onos_pci_get.md) - Get PCI resources + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_pci_get_cells.md b/onos-cli/docs/cli/onos_pci_get_cells.md new file mode 100644 index 0000000..c425cc1 --- /dev/null +++ b/onos-cli/docs/cli/onos_pci_get_cells.md @@ -0,0 +1,36 @@ + + +## onos pci get cells + +Get all cells + +``` +onos pci get cells [flags] +``` + +### Options + +``` + -h, --help help for cells + --no-headers disables output headers +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-pci:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos pci get](onos_pci_get.md) - Get PCI resources + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_pci_get_conflicts.md b/onos-cli/docs/cli/onos_pci_get_conflicts.md new file mode 100644 index 0000000..d53a7ec --- /dev/null +++ b/onos-cli/docs/cli/onos_pci_get_conflicts.md @@ -0,0 +1,36 @@ + + +## onos pci get conflicts + +Get the conflicting cells for a specific cell or all cells if not specified + +``` +onos pci get conflicts [flags] +``` + +### Options + +``` + -h, --help help for conflicts + --no-headers disables output headers +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-pci:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos pci get](onos_pci_get.md) - Get PCI resources + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_pci_get_resolved.md b/onos-cli/docs/cli/onos_pci_get_resolved.md new file mode 100644 index 0000000..f986ba8 --- /dev/null +++ b/onos-cli/docs/cli/onos_pci_get_resolved.md @@ -0,0 +1,36 @@ + + +## onos pci get resolved + +Get the number of resolutions and most recent resolution for all cells + +``` +onos pci get resolved [flags] +``` + +### Options + +``` + -h, --help help for resolved + --no-headers disables output headers +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-pci:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos pci get](onos_pci_get.md) - Get PCI resources + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_perf.md b/onos-cli/docs/cli/onos_perf.md new file mode 100644 index 0000000..c71f894 --- /dev/null +++ b/onos-cli/docs/cli/onos_perf.md @@ -0,0 +1,30 @@ + + +## onos perf + +simple gRPC performance measurement client + +### Options + +``` + --auth-header string Auth header in the form 'Bearer ' + -h, --help help for perf + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-perf:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos](onos.md) - ONOS command line client +* [onos perf config](onos_perf_config.md) - Manage the CLI configuration +* [onos perf log](onos_perf_log.md) - logging api commands +* [onos perf ping](onos_perf_ping.md) - Ping request/response +* [onos perf stream](onos_perf_stream.md) - Ping request/response over a stream + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_perf_config.md b/onos-cli/docs/cli/onos_perf_config.md new file mode 100644 index 0000000..fb54e4c --- /dev/null +++ b/onos-cli/docs/cli/onos_perf_config.md @@ -0,0 +1,35 @@ + + +## onos perf config + +Manage the CLI configuration + +### Options + +``` + -h, --help help for config +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-perf:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos perf](onos_perf.md) - simple gRPC performance measurement client +* [onos perf config delete](onos_perf_config_delete.md) - Delete CLI option value +* [onos perf config get](onos_perf_config_get.md) - Get CLI option value +* [onos perf config init](onos_perf_config_init.md) - Initialize the kpimon CLI configuration +* [onos perf config set](onos_perf_config_set.md) - Set CLI option value + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_perf_config_delete.md b/onos-cli/docs/cli/onos_perf_config_delete.md new file mode 100644 index 0000000..02095a5 --- /dev/null +++ b/onos-cli/docs/cli/onos_perf_config_delete.md @@ -0,0 +1,35 @@ + + +## onos perf config delete + +Delete CLI option value + +``` +onos perf config delete [flags] +``` + +### Options + +``` + -h, --help help for delete +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-perf:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos perf config](onos_perf_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_perf_config_get.md b/onos-cli/docs/cli/onos_perf_config_get.md new file mode 100644 index 0000000..e132cea --- /dev/null +++ b/onos-cli/docs/cli/onos_perf_config_get.md @@ -0,0 +1,35 @@ + + +## onos perf config get + +Get CLI option value + +``` +onos perf config get [flags] +``` + +### Options + +``` + -h, --help help for get +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-perf:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos perf config](onos_perf_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_perf_config_init.md b/onos-cli/docs/cli/onos_perf_config_init.md new file mode 100644 index 0000000..de1d0c9 --- /dev/null +++ b/onos-cli/docs/cli/onos_perf_config_init.md @@ -0,0 +1,35 @@ + + +## onos perf config init + +Initialize the kpimon CLI configuration + +``` +onos perf config init [flags] +``` + +### Options + +``` + -h, --help help for init +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-perf:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos perf config](onos_perf_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_perf_config_set.md b/onos-cli/docs/cli/onos_perf_config_set.md new file mode 100644 index 0000000..8b66296 --- /dev/null +++ b/onos-cli/docs/cli/onos_perf_config_set.md @@ -0,0 +1,35 @@ + + +## onos perf config set + +Set CLI option value + +``` +onos perf config set [flags] +``` + +### Options + +``` + -h, --help help for set +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-perf:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos perf config](onos_perf_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_perf_log.md b/onos-cli/docs/cli/onos_perf_log.md new file mode 100644 index 0000000..2846007 --- /dev/null +++ b/onos-cli/docs/cli/onos_perf_log.md @@ -0,0 +1,33 @@ + + +## onos perf log + +logging api commands + +### Options + +``` + -h, --help help for log +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-perf:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos perf](onos_perf.md) - simple gRPC performance measurement client +* [onos perf log get](onos_perf_log_get.md) - Gets a logger attribute (e.g. level) +* [onos perf log set](onos_perf_log_set.md) - Sets a logger attribute (e.g. level) + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_perf_log_get.md b/onos-cli/docs/cli/onos_perf_log_get.md new file mode 100644 index 0000000..39202de --- /dev/null +++ b/onos-cli/docs/cli/onos_perf_log_get.md @@ -0,0 +1,32 @@ + + +## onos perf log get + +Gets a logger attribute (e.g. level) + +### Options + +``` + -h, --help help for get +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-perf:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos perf log](onos_perf_log.md) - logging api commands +* [onos perf log get level](onos_perf_log_get_level.md) - Gets a logger level + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_perf_log_get_level.md b/onos-cli/docs/cli/onos_perf_log_get_level.md new file mode 100644 index 0000000..1e06bc5 --- /dev/null +++ b/onos-cli/docs/cli/onos_perf_log_get_level.md @@ -0,0 +1,35 @@ + + +## onos perf log get level + +Gets a logger level + +``` +onos perf log get level logger_name [flags] +``` + +### Options + +``` + -h, --help help for level +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-perf:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos perf log get](onos_perf_log_get.md) - Gets a logger attribute (e.g. level) + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_perf_log_set.md b/onos-cli/docs/cli/onos_perf_log_set.md new file mode 100644 index 0000000..b103dac --- /dev/null +++ b/onos-cli/docs/cli/onos_perf_log_set.md @@ -0,0 +1,32 @@ + + +## onos perf log set + +Sets a logger attribute (e.g. level) + +### Options + +``` + -h, --help help for set +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-perf:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos perf log](onos_perf_log.md) - logging api commands +* [onos perf log set level](onos_perf_log_set_level.md) - Sets a logger level + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_perf_log_set_level.md b/onos-cli/docs/cli/onos_perf_log_set_level.md new file mode 100644 index 0000000..25b3b26 --- /dev/null +++ b/onos-cli/docs/cli/onos_perf_log_set_level.md @@ -0,0 +1,35 @@ + + +## onos perf log set level + +Sets a logger level + +``` +onos perf log set level logger_name [flags] +``` + +### Options + +``` + -h, --help help for level +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-perf:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos perf log set](onos_perf_log_set.md) - Sets a logger attribute (e.g. level) + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_perf_ping.md b/onos-cli/docs/cli/onos_perf_ping.md new file mode 100644 index 0000000..3f72f2b --- /dev/null +++ b/onos-cli/docs/cli/onos_perf_ping.md @@ -0,0 +1,37 @@ + + +## onos perf ping + +Ping request/response + +``` +onos perf ping [flags] +``` + +### Options + +``` + -c, --count int number of ping invocations (default 1000) + -h, --help help for ping + -s, --size uint32 size of the payload (default 4096) +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-perf:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos perf](onos_perf.md) - simple gRPC performance measurement client + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_perf_stream.md b/onos-cli/docs/cli/onos_perf_stream.md new file mode 100644 index 0000000..24f3621 --- /dev/null +++ b/onos-cli/docs/cli/onos_perf_stream.md @@ -0,0 +1,38 @@ + + +## onos perf stream + +Ping request/response over a stream + +``` +onos perf stream [flags] +``` + +### Options + +``` + -c, --count int number of ping invocations (default 1000) + -h, --help help for stream + -r, --responses uint32 number of responses for each request (default 1) + -s, --size uint32 size of the payload (default 4096) +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-perf:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos perf](onos_perf.md) - simple gRPC performance measurement client + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_provisioner.md b/onos-cli/docs/cli/onos_provisioner.md new file mode 100644 index 0000000..47b4042 --- /dev/null +++ b/onos-cli/docs/cli/onos_provisioner.md @@ -0,0 +1,31 @@ + + +## onos provisioner + +Device provisioner subsystem commands + +### Options + +``` + --auth-header string Auth header in the form 'Bearer ' + -h, --help help for provisioner + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "device-provisioner:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos](onos.md) - ONOS command line client +* [onos provisioner add](onos_provisioner_add.md) - Add new device configuration +* [onos provisioner config](onos_provisioner_config.md) - Manage the CLI configuration +* [onos provisioner delete](onos_provisioner_delete.md) - Delete device configuration +* [onos provisioner get](onos_provisioner_get.md) - Get device configurations +* [onos provisioner log](onos_provisioner_log.md) - logging api commands + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_provisioner_add.md b/onos-cli/docs/cli/onos_provisioner_add.md new file mode 100644 index 0000000..fce552a --- /dev/null +++ b/onos-cli/docs/cli/onos_provisioner_add.md @@ -0,0 +1,37 @@ + + +## onos provisioner add + +Add new device configuration + +``` +onos provisioner add config [args] [flags] +``` + +### Options + +``` + --artifacts string artifacts tar file (- for stdin) (default "-") + -h, --help help for add + --kind string kind of configuration: pipeline or chassis (default "pipeline") +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "device-provisioner:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos provisioner](onos_provisioner.md) - Device provisioner subsystem commands + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_provisioner_config.md b/onos-cli/docs/cli/onos_provisioner_config.md new file mode 100644 index 0000000..41df376 --- /dev/null +++ b/onos-cli/docs/cli/onos_provisioner_config.md @@ -0,0 +1,35 @@ + + +## onos provisioner config + +Manage the CLI configuration + +### Options + +``` + -h, --help help for config +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "device-provisioner:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos provisioner](onos_provisioner.md) - Device provisioner subsystem commands +* [onos provisioner config delete](onos_provisioner_config_delete.md) - Delete CLI option value +* [onos provisioner config get](onos_provisioner_config_get.md) - Get CLI option value +* [onos provisioner config init](onos_provisioner_config_init.md) - Initialize the kpimon CLI configuration +* [onos provisioner config set](onos_provisioner_config_set.md) - Set CLI option value + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_provisioner_config_delete.md b/onos-cli/docs/cli/onos_provisioner_config_delete.md new file mode 100644 index 0000000..a8bce9c --- /dev/null +++ b/onos-cli/docs/cli/onos_provisioner_config_delete.md @@ -0,0 +1,35 @@ + + +## onos provisioner config delete + +Delete CLI option value + +``` +onos provisioner config delete [flags] +``` + +### Options + +``` + -h, --help help for delete +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "device-provisioner:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos provisioner config](onos_provisioner_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_provisioner_config_get.md b/onos-cli/docs/cli/onos_provisioner_config_get.md new file mode 100644 index 0000000..b4f9b29 --- /dev/null +++ b/onos-cli/docs/cli/onos_provisioner_config_get.md @@ -0,0 +1,35 @@ + + +## onos provisioner config get + +Get CLI option value + +``` +onos provisioner config get [flags] +``` + +### Options + +``` + -h, --help help for get +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "device-provisioner:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos provisioner config](onos_provisioner_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_provisioner_config_init.md b/onos-cli/docs/cli/onos_provisioner_config_init.md new file mode 100644 index 0000000..c53c85c --- /dev/null +++ b/onos-cli/docs/cli/onos_provisioner_config_init.md @@ -0,0 +1,35 @@ + + +## onos provisioner config init + +Initialize the kpimon CLI configuration + +``` +onos provisioner config init [flags] +``` + +### Options + +``` + -h, --help help for init +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "device-provisioner:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos provisioner config](onos_provisioner_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_provisioner_config_set.md b/onos-cli/docs/cli/onos_provisioner_config_set.md new file mode 100644 index 0000000..f6308f3 --- /dev/null +++ b/onos-cli/docs/cli/onos_provisioner_config_set.md @@ -0,0 +1,35 @@ + + +## onos provisioner config set + +Set CLI option value + +``` +onos provisioner config set [flags] +``` + +### Options + +``` + -h, --help help for set +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "device-provisioner:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos provisioner config](onos_provisioner_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_provisioner_delete.md b/onos-cli/docs/cli/onos_provisioner_delete.md new file mode 100644 index 0000000..8b5aff9 --- /dev/null +++ b/onos-cli/docs/cli/onos_provisioner_delete.md @@ -0,0 +1,35 @@ + + +## onos provisioner delete + +Delete device configuration + +``` +onos provisioner delete config [args] [flags] +``` + +### Options + +``` + -h, --help help for delete +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "device-provisioner:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos provisioner](onos_provisioner.md) - Device provisioner subsystem commands + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_provisioner_get.md b/onos-cli/docs/cli/onos_provisioner_get.md new file mode 100644 index 0000000..e4f5f87 --- /dev/null +++ b/onos-cli/docs/cli/onos_provisioner_get.md @@ -0,0 +1,38 @@ + + +## onos provisioner get + +Get device configurations + +``` +onos provisioner get config {config-id} [args] [flags] +``` + +### Options + +``` + --artifacts string artifacts tar file; - for stdin + -h, --help help for get + --kind string kind of configuration: pipeline or chassis (default "pipeline") + --no-headers disables output headers +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "device-provisioner:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos provisioner](onos_provisioner.md) - Device provisioner subsystem commands + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_provisioner_log.md b/onos-cli/docs/cli/onos_provisioner_log.md new file mode 100644 index 0000000..8ecefa7 --- /dev/null +++ b/onos-cli/docs/cli/onos_provisioner_log.md @@ -0,0 +1,33 @@ + + +## onos provisioner log + +logging api commands + +### Options + +``` + -h, --help help for log +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "device-provisioner:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos provisioner](onos_provisioner.md) - Device provisioner subsystem commands +* [onos provisioner log get](onos_provisioner_log_get.md) - Gets a logger attribute (e.g. level) +* [onos provisioner log set](onos_provisioner_log_set.md) - Sets a logger attribute (e.g. level) + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_provisioner_log_get.md b/onos-cli/docs/cli/onos_provisioner_log_get.md new file mode 100644 index 0000000..e967022 --- /dev/null +++ b/onos-cli/docs/cli/onos_provisioner_log_get.md @@ -0,0 +1,32 @@ + + +## onos provisioner log get + +Gets a logger attribute (e.g. level) + +### Options + +``` + -h, --help help for get +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "device-provisioner:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos provisioner log](onos_provisioner_log.md) - logging api commands +* [onos provisioner log get level](onos_provisioner_log_get_level.md) - Gets a logger level + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_provisioner_log_get_level.md b/onos-cli/docs/cli/onos_provisioner_log_get_level.md new file mode 100644 index 0000000..d349949 --- /dev/null +++ b/onos-cli/docs/cli/onos_provisioner_log_get_level.md @@ -0,0 +1,35 @@ + + +## onos provisioner log get level + +Gets a logger level + +``` +onos provisioner log get level logger_name [flags] +``` + +### Options + +``` + -h, --help help for level +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "device-provisioner:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos provisioner log get](onos_provisioner_log_get.md) - Gets a logger attribute (e.g. level) + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_provisioner_log_set.md b/onos-cli/docs/cli/onos_provisioner_log_set.md new file mode 100644 index 0000000..b1929ec --- /dev/null +++ b/onos-cli/docs/cli/onos_provisioner_log_set.md @@ -0,0 +1,32 @@ + + +## onos provisioner log set + +Sets a logger attribute (e.g. level) + +### Options + +``` + -h, --help help for set +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "device-provisioner:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos provisioner log](onos_provisioner_log.md) - logging api commands +* [onos provisioner log set level](onos_provisioner_log_set_level.md) - Sets a logger level + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_provisioner_log_set_level.md b/onos-cli/docs/cli/onos_provisioner_log_set_level.md new file mode 100644 index 0000000..b8f3d83 --- /dev/null +++ b/onos-cli/docs/cli/onos_provisioner_log_set_level.md @@ -0,0 +1,35 @@ + + +## onos provisioner log set level + +Sets a logger level + +``` +onos provisioner log set level logger_name [flags] +``` + +### Options + +``` + -h, --help help for level +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "device-provisioner:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos provisioner log set](onos_provisioner_log_set.md) - Sets a logger attribute (e.g. level) + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim.md b/onos-cli/docs/cli/onos_ransim.md new file mode 100644 index 0000000..e976968 --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim.md @@ -0,0 +1,36 @@ + + +## onos ransim + +ONOS RAN simulator commands + +### Options + +``` + --auth-header string Auth header in the form 'Bearer ' + -h, --help help for ransim + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos](onos.md) - ONOS command line client +* [onos ransim clear](onos_ransim_clear.md) - Clear the simulated nodes, cells and metrics +* [onos ransim config](onos_ransim_config.md) - Manage the CLI configuration +* [onos ransim create](onos_ransim_create.md) - Commands for creating simulated entities +* [onos ransim delete](onos_ransim_delete.md) - Commands for deleting simulated entities +* [onos ransim get](onos_ransim_get.md) - Commands for retrieving RAN simulator model and other information +* [onos ransim load](onos_ransim_load.md) - Load model and/or metric data +* [onos ransim log](onos_ransim_log.md) - logging api commands +* [onos ransim set](onos_ransim_set.md) - Commands for setting RAN simulator model metrics and other information +* [onos ransim start](onos_ransim_start.md) - Start E2 node agent +* [onos ransim stop](onos_ransim_stop.md) - Stop E2 node agent + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_clear.md b/onos-cli/docs/cli/onos_ransim_clear.md new file mode 100644 index 0000000..88a2fb8 --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_clear.md @@ -0,0 +1,35 @@ + + +## onos ransim clear + +Clear the simulated nodes, cells and metrics + +``` +onos ransim clear [flags] +``` + +### Options + +``` + -h, --help help for clear +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim](onos_ransim.md) - ONOS RAN simulator commands + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_config.md b/onos-cli/docs/cli/onos_ransim_config.md new file mode 100644 index 0000000..4ba623a --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_config.md @@ -0,0 +1,35 @@ + + +## onos ransim config + +Manage the CLI configuration + +### Options + +``` + -h, --help help for config +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim](onos_ransim.md) - ONOS RAN simulator commands +* [onos ransim config delete](onos_ransim_config_delete.md) - Delete CLI option value +* [onos ransim config get](onos_ransim_config_get.md) - Get CLI option value +* [onos ransim config init](onos_ransim_config_init.md) - Initialize the kpimon CLI configuration +* [onos ransim config set](onos_ransim_config_set.md) - Set CLI option value + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_config_delete.md b/onos-cli/docs/cli/onos_ransim_config_delete.md new file mode 100644 index 0000000..01d448e --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_config_delete.md @@ -0,0 +1,35 @@ + + +## onos ransim config delete + +Delete CLI option value + +``` +onos ransim config delete [flags] +``` + +### Options + +``` + -h, --help help for delete +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim config](onos_ransim_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_config_get.md b/onos-cli/docs/cli/onos_ransim_config_get.md new file mode 100644 index 0000000..a5c30ee --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_config_get.md @@ -0,0 +1,35 @@ + + +## onos ransim config get + +Get CLI option value + +``` +onos ransim config get [flags] +``` + +### Options + +``` + -h, --help help for get +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim config](onos_ransim_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_config_init.md b/onos-cli/docs/cli/onos_ransim_config_init.md new file mode 100644 index 0000000..c306a55 --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_config_init.md @@ -0,0 +1,35 @@ + + +## onos ransim config init + +Initialize the kpimon CLI configuration + +``` +onos ransim config init [flags] +``` + +### Options + +``` + -h, --help help for init +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim config](onos_ransim_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_config_set.md b/onos-cli/docs/cli/onos_ransim_config_set.md new file mode 100644 index 0000000..1c30b24 --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_config_set.md @@ -0,0 +1,35 @@ + + +## onos ransim config set + +Set CLI option value + +``` +onos ransim config set [flags] +``` + +### Options + +``` + -h, --help help for set +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim config](onos_ransim_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_create.md b/onos-cli/docs/cli/onos_ransim_create.md new file mode 100644 index 0000000..41e6018 --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_create.md @@ -0,0 +1,34 @@ + + +## onos ransim create + +Commands for creating simulated entities + +### Options + +``` + -h, --help help for create +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim](onos_ransim.md) - ONOS RAN simulator commands +* [onos ransim create cell](onos_ransim_create_cell.md) - Create a cell +* [onos ransim create node](onos_ransim_create_node.md) - Create an E2 node +* [onos ransim create route](onos_ransim_create_route.md) - Create an E2 node + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_create_cell.md b/onos-cli/docs/cli/onos_ransim_create_cell.md new file mode 100644 index 0000000..3e79874 --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_create_cell.md @@ -0,0 +1,48 @@ + + +## onos ransim create cell + +Create a cell + +``` +onos ransim create cell [field options] [flags] +``` + +### Options + +``` + --a3-celloffset int32 A3 cell Offset + --a3-freqoffset int32 A3 frequency offset + --a3-hyst int32 A3 hysteresis + --a3-offset int32 A3 offset + --a3-ttt int32 Time-To-Trigger + --arc int32 angle width of the coverage arc (default 120) + --azimuth int32 azimuth of the coverage arc + --color string color label (default "blue") + -h, --help help for cell + --lat float geo location latitude (default 11) + --lng float geo location longitude (default 11) + --max-ues uint32 maximum number of UEs connected (default 10000) + --neighbors uints neighbor cell NCGIs (default []) + --tx-power float transmit power (dB) (default 11) +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim create](onos_ransim_create.md) - Commands for creating simulated entities + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_create_node.md b/onos-cli/docs/cli/onos_ransim_create_node.md new file mode 100644 index 0000000..3275324 --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_create_node.md @@ -0,0 +1,38 @@ + + +## onos ransim create node + +Create an E2 node + +``` +onos ransim create node [field options] [flags] +``` + +### Options + +``` + --cells uints cell NCGIs (default []) + --controllers strings E2T controller + -h, --help help for node + --service-models strings supported service models +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim create](onos_ransim_create.md) - Commands for creating simulated entities + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_create_route.md b/onos-cli/docs/cli/onos_ransim_create_route.md new file mode 100644 index 0000000..1809905 --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_create_route.md @@ -0,0 +1,40 @@ + + +## onos ransim create route + +Create an E2 node + +``` +onos ransim create route [field options] [flags] +``` + +### Options + +``` + --color string route color (default "gray") + -h, --help help for route + --lat float64Slice waypoint latitude (default []) + --lng float64Slice waypoint longitude (default []) + --speed-avg float average speed in km/h (default 80) + --speed-stddev float speed std. deviation in km/h +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim create](onos_ransim_create.md) - Commands for creating simulated entities + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_delete.md b/onos-cli/docs/cli/onos_ransim_delete.md new file mode 100644 index 0000000..9effd47 --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_delete.md @@ -0,0 +1,36 @@ + + +## onos ransim delete + +Commands for deleting simulated entities + +### Options + +``` + -h, --help help for delete +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim](onos_ransim.md) - ONOS RAN simulator commands +* [onos ransim delete cell](onos_ransim_delete_cell.md) - Delete a cell +* [onos ransim delete metric](onos_ransim_delete_metric.md) - Delete a metric +* [onos ransim delete metrics](onos_ransim_delete_metrics.md) - Delete all metrics of an entity +* [onos ransim delete node](onos_ransim_delete_node.md) - Delete an E2 node +* [onos ransim delete route](onos_ransim_delete_route.md) - Delete a UE route + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_delete_cell.md b/onos-cli/docs/cli/onos_ransim_delete_cell.md new file mode 100644 index 0000000..8c32596 --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_delete_cell.md @@ -0,0 +1,35 @@ + + +## onos ransim delete cell + +Delete a cell + +``` +onos ransim delete cell [flags] +``` + +### Options + +``` + -h, --help help for cell +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim delete](onos_ransim_delete.md) - Commands for deleting simulated entities + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_delete_metric.md b/onos-cli/docs/cli/onos_ransim_delete_metric.md new file mode 100644 index 0000000..9c3b651 --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_delete_metric.md @@ -0,0 +1,35 @@ + + +## onos ransim delete metric + +Delete a metric + +``` +onos ransim delete metric [flags] +``` + +### Options + +``` + -h, --help help for metric +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim delete](onos_ransim_delete.md) - Commands for deleting simulated entities + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_delete_metrics.md b/onos-cli/docs/cli/onos_ransim_delete_metrics.md new file mode 100644 index 0000000..3127b96 --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_delete_metrics.md @@ -0,0 +1,35 @@ + + +## onos ransim delete metrics + +Delete all metrics of an entity + +``` +onos ransim delete metrics [flags] +``` + +### Options + +``` + -h, --help help for metrics +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim delete](onos_ransim_delete.md) - Commands for deleting simulated entities + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_delete_node.md b/onos-cli/docs/cli/onos_ransim_delete_node.md new file mode 100644 index 0000000..52d02f3 --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_delete_node.md @@ -0,0 +1,35 @@ + + +## onos ransim delete node + +Delete an E2 node + +``` +onos ransim delete node [flags] +``` + +### Options + +``` + -h, --help help for node +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim delete](onos_ransim_delete.md) - Commands for deleting simulated entities + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_delete_route.md b/onos-cli/docs/cli/onos_ransim_delete_route.md new file mode 100644 index 0000000..7a5cb2e --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_delete_route.md @@ -0,0 +1,35 @@ + + +## onos ransim delete route + +Delete a UE route + +``` +onos ransim delete route [flags] +``` + +### Options + +``` + -h, --help help for route +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim delete](onos_ransim_delete.md) - Commands for deleting simulated entities + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_get.md b/onos-cli/docs/cli/onos_ransim_get.md new file mode 100644 index 0000000..695bc63 --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_get.md @@ -0,0 +1,44 @@ + + +## onos ransim get + +Commands for retrieving RAN simulator model and other information + +### Options + +``` + -h, --help help for get +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim](onos_ransim.md) - ONOS RAN simulator commands +* [onos ransim get cell](onos_ransim_get_cell.md) - Get a cell +* [onos ransim get cells](onos_ransim_get_cells.md) - Get all cells +* [onos ransim get layout](onos_ransim_get_layout.md) - Get Layout +* [onos ransim get metric](onos_ransim_get_metric.md) - Get metric value +* [onos ransim get metrics](onos_ransim_get_metrics.md) - Get all metrics of an entity +* [onos ransim get node](onos_ransim_get_node.md) - Get an E2 node +* [onos ransim get nodes](onos_ransim_get_nodes.md) - Get all E2 nodes +* [onos ransim get plmnid](onos_ransim_get_plmnid.md) - Get the PLMNID +* [onos ransim get route](onos_ransim_get_route.md) - Get a UE route +* [onos ransim get routes](onos_ransim_get_routes.md) - Get all UE routes +* [onos ransim get ue](onos_ransim_get_ue.md) - Get UE +* [onos ransim get ueCount](onos_ransim_get_ueCount.md) - Get UE count +* [onos ransim get ues](onos_ransim_get_ues.md) - Get UEs + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_get_cell.md b/onos-cli/docs/cli/onos_ransim_get_cell.md new file mode 100644 index 0000000..ce9a34d --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_get_cell.md @@ -0,0 +1,35 @@ + + +## onos ransim get cell + +Get a cell + +``` +onos ransim get cell [flags] +``` + +### Options + +``` + -h, --help help for cell +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim get](onos_ransim_get.md) - Commands for retrieving RAN simulator model and other information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_get_cells.md b/onos-cli/docs/cli/onos_ransim_get_cells.md new file mode 100644 index 0000000..903fea6 --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_get_cells.md @@ -0,0 +1,37 @@ + + +## onos ransim get cells + +Get all cells + +``` +onos ransim get cells [flags] +``` + +### Options + +``` + -h, --help help for cells + --no-headers disables output headers + -w, --watch watch cell changes +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim get](onos_ransim_get.md) - Commands for retrieving RAN simulator model and other information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_get_layout.md b/onos-cli/docs/cli/onos_ransim_get_layout.md new file mode 100644 index 0000000..a702636 --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_get_layout.md @@ -0,0 +1,35 @@ + + +## onos ransim get layout + +Get Layout + +``` +onos ransim get layout [flags] +``` + +### Options + +``` + -h, --help help for layout +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim get](onos_ransim_get.md) - Commands for retrieving RAN simulator model and other information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_get_metric.md b/onos-cli/docs/cli/onos_ransim_get_metric.md new file mode 100644 index 0000000..e00948a --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_get_metric.md @@ -0,0 +1,36 @@ + + +## onos ransim get metric + +Get metric value + +``` +onos ransim get metric [flags] +``` + +### Options + +``` + -h, --help help for metric + -v, --verbose verbose output +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim get](onos_ransim_get.md) - Commands for retrieving RAN simulator model and other information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_get_metrics.md b/onos-cli/docs/cli/onos_ransim_get_metrics.md new file mode 100644 index 0000000..1ead3f2 --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_get_metrics.md @@ -0,0 +1,37 @@ + + +## onos ransim get metrics + +Get all metrics of an entity + +``` +onos ransim get metrics [] [flags] +``` + +### Options + +``` + -h, --help help for metrics + -v, --verbose verbose output + -w, --watch watch metrics changes +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim get](onos_ransim_get.md) - Commands for retrieving RAN simulator model and other information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_get_node.md b/onos-cli/docs/cli/onos_ransim_get_node.md new file mode 100644 index 0000000..abfed02 --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_get_node.md @@ -0,0 +1,35 @@ + + +## onos ransim get node + +Get an E2 node + +``` +onos ransim get node [flags] +``` + +### Options + +``` + -h, --help help for node +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim get](onos_ransim_get.md) - Commands for retrieving RAN simulator model and other information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_get_nodes.md b/onos-cli/docs/cli/onos_ransim_get_nodes.md new file mode 100644 index 0000000..85368cd --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_get_nodes.md @@ -0,0 +1,37 @@ + + +## onos ransim get nodes + +Get all E2 nodes + +``` +onos ransim get nodes [flags] +``` + +### Options + +``` + -h, --help help for nodes + --no-headers disables output headers + -w, --watch watch node changes +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim get](onos_ransim_get.md) - Commands for retrieving RAN simulator model and other information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_get_plmnid.md b/onos-cli/docs/cli/onos_ransim_get_plmnid.md new file mode 100644 index 0000000..2de95e4 --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_get_plmnid.md @@ -0,0 +1,36 @@ + + +## onos ransim get plmnid + +Get the PLMNID + +``` +onos ransim get plmnid [flags] +``` + +### Options + +``` + -h, --help help for plmnid + -x, --hex show PLMNID in hex +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim get](onos_ransim_get.md) - Commands for retrieving RAN simulator model and other information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_get_route.md b/onos-cli/docs/cli/onos_ransim_get_route.md new file mode 100644 index 0000000..c08f112 --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_get_route.md @@ -0,0 +1,35 @@ + + +## onos ransim get route + +Get a UE route + +``` +onos ransim get route [flags] +``` + +### Options + +``` + -h, --help help for route +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim get](onos_ransim_get.md) - Commands for retrieving RAN simulator model and other information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_get_routes.md b/onos-cli/docs/cli/onos_ransim_get_routes.md new file mode 100644 index 0000000..90c7444 --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_get_routes.md @@ -0,0 +1,37 @@ + + +## onos ransim get routes + +Get all UE routes + +``` +onos ransim get routes [flags] +``` + +### Options + +``` + -h, --help help for routes + --no-headers disables output headers + -w, --watch watch route changes +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim get](onos_ransim_get.md) - Commands for retrieving RAN simulator model and other information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_get_ue.md b/onos-cli/docs/cli/onos_ransim_get_ue.md new file mode 100644 index 0000000..d9619c4 --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_get_ue.md @@ -0,0 +1,35 @@ + + +## onos ransim get ue + +Get UE + +``` +onos ransim get ue [flags] +``` + +### Options + +``` + -h, --help help for ue +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim get](onos_ransim_get.md) - Commands for retrieving RAN simulator model and other information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_get_ueCount.md b/onos-cli/docs/cli/onos_ransim_get_ueCount.md new file mode 100644 index 0000000..cf80b13 --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_get_ueCount.md @@ -0,0 +1,35 @@ + + +## onos ransim get ueCount + +Get UE count + +``` +onos ransim get ueCount [flags] +``` + +### Options + +``` + -h, --help help for ueCount +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim get](onos_ransim_get.md) - Commands for retrieving RAN simulator model and other information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_get_ues.md b/onos-cli/docs/cli/onos_ransim_get_ues.md new file mode 100644 index 0000000..f81a004 --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_get_ues.md @@ -0,0 +1,37 @@ + + +## onos ransim get ues + +Get UEs + +``` +onos ransim get ues [flags] +``` + +### Options + +``` + -h, --help help for ues + --no-headers disables output headers + -w, --watch watch ue changes +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim get](onos_ransim_get.md) - Commands for retrieving RAN simulator model and other information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_load.md b/onos-cli/docs/cli/onos_ransim_load.md new file mode 100644 index 0000000..e6010cc --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_load.md @@ -0,0 +1,37 @@ + + +## onos ransim load + +Load model and/or metric data + +``` +onos ransim load [flags] +``` + +### Options + +``` + --data strings data set file paths + --data-name strings data set names + -h, --help help for load +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim](onos_ransim.md) - ONOS RAN simulator commands + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_log.md b/onos-cli/docs/cli/onos_ransim_log.md new file mode 100644 index 0000000..7d69b08 --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_log.md @@ -0,0 +1,33 @@ + + +## onos ransim log + +logging api commands + +### Options + +``` + -h, --help help for log +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim](onos_ransim.md) - ONOS RAN simulator commands +* [onos ransim log get](onos_ransim_log_get.md) - Gets a logger attribute (e.g. level) +* [onos ransim log set](onos_ransim_log_set.md) - Sets a logger attribute (e.g. level) + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_log_get.md b/onos-cli/docs/cli/onos_ransim_log_get.md new file mode 100644 index 0000000..38c4cfa --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_log_get.md @@ -0,0 +1,32 @@ + + +## onos ransim log get + +Gets a logger attribute (e.g. level) + +### Options + +``` + -h, --help help for get +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim log](onos_ransim_log.md) - logging api commands +* [onos ransim log get level](onos_ransim_log_get_level.md) - Gets a logger level + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_log_get_level.md b/onos-cli/docs/cli/onos_ransim_log_get_level.md new file mode 100644 index 0000000..ef93c3f --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_log_get_level.md @@ -0,0 +1,35 @@ + + +## onos ransim log get level + +Gets a logger level + +``` +onos ransim log get level logger_name [flags] +``` + +### Options + +``` + -h, --help help for level +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim log get](onos_ransim_log_get.md) - Gets a logger attribute (e.g. level) + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_log_set.md b/onos-cli/docs/cli/onos_ransim_log_set.md new file mode 100644 index 0000000..0efd74d --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_log_set.md @@ -0,0 +1,32 @@ + + +## onos ransim log set + +Sets a logger attribute (e.g. level) + +### Options + +``` + -h, --help help for set +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim log](onos_ransim_log.md) - logging api commands +* [onos ransim log set level](onos_ransim_log_set_level.md) - Sets a logger level + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_log_set_level.md b/onos-cli/docs/cli/onos_ransim_log_set_level.md new file mode 100644 index 0000000..e0d8f0b --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_log_set_level.md @@ -0,0 +1,35 @@ + + +## onos ransim log set level + +Sets a logger level + +``` +onos ransim log set level logger_name [flags] +``` + +### Options + +``` + -h, --help help for level +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim log set](onos_ransim_log_set.md) - Sets a logger attribute (e.g. level) + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_set.md b/onos-cli/docs/cli/onos_ransim_set.md new file mode 100644 index 0000000..f595bf7 --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_set.md @@ -0,0 +1,36 @@ + + +## onos ransim set + +Commands for setting RAN simulator model metrics and other information + +### Options + +``` + -h, --help help for set +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim](onos_ransim.md) - ONOS RAN simulator commands +* [onos ransim set cell](onos_ransim_set_cell.md) - Update a cell +* [onos ransim set metric](onos_ransim_set_metric.md) - Set metric value +* [onos ransim set node](onos_ransim_set_node.md) - Update an E2 node +* [onos ransim set ue](onos_ransim_set_ue.md) - Update a UE NCGI assignment and/or geo location +* [onos ransim set ueCount](onos_ransim_set_ueCount.md) - Set UE count + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_set_cell.md b/onos-cli/docs/cli/onos_ransim_set_cell.md new file mode 100644 index 0000000..9ab2fdc --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_set_cell.md @@ -0,0 +1,49 @@ + + +## onos ransim set cell + +Update a cell + +``` +onos ransim set cell [field options] [flags] +``` + +### Options + +``` + --a3-celloffset int32 A3 cell Offset + --a3-freqoffset int32 A3 frequency offset + --a3-hyst int32 A3 hysteresis + --a3-offset int32 A3 offset + --a3-ttt int32 Time-To-Trigger + --arc int32 angle width of the coverage arc (default 120) + --azimuth int32 azimuth of the coverage arc + --color string color label (default "blue") + -h, --help help for cell + --lat float geo location latitude (default 11) + --lng float geo location longitude (default 11) + --max-ues uint32 maximum number of UEs connected (default 10000) + --neighbors uints neighbor cell NCGIs (default []) + --pci uint32 new PCI value + --tx-power float transmit power (dB) (default 11) +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim set](onos_ransim_set.md) - Commands for setting RAN simulator model metrics and other information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_set_metric.md b/onos-cli/docs/cli/onos_ransim_set_metric.md new file mode 100644 index 0000000..8672f58 --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_set_metric.md @@ -0,0 +1,36 @@ + + +## onos ransim set metric + +Set metric value + +``` +onos ransim set metric [flags] +``` + +### Options + +``` + -h, --help help for metric + --type string value type: string|intX|uintX|floatX|bool; where X={8|16|32|64} (default "string") +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim set](onos_ransim_set.md) - Commands for setting RAN simulator model metrics and other information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_set_node.md b/onos-cli/docs/cli/onos_ransim_set_node.md new file mode 100644 index 0000000..92ec94c --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_set_node.md @@ -0,0 +1,38 @@ + + +## onos ransim set node + +Update an E2 node + +``` +onos ransim set node [field options] [flags] +``` + +### Options + +``` + --cells uints cell NCGIs (default []) + --controllers strings E2T controller + -h, --help help for node + --service-models strings supported service models +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim set](onos_ransim_set.md) - Commands for setting RAN simulator model metrics and other information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_set_ue.md b/onos-cli/docs/cli/onos_ransim_set_ue.md new file mode 100644 index 0000000..c960a07 --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_set_ue.md @@ -0,0 +1,39 @@ + + +## onos ransim set ue + +Update a UE NCGI assignment and/or geo location + +``` +onos ransim set ue [field options] [flags] +``` + +### Options + +``` + --heading uint32 new heading + -h, --help help for ue + --lat float new coordinate latitude + --lng float new coordinate longitude + --ncgi uint serving cell NCGI +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim set](onos_ransim_set.md) - Commands for setting RAN simulator model metrics and other information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_set_ueCount.md b/onos-cli/docs/cli/onos_ransim_set_ueCount.md new file mode 100644 index 0000000..8557671 --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_set_ueCount.md @@ -0,0 +1,35 @@ + + +## onos ransim set ueCount + +Set UE count + +``` +onos ransim set ueCount [flags] +``` + +### Options + +``` + -h, --help help for ueCount +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim set](onos_ransim_set.md) - Commands for setting RAN simulator model metrics and other information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_start.md b/onos-cli/docs/cli/onos_ransim_start.md new file mode 100644 index 0000000..d492e94 --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_start.md @@ -0,0 +1,35 @@ + + +## onos ransim start + +Start E2 node agent + +``` +onos ransim start [flags] +``` + +### Options + +``` + -h, --help help for start +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim](onos_ransim.md) - ONOS RAN simulator commands + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_ransim_stop.md b/onos-cli/docs/cli/onos_ransim_stop.md new file mode 100644 index 0000000..094fdaa --- /dev/null +++ b/onos-cli/docs/cli/onos_ransim_stop.md @@ -0,0 +1,35 @@ + + +## onos ransim stop + +Stop E2 node agent + +``` +onos ransim stop [flags] +``` + +### Options + +``` + -h, --help help for stop +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos ransim](onos_ransim.md) - ONOS RAN simulator commands + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_rsm.md b/onos-cli/docs/cli/onos_rsm.md new file mode 100644 index 0000000..c1c0cd1 --- /dev/null +++ b/onos-cli/docs/cli/onos_rsm.md @@ -0,0 +1,30 @@ + + +## onos rsm + +ONOS RSM subsystem commands + +### Options + +``` + --auth-header string Auth header in the form 'Bearer ' + -h, --help help for rsm + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-rsm:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos](onos.md) - ONOS command line client +* [onos rsm create](onos_rsm_create.md) - Create RSM resources +* [onos rsm delete](onos_rsm_delete.md) - Delete RSM resources +* [onos rsm set](onos_rsm_set.md) - Set RSM resources +* [onos rsm update](onos_rsm_update.md) - Update RSM resources + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_rsm_create.md b/onos-cli/docs/cli/onos_rsm_create.md new file mode 100644 index 0000000..457d961 --- /dev/null +++ b/onos-cli/docs/cli/onos_rsm_create.md @@ -0,0 +1,32 @@ + + +## onos rsm create + +Create RSM resources + +### Options + +``` + -h, --help help for create +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-rsm:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos rsm](onos_rsm.md) - ONOS RSM subsystem commands +* [onos rsm create slice](onos_rsm_create_slice.md) - Create slice + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_rsm_create_slice.md b/onos-cli/docs/cli/onos_rsm_create_slice.md new file mode 100644 index 0000000..2d10cb4 --- /dev/null +++ b/onos-cli/docs/cli/onos_rsm_create_slice.md @@ -0,0 +1,41 @@ + + +## onos rsm create slice + +Create slice + +``` +onos rsm create slice [flags] +``` + +### Options + +``` + --e2NodeID string E2 Node ID + -h, --help help for slice + --no-headers disable output headers + --scheduler string Scheduler Type {RR, PF, QoS} + --sliceID string Slice ID + --sliceType string Slice Type {DL, UL} + --weight string Weight +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-rsm:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos rsm create](onos_rsm_create.md) - Create RSM resources + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_rsm_delete.md b/onos-cli/docs/cli/onos_rsm_delete.md new file mode 100644 index 0000000..d512cd9 --- /dev/null +++ b/onos-cli/docs/cli/onos_rsm_delete.md @@ -0,0 +1,32 @@ + + +## onos rsm delete + +Delete RSM resources + +### Options + +``` + -h, --help help for delete +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-rsm:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos rsm](onos_rsm.md) - ONOS RSM subsystem commands +* [onos rsm delete slice](onos_rsm_delete_slice.md) - Delete slice + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_rsm_delete_slice.md b/onos-cli/docs/cli/onos_rsm_delete_slice.md new file mode 100644 index 0000000..869e262 --- /dev/null +++ b/onos-cli/docs/cli/onos_rsm_delete_slice.md @@ -0,0 +1,39 @@ + + +## onos rsm delete slice + +Delete slice + +``` +onos rsm delete slice [flags] +``` + +### Options + +``` + --e2NodeID string E2 Node ID + -h, --help help for slice + --no-headers disable output headers + --sliceID string Slice ID + --sliceType string Slice Type {DL, UL} +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-rsm:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos rsm delete](onos_rsm_delete.md) - Delete RSM resources + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_rsm_set.md b/onos-cli/docs/cli/onos_rsm_set.md new file mode 100644 index 0000000..1490e4b --- /dev/null +++ b/onos-cli/docs/cli/onos_rsm_set.md @@ -0,0 +1,32 @@ + + +## onos rsm set + +Set RSM resources + +### Options + +``` + -h, --help help for set +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-rsm:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos rsm](onos_rsm.md) - ONOS RSM subsystem commands +* [onos rsm set association](onos_rsm_set_association.md) - Set UE-Slice association + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_rsm_set_association.md b/onos-cli/docs/cli/onos_rsm_set_association.md new file mode 100644 index 0000000..e241788 --- /dev/null +++ b/onos-cli/docs/cli/onos_rsm_set_association.md @@ -0,0 +1,44 @@ + + +## onos rsm set association + +Set UE-Slice association + +``` +onos rsm set association [flags] +``` + +### Options + +``` + --CuUeF1apID string CU-UE-F1AP-ID + --DuUeF1apID string DU-UE-F1AP-ID + --RanUeNgapID string RAN-UE-NGAP-ID + --dlSliceID string DL Slice ID + --drbID string DRB-ID + --e2NodeID string E2 Node ID + --eNBUeS1apID string ENB-UE-S1AP-ID + -h, --help help for association + --no-headers disable output headers + --ulSliceID string UL Slice ID +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-rsm:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos rsm set](onos_rsm_set.md) - Set RSM resources + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_rsm_update.md b/onos-cli/docs/cli/onos_rsm_update.md new file mode 100644 index 0000000..e1b8efa --- /dev/null +++ b/onos-cli/docs/cli/onos_rsm_update.md @@ -0,0 +1,32 @@ + + +## onos rsm update + +Update RSM resources + +### Options + +``` + -h, --help help for update +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-rsm:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos rsm](onos_rsm.md) - ONOS RSM subsystem commands +* [onos rsm update slice](onos_rsm_update_slice.md) - Update slice + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_rsm_update_slice.md b/onos-cli/docs/cli/onos_rsm_update_slice.md new file mode 100644 index 0000000..daf827a --- /dev/null +++ b/onos-cli/docs/cli/onos_rsm_update_slice.md @@ -0,0 +1,41 @@ + + +## onos rsm update slice + +Update slice + +``` +onos rsm update slice [flags] +``` + +### Options + +``` + --e2NodeID string E2 Node ID + -h, --help help for slice + --no-headers disable output headers + --scheduler string Scheduler Type {RR, PF, QoS} + --sliceID string Slice ID + --sliceType string Slice Type {DL, UL} + --weight string Weight +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-rsm:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos rsm update](onos_rsm_update.md) - Update RSM resources + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo.md b/onos-cli/docs/cli/onos_topo.md new file mode 100644 index 0000000..5dafcd4 --- /dev/null +++ b/onos-cli/docs/cli/onos_topo.md @@ -0,0 +1,36 @@ + + +## onos topo + +ONOS topology resource commands + +### Options + +``` + --auth-header string Auth header in the form 'Bearer ' + -h, --help help for topo + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos](onos.md) - ONOS command line client +* [onos topo config](onos_topo_config.md) - Manage the CLI configuration +* [onos topo create](onos_topo_create.md) - Create a topology resource +* [onos topo delete](onos_topo_delete.md) - Delete a topology resource +* [onos topo export](onos_topo_export.md) - Export topology resources in JSON format +* [onos topo get](onos_topo_get.md) - Get topology resources +* [onos topo import](onos_topo_import.md) - Import topology resources in JSON format +* [onos topo log](onos_topo_log.md) - logging api commands +* [onos topo set](onos_topo_set.md) - Update a topology resource +* [onos topo watch](onos_topo_watch.md) - Watch for changes to a topology resource type +* [onos topo wipeout](onos_topo_wipeout.md) - Delete All Relations and Entities + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo_config.md b/onos-cli/docs/cli/onos_topo_config.md new file mode 100644 index 0000000..3cb0419 --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_config.md @@ -0,0 +1,35 @@ + + +## onos topo config + +Manage the CLI configuration + +### Options + +``` + -h, --help help for config +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo](onos_topo.md) - ONOS topology resource commands +* [onos topo config delete](onos_topo_config_delete.md) - Delete CLI option value +* [onos topo config get](onos_topo_config_get.md) - Get CLI option value +* [onos topo config init](onos_topo_config_init.md) - Initialize the kpimon CLI configuration +* [onos topo config set](onos_topo_config_set.md) - Set CLI option value + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo_config_delete.md b/onos-cli/docs/cli/onos_topo_config_delete.md new file mode 100644 index 0000000..4fa9733 --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_config_delete.md @@ -0,0 +1,35 @@ + + +## onos topo config delete + +Delete CLI option value + +``` +onos topo config delete [flags] +``` + +### Options + +``` + -h, --help help for delete +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo config](onos_topo_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo_config_get.md b/onos-cli/docs/cli/onos_topo_config_get.md new file mode 100644 index 0000000..de76b45 --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_config_get.md @@ -0,0 +1,35 @@ + + +## onos topo config get + +Get CLI option value + +``` +onos topo config get [flags] +``` + +### Options + +``` + -h, --help help for get +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo config](onos_topo_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo_config_init.md b/onos-cli/docs/cli/onos_topo_config_init.md new file mode 100644 index 0000000..964906b --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_config_init.md @@ -0,0 +1,35 @@ + + +## onos topo config init + +Initialize the kpimon CLI configuration + +``` +onos topo config init [flags] +``` + +### Options + +``` + -h, --help help for init +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo config](onos_topo_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo_config_set.md b/onos-cli/docs/cli/onos_topo_config_set.md new file mode 100644 index 0000000..fdb06e3 --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_config_set.md @@ -0,0 +1,35 @@ + + +## onos topo config set + +Set CLI option value + +``` +onos topo config set [flags] +``` + +### Options + +``` + -h, --help help for set +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo config](onos_topo_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo_create.md b/onos-cli/docs/cli/onos_topo_create.md new file mode 100644 index 0000000..a6e243b --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_create.md @@ -0,0 +1,34 @@ + + +## onos topo create + +Create a topology resource + +### Options + +``` + -h, --help help for create +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo](onos_topo.md) - ONOS topology resource commands +* [onos topo create entity](onos_topo_create_entity.md) - Create Entity +* [onos topo create kind](onos_topo_create_kind.md) - Create Kind +* [onos topo create relation](onos_topo_create_relation.md) - Create Relation + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo_create_entity.md b/onos-cli/docs/cli/onos_topo_create_entity.md new file mode 100644 index 0000000..d7ce6ce --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_create_entity.md @@ -0,0 +1,38 @@ + + +## onos topo create entity + +Create Entity + +``` +onos topo create entity [args] [flags] +``` + +### Options + +``` + -a, --aspect stringToString aspect of this entity (default []) + -h, --help help for entity + -k, --kind string Kind ID + -l, --label stringToString classification label (default []) +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo create](onos_topo_create.md) - Create a topology resource + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo_create_kind.md b/onos-cli/docs/cli/onos_topo_create_kind.md new file mode 100644 index 0000000..2b57579 --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_create_kind.md @@ -0,0 +1,37 @@ + + +## onos topo create kind + +Create Kind + +``` +onos topo create kind [args] [flags] +``` + +### Options + +``` + -a, --aspect stringToString default aspect for entities of this kind (default []) + -h, --help help for kind + -l, --label stringToString classification label (default []) +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo create](onos_topo_create.md) - Create a topology resource + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo_create_relation.md b/onos-cli/docs/cli/onos_topo_create_relation.md new file mode 100644 index 0000000..f21cb4e --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_create_relation.md @@ -0,0 +1,38 @@ + + +## onos topo create relation + +Create Relation + +``` +onos topo create relation [args] [flags] +``` + +### Options + +``` + -a, --aspect stringToString aspect of this relation (default []) + -h, --help help for relation + -k, --kind string Kind ID + -l, --label stringToString classification label (default []) +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo create](onos_topo_create.md) - Create a topology resource + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo_delete.md b/onos-cli/docs/cli/onos_topo_delete.md new file mode 100644 index 0000000..be4d2b3 --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_delete.md @@ -0,0 +1,34 @@ + + +## onos topo delete + +Delete a topology resource + +### Options + +``` + -h, --help help for delete +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo](onos_topo.md) - ONOS topology resource commands +* [onos topo delete entity](onos_topo_delete_entity.md) - Delete Entity +* [onos topo delete kind](onos_topo_delete_kind.md) - Delete kind +* [onos topo delete relation](onos_topo_delete_relation.md) - Delete Relation + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo_delete_entity.md b/onos-cli/docs/cli/onos_topo_delete_entity.md new file mode 100644 index 0000000..0c7e68a --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_delete_entity.md @@ -0,0 +1,36 @@ + + +## onos topo delete entity + +Delete Entity + +``` +onos topo delete entity [flags] +``` + +### Options + +``` + -h, --help help for entity + -r, --revision uint revision to delete +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo delete](onos_topo_delete.md) - Delete a topology resource + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo_delete_kind.md b/onos-cli/docs/cli/onos_topo_delete_kind.md new file mode 100644 index 0000000..88d95aa --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_delete_kind.md @@ -0,0 +1,36 @@ + + +## onos topo delete kind + +Delete kind + +``` +onos topo delete kind [flags] +``` + +### Options + +``` + -h, --help help for kind + -r, --revision uint revision to delete +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo delete](onos_topo_delete.md) - Delete a topology resource + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo_delete_object.md b/onos-cli/docs/cli/onos_topo_delete_object.md new file mode 100644 index 0000000..5204c5a --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_delete_object.md @@ -0,0 +1,36 @@ + + +## onos topo delete object + +Delete Relation + +``` +onos topo delete object [flags] +``` + +### Options + +``` + -h, --help help for object + -r, --revision uint revision to delete +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS (default true) + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo delete](onos_topo_delete.md) - Delete a topology resource + +###### Auto generated by spf13/cobra on 14-Mar-2022 diff --git a/onos-cli/docs/cli/onos_topo_delete_relation.md b/onos-cli/docs/cli/onos_topo_delete_relation.md new file mode 100644 index 0000000..dc622ca --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_delete_relation.md @@ -0,0 +1,36 @@ + + +## onos topo delete relation + +Delete Relation + +``` +onos topo delete relation [flags] +``` + +### Options + +``` + -h, --help help for relation + -r, --revision uint revision to delete +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo delete](onos_topo_delete.md) - Delete a topology resource + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo_export.md b/onos-cli/docs/cli/onos_topo_export.md new file mode 100644 index 0000000..60ec220 --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_export.md @@ -0,0 +1,36 @@ + + +## onos topo export + +Export topology resources in JSON format + +``` +onos topo export [jsonFilePath|-] [flags] +``` + +### Options + +``` + -d, --data string JSON data (default "{}") + -h, --help help for export +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo](onos_topo.md) - ONOS topology resource commands + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo_get.md b/onos-cli/docs/cli/onos_topo_get.md new file mode 100644 index 0000000..9176f8e --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_get.md @@ -0,0 +1,35 @@ + + +## onos topo get + +Get topology resources + +### Options + +``` + -h, --help help for get +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo](onos_topo.md) - ONOS topology resource commands +* [onos topo get entity](onos_topo_get_entity.md) - Get Entity +* [onos topo get kind](onos_topo_get_kind.md) - Get Kind +* [onos topo get object](onos_topo_get_object.md) - Get Objects +* [onos topo get relation](onos_topo_get_relation.md) - Get Relation + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo_get_entity.md b/onos-cli/docs/cli/onos_topo_get_entity.md new file mode 100644 index 0000000..db15a4e --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_get_entity.md @@ -0,0 +1,45 @@ + + +## onos topo get entity + +Get Entity + +``` +onos topo get entity [flags] +``` + +### Options + +``` + -h, --help help for entity + --kind string kind query + --label string label query + --no-headers disables output headers + --related-to string use relation filter + --related-to-tgt string use relation filter + --related-via string use relation filter, must also specify related-to or related-to-tgt + --scope string target_only|source_and_target (default "target_only") + --tgt-kind string optional target kind for relation filter + -v, --verbose verbose output + --with-aspect strings aspect entity must have +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo get](onos_topo_get.md) - Get topology resources + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo_get_kind.md b/onos-cli/docs/cli/onos_topo_get_kind.md new file mode 100644 index 0000000..c7e544d --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_get_kind.md @@ -0,0 +1,40 @@ + + +## onos topo get kind + +Get Kind + +``` +onos topo get kind [flags] +``` + +### Options + +``` + -h, --help help for kind + --label string label query + --no-headers disables output headers + --sort- string sort order: ascending|descending|unordered(default) (default "unordered") + -v, --verbose verbose output + --with-aspect strings aspect relation must have +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo get](onos_topo_get.md) - Get topology resources + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo_get_object.md b/onos-cli/docs/cli/onos_topo_get_object.md new file mode 100644 index 0000000..defbfb8 --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_get_object.md @@ -0,0 +1,45 @@ + + +## onos topo get object + +Get Objects + +``` +onos topo get object id [flags] +``` + +### Options + +``` + -h, --help help for object + --kind string kind query + --label string label query + --no-headers disables output headers + --related-to string use relation filter + --related-to-tgt string use relation filter + --related-via string use relation filter, must also specify related-to or related-to-tgt + --scope string target_only|all|source_and_target (default "target_only") + --tgt-kind string optional target kind for relation filter + -v, --verbose verbose output + --with-aspect strings aspect object must have +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo get](onos_topo_get.md) - Get topology resources + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo_get_objects.md b/onos-cli/docs/cli/onos_topo_get_objects.md new file mode 100644 index 0000000..1d2eef4 --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_get_objects.md @@ -0,0 +1,46 @@ + + +## onos topo get objects + +Get Objects + +``` +onos topo get objects id [flags] +``` + +### Options + +``` + -h, --help help for objects + --kind string kind query + --label string label query + --no-headers disables output headers + --related-to string use relation filter, must also specify related-via + --related-to-tgt string use relation filter, must also specify related-via + --related-via string use relation filter, must also specify related-to or related-to-tgt + --scope string target_only|all|source_and_target (default "target_only") + --sort-order string sort order: ascending|descending|unordered(default) (default "unordered") + --tgt-kind string optional target kind for relation filter + -v, --verbose verbose output + --with-aspect strings aspect object must have +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS (default true) + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo get](onos_topo_get.md) - Get topology resources + +###### Auto generated by spf13/cobra on 14-Mar-2022 diff --git a/onos-cli/docs/cli/onos_topo_get_relation.md b/onos-cli/docs/cli/onos_topo_get_relation.md new file mode 100644 index 0000000..2574aab --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_get_relation.md @@ -0,0 +1,40 @@ + + +## onos topo get relation + +Get Relation + +``` +onos topo get relation [flags] +``` + +### Options + +``` + -h, --help help for relation + --kind string kind query + --label string label query + --no-headers disables output headers + -v, --verbose verbose output + --with-aspect strings aspect relation must have +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo get](onos_topo_get.md) - Get topology resources + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo_import.md b/onos-cli/docs/cli/onos_topo_import.md new file mode 100644 index 0000000..d0a596b --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_import.md @@ -0,0 +1,37 @@ + + +## onos topo import + +Import topology resources in JSON format + +``` +onos topo import [jsonFilePath|-] [flags] +``` + +### Options + +``` + -d, --data string JSON data (default "{}") + -h, --help help for import + -i, --ignore-errors ignore errors and continue +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo](onos_topo.md) - ONOS topology resource commands + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo_load.md b/onos-cli/docs/cli/onos_topo_load.md new file mode 100644 index 0000000..d1535f7 --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_load.md @@ -0,0 +1,36 @@ + + +## onos topo load + +Load topology resources in JSON format + +``` +onos topo load [jsonFilePath|-] [flags] +``` + +### Options + +``` + -d, --data string JSON data (default "{}") + -h, --help help for load +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS (default true) + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo](onos_topo.md) - ONOS topology resource commands + +###### Auto generated by spf13/cobra on 14-Mar-2022 diff --git a/onos-cli/docs/cli/onos_topo_log.md b/onos-cli/docs/cli/onos_topo_log.md new file mode 100644 index 0000000..8ba5b30 --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_log.md @@ -0,0 +1,33 @@ + + +## onos topo log + +logging api commands + +### Options + +``` + -h, --help help for log +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo](onos_topo.md) - ONOS topology resource commands +* [onos topo log get](onos_topo_log_get.md) - Gets a logger attribute (e.g. level) +* [onos topo log set](onos_topo_log_set.md) - Sets a logger attribute (e.g. level) + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo_log_get.md b/onos-cli/docs/cli/onos_topo_log_get.md new file mode 100644 index 0000000..fe94ab1 --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_log_get.md @@ -0,0 +1,32 @@ + + +## onos topo log get + +Gets a logger attribute (e.g. level) + +### Options + +``` + -h, --help help for get +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo log](onos_topo_log.md) - logging api commands +* [onos topo log get level](onos_topo_log_get_level.md) - Gets a logger level + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo_log_get_level.md b/onos-cli/docs/cli/onos_topo_log_get_level.md new file mode 100644 index 0000000..a0c1d27 --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_log_get_level.md @@ -0,0 +1,35 @@ + + +## onos topo log get level + +Gets a logger level + +``` +onos topo log get level logger_name [flags] +``` + +### Options + +``` + -h, --help help for level +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo log get](onos_topo_log_get.md) - Gets a logger attribute (e.g. level) + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo_log_set.md b/onos-cli/docs/cli/onos_topo_log_set.md new file mode 100644 index 0000000..e2f58bd --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_log_set.md @@ -0,0 +1,32 @@ + + +## onos topo log set + +Sets a logger attribute (e.g. level) + +### Options + +``` + -h, --help help for set +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo log](onos_topo_log.md) - logging api commands +* [onos topo log set level](onos_topo_log_set_level.md) - Sets a logger level + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo_log_set_level.md b/onos-cli/docs/cli/onos_topo_log_set_level.md new file mode 100644 index 0000000..be437a5 --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_log_set_level.md @@ -0,0 +1,35 @@ + + +## onos topo log set level + +Sets a logger level + +``` +onos topo log set level logger_name [flags] +``` + +### Options + +``` + -h, --help help for level +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo log set](onos_topo_log_set.md) - Sets a logger attribute (e.g. level) + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo_set.md b/onos-cli/docs/cli/onos_topo_set.md new file mode 100644 index 0000000..662dae6 --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_set.md @@ -0,0 +1,34 @@ + + +## onos topo set + +Update a topology resource + +### Options + +``` + -h, --help help for set +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo](onos_topo.md) - ONOS topology resource commands +* [onos topo set entity](onos_topo_set_entity.md) - Update Entity +* [onos topo set kind](onos_topo_set_kind.md) - Update Kind +* [onos topo set relation](onos_topo_set_relation.md) - Update Relation + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo_set_entity.md b/onos-cli/docs/cli/onos_topo_set_entity.md new file mode 100644 index 0000000..8ffca8f --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_set_entity.md @@ -0,0 +1,38 @@ + + +## onos topo set entity + +Update Entity + +``` +onos topo set entity [args] [flags] +``` + +### Options + +``` + -a, --aspect stringToString aspect of this entity (default []) + -h, --help help for entity + -l, --label stringToString classification label (default []) + -s, --set stringToString set single attribute of an aspect (default []) +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo set](onos_topo_set.md) - Update a topology resource + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo_set_kind.md b/onos-cli/docs/cli/onos_topo_set_kind.md new file mode 100644 index 0000000..3067736 --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_set_kind.md @@ -0,0 +1,39 @@ + + +## onos topo set kind + +Update Kind + +``` +onos topo set kind [args] [flags] +``` + +### Options + +``` + -a, --aspect stringToString aspect of this entity (default []) + -h, --help help for kind + -l, --label stringToString classification label (default []) + -n, --name string Kind Name + -s, --set stringToString set single attribute of an aspect (default []) +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo set](onos_topo_set.md) - Update a topology resource + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo_set_relation.md b/onos-cli/docs/cli/onos_topo_set_relation.md new file mode 100644 index 0000000..1eab0a7 --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_set_relation.md @@ -0,0 +1,38 @@ + + +## onos topo set relation + +Update Relation + +``` +onos topo set relation [args] [flags] +``` + +### Options + +``` + -a, --aspect stringToString aspect of this entity (default []) + -h, --help help for relation + -l, --label stringToString classification label (default []) + -s, --set stringToString set single attribute of an aspect (default []) +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo set](onos_topo_set.md) - Update a topology resource + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo_watch.md b/onos-cli/docs/cli/onos_topo_watch.md new file mode 100644 index 0000000..a2c8a42 --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_watch.md @@ -0,0 +1,35 @@ + + +## onos topo watch + +Watch for changes to a topology resource type + +### Options + +``` + -h, --help help for watch +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo](onos_topo.md) - ONOS topology resource commands +* [onos topo watch all](onos_topo_watch_all.md) - Watch Entities, Relations and Kinds +* [onos topo watch entity](onos_topo_watch_entity.md) - Watch Entities +* [onos topo watch kind](onos_topo_watch_kind.md) - Watch Kinds +* [onos topo watch relation](onos_topo_watch_relation.md) - Watch Relations + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo_watch_all.md b/onos-cli/docs/cli/onos_topo_watch_all.md new file mode 100644 index 0000000..c4d5ebc --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_watch_all.md @@ -0,0 +1,40 @@ + + +## onos topo watch all + +Watch Entities, Relations and Kinds + +``` +onos topo watch all [args] [flags] +``` + +### Options + +``` + -h, --help help for all + --kind string kind query + --label string label query + --no-headers disables output headers + -r, --no-replay do not replay exiting topo state + -v, --verbose verbose output +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo watch](onos_topo_watch.md) - Watch for changes to a topology resource type + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo_watch_entity.md b/onos-cli/docs/cli/onos_topo_watch_entity.md new file mode 100644 index 0000000..bc8fd74 --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_watch_entity.md @@ -0,0 +1,40 @@ + + +## onos topo watch entity + +Watch Entities + +``` +onos topo watch entity [id] [args] [flags] +``` + +### Options + +``` + -h, --help help for entity + --kind string kind query + --label string label query + --no-headers disables output headers + -r, --no-replay do not replay existing topo state + -v, --verbose verbose output +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo watch](onos_topo_watch.md) - Watch for changes to a topology resource type + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo_watch_kind.md b/onos-cli/docs/cli/onos_topo_watch_kind.md new file mode 100644 index 0000000..fc97309 --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_watch_kind.md @@ -0,0 +1,40 @@ + + +## onos topo watch kind + +Watch Kinds + +``` +onos topo watch kind [id] [args] [flags] +``` + +### Options + +``` + -h, --help help for kind + --kind string kind query + --label string label query + --no-headers disables output headers + -r, --no-replay do not replay exiting topo state + -v, --verbose verbose output +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo watch](onos_topo_watch.md) - Watch for changes to a topology resource type + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo_watch_relation.md b/onos-cli/docs/cli/onos_topo_watch_relation.md new file mode 100644 index 0000000..5897c75 --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_watch_relation.md @@ -0,0 +1,40 @@ + + +## onos topo watch relation + +Watch Relations + +``` +onos topo watch relation [args] [flags] +``` + +### Options + +``` + -h, --help help for relation + --kind string kind query + --label string label query + --no-headers disables output headers + -r, --no-replay do not replay exiting topo state + -v, --verbose verbose output +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo watch](onos_topo_watch.md) - Watch for changes to a topology resource type + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_topo_wipeout.md b/onos-cli/docs/cli/onos_topo_wipeout.md new file mode 100644 index 0000000..df8ca2a --- /dev/null +++ b/onos-cli/docs/cli/onos_topo_wipeout.md @@ -0,0 +1,36 @@ + + +## onos topo wipeout + +Delete All Relations and Entities + +``` +onos topo wipeout please [flags] +``` + +### Options + +``` + -h, --help help for wipeout + --include-kinds delete kinds as well as entities and relations +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-topo:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos topo](onos_topo.md) - ONOS topology resource commands + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_uenib.md b/onos-cli/docs/cli/onos_uenib.md new file mode 100644 index 0000000..9795f85 --- /dev/null +++ b/onos-cli/docs/cli/onos_uenib.md @@ -0,0 +1,33 @@ + + +## onos uenib + +ONOS UE-NIB subsystem commands + +### Options + +``` + --auth-header string Auth header in the form 'Bearer ' + -h, --help help for uenib + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-uenib:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos](onos.md) - ONOS command line client +* [onos uenib config](onos_uenib_config.md) - Manage the CLI configuration +* [onos uenib create](onos_uenib_create.md) - Create UE information +* [onos uenib delete](onos_uenib_delete.md) - Delete UE information +* [onos uenib get](onos_uenib_get.md) - Get UE information +* [onos uenib log](onos_uenib_log.md) - logging api commands +* [onos uenib update](onos_uenib_update.md) - Update UE information +* [onos uenib watch](onos_uenib_watch.md) - Watch for changes to UE information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_uenib_config.md b/onos-cli/docs/cli/onos_uenib_config.md new file mode 100644 index 0000000..119625f --- /dev/null +++ b/onos-cli/docs/cli/onos_uenib_config.md @@ -0,0 +1,35 @@ + + +## onos uenib config + +Manage the CLI configuration + +### Options + +``` + -h, --help help for config +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-uenib:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos uenib](onos_uenib.md) - ONOS UE-NIB subsystem commands +* [onos uenib config delete](onos_uenib_config_delete.md) - Delete CLI option value +* [onos uenib config get](onos_uenib_config_get.md) - Get CLI option value +* [onos uenib config init](onos_uenib_config_init.md) - Initialize the kpimon CLI configuration +* [onos uenib config set](onos_uenib_config_set.md) - Set CLI option value + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_uenib_config_delete.md b/onos-cli/docs/cli/onos_uenib_config_delete.md new file mode 100644 index 0000000..9df5a9d --- /dev/null +++ b/onos-cli/docs/cli/onos_uenib_config_delete.md @@ -0,0 +1,35 @@ + + +## onos uenib config delete + +Delete CLI option value + +``` +onos uenib config delete [flags] +``` + +### Options + +``` + -h, --help help for delete +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-uenib:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos uenib config](onos_uenib_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_uenib_config_get.md b/onos-cli/docs/cli/onos_uenib_config_get.md new file mode 100644 index 0000000..8d3b395 --- /dev/null +++ b/onos-cli/docs/cli/onos_uenib_config_get.md @@ -0,0 +1,35 @@ + + +## onos uenib config get + +Get CLI option value + +``` +onos uenib config get [flags] +``` + +### Options + +``` + -h, --help help for get +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-uenib:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos uenib config](onos_uenib_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_uenib_config_init.md b/onos-cli/docs/cli/onos_uenib_config_init.md new file mode 100644 index 0000000..4fc7bf8 --- /dev/null +++ b/onos-cli/docs/cli/onos_uenib_config_init.md @@ -0,0 +1,35 @@ + + +## onos uenib config init + +Initialize the kpimon CLI configuration + +``` +onos uenib config init [flags] +``` + +### Options + +``` + -h, --help help for init +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-uenib:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos uenib config](onos_uenib_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_uenib_config_set.md b/onos-cli/docs/cli/onos_uenib_config_set.md new file mode 100644 index 0000000..02cd894 --- /dev/null +++ b/onos-cli/docs/cli/onos_uenib_config_set.md @@ -0,0 +1,35 @@ + + +## onos uenib config set + +Set CLI option value + +``` +onos uenib config set [flags] +``` + +### Options + +``` + -h, --help help for set +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-uenib:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos uenib config](onos_uenib_config.md) - Manage the CLI configuration + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_uenib_create.md b/onos-cli/docs/cli/onos_uenib_create.md new file mode 100644 index 0000000..d9092db --- /dev/null +++ b/onos-cli/docs/cli/onos_uenib_create.md @@ -0,0 +1,32 @@ + + +## onos uenib create + +Create UE information + +### Options + +``` + -h, --help help for create +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-uenib:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos uenib](onos_uenib.md) - ONOS UE-NIB subsystem commands +* [onos uenib create ue](onos_uenib_create_ue.md) - Create UE information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_uenib_create_ue.md b/onos-cli/docs/cli/onos_uenib_create_ue.md new file mode 100644 index 0000000..850944e --- /dev/null +++ b/onos-cli/docs/cli/onos_uenib_create_ue.md @@ -0,0 +1,36 @@ + + +## onos uenib create ue + +Create UE information + +``` +onos uenib create ue ue-id [args] [flags] +``` + +### Options + +``` + -a, --aspect stringToString UE aspect to create (default []) + -h, --help help for ue +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-uenib:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos uenib create](onos_uenib_create.md) - Create UE information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_uenib_delete.md b/onos-cli/docs/cli/onos_uenib_delete.md new file mode 100644 index 0000000..c0cc2f9 --- /dev/null +++ b/onos-cli/docs/cli/onos_uenib_delete.md @@ -0,0 +1,32 @@ + + +## onos uenib delete + +Delete UE information + +### Options + +``` + -h, --help help for delete +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-uenib:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos uenib](onos_uenib.md) - ONOS UE-NIB subsystem commands +* [onos uenib delete ue](onos_uenib_delete_ue.md) - Delete UE information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_uenib_delete_ue.md b/onos-cli/docs/cli/onos_uenib_delete_ue.md new file mode 100644 index 0000000..db923fc --- /dev/null +++ b/onos-cli/docs/cli/onos_uenib_delete_ue.md @@ -0,0 +1,36 @@ + + +## onos uenib delete ue + +Delete UE information + +``` +onos uenib delete ue ue-id [args] [flags] +``` + +### Options + +``` + -a, --aspect strings UE aspects to delete + -h, --help help for ue +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-uenib:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos uenib delete](onos_uenib_delete.md) - Delete UE information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_uenib_get.md b/onos-cli/docs/cli/onos_uenib_get.md new file mode 100644 index 0000000..fbe3d5b --- /dev/null +++ b/onos-cli/docs/cli/onos_uenib_get.md @@ -0,0 +1,33 @@ + + +## onos uenib get + +Get UE information + +### Options + +``` + -h, --help help for get +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-uenib:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos uenib](onos_uenib.md) - ONOS UE-NIB subsystem commands +* [onos uenib get ue](onos_uenib_get_ue.md) - Get UE information +* [onos uenib get ues](onos_uenib_get_ues.md) - Get list of UE information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_uenib_get_ue.md b/onos-cli/docs/cli/onos_uenib_get_ue.md new file mode 100644 index 0000000..a3504bd --- /dev/null +++ b/onos-cli/docs/cli/onos_uenib_get_ue.md @@ -0,0 +1,38 @@ + + +## onos uenib get ue + +Get UE information + +``` +onos uenib get ue ue-id [args] [flags] +``` + +### Options + +``` + -a, --aspect strings UE aspects to get + -h, --help help for ue + --no-headers disables output headers + -v, --verbose whether to print the change with verbose output +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-uenib:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos uenib get](onos_uenib_get.md) - Get UE information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_uenib_get_ues.md b/onos-cli/docs/cli/onos_uenib_get_ues.md new file mode 100644 index 0000000..d6378e0 --- /dev/null +++ b/onos-cli/docs/cli/onos_uenib_get_ues.md @@ -0,0 +1,38 @@ + + +## onos uenib get ues + +Get list of UE information + +``` +onos uenib get ues [args] [flags] +``` + +### Options + +``` + -a, --aspect strings UE aspects to get + -h, --help help for ues + --no-headers disables output headers + -v, --verbose whether to print the change with verbose output +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-uenib:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos uenib get](onos_uenib_get.md) - Get UE information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_uenib_log.md b/onos-cli/docs/cli/onos_uenib_log.md new file mode 100644 index 0000000..842cbe5 --- /dev/null +++ b/onos-cli/docs/cli/onos_uenib_log.md @@ -0,0 +1,33 @@ + + +## onos uenib log + +logging api commands + +### Options + +``` + -h, --help help for log +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-uenib:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos uenib](onos_uenib.md) - ONOS UE-NIB subsystem commands +* [onos uenib log get](onos_uenib_log_get.md) - Gets a logger attribute (e.g. level) +* [onos uenib log set](onos_uenib_log_set.md) - Sets a logger attribute (e.g. level) + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_uenib_log_get.md b/onos-cli/docs/cli/onos_uenib_log_get.md new file mode 100644 index 0000000..ce37195 --- /dev/null +++ b/onos-cli/docs/cli/onos_uenib_log_get.md @@ -0,0 +1,32 @@ + + +## onos uenib log get + +Gets a logger attribute (e.g. level) + +### Options + +``` + -h, --help help for get +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-uenib:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos uenib log](onos_uenib_log.md) - logging api commands +* [onos uenib log get level](onos_uenib_log_get_level.md) - Gets a logger level + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_uenib_log_get_level.md b/onos-cli/docs/cli/onos_uenib_log_get_level.md new file mode 100644 index 0000000..6e71f1f --- /dev/null +++ b/onos-cli/docs/cli/onos_uenib_log_get_level.md @@ -0,0 +1,35 @@ + + +## onos uenib log get level + +Gets a logger level + +``` +onos uenib log get level logger_name [flags] +``` + +### Options + +``` + -h, --help help for level +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-uenib:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos uenib log get](onos_uenib_log_get.md) - Gets a logger attribute (e.g. level) + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_uenib_log_set.md b/onos-cli/docs/cli/onos_uenib_log_set.md new file mode 100644 index 0000000..dd2b8dd --- /dev/null +++ b/onos-cli/docs/cli/onos_uenib_log_set.md @@ -0,0 +1,32 @@ + + +## onos uenib log set + +Sets a logger attribute (e.g. level) + +### Options + +``` + -h, --help help for set +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-uenib:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos uenib log](onos_uenib_log.md) - logging api commands +* [onos uenib log set level](onos_uenib_log_set_level.md) - Sets a logger level + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_uenib_log_set_level.md b/onos-cli/docs/cli/onos_uenib_log_set_level.md new file mode 100644 index 0000000..211edc6 --- /dev/null +++ b/onos-cli/docs/cli/onos_uenib_log_set_level.md @@ -0,0 +1,35 @@ + + +## onos uenib log set level + +Sets a logger level + +``` +onos uenib log set level logger_name [flags] +``` + +### Options + +``` + -h, --help help for level +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-uenib:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos uenib log set](onos_uenib_log_set.md) - Sets a logger attribute (e.g. level) + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_uenib_update.md b/onos-cli/docs/cli/onos_uenib_update.md new file mode 100644 index 0000000..e3fdb49 --- /dev/null +++ b/onos-cli/docs/cli/onos_uenib_update.md @@ -0,0 +1,32 @@ + + +## onos uenib update + +Update UE information + +### Options + +``` + -h, --help help for update +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-uenib:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos uenib](onos_uenib.md) - ONOS UE-NIB subsystem commands +* [onos uenib update ue](onos_uenib_update_ue.md) - Update UE information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_uenib_update_ue.md b/onos-cli/docs/cli/onos_uenib_update_ue.md new file mode 100644 index 0000000..ca7c77a --- /dev/null +++ b/onos-cli/docs/cli/onos_uenib_update_ue.md @@ -0,0 +1,36 @@ + + +## onos uenib update ue + +Update UE information + +``` +onos uenib update ue ue-id [args] [flags] +``` + +### Options + +``` + -a, --aspect stringToString UE aspect to update (default []) + -h, --help help for ue +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-uenib:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos uenib update](onos_uenib_update.md) - Update UE information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_uenib_watch.md b/onos-cli/docs/cli/onos_uenib_watch.md new file mode 100644 index 0000000..b320890 --- /dev/null +++ b/onos-cli/docs/cli/onos_uenib_watch.md @@ -0,0 +1,33 @@ + + +## onos uenib watch + +Watch for changes to UE information + +### Options + +``` + -h, --help help for watch +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-uenib:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos uenib](onos_uenib.md) - ONOS UE-NIB subsystem commands +* [onos uenib watch ue](onos_uenib_watch_ue.md) - Watch for changes to a specific UE information +* [onos uenib watch ues](onos_uenib_watch_ues.md) - Watch for changes to any UE information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_uenib_watch_ue.md b/onos-cli/docs/cli/onos_uenib_watch_ue.md new file mode 100644 index 0000000..9e1db7e --- /dev/null +++ b/onos-cli/docs/cli/onos_uenib_watch_ue.md @@ -0,0 +1,38 @@ + + +## onos uenib watch ue + +Watch for changes to a specific UE information + +``` +onos uenib watch ue ue-id [args] [flags] +``` + +### Options + +``` + -a, --aspect strings UE aspects to watch + -h, --help help for ue + --no-headers disables output headers + -r, --no-replay do not replay existing UE state +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-uenib:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos uenib watch](onos_uenib_watch.md) - Watch for changes to UE information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/cli/onos_uenib_watch_ues.md b/onos-cli/docs/cli/onos_uenib_watch_ues.md new file mode 100644 index 0000000..244b576 --- /dev/null +++ b/onos-cli/docs/cli/onos_uenib_watch_ues.md @@ -0,0 +1,38 @@ + + +## onos uenib watch ues + +Watch for changes to any UE information + +``` +onos uenib watch ues [args] [flags] +``` + +### Options + +``` + -a, --aspect strings UE aspects to watch + -h, --help help for ues + --no-headers disables output headers + -r, --no-replay do not replay existing UE state +``` + +### Options inherited from parent commands + +``` + --auth-header string Auth header in the form 'Bearer ' + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-uenib:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key +``` + +### SEE ALSO + +* [onos uenib watch](onos_uenib_watch.md) - Watch for changes to UE information + +###### Auto generated by spf13/cobra on 29-Jun-2024 diff --git a/onos-cli/docs/deployment.md b/onos-cli/docs/deployment.md new file mode 100644 index 0000000..033cd50 --- /dev/null +++ b/onos-cli/docs/deployment.md @@ -0,0 +1,93 @@ + + +# Deploying onos-cli with Helm + +This guide deploys `onos-cli` through it's [Helm] chart assumes you have a [Kubernetes] cluster running +with an atomix controller deployed in a namespace. +`onos-cli` Helm chart is based on Helm 3.0 version, with no need for the Tiller pod to be present. +If you don't have a cluster running and want to try on your local machine please follow first +the [Kubernetes] setup steps outlined in [deploy with Helm](https://docs.onosproject.org/developers/deploy_with_helm/). +The following steps assume you have the setup outlined in that page, including the `micro-onos` namespace configured. +## Installing the Chart + +To install the chart in the `micro-onos` namespace run from the root directory of the `onos-helm-charts` repo the command: +```bash +helm install -n micro-onos onos-cli onos-cli +``` +The output should be: +```bash +NAME: onos-cli +LAST DEPLOYED: Tue Nov 26 13:31:42 2019 +NAMESPACE: default +STATUS: deployed +REVISION: 1 +TEST SUITE: None +``` + +`helm install` assigns a unique name to the chart and displays all the k8s resources that were +created by it. To list the charts that are installed and view their statuses, run `helm ls`: + +```bash +helm ls +NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE +... +onos-cli 1 Tue May 14 18:56:39 2019 DEPLOYED onos-cli-0.0.1 0.0.1 default +``` + +### Installing the chart in a different namespace. + +Issue the `helm install` command substituting `micro-onos` with your namespace. +```bash +helm install -n onos-cli onos-cli +``` +### Installing the chart with debug. +`onos-cli` offers the capability to open a debug port (4000) to the image. +To enable the debug capabilities please set the debug flag to true in `values.yaml` or pass it to `helm install` +```bash +helm install -n micro-onos onos-cli onos-cli --set debug=true +``` +### Troubleshoot + +If your chart does not install or the pod is not running for some reason and/or you modified values Helm offers two flags to help you +debug your chart: + +* `--dry-run` check the chart without actually installing the pod. +* `--debug` prints out more information about your chart + +```bash +helm install -n micro-onos onos-cli --debug --dry-run onos-cli/ +``` +Also to verify how template values are expanded, run: +```bash +helm install template onos-gui +``` + +## Uninstalling the chart. + +To remove the `onos-cli` pod issue +```bash +helm delete -n micro-onos onos-cli +``` +## Pod Information + +To view the pods that are deployed, run `kubectl -n micro-onos get pods`. + +## Getting access to the onos-cli console + +To gain acess to the `onos-cli` console and be able of issuing the different cli commands the following command is need: +```bash +kubectl -n micro-onos exec -it $(kubectl -n micro-onos get pods -l type=cli -o name) -- /bin/sh +``` + +At this point you can execute `topo`, `config` and all the other commands. For example: +```bash + onos topo get devices +``` + +[Helm]: https://helm.sh/ +[Kubernetes]: https://kubernetes.io/ + diff --git a/onos-cli/docs/setup.md b/onos-cli/docs/setup.md new file mode 100644 index 0000000..cb48ba4 --- /dev/null +++ b/onos-cli/docs/setup.md @@ -0,0 +1,68 @@ + + +# How to install and run onos-cli? + +To install onos command line client, run the following command: + +```bash +> export GO111MODULE=on +> go get github.com/onosproject/onos-cli/cmd/onos +``` + +# ONOS-CLI Auto Completion +The onos client supports shell auto-completion for its various commands, sub-commands and flags. +You can enable this feature for bash or zsh as follows: + +## Bash Auto-Completion +```bash +> eval "$(onos completion bash)" +``` +After that, you should be able to use the `TAB` key to obtain suggestions for +valid options. + +## Zsh Auto-Completion + +```bash +> source <(onos completion zsh) +``` + +**Note**: Note: We also recommend to add the output of the above commands to *.bashrc* or *.zshrc*. + +## How to run onos client? + +After the above steps, if you run *onos* from command line interface, +you should be able to see an output like this: + +```bash +> onos +ONOS command line client + +Usage: + onos [command] + +Available Commands: + changes Lists records of configuration changes + completion Generated bash or zsh auto-completion script + config Read and update CLI configuration options + configs Lists details of device configuration changes + devices Manages inventory of network devices + devicetree Lists devices and their configuration in tree format + help Help about any command + init Initialize the ONOS CLI configuration + models Manages model plugins + net-changes Lists network configuration changes + rollback Rolls-back a network configuration change + +Flags: + -a, --address string the controller address (default ":5150") + -c, --certPath string path to client certificate (default "client1.crt") + --config string config file (default: $HOME/.onos/config.yaml) + -h, --help help for onos + -k, --keyPath string path to client private key (default "client1.key") + +Use "onos [command] --help" for more information about a command. +``` diff --git a/onos-config/README.md b/onos-config/README.md new file mode 100644 index 0000000..ab3f5c4 --- /dev/null +++ b/onos-config/README.md @@ -0,0 +1,19 @@ + + +# onos-config +[![Go Report Card](https://goreportcard.com/badge/github.com/onosproject/onos-config)](https://goreportcard.com/report/github.com/onosproject/onos-config) +[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/gojp/goreportcard/blob/master/LICENSE) +[![Coverage Status](https://img.shields.io/coveralls/github/onosproject/onos-config/badge.svg)](https://coveralls.io/github/onosproject/onos-config?branch=master) +[![GoDoc](https://godoc.org/github.com/onosproject/onos-config?status.svg)](https://godoc.org/github.com/onosproject/onos-config) + + +ONOS Configuration subsystem built using the µONOS architecture + +You can find all the documentation under [docs](docs) directory. +A good place to start is the [README](docs/README.md). + +Overall µONOS documentation is also published on its own [website](https://docs.onosproject.org). diff --git a/onos-config/docs/README.md b/onos-config/docs/README.md new file mode 100644 index 0000000..16050c0 --- /dev/null +++ b/onos-config/docs/README.md @@ -0,0 +1,73 @@ + + +# ONOS configuration overview + +## Design Objectives +gNMI provides transactionality with respect to a single target; all configuration operations specified as part of a +single batch are all applied or none of them are. The core capability of the configuration platform should build on +this gNMI feature to: + +* Provide ability to apply a batch of operations (via NB gNMI API) targeted at multiple targets + to be performed as a transaction; either all changes are applied to all targets or none of + the changes are applied to any of the targets. +* Track configuration change transactions applied to a set of targets over time and allow + rollback (via NB admin API) to previous configuration checkpoints demarcated by the transactions. + +The above features are the principal objectives for the configuration management platform. +Second order objectives are as follows: + +* Support high-availability and distributed operation, including rolling upgrades +* Support networks consisting of ~50 devices (configuration targets), ~5000 ports and rate of ~10K incremental + configuration transactions per day + +### Additional Features (to be integrated with the above) +The following set of features will be required to support the real-world use-cases, +but may not necessarily be part of the code configuration subsystem and instead can be +provided as additional layers: + +* Ability to preload initial configuration about targets that have not yet been discovered - + or even deployed +* Dry run capability - validate configuration with respect to model, but also with respect + to existing business constraints or policies +* Import existing device configuration +* Configuration Intents - ability to translate high-level (possibly network-wide) + configuration specifications into lower-level (device-specific) operations + +## Key Tenets +* Principal northbound API for the subsystem will be gNMI. + * These interfaces are already accepted standards and are well-defined, low-profile interfaces + with support for transaction semantics. + * YANG models that will be exposed as part of the NB API are determined by the set of + configuration model plugins configured as part of `onos-config` deployment. +* Enhanced northbound API will be a gRPC service providing access to administrative functionality. + * Applications can navigate the transaction log and roll-back various changes as they were + previously submitted via gNMI +* Southbound API for the subsystem will be gNMI. + * This will allow direct use with Stratum-compliant switches without requiring an adaptation layer. + * Adapters can be created for devices - or configurable targets in general - that do not directly + support gNMI interfaces. Such adapters can be deployed either as proxy agents or potentially + can be hosted on the devices themselves. +* Administrative gRPC service will allow for roll-back, and interacting with `onos-config` internal + state using various remote tools. +* The subsystem will be designed as a separate entity to allow its use with the existing + ONOS 2.0 architecture and to fit with the NG ONOS architecture. + +## High-Level Design +![design](images/design.png) + +## Additional Documentation +* [How to contribute](https://docs.onosproject.org/developers/contributing/) to onos-config project +* [How to build](https://docs.onosproject.org/onos-config/docs/build/) onos-config server, related commands and Docker image +* [How to run](https://docs.onosproject.org/onos-config/docs/run/) onos-config server and related commands +* [How to deploy](https://docs.onosproject.org/onos-config/docs/deployment/) onos-config in a Kubernetes cluster +* [How to onboard your device](https://docs.onosproject.org/onos-config/docs/modelplugin/) extending onos-config with Model Plugins +* [Developer workflow summary](https://docs.onosproject.org/developers/dev_workflow/) for onos-config project +* [Contacts and Meetings](https://docs.onosproject.org/developers/community-info/) for onos-config project + +## Additional Resources +### µONOS talks at ONF Connect 2019 +* [µONOS Project Wide Videos](https://docs.onosproject.org/#additional-resources) diff --git a/onos-config/docs/build.md b/onos-config/docs/build.md new file mode 100644 index 0000000..d5278c8 --- /dev/null +++ b/onos-config/docs/build.md @@ -0,0 +1,68 @@ + + +# Building onos-config +In order the build the project, developers are expected to install the +required [development tools](../../developers/prerequisites.md). + +Currently, the project build and validation is driven by a top-level `Makefile`, which supports the following usage: +```bash +> make help +Makefile:build build the Go binaries and run all validations (default) +Makefile:clean: remove all the build artifacts +Makefile:images build all Docker images +Makefile:jenkins-test run the unit tests and source code validation producing a junit style report for Jenkins +Makefile:kind-only deploy the image without rebuilding first +Makefile:kind build Docker images and add them to the currently configured kind cluster +Makefile:local-deps imports local deps in the vendor folder +Makefile:local-helmit Copies a local version of the helmit dependency into the vendor directory +Makefile:local-onos-api Copies a local version of the onos-api dependency into the vendor directory +Makefile:local-onos-lib-go Copies a local version of the onos-lib-go dependency into the vendor directory +Makefile:local-onos-ric-sdk-go Copies a local version of the onos-ric-sdk-go dependency into the vendor directory +Makefile:local-onos-test Copies a local version of the onos-test dependency into the vendor directory +Makefile:local-onos-topo Copies a local version of the onos-topo dependency into the vendor directory +Makefile:mod-update Download the dependencies to the vendor folder +Makefile:publish publish version on github and dockerhub +Makefile:test run the unit tests and source code validation producing a golang style report +``` + +## Building Go binaries +To build the project, simply type `make`. This will check for required dependencies, compile the Go binaries +and then perform all required validation steps, which includes unit tests, Go code formating, Go lint, Go vetting +and license header compliance check. In future, there may be other tests. + +| Note that since the build relies on Go modules, you must `export GO111MODULE=on`. +## Building Docker images +To allow deployment of onos-config in a Kubernetes cluster, the `Makefile` allows creation of two separate Docker +images. + +The main Docker image is `onosproject/onos-config`, which is the main program that acts as a server that provides +various gRPC interfaces to application. This include `gNMI` and the `AdminService` and `DiagnosticService`. The +second Docker image is `onosproject/onos-cli`, which provides a command-line shell that can be deployed as an +ephemeral container inside the Kubernetes cluster and which provides access to the `onos` CLI commands for +remotely interacting with the services provided by `onosproject/onos-config`. + +You can build both images by running `make images`. + +## Compiling protobufs +To compile Google Protocol Buffer files (`*.proto`) and to generate Go source files from them, simply run +`make protos`. Provided you changed the source `*.proto` files, this will modify the corresponding `*.pb.go` source +files. Although these files are auto-generated, developers are expected to check them in, anytime they change as +a result of changing the `*.proto` files. + +> The protoc compiler is run using `onosproject/proto-go` Docker image, which has been published to remove the +need for developers to install their own protoc compiler and its Go plugin. The Makefile makes this transparent. + + +## Bulding Documentation +Documentation is published at [https://godoc.org/github.com/onosproject/onos-config](https://godoc.org/github.com/onosproject/onos-config) + +If you wish to see a version of it locally run: +```bash +godoc -goroot=$HOME/go +``` + +and then browse at [http://localhost:6060/pkg/github.com/onosproject/onos-config/](http://localhost:6060/pkg/github.com/onosproject/onos-config/) diff --git a/onos-config/docs/cli.md b/onos-config/docs/cli.md new file mode 100644 index 0000000..c3e755b --- /dev/null +++ b/onos-config/docs/cli.md @@ -0,0 +1,119 @@ + + +# Administrative Command-Line +The project provides a command-line facilities for remotely +interacting with the administrative service of the `onos-config` server. + +The commands are available at run-time using the consolidated `onos` client hosted in +the `onos-cli` repository, but their implementation is hosted and built here. + +The documentation about building and deploying the consolidated `onos` command-line client or its Docker container +is available in the `onos-cli` GitHub repository. + +## Usage +```bash +> onos config --help +ONOS configuration subsystem commands + +Usage: + onos config [command] + +Available Commands: + config Manage the CLI configuration + get Get config resources + log logging api commands + rollback Rolls-back a transaction + watch Watch for updates to a config resource type + +Flags: + --auth-header string Auth header in the form 'Bearer ' + -h, --help help for config + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "onos-config:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key + +Use "onos config [command] --help" for more information about a command. +``` + +### Global Flags +Since the `onos` command is a client, it requires the address of the server as well +as the paths to the key and the certificate to establish secure connection to the +server. + +These options are global to all commands and can be persisted to avoid having to +specify them for each command. For example, you can set the default server address +as follows: +```bash +> onos config config set address onos-config-server:5150 +``` + +Subsequent usages of the `onos` command can then abstain from using the `--address` +option to indicate the server address, resulting in easier usage. + +## Example Commands + +### Listing of configuration model plugins +A configuration model plugin is a sidecar container that runs in the same pod as `onos-config`. +Each plugin represents a complete set of YANG models supported by a particular device type. +Each plugin has a name (sometimes referred to as type) and a version. + +To see the list of currently loaded plugins use the command: +```bash +> onos config get plugins +ID STATUS ENDPOINT INFO.NAME INFO.VERSION ERROR +testdevice-2.0.0 Loaded localhost:5154 testdevice 2.0.0 +devicesim-1.0.0 Loaded localhost:5152 devicesim 1.0.0 +testdevice-1.0.0 Loaded localhost:5153 testdevice 1.0.0 +``` +See more information on building and deploying configuration model plugins in `config-models` repository. + +### List configuration transactions +Configuration changes made through the `onos-config` gNMI interface are represented as _transactions_. To view the list +of these transactions use the following command: +```shell +> onos config get transactions +ID INDEX STATUS.STATE TRANSACTIONTYPE CREATED UPDATED DELETED USERNAME TRANSACTIONSTRATEGY.ISOLATION TRANSACTIONSTRATEGY.SYNCHRONICITY +uuid:1865ad96-6159-4050-b9cf-7d1f7ece54c4 1 APPLIED Change 2022-02-23 17:18:21.8499168 +0000 UTC 2022-02-23 17:18:22.0512956 +0000 UTC DEFAULT SYNCHRONOUS +uuid:9acdbe9e-f8c3-4797-b77e-d4a324270564 2 APPLIED Change 2022-02-23 17:19:07.1359094 +0000 UTC 2022-02-23 17:19:07.4341523 +0000 UTC DEFAULT SYNCHRONOUS +uuid:745d9944-49aa-441f-8394-ad2e4ad70543 3 APPLIED Change 2022-02-23 17:19:37.6194301 +0000 UTC 2022-02-23 17:20:16.6840849 +0000 UTC DEFAULT ASYNCHRONOUS +uuid:e7df0125-3cca-4fab-a002-04ee3a67ef99 4 APPLIED Change 2022-02-23 17:20:31.5019776 +0000 UTC 2022-02-23 17:20:31.6836693 +0000 UTC DEFAULT SYNCHRONOUS +uuid:63bcdfd8-b9bc-4cfa-a20d-93159cd384f5 5 APPLIED Rollback 2022-02-23 17:20:31.7456597 +0000 UTC 2022-02-23 17:20:31.9213865 +0000 UTC DEFAULT SYNCHRONOUS +uuid:8edb7b9d-4571-4fac-9f4c-d876c0d4cafe 6 APPLIED Change 2022-02-23 17:20:46.6952989 +0000 UTC 2022-02-23 17:20:46.8966023 +0000 UTC DEFAULT SYNCHRONOUS +uuid:734cfad1-9154-42c3-9e73-d6bec1101267 7 APPLIED Change 2022-02-23 17:20:46.9112378 +0000 UTC 2022-02-23 17:20:47.0962395 +0000 UTC DEFAULT SYNCHRONOUS +uuid:095a064a-7f37-457a-933d-b991029127da 8 APPLIED Change 2022-02-23 17:21:02.2661133 +0000 UTC 2022-02-23 17:21:02.4532263 +0000 UTC DEFAULT SYNCHRONOUS +``` + +To continuously monitor the transaction events, you can use a similar command `onos config watch transactions`. + +### Rollback Network Change +To rollback the most recent transaction, and revert the configuration of all targets involved in that transaction to their +prior state, use the `rollback` command and specify the `Index` of the most recent transaction. +```bash +> onos config rollback 8 +``` + +### Listing target configurations +To list the status of all configurable targets use the following command: +```onos config get configurations +ID TARGETID STATUS.STATE INDEX +square-stingray square-stingray SYNCHRONIZED 39 +fond-bulldog fond-bulldog SYNCHRONIZED 47 +reincarnated-target reincarnated-target SYNCHRONIZED 3 +guiding-whale guiding-whale SYNCHRONIZED 0 +expert-tortoise expert-tortoise SYNCHRONIZED 33 +gentle-polliwog gentle-polliwog SYNCHRONIZED 44 +new-bull new-bull SYNCHRONIZED 1 +``` + +Similarly, to continuously monitor ongoing changes to configurations, you can use the `onos config watch configurations`. + +To get details on the current configuration for a specific target, use: +```onos config get configuration square-stingray -v +ID TARGETID STATUS.STATE INDEX VALUES +square-stingray square-stingray SYNCHRONIZED 39 map[/system/config/login-banner:path:"/system/config/login-banner" value: /system/config/motd-banner:path:"/system/config/motd-banner" value: ] +``` diff --git a/onos-config/docs/deployment.md b/onos-config/docs/deployment.md new file mode 100644 index 0000000..3379552 --- /dev/null +++ b/onos-config/docs/deployment.md @@ -0,0 +1,189 @@ + + +# Deploying onos-config + +This guide deploy `onos-config` through it's [Helm] chart assumes you have a [Kubernetes] cluster running +with an atomix controller deployed in a namespace. +`onos-config` Helm chart is based on Helm 3.0 version, with no need for the Tiller pod to be present. +If you don't have a cluster running and want to try on your local machine please follow first +the [Kubernetes] setup steps outlined to [deploy with Helm](https://docs.onosproject.org/developers/deploy_with_helm/). +The following steps assume you have the setup outlined in that page, including the `micro-onos` namespace configured. + +## Installing the Chart + +To install the chart in the `micro-onos` namespace run from the root directory of the `onos-helm-charts` repo the command: +```bash +helm install -n micro-onos onos-config onos-config +``` +The output should be: +```bash +NAME: onos-config +LAST DEPLOYED: Tue Nov 26 13:38:20 2019 +NAMESPACE: default +STATUS: deployed +REVISION: 1 +TEST SUITE: None +``` + +`helm install` assigns a unique name to the chart and displays all the k8s resources that were +created by it. To list the charts that are installed and view their statuses, run `helm ls`: + +```bash +helm ls +NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE +... +jumpy-tortoise 1 Tue May 14 18:56:39 2019 DEPLOYED onos-config-0.0.1 0.0.1 default +``` + +### Onos Config Deployment + +```bash +NAME READY STATUS RESTARTS AGE +atomix-controller-6bb9555f48-6qckx 1/1 Running 0 18h +device-simulator-597559fdd4-s6z8w 1/1 Running 0 14h +onos-cli-5ffc6748cc-zfm74 1/1 Running 0 18h +onos-config-85d6bd66b4-jmjnx 5/5 Running 0 18h +onos-config-consensus-1-0 1/1 Running 0 18h +onos-gui-6f849cc8f5-mth2s 2/2 Running 0 18h +onos-topo-757855bcf-z7vwn 1/1 Running 0 18h +onos-topo-consensus-1-0 1/1 Running 0 18h +``` + +> `onos-config` is dependent on the `onos-topo` service which has been started here +> through its own Helm chart. Also a `device-simulator` has been started - it +> supports the gNMI interface and is configured with the **Devicesim-1.0.0** model +> +> Note here that `onos-config` is showing 5 containers in the pod - 1 for `onos-config` +> itself and 4 model plugins have been loaded. In addition another pod "consensus" +> is running to connect to the "atomix-controller". + +One can customize the number of partitions and replicas by modifying, in `values.yaml` +the values of: +```bash +store.consensus.partitions: 1 +store.consensus.backend.replicas: 1 +``` + +### Installing the chart in a different namespace. + +Issue the `helm install` command substituting `micro-onos` with your namespace. +```bash +helm install -n onos-config onos-config +``` +### Installing the chart with debug. +`onos-config` offers the capability to open a debug port (4000) to the image. +To enable the debug capabilities please set the debug flag to true in `values.yaml` or pass it to `helm install` +```bash +helm install -n micro-onos onos-config onos-config --set debug=true +``` + +### Troubleshoot + +If your chart does not install or the pod is not running for some reason and/or you modified values Helm offers two flags to help you +debug your chart: + +* `--dry-run` check the chart without actually installing the pod. +* `--debug` prints out more information about your chart + +```bash +helm install -n micro-onos onos-config --debug --dry-run onos-topo +``` +Also to verify how template values are expanded, run: +```bash +helm install template onos-config +``` + +## Uninstalling the chart + +To remove the `onos-config` pod issue +```bash + helm delete -n micro-onos onos-config +``` + +## Including configuration model plugins +To include specific configuration model plugins as part of the `onos-config` pod, +list their names, their image name and the desired gRPC port in the `modelPlugins` +section of the `values.yaml` file of the `onos-config` chart. See below: + +```yaml +modelPlugins: + - name: devicesim-1 + image: onosproject/devicesim:0.5.5-devicesim-1.0.0 + endpoint: localhost + port: 5152 + - name: testdevice-1 + image: onosproject/testdevice:0.5.5-testdevice-1.0.0 + endpoint: localhost + port: 5153 + - name: testdevice-2 + image: onosproject/testdevice:0.5.5-testdevice-2.0.0 + endpoint: localhost + port: 5154 +``` +This value map will be processed during deployment time and will start each given +model plugin as a sidecar in the `onos-config` pod, with the appropriate gRPC port number. + +## Pod Information + +To view the pods that are deployed, run `kubectl -n micro-onos get pods`: + +```bash +> kubectl -n micro-onos get pods +NAME READY STATUS RESTARTS AGE +... +onos-config-655964cbf5-tkcfb 1/1 Running 0 52s +``` + +You can view more detailed information about the pod and other resources by running `kubectl describe`: + +```bash +> kubectl -n micro-onos describe pod onos-config-655964cbf5-tkcfb +Name: onos-config-655964cbf5-tkcfb +Namespace: default +Priority: 0 +PriorityClassName: +Node: minikube/10.0.2.15 +Start Time: Tue, 14 May 2019 18:56:39 -0700 +... +``` + +The onos-config pods are reached through a `Service` which load balances requests to the application. +To view the services, run `kubectl get services`: + +```bash +> kubectl -n micro-onos get svc +NAME DATA AGE +... +onos-config-config 5 86s +``` + +The application's configuration is stored in a `ConfigMap` which can be viewed by running +`kubectl get configmaps`: +```bash +> kubectl -n micro-onos get cm +NAME DATA AGE +... +onos-config-config 5 97s +``` + +And TLS keys and certs are stored in a `Secret` resource: + +```bash +> kubectl -n micro-onos get secrets +NAME TYPE DATA AGE +... +onos-config-secret Opaque 4 109s +``` + +[Brew]: https://brew.sh/ +[Helm]: https://helm.sh/ +[Kubernetes]: https://kubernetes.io/ +[k8s]: https://kubernetes.io/ +[kind]: https://kind.sigs.k8s.io +[NGINX]: https://www.nginx.com/ +[ingress]: https://kubernetes.io/docs/concepts/services-networking/ingress/ + diff --git a/onos-config/docs/gnmi.md b/onos-config/docs/gnmi.md new file mode 100644 index 0000000..96c5321 --- /dev/null +++ b/onos-config/docs/gnmi.md @@ -0,0 +1,308 @@ + + +# Northbound gNMI service +The system provides a Northbound gNMI service. gNMI is a specialization of gRPC, +specifically for configuration of systems or devices. In `onos-config` the gNMI +interface is secured through TLS, and is made available on port **5150**. + +gNMI extensions supported on the Northbound are described in [gnmi_extensions.md](./gnmi_extensions.md) + +## gnmi_cli utility +A simple way to issue a gNMI requests is to use the `gnmi_cli` utility from +the [OpenConfig](https://github.com/openconfig/gnmi) project. + +> A special version of this tool that can connect over a plain connection is available +> with `go get github.com/onosproject/onos-cli/cmd/gnmi_cli`. This version gives +> the extra `-encodingType` (`-en`) and `-tlsDisabled` (`-tls`) options. + +More instructions including all the examples below can be found in +[gnmi_cli tool examples](https://github.com/onosproject/onos-config/tree/master/gnmi_cli). + +### gnmi_cli utility through onos-cli +> On a deployed cluster the onos-cli pod has this gNMI client installed. + +You can run the following command to get in to the **onos-cli** pod and then run gnmi_cli from there: + +```bash +kubectl -n micro-onos exec -it deployment/onos-cli -- /bin/bash +``` + +### Accessing from local machine +An alternative is to install on your system, install as follows: +```bash +go get -u github.com/onosproject/onos-cli/cmd/gnmi_cli +``` + +Then you can use k8s port forwarding to run gnmi_cli locally on your machine as follows: + +```bash +kubectl port-forward -n 5150:5150 +``` + +> For troubleshooting information see [gnmi_user_manual.md](https://github.com/onosproject/gnxi-simulators/blob/master/docs/gnmi/gnmi_user_manual.md) + +## Namespaces +__onos-config__ follows the YGOT project in simplification by not using namespaces in paths. This can be achieved +because the YANG models used do not have clashing device names that need to be qualified by namespaces. +This helps developers, avoiding un-needed complication and redundancy. + +## Capabilities +For example use `gnmi_cli -capabilities` to get the capabilities from the system. + +```bash +gnmi_cli -capabilities --address=onos-config:5150 \ + -timeout 5s -insecure \ + -client_crt /etc/ssl/certs/client1.crt -client_key /etc/ssl/certs/client1.key -ca_crt /etc/ssl/certs/onfca.crt +``` + +The Encodings supported are `JSON`, `JSON_IETF`, and `PROTO`. + +> This returns the aggregate of all of the model plugins and their versions +> that have been loaded. +> +> Here the certificate locations are inside the `onos-cli` pod. +> If the CA does not exactly match the cert inside `onos-config` and the hostname +> of the server does not match the cert it is necessary to use the `-insecure` +> flag. Encryption is still used in this case. + +## Northbound Set Request via gNMI +To make a gNMI Set request, use the `gnmi_cli -set` command as in the example below: + +> Since the onos-config data store is empty by default, the Set examples are shown +> before the Get examples (below). +> +> By default `onos-config` does not have any targets - it gets these from `onos-topo`. +> See [onos-topo](https://docs.onosproject.org/onos-topo/docs/cli/) +> for how to create a `devicesim-1` target on the system, prior to the `Set` below. + +[gnmi](https://github.com/onosproject/onos-config/tree/master/gnmi_cli/set.timezone.gnmi) +```bash +gnmi_cli -address onos-config:5150 -set \ + -proto "update: elem: elem: elem: > val: >" \ + -timeout 5s -en PROTO -alsologtostderr -insecure \ + -client_crt /etc/ssl/certs/client1.crt -client_key /etc/ssl/certs/client1.key -ca_crt /etc/ssl/certs/onfca.crt +``` +giving a response like +```bash +response: < + path: < + elem: < + name: "system" + > + elem: < + name: "clock" + > + elem: < + name: "config" + > + elem: < + name: "timezone-name" + > + target: "devicesim-1" + > + op: UPDATE +> +timestamp: 1684667662 +extension: < + registered_ext: < + id: 110 + msg: "\n)uuid:5da2396a-10c3-40d6-a841-007beabd1f4f\020\003" + > +> +``` + +> The result will include a field as a gNMI SetResponse extension 110 +> giving randomly generated Network Change identifier. + +### Open Config models e.g. devicesim 1.0.x + +Adding an "eth2" to each of the device + +> There is a quirk with the OpenConfig models (e.g. for Stratum and Devicesim), +> where the name of the interface is a [leaf ref](https://github.com/openconfig/public/blob/e3c0374ce6aa9d1230ea31a5f0f9a739ed0db308/release/models/interfaces/openconfig-interfaces.yang#L164) +> to a name attribute beneath it. This means that an interface cannot be created +> without specifying the config/name attribute at the same time (as above). Otherwise +> error `rpc error: code = InvalidArgument desc = pointed-to value with path ../config/name from field Name value eth2 (string ptr) schema /device/interfaces/interface/name is empty set` +> will occur. + +[gnmi](https://github.com/onosproject/onos-config/tree/master/gnmi_cli/set.eth2.gnmi) +```bash +gnmi_cli -address onos-config:5150 -set \ + -proto "update: elem: > elem: elem: > val: >" \ + -timeout 5s -alsologtostderr -insecure \ + -client_crt /etc/ssl/certs/client1.crt \ + -client_key /etc/ssl/certs/client1.key \ + -ca_crt /etc/ssl/certs/onfca.crt +``` + +## Northbound gNMI Get Request +__onos-config__ extends standard gNMI as a method of accessing a complete +configuration system consisting of *several* devices - each identified by _target_. + +The gNMI Northbound interface is available through https on port 5150. + +> As described in [Key Concepts](run.md), even if the `device-simulator` is connected +> the configuration in `onos-config` will be empty as no initial synchronization +> is done. A Set operation is necessary before a Get will show any results. + +### A simple Get operation +Use `gnmi_cli -get` to get configuration for a particular device (target) from the system. +> Use "target" as the identifier of the device, and the "elem" collection is the path to the requested element. +> If config from several devices are required, several paths can be added + +[gnmi](https://github.com/onosproject/onos-config/tree/master/gnmi_cli/get.timezone.gnmi) +```bash +gnmi_cli -get -address onos-config:5150 \ + -proto "path: elem: elem: elem: >" \ + -timeout 5s -en PROTO -alsologtostderr -insecure \ + -client_crt /etc/ssl/certs/client1.crt -client_key /etc/ssl/certs/client1.key -ca_crt /etc/ssl/certs/onfca.crt +``` + +### List all device names (targets) +A useful way to retrieve all stored device names is with the command: + +[gnmi](https://github.com/onosproject/onos-config/tree/master/gnmi_cli/get.alldevices.gnmi) +```bash +gnmi_cli -get -address onos-config:5150 \ + -proto "path: " \ + -timeout 5s -en PROTO -alsologtostderr -insecure \ + -client_crt /etc/ssl/certs/client1.crt -client_key /etc/ssl/certs/client1.key -ca_crt /etc/ssl/certs/onfca.crt +``` + +Here the encoding requested was `PROTO` which will return the values in a Lef List. +Alternatively `JSON` could have been used, which will give a JSON payload in a JSON_Val. + +### List complete configuration for a device (target) + +[gnmi](https://github.com/onosproject/onos-config/tree/master/gnmi_cli/get.devicesim1.gnmi) +```bash +gnmi_cli -get -address onos-config:5150 \ + -proto "path: " \ + -timeout 5s -en PROTO -alsologtostderr -insecure \ + -client_crt /etc/ssl/certs/client1.crt -client_key /etc/ssl/certs/client1.key -ca_crt /etc/ssl/certs/onfca.crt +``` +> Here all `elem` components are omitted, which is like requesting '/'. + +### Get a keyed index in a list +Use a proto value like: + +[gnmi](https://github.com/onosproject/onos-config/tree/master/gnmi_cli/get.connections.gnmi) +``` +-proto "path: + elem: elem: + elem: > + elem: elem: > + elem: elem: >" +``` + +### Use wildcards in a path +`onos-config` supports the wildcards `*` and `...` in gNMI paths, meaning match +one item of match all items respectively as defined in the gNMI +[specification](https://github.com/openconfig/reference/blob/master/rpc/gnmi/gnmi-path-conventions.md#wildcards-in-paths). + +For instance to retrieve all instances of an interface use `*` as the key: + +[gnmi](https://github.com/onosproject/onos-config/tree/master/gnmi_cli/get.interfaceswc.gnmi) +```bash +gnmi_cli -get -address onos-config:5150 \ + -proto "path: elem: > elem: elem:>" \ + -timeout 5s -en PROTO -alsologtostderr -insecure \ + -client_crt /etc/ssl/certs/client1.crt -client_key /etc/ssl/certs/client1.key -ca_crt /etc/ssl/certs/onfca.crt +``` +> This returns the `enabled` config attribute of both interfaces 'eth1' and 'admin' + +To retrieve both the config and state values of both then additionally the use +`*` in place of `config`: + +[gnmi](https://github.com/onosproject/onos-config/tree/master/gnmi_cli/get.interfaceswc2.gnmi) +```bash +gnmi_cli -get -address onos-config:5150 \ + -proto "path: elem: > elem: elem:>" \ + -timeout 5s -en PROTO -alsologtostderr -insecure \ + -client_crt /etc/ssl/certs/client1.crt -client_key /etc/ssl/certs/client1.key -ca_crt /etc/ssl/certs/onfca.crt +``` +> If the device is connected and the OperationState cache is populated this returns +> 4 values - `eth1` config and state enabled values and `admin` config and +> state enabled values. + +### Device read only state get +To retrieve state attributes (those defined in YANG with `config false`, non-configurable +leafs), in general there is no difference with a normal gNMI Get request. + +There is however a `type` qualifier **STATE** in gNMI Get, that allows only +**STATE** values to be requested (excluding any **CONFIG** attributes. For example +to retrieve all the `STATE` values from `devicesim-1`: + +[gnmi](https://github.com/onosproject/onos-config/tree/master/gnmi_cli/get.state.gnmi) +```bash +gnmi_cli -get -address onos-config:5150 \ + -proto "path: , type: STATE" \ + -timeout 5s -en PROTO -alsologtostderr -insecure \ + -client_crt /etc/ssl/certs/client1.crt -client_key /etc/ssl/certs/client1.key -ca_crt /etc/ssl/certs/onfca.crt +``` + +> The set of possible values for type are: `ALL`, `STATE`, `CONFIG` and `OPERATIONAL`. +> If not specified `ALL` is the default `type`. +> In onos-config there is no distinction made between `STATE` and `OPERATIONAL` +> and requesting either will get both. +> This `type` can be combined with any other proto qualifier like `elem` and `prefix` + +## Northbound Delete Request via gNMI +A delete request in gNMI is done using the set request with `delete` paths instead of `update` or `replace`. +To make a gNMI Set request do delete a path, use the `gnmi_cli -set` command as in the example below: + +[gnmi](https://github.com/onosproject/onos-config/tree/master/gnmi_cli/delete.timezone.gnmi) +```bash +gnmi_cli -address onos-config:5150 -set \ + -proto "delete: elem: elem: elem: >" \ + -timeout 5s -en PROTO -alsologtostderr -insecure \ + -client_crt /etc/ssl/certs/client1.crt -client_key /etc/ssl/certs/client1.key -ca_crt /etc/ssl/certs/onfca.crt +``` + +## Northbound Subscribe Request for Stream Notifications via gNMI +Similarly, to make a gNMI Subscribe request for streaming, use the `gnmi_cli` command as in the example below, +please note the `0` as subscription mode to indicate streaming: + +[gnmi](https://github.com/onosproject/onos-config/tree/master/gnmi_cli/subscribe.mode0.gnmi) +```bash +gnmi_cli -address onos-config:5150 \ + -proto "subscribe:, subscription: elem: elem: elem: >>>" \ + -timeout 5s -en PROTO -alsologtostderr -insecure \ + -client_crt /etc/ssl/certs/client1.crt -client_key /etc/ssl/certs/client1.key -ca_crt /etc/ssl/certs/onfca.crt +``` + +> This command will block until there is a change at the requested value that gets +> propagated to the underlying stream. Also as per `gnmi_cli` behaviour the updates get printed twice. + +## Northbound Subscribe Once Request via gNMI +Similarly, to make a gNMI Subscribe Once request, use the `gnmi_cli` command as in the example below, +please note the `1` as subscription mode to indicate to send the response once: + +[gnmi](https://github.com/onosproject/onos-config/tree/master/gnmi_cli/subscribe.mode1.gnmi) +```bash +gnmi_cli -address onos-config:5150 \ + -proto "subscribe:, subscription: elem: elem: elem: >>>" \ + -timeout 5s -en PROTO -alsologtostderr -insecure \ + -client_crt /etc/ssl/certs/client1.crt -client_key /etc/ssl/certs/client1.key -ca_crt /etc/ssl/certs/onfca.crt +``` + +> This command will fail if no value is set at that specific path. This is due to limitations of the gnmi_cli. + +## Northbound Subscribe Poll Request via gNMI +Similarly, to make a gNMI Subscribe POLL request, use the `gnmi_cli` command as in the example below, +please note the `2` as subscription mode to indicate to send the response in a polling way every `polling_interval` +specified seconds: + +[gnmi](https://github.com/onosproject/onos-config/tree/master/gnmi_cli/subscribe.mode2.gnmi) +```bash +gnmi_cli -address onos-config:5150 -polling_interval 5s \ + -proto "subscribe:, subscription: elem: elem: elem: >>>" \ + -timeout 5s -en PROTO -alsologtostderr -insecure \ + -client_crt /etc/ssl/certs/client1.crt -client_key /etc/ssl/certs/client1.key -ca_crt /etc/ssl/certs/onfca.crt +``` +> This command will fail if no value is set at that specific path. This is due to limitations of the gnmi_cli. diff --git a/onos-config/docs/gnmi_extensions.md b/onos-config/docs/gnmi_extensions.md new file mode 100644 index 0000000..2b78da6 --- /dev/null +++ b/onos-config/docs/gnmi_extensions.md @@ -0,0 +1,111 @@ + + +# gNMI extensions on the Northbound interface + +gNMI is designed primarily as a device management interface, and augmenting it +with the extra functionality to do network wide configuration management +across many devices requires some extension. + +## Use of target in the NBI +In gNMI the Path type is comprised of a set of path elements and a `target`. +In the onos-config NBI this target represents the `name of the device` as it +is held in the configuration system. Configurations can be explored through the +onos cli like: +```bash +> onos config get configs +Device2-2.0.0 (Device2) 2.0.0 TestDevice 2019-05-09T18:00:00+01:00 + oOqIgEg82ZvVcF7Q3xEDpWAoPcw= +stratum-sim-1-1.0.0 (stratum-sim-1) 1.0.0 Stratum 2019-06-05T11:03:17+01:00 + hPE88W6rrt5TskCTxtoB1n0hr3I= +... +``` +> In the example above `stratum-sim-1` is the device associated with the +> configuration `stratum-sim-1-1.0.0`. + +Therefore when using a gNMI client like gnmi_cli (see [gnmi.md](./gnmi.md)) the +target can be specified like +```bash +gnmi_cli -get -address localhost:5150 \ + -proto "path: elem: elem: >" \ +... +``` + +The following rules apply when a _prefix_ is present in the request: + +* The target in the prefix always takes precedence over any others +* If no target is given in the prefix it is an error + +### Special case to get all device names +When doing a GetRequest if `*` is given as a `target` then the request returns a simple listing of all device names present in the system (with their version). Any path elements are ignored in this special case. + + +## Managing configuration objects +The diagram shows the internal storage structures of onos-config (in orange). The +Configuration object represents the complete configuration for a particular +version of a device. + +Network changes can be applied across multiple Configurations (devices), and have +the ability to be rolled back (by the name of the Network Change). + +![onos-config internals](images/onos-config-internals.png) + +3 different extensions have been chosen in the project to make dealing with Network +Changes and Configurations through gNMI possible. + +### Use of Extension 100 (network change name) in SetRequest and SetResponse +In onos-config the gNMI extension number 100 has been reserved for the +`network change name`. + +#### SetRequest +In the SetRequest extension 100 can be used to define a name for the Network +change. If it is not specified then a name is picked automatically. +> There is an example of setting this extension when using gnmi_cli in +[gnmi.md](gnmi.md) (Northbound Set Request via gNMI) + +#### SetResponse +In the SetResponse the name of the Network Change will always be given in +extension 100 (either the given name or the generated one). +>There is an example of the return of this extension through `gnmi_cli` in +[gnmi.md](gnmi.md) (Northbound Set Request via gNMI) + +### Use of Extension 101 (device version) in SetRequest +Extension 101 is used to set the Model version for a Configuration (as part of a +Network Change). There may be multiple different configurations for a device based +on version number. This extension allows the correct version of the configuration +to be chosen. + +If a version is given where no existing Configuration exists, an error is +returned explaining that device type (extension 102 - see below) should also be +specified. + +If no extension 101 (version) is given, and only one Configuration already exists +for that device (target), then the change is applied to that Configuration. + +### Use of Extension 102 (device type) in SetRequest +The target in the SetRequest contains the device name, but this is not enough to +create a new Configuration if one does not exist - 3 pieces of information are +required - the device name, the device type and the version (see diagram above). + +Extension 102 is used to set the `device type`. If a Configuration already exists +for this device name and version and its device type is different to what's +given in extension 101, then an error is returned. + +### Use of Extension 103 (list of devices disconnected) in GetResponse, SetResponse, SubscribeResponse +In onos-config the gNMI extension number 103 has been reserved for the +`list of devices disconnected`. The changes and device configuration is still valid and held +by onos-config until the device arrives in the network. + +#### GetResponse and SetResponse +In the GetResponse and GetRequest the `103` extension has an attached message containing a comma separated +list of devices, e.g `device1,device2,device3` signaling which devices in the request are not +yet connected to onos-config. + +#### SubscribeResponse +In the SubscribeResponse the `103` extension has an attached message containing a single device, +e.g `device1` signaling that the device in the request is not yet connected to onos-config but +a configuration object has been changed. in Subscribe there is one device per response since it's +a 1:1 relationship path to update, where the path include one device. diff --git a/onos-config/docs/images/contributing_workflow.png b/onos-config/docs/images/contributing_workflow.png new file mode 100644 index 0000000..7e73bc1 Binary files /dev/null and b/onos-config/docs/images/contributing_workflow.png differ diff --git a/onos-config/docs/images/design.png b/onos-config/docs/images/design.png new file mode 100644 index 0000000..31e11e6 Binary files /dev/null and b/onos-config/docs/images/design.png differ diff --git a/onos-config/docs/images/goland_debug_connect.gif b/onos-config/docs/images/goland_debug_connect.gif new file mode 100644 index 0000000..e798a61 Binary files /dev/null and b/onos-config/docs/images/goland_debug_connect.gif differ diff --git a/onos-config/docs/images/goland_debug_set_breakpoints.gif b/onos-config/docs/images/goland_debug_set_breakpoints.gif new file mode 100644 index 0000000..399cf94 Binary files /dev/null and b/onos-config/docs/images/goland_debug_set_breakpoints.gif differ diff --git a/onos-config/docs/images/goland_debug_set_tracepoints.gif b/onos-config/docs/images/goland_debug_set_tracepoints.gif new file mode 100644 index 0000000..c9ee221 Binary files /dev/null and b/onos-config/docs/images/goland_debug_set_tracepoints.gif differ diff --git a/onos-config/docs/images/goland_ide_remote_debug.gif b/onos-config/docs/images/goland_ide_remote_debug.gif new file mode 100644 index 0000000..0e3c4b2 Binary files /dev/null and b/onos-config/docs/images/goland_ide_remote_debug.gif differ diff --git a/onos-config/docs/images/goland_log_and_evaluate.gif b/onos-config/docs/images/goland_log_and_evaluate.gif new file mode 100644 index 0000000..a45d701 Binary files /dev/null and b/onos-config/docs/images/goland_log_and_evaluate.gif differ diff --git a/onos-config/docs/images/onos-config-internals.png b/onos-config/docs/images/onos-config-internals.png new file mode 100644 index 0000000..7477551 Binary files /dev/null and b/onos-config/docs/images/onos-config-internals.png differ diff --git a/onos-config/docs/ingress.md b/onos-config/docs/ingress.md new file mode 100644 index 0000000..08c6af8 --- /dev/null +++ b/onos-config/docs/ingress.md @@ -0,0 +1,69 @@ + + +# Ingress for onos-config + +--- +**NOTE** + +This file has to be revisited, please have no expectation of correctness. + +--- + +In the `onos-config` helm chart you can optionally enable [ingress] by overriding `ingress.enabled`. Note that you +must have an ingress controller installed/enabled as described above: + +```bash +> helm install \ + -n onos-config \ + --set ingress.enabled=true \ + deployments/helm/onos-config +``` + +By default, the ingress controller uses the self-signed certificates that ship with the +chart to provide end-to-end routing, load balancing, and encryption, making the onos-config +services accessible from outside the k8s cluster. The default certificates expect the +service to be reached through the `config.onosproject.org` domain. Thus, to connect +to the service through the ingress, you must configure `/etc/hosts` to point to the +load balancer's IP: + +```bash +192.168.99.102 config.onosproject.org +``` + +The IP address of the ingress may differ depending on the environment. In clustered environments, +the ingress IP is typically read from the `ingress` resource: + +```bash +> kubectl get ingress +NAME HOSTS ADDRESS PORTS AGE +onos-config-onos-config-ingress config.onosproject.org 10.0.2.15 80, 443 76m +``` + +However, since Minikube runs in a VM, the ingress must be reached through the Minikube VM's IP +which can be found via the `minikube ip` command: + +```bash +LBIP=$(minikube ip) +``` + +In clustered environments, the ingress IP can be retrieved from the ingress +metadata: + +```bash +> kubectl get ingress +NAME HOSTS ADDRESS PORTS AGE +onos-config-onos-config-ingress config.onosproject.org 10.0.2.15 80, 443 76m +``` + +Once you've located the ingress IP address and configured `/etc/hosts`, you can connect to +the onos-config service via the ingress load balancer: + +```bash +> onos config --address=config.onosproject.org:443 get changes +``` + +[ingress]: https://kubernetes.io/docs/concepts/services-networking/ingress/ \ No newline at end of file diff --git a/onos-config/docs/license_goland.md b/onos-config/docs/license_goland.md new file mode 100644 index 0000000..eb1b00e --- /dev/null +++ b/onos-config/docs/license_goland.md @@ -0,0 +1,27 @@ + + +# GoLand Copyright Profile Setup + +GoLand IDE can be configured to automatically include the required Apache 2.0 license text in +Go source files. Steps to do this are shown below: + +* Open `Preferences` window +* Select `Editor->Copyright->Copyright Profiles` +* Click the `plus` icon +* Name the new profie `onos` +* Cut and paste the text from [here](./license_goland.txt) into the copyright field +* Click `Apply` +* Open `Formatting` then `Go` +* Click check box for `Use Custom Formatting Options` +* Click checkbox `Use Line Comment` +* Click `Apply` + +Once the new copyright profile is created, it needs to be applied to the project: + +* Select `Editor->Copyright` +* Choose `onos` in the `Default Project Copyright` drop-down list +* Click `OK` \ No newline at end of file diff --git a/onos-config/docs/license_goland.txt b/onos-config/docs/license_goland.txt new file mode 100644 index 0000000..fd03ea4 --- /dev/null +++ b/onos-config/docs/license_goland.txt @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: ${today.year}-present Open Networking Foundation +SPDX-License-Identifier: Apache-2.0 diff --git a/onos-config/docs/modelplugin.md b/onos-config/docs/modelplugin.md new file mode 100644 index 0000000..828ba33 --- /dev/null +++ b/onos-config/docs/modelplugin.md @@ -0,0 +1,155 @@ + + +# Extending onos-config with Configuration Model Plugins + +`onos-config` is an extensible configuration management system, that allows the +configuration of many types and versions of targets (devices) to be managed +concurrently. + +Information models in YANG format (RFC 6020) can be used to accurately define +the configuration and state objects and attributes of a device. In practice a +target's object model usually consists of a number of YANG files including +augments and deviations, all of which must be considered as a combined unit. + +In `onos-config` a set of these combined YANG files defining a particular +version of a target type is known as a **model**. + +Over its lifecycle onos-config will have to deal with different models as +its scope is expanded and as devices - and configurable targets in general - +go through their release cycles. To allow this, models are loadable as plugins in +the form of sidecar containers and are accessible to `onos-config` via a gRPC interface +that can be used to perform a number of model-specific tasks: + +* Retrieve target capabilities (model schema in form of configuration paths) +* Validate target JSON configuration (for adherence to the schema and any consistency rules) +* Extract path/type/value list from target JSON configuration + +## Model Compiler + +Plugins are built from a set of specified YANG files and a small `metadata.yaml` file, +using facilities of a `onosproject/model-compiler` docker image. This docker image utilizes +a number of off-the-shelf tools such as YGOT, pyang and automatically generates code and +a Makefile that can be used to build, assemble and publish the model plugin docker image. + +### Create your own Model Plugin +To build your own configuration model plugin, assemble all the required YANG files and place +them in the `yang/` directory located at the root of your project. Then, author a +small YAML file `metadata.yaml` at the root of the project. This file names the model, +specifies its version, names the Go package for the generated code and +identifies the root YANG files that should be passed to YGOT by the model compiler. +Here's an example: +```yaml +name: mymodel +version: 1.0.0 +artifactName: devicesim +goPackage: github.com/onosproject/config-models/models/mymodel +modules: + - name: openconfig-interfaces + organization: OpenConfig working group + revision: 2017-07-14 + file: openconfig-interfaces@2017-07-14.yang + - name: openconfig-openflow + organization: OpenConfig working group + revision: 2017-06-01 + file: openconfig-openflow@2017-06-01.yang + - name: openconfig-platform + organization: OpenConfig working group + revision: 2016-12-22 + file: openconfig-platform@2016-12-22.yang + - name: openconfig-system + organization: OpenConfig working group + revision: 2017-07-06 + file: openconfig-system@2017-07-06.yang +``` +Note that the `yang/` directory will also need to contain all YANG files being included/referenced +by any of the root modules. + +## Invoke the model compiler +Once the YANG files and metadata YAML file are ready invoke the model compiler as follows: +```shell +docker run -v $(pwd):/config-model onosproject/model-compiler:latest +``` + +Afterwards, to compile and assemble the configuration model docker image, simply run: +```shell +make image +``` + + +## Loading the Model Plugin + +## Model Plugins and gNMI Capabilities +### Capabilities on gNMI Northbound interface +The CapabilitiesResponse on the gNMI northound interface is generated dynamically +from the `modeldata` section of all of the loaded Model Plugins. + +### Capabilities comparison on Southbound gNMI interface +At runtime when devices are connected to onos-config the response to the +Capabilities request are compared with the +modeldata for their corresponding ModelPlugin - if there is not an exact +match a warning is displayed. + +## OpenConfig Models +Some devices that support OpenConfig Models report their capabilities using an +OpenConfig versioning scheme e.g. 0.5.0, rather than the YANG revision date in +the format 2017-07-06. If the device can correct its capabilities to give the +revision then it should to be more consistent with non OpenConfig YANG models. + +Accessing OpenConfig model of a specific revision requires a number of steps in +[Github](https://github.com/openconfig/public). + +For instance if a device reports it used openconfig-interfacess.yang `2.0.0`, +then to get this file do: + +* Browse to [openconfig-interfaces.yang](https://github.com/openconfig/public/blob/master/release/models/interfaces/openconfig-interfaces.yang) +* Observe in the list of `revision` items in the YANG file that the reference +`2.0.0` corresponds to a release date of `2017-07-14` +* Click in the `History` button +* In the `History` page for this file, see that the next commit after this +date was on `Aug 9, 2017` +* Click on the related `commit message` +* In the list of files modified in that commit click the `...` next to the file +`openconfig-interfacess.yang` and choose `View File` +* In the page that displays the historical version of the file, click the `Raw` button +* In the resulting raw display of the YANG file verify that the latest revision is `2017-07-14` +* Save the file locally as `openconfig-interfaces@2017-07-14.yang` + +All the files in the [yang](../modelplugin/yang) folder were downloaded in this +way. They are not strictly needed once `generated.go` has been created, but are +kept here for convenience, saving to have to run the procedure above if a change +was needed. + +> If the generator program reports that a dependency was required e.g. +`openconfig-inet-types.yang` then the version of this file with a date equal +to or before 2017-07-14 should be downloaded - it is `openconfig-inet-types@2017-07-14.yang` + +### Readonly paths in OpenConfig models +When an item in an Openconfig YANG file has "config false" it is effectively a +read-only attribute. Usually with OpenConfig read-only objects are interspersed +throughout the YANG model. + +To see a list of Read Only paths use the command: +```bash +> onos config get plugins -v +``` + +When the Model Plugin is loaded, setting of an attribute like `state/address` +should give an appropriate error + +```bash +> gnmi_cli -address onos-config:5150 -set \ + -proto "update: elem: elem: elem: > elem: elem: > elem: elem: > val: >" \ + -timeout 5s -en PROTO -alsologtostderr \ + -client_crt /etc/ssl/certs/client1.crt -client_key /etc/ssl/certs/client1.key -ca_crt /etc/ssl/certs/onfca.crt +``` +gives the error: +```bash +rpc error: code = InvalidArgument desc = update contains a change to a read only + path /system/openflow/controllers/controller[name=main]/connections/connection[aux-id=0]/state/address. Rejected +``` + +## Troubleshooting diff --git a/onos-config/docs/run.md b/onos-config/docs/run.md new file mode 100644 index 0000000..5f9b097 --- /dev/null +++ b/onos-config/docs/run.md @@ -0,0 +1,95 @@ + + +# Running onos-config + +## Key concepts +### Internal storage +Internally `onos-config` manages configuration through `NetworkChange`s and their +child objects `DeviceChange`s. These hold all of the history of configurations +in distributed Atomix stores. They can be accessed through the Admin and Diags gRPC interface. + +The gNMI interface northbound and southbound acts as a facade on top of these change objects. + +### Initial synchronization of devices +`onos-config` is assumed to be the **master** of the configuration for any devices +connected to it. For this reason `onos-config` never reads configuration from a +device. This means that when `onos-config` connects to a device the first time +it does **not** synchronize the device's configuration up in to `onos-config` - if +this is required it is recommended to do it through a service above `onos-config`. + +### Southbound interface +`onos-config` **only** supports a `gnmi` interface on the southbound to devices. +An adapter for connecting to NETCONF devices is [planned](https://github.com/onosproject/gnmi-netconf-adapter). +A model plugin containing the YANG models for the device, must be loaded in to +`onos-config` to allow configuration to happen. + +### State attributes +Corresponding to YANG definition of **config false** some attributes on a device +are read only. These will be read from the device on connection and held in a cache. +A subscription is created to these attributes on the device and is used to keep +the cache up to date. Subscriptions on the northbound gNMI can subscribe to the +cache updates. + +## Run with Helm charts +`onos-config` can only be run on a Kubernetes cluster through Helm Charts +as defined in the [deployment.md](deployment.md) page. + +## Loading Model Plugins +The model-plugin for your device can be built and loaded as outlined in the [modelplugin](modelplugin.md) guide. +> When running with Kubernetes these plugins are loaded as "sidecar" containers +at startup, as defined in the Helm Chart. + +To check the list of currently loaded plugins use: +```bash +> onos config get plugins +``` + +## Northbound gNMI service +The system provides a full implementation of the gNMI spec as a northbound service. + +> On a deployed cluster the onos-cli pod has a gNMI client tool **gnmi_cli** +> that can be used to format and send gNMI messages. + +You can run the following command to get in to the **onos-cli** pod and then run +`gnmi_cli` from there: + +```bash +kubectl -n onos exec -it $(kubectl -n onos get pods -l type=cli -o name) -- /bin/sh +``` + +Or you can use k8s port forwarding to run gnmi_cli locally on your machine as follows: + +```bash +kubectl port-forward -n 5150:5150 +``` + +For example use `gnmi_cli -capabilities` to get the capabilities from the system. + +```bash +> gnmi_cli -capabilities --address=onos-config:5150 \ + -timeout 5s -insecure \ + -client_crt /etc/ssl/certs/client1.crt -client_key /etc/ssl/certs/client1.key -ca_crt /etc/ssl/certs/onfca.crt +``` +[Full guide to the gNMI northbound endpoints](gnmi.md) + +## Administrative and Diagnostic Tools +The project provides enhanced northbound functionality though administrative and +diagnostic tools, which are integrated into the consolidated `onos` command. + +For example, to list all network changes submitted through the northbound gNMI interface run: +```bash +> onos config get network-changes +``` + +Or, run the following to list all changes submitted through the northbound gNMI +as they are tracked by the system broken-up into device specific batches: +```bash +> onos config get device-changes +``` + +You can read more comprehensive documentation of the various +[administrative and diagnostic commands](cli.md). diff --git a/onos-e2-sm/README.md b/onos-e2-sm/README.md new file mode 100644 index 0000000..c3b7675 --- /dev/null +++ b/onos-e2-sm/README.md @@ -0,0 +1,89 @@ + + +# onos-e2-sm +[O-RAN] defines the **E2 Service Models** in the form of "ASN.1" specifications. + +Each Service Model defines 5 top level objects: +1. **RAN Function Description** (from the E2Node, describes the supported actions and triggers) +1. **Event Trigger Defintion** (contained in a `RICSubscriptionRequest`, defines the conditions on which E2Node should send a `RICIndication`) +1. **Action Definition** (contained in a `RICSubscriptionRequest`, defines the actions on an E2Node) +1. **Indication Header** (contained in a `RICIndication`, describes general parameters of the source E2 Node) +1. **Indication Message** (contained in a `RICIndication`, describes specific parameters requested) + +## Implementation in SD-RAN +The `onos-e2-sm` project provides, for each of these Service Models: +* A Protobuf translation of these ASN.1 specifications e.g. [e2sm_kpm_ies.proto](servicemodels/e2sm_kpm/v1beta1/e2sm_kpm_ies.proto) +* Go code mapping between Protobuf and ASN.1 PER encoding + +The implementation can be accessed as either: +* a Go module e.g. `go get github.com/onosproject/onos-e2-sm/servicemodels/e2sm_kpm@v0.7.0` + (preferred for **xApps** who only need to access the Proto defintions) or +* as a Go **plugin** e.g. `e2sm_kpm.so.1.0.0` (allowing a loose coupling with `onos-e2t` and `ran-simulator`) + +> Since dynamically loaded modules in Go require being compiled in the code of the target they will plugin to, there +> are 2 versions of the plugin docker file produced `onosproject/service-model-docker-e2sm_kpm-1.0.0` +> and `onosproject/service-model-ransim-e2sm_kpm-1.0.0` + +> Third party vendors will be able to build their own Service Models and load them in to `onos-e2t` using the plugin method, +> and will be able to access the translated Protobuf in corresponding xApps + +### Key Performance Metrics (E2SM_KPM) +This is the first E2 Service Model to be handled by SD-RAN - it is for extracting statistics from the E2Node. + +Currently supported version is E2SM KPM v2.0.3. E2SM KPM v1 is partially implemented and not supported anymore. + +There is also an implementation of KPMv2 SM with Go-based APER library (produces APER bytes out of Protobuf). + + +### Native Interface (E2SM_NI) +While the Proto definitions have been created for this Service Model, the Go mapping code has not been implemented in SD-RAN yet. + +### RAN Control (E2SM_RC_PRE) +Pre-standard E2 Service model with PCI and Neighbor relation table information from E2 Nodes. + +There is also an implementation of RC-PRE SM with Go-based APER library. + +### Mobile HandOver (E2SM_MHO) +E2 Service model for handling Mobile HandOver use case. + +There is also an implementation of MHO SM with Go-based APER library. + +### RAN Slicing (E2SM_RSM) +E2 service model for handling RAN Slicing use case. It was implemented with Go-based APER library. + +## Development +Service models are created from the ASN1 models stored at: +https://github.com/onosproject/openairinterface5g/tree/develop-onf/openair2/RIC_AGENT/MESSAGES/ASN1/R01 + +From these: + +* Protobuf is generated with `asn1c -B` (requires the specially modified version of `asn1c` tool - [asn1c](https://github.com/onosproject/asn1c)) +* Go code is generated from this Protobuf as an interface/reusable layer e.g. [e2sm_kpm_ie.pb.go](servicemodels/e2sm_kpm/v1beta1/e2sm-kpm-ies/e2sm_kpm_ies.pb.go) +* C code is generated the version of the `asn1c` tool from the [O-RAN Software Community](https://gerrit.o-ran-sc.org/r/admin/repos/com/asn1c) + with `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` e.g. [E2SM-KPM-IndicationHeader.h](servicemodels/e2sm_kpm/kpmctypes/E2SM-KPM-IndicationHeader.h) +* Then glue code is generated by hand (at first) using `CGO` (wrapping the C code in Go) e.g. [E2SM-KPM-IndicationHeader.go](servicemodels/e2sm_kpm/kpmctypes/E2SM-KPM-IndicationHeader.go) + * It's also possible to use `protoc-gen-cgo`, a `protoc` plugin that prints CGo code out of Protobuf. Some hand tweaks are still needed to be done. + +> To generate the C code with the O-RAN Software Community version of the `asn1c` tool, +> it must be installed on your system with `sudo make install`. +> This is because it takes skeleton file from `/usr/local/share/asn1c` +> regardless of where it is run from. + +### The E2AP (E2 Application Protocol) is not a Service Model, and so is kept completely inside the `onos-e2t`, see [here](https://github.com/onosproject/onos-e2t/blob/master/api/e2ap/README.md). + +[O-RAN]: https://www.o-ran.org/ + +# FAQ +### - How to create your own SM? +[Here](docs/sm-howto.md) you can find a tutorial on how to create your own SM. + +### - What to do if an encoding/decoding error happens? +A comprehensive guide on how to deal with encoding/decoding errors could be found [here](docs/encoding_issues-howto.md). +It also describes the APER tags usage within the Protobuf. + +### - Is there any description of the error messages produced by the Go APER library? +Yes, a brief description of the most common error messages can be found [here](https://github.com/onosproject/onos-lib-go/blob/master/pkg/asn1/aper/error_list.md). \ No newline at end of file diff --git a/onos-e2-sm/docs/encoding_issues-howto.md b/onos-e2-sm/docs/encoding_issues-howto.md new file mode 100644 index 0000000..3e596d5 --- /dev/null +++ b/onos-e2-sm/docs/encoding_issues-howto.md @@ -0,0 +1,228 @@ + + +ASN.1 concepts are mapped to Protobuf to work with modern code tools and make the development of Service Models +(and various E2* interfaces) easier. [Go APER library](https://github.com/onosproject/onos-lib-go/tree/master/pkg/asn1/aper) +works with these Protobuf definitions to encode and decode information in APER format. It is a +[fork](https://github.com/free5gc/aper) of the free5gc project, which was significantly reworked and +enhanced to work with protobuf driven Go structs, rather than plain Go structs. + + +# How to deal with encoding/decoding problems? +When you integrate your SW with ONF’s RIC you may face some issues related to the encoding/decoding of the information +sent over the wire. Here is a summary of potential problems you may face. + +### Incompatibility of APER encodings is the most common issue. +APER encoding is specified in [ITU-T X.691](https://www.itu.int/ITU-T/studygroups/com17/languages/X.691-0207.pdf) and may seem to be a bit vague. +In O-RAN, encoding/decoding schema is generated with asn1c tool, which generates a C code. Reference asn1c tool recommended by O-RAN is +Nokia’s distribution of [asn1c](https://github.com/nokia/asn1c). + +[Go APER library](https://github.com/onosproject/onos-lib-go/tree/master/pkg/asn1/aper) is fully compatible with Nokia’s +asn1c tool (and thus **compliant with O-RAN**). It was proven with unit tests for [E2AP](https://github.com/onosproject/onos-e2t/commit/aef6613e0eb2c3d8a13aae72ea8ad4de7b7da655) +and E2SMs ([KPMv2](https://github.com/onosproject/onos-e2-sm/tree/master/servicemodels/e2sm_kpm_v2_go/unit_tests), +[RC-PRE](https://github.com/onosproject/onos-e2-sm/tree/master/servicemodels/e2sm_rc_pre_go), +[MHO](https://github.com/onosproject/onos-e2-sm/tree/master/servicemodels/e2sm_mho_go), +[Test-SM](https://github.com/onosproject/onos-e2-sm/tree/master/servicemodels/test_sm_aper_go_lib)). + +#### What may cause incompatibility in APER bytes? +1. Make sure you've inserted all tags in Protobuf, so they correspond to the ASN.1 definition of your SM. + * Clarify if all tags are present in the Protobuf (wrapped with Golang, file extension is `.pb.go`). + If you don’t see them (tags), please revisit [tutorial on how to create your own SM](sm-howto.md). + +2. Enable DEBUG mode in [Go APER library](https://github.com/onosproject/onos-lib-go/tree/master/pkg/asn1/aper) and do a +bit by bit analysis by hand (see next section). It helps to determine what goes wrong in the encoding/decoding process, and helps to understand +APER encoding/decoding flow better. + +### What is the deal with APER tags? +APER tags play a huge role in Go APER library. It is a key for the library to understand how to encode or decode certain structure to or from APER bytes. +A brief summary on APER tags you may find in the [README](https://github.com/onosproject/onos-lib-go/blob/master/pkg/asn1/aper/README.md) of the Go APER library. +We will provide here some basic examples on APER tags usage. + +> Please note that APER tags are ***partially*** generated with ONF's distribution of [asn1c](https://github.com/onosproject/asn1c) tool. +> You still have to insert the majority of the tags manually. This is something to automate in the future. + +* `CHOICE` encoding requires inserting indexes. It helps encoder to understand which option has to be encoded or was encoded (in case of the decoding). +```protobuf +message Choice { + // choice from tes_sm.asn1:65 + oneof choice { + // @inject_tag: aper:"choiceIdx:1" + int32 choice_a = 1; + // @inject_tag: aper:"choiceIdx:2" + int32 choice_b = 2; + } +}; +``` + +> In E2AP (v1.0 and 2.0) `CHOICE`s are encoded with regard to the canonical ordering. That means that index is not the ordering number, but it is the other information from the ASN.1 \ +> definition (i.e., IDs which have `unique` tag). CHOICE index encoding is thus conditional and depends on the value you've put in a `unique` ID. +> In this case a tag `canonicalOrder` is inserted on top of the CHOICE structure (see [E2AP protobuf](https://github.com/onosproject/onos-e2t/blob/7f0b65294ecd539e15715514ba7a201b7098868f/api/e2ap/v2/e2ap_pdu_contents.proto#L36-L48)). +> For that purpose a CHOICE map is being created with [protoc-gen-choice](../protoc-gen-choice/README.md) plugin. + +`CHOICE` structure can also be extensible and can contain items in its extension. This requires to put such tags as `choiceExt` and `fromChoiceExt` to indicate that the `CHOICE` can be extended and indicated which items +belong to its extension. A good example of such structure could be found [here](https://github.com/onosproject/onos-e2t/blob/7f0b65294ecd539e15715514ba7a201b7098868f/api/e2ap/v2/e2ap_ies.proto#L307-L319). + +* `SEQUENCE` encoding usually requires only single tag to be inserted in case it is needed. It is `valueExt`, which indicates that the `SEQUENCE` can be +extended. If items in the extension are defined, then tag `fromValueExt` is used (see below). +```protobuf +message TopLevelPdu { + // @inject_tag: aper:"valueExt" + SequenceExtended value = 1; +} + +message SequenceExtended { + bool se1 = 1; + // @inject_tag: aper:"optional" + optional bytes se2 = 2; + // @inject_tag: aper:"fromValueExt" + int32 se3 = 3; + // @inject_tag: aper:"fromValueExt,optional,sizeLB:2,sizeUB:6,sizeExt" + optional string se4 = 4; +} +``` + +* `INTEGER` structures in ASN.1 can have constraints. To apply them in encoding, such flags as `valueLB`, `valueUB` and `valueExt` are used. + * `valueLB:` is used to specify the lowerbound. + * `valueUB:` is used to specify the upperbound. + * `valueExt` is used to specify that the `INTEGER` upperbound can be exceeded. +```protobuf +message TestUnconstrainedInt { + int32 attr_uci_a = 1 [json_name = "attrUciA"]; + int32 attr_uci_b = 2 [json_name = "attrUciB"]; +}; + +message TestConstrainedInt { + // @inject_tag: aper:"valueLB:10,valueUB:100" + int32 attr_ci_a = 1 [json_name = "attrCiA"]; + // @inject_tag: aper:"valueLB:255,valueUB:65535" + int32 attr_ci_b = 2 [json_name = "attrCiB"]; + // @inject_tag: aper:"valueLB:10,valueUB:4294967295" + int32 attr_ci_c = 3 [json_name = "attrCiC"]; + // @inject_tag: aper:"valueUB:100" + int32 attr_ci_d = 4 [json_name = "attrCiD"]; + // @inject_tag: aper:"valueLB:10,valueUB:20" + int32 attr_ci_e = 5 [json_name = "attrCiE"]; + // @inject_tag: aper:"valueLB:10,valueUB:10" + int32 attr_ci_f = 6 [json_name = "attrCiF"]; + // @inject_tag: aper:"valueLB:10,valueUB:10,valueExt" + int32 attr_ci_g = 7 [json_name = "attrCiG"]; +}; +``` + +* `ENUMERATOR` structures in ASN.1 are treated as a constrained `INTEGER` and thus require to specify lowerbound, upperbound and the extensibility (see above). +```protobuf +message TopLevelPdu { + // @inject_tag: aper:"valueLB:0,valueUB:5,valueExt" + TestEnumeratedExtensible value = 1; +}; + +enum TestEnumeratedExtensible { + TEST_ENUMERATED_EXTENSIBLE_ENUM1 = 0; + TEST_ENUMERATED_EXTENSIBLE_ENUM2 = 1; + TEST_ENUMERATED_EXTENSIBLE_ENUM3 = 2; + TEST_ENUMERATED_EXTENSIBLE_ENUM4 = 3; + TEST_ENUMERATED_EXTENSIBLE_ENUM5 = 4; + TEST_ENUMERATED_EXTENSIBLE_ENUM6 = 5; +}; +``` + +* `PrintableString`, `OCTET STRING` and `BIT STRING` similarly to `INTEGER` can require specifying constraints. Following tags are used: + * `sizeLB:` is used to specify the lowerbound. + * `sizeUB:` is used to specify the upperbound. + * `sizeExt` is used to specify that the `PrintableString`, `OCTET STRING` or `BIT STRING` upperbound can be exceeded. +```protobuf +message BitString { + asn1.v1.BitString attr_bs1 = 1; + // @inject_tag: aper:"sizeLB:20,sizeUB:20" + asn1.v1.BitString attr_bs2 = 2; + // @inject_tag: aper:"sizeLB:20,sizeUB:20,sizeExt" + asn1.v1.BitString attr_bs3 = 3; + // @inject_tag: aper:"sizeLB:0,sizeUB:18" + asn1.v1.BitString attr_bs4 = 4; + // @inject_tag: aper:"sizeLB:22,sizeUB:32" + asn1.v1.BitString attr_bs5 = 5; + // @inject_tag: aper:"sizeLB:28,sizeUB:32,sizeExt" + asn1.v1.BitString attr_bs6 = 6; +}; + +message PrintableString { + string attr_ps1 = 1; + // @inject_tag: aper:"sizeLB:2,sizeUB:2" + string attr_ps2 = 2; + // @inject_tag: aper:"sizeLB:2,sizeUB:2,sizeExt" + string attr_ps3 = 3; + // @inject_tag: aper:"sizeLB:0,sizeUB:3" + string attr_ps4 = 4; + // @inject_tag: aper:"sizeLB:2,sizeUB:3" + string attr_ps5 = 5; + // @inject_tag: aper:"sizeLB:1,sizeUB:3,sizeExt" + string attr_ps6 = 6; +}; + +message OctetString { + bytes v1 = 1; + // @inject_tag: aper:"sizeLB:2,sizeUB:2,sizeExt" + bytes v2 = 3; + // @inject_tag: aper:"sizeLB:2,sizeUB:5" + bytes v3 = 3; +} +``` + +* `SEQUENCE OF` is used to describe lists within ASN.1. It is interpreted in Protobuf as a message with `repeated` label. Lists in ASN.1 can +also have constraints on its size. Similar tags as for `PrintableString`, `OCTET STRING` and `BIT STRING` are used. +```protobuf +message List { + // @inject_tag: aper:"sizeLB:0,sizeUB:12" + repeated float value = 1 [json_name = "value"]; +}; +``` + +* ASN.1 definition may have items marked as `OPTIONAL`, which means that the presence of this item is not necessary. Such behavior is treated in a +Protobuf with `optional` label and `optional` tag. +```protobuf +message Item { + // @inject_tag: aper:"optional" + optional int32 item1 = 1 [json_name = "item1"]; +}; +``` + +Once all tags are in correct place, produced with Go APER library bytes are guaranteed to be the same as bytes produced with asn1c tool. + + +### Do a bit by bit analysis +Sometimes, doing a bit by bit analysis may help a lot. General rule is to go through the APER bytes and decode them by hand, i.e., +verify that all bits correspond to ASN.1 definition. Here are few examples on how to do such analysis: + +* An analysis of GlobalKPMnode-ID structure per KPM v2.0.3 specification can be found [here](globalKPMnodeID_analysis.txt) + * It describes encoding of `CHOICE` structures. +* An analysis of MeasurementLabel structure per KPM v2.0.3 specification can be found [here](measLabel_analysis.txt) + * It describes encoding of `SEQUENCE` structure with multiple `OPTIONAL` items. +* An analysis of MeasurementData (a part of IndicationMessage) per KPM v2.0.3 specification can be found [here](kpmv2_indication_message_analysis.txt) + * It describes encoding of lists, i.e., `SEQUENCE OF` structures. +* An analysis of a header of RANfunction-Description per KPMv2.0.3 specification can be found [here](kpmv2_ranfunction_description_analysis.txt) + * It describes encoding of `SEQUENCE` structure headers. + +Please consider tacking a look at the links in "Some useful resources" section. It may help to understand the APER encoding flow. + + +## General steps on tackling encoding/decoding problems +1. Read error message carefully. You may exceed the boundary or forgot to include an item in the message. + * You may refer to [this guide](https://github.com/onosproject/onos-lib-go/blob/master/pkg/asn1/aper/error_list.md) to get a tip on what does certain error message mean. +2. Revisit APER tags and make sure they're present in the `.pb.go` file. +3. Do a bit by bit analysis to understand where is the root cause of the problem. + + +## Some useful resources: + +[1] [ITU-T X.691 specification](https://www.itu.int/ITU-T/studygroups/com17/languages/X.691-0207.pdf) + +[2] [Olivier DuBuisson, ASN.1 Communication between heterogeneous systems (in particular, chapters 15.6 and 20.6.21)](https://www.oss.com/asn1/resources/books-whitepapers-pubs/dubuisson-asn1-book.PDF) + +[3] [OSS Novakia ASN.1 notes](https://www.oss.com/asn1/knowledge-center/asn1-java/asn1java-der-support.html) + +[4] [A Warm Welcome to ASN.1 and DER (provides a good overview of ASN1 encoding, but not related to APER – may be excluded)](https://letsencrypt.org/docs/a-warm-welcome-to-asn1-and-der/) + +[5] [John Larmount, ASN.1 complete](https://www.oss.com/asn1/resources/books-whitepapers-pubs/larmouth-asn1-book.pdf) diff --git a/onos-e2-sm/docs/globalKPMnodeID_analysis.txt b/onos-e2-sm/docs/globalKPMnodeID_analysis.txt new file mode 100644 index 0000000..19c80b8 --- /dev/null +++ b/onos-e2-sm/docs/globalKPMnodeID_analysis.txt @@ -0,0 +1,45 @@ +# SPDX-FileCopyrightText: 2019-present Open Networking Foundation +# +# SPDX-License-Identifier: Apache-2.0 + +This is an analysis of GlobalKPMnode-ID structure APER encoding per KPM v2.0.3 definition: +https://github.com/onosproject/onos-e2-sm/blob/e6dc49d1cd9f4554e11856f1a2a0aeac33034f71/servicemodels/e2sm_kpm_v2_go/v2/e2sm_kpm_v2_go.proto#L278 + +0 - valueExt (not present) for GlobalKPMnode-ID structure +00 - choiceIdx which indicates that we have GNB choice option + +--> driliing down to the GlobalKPMnode-gNB-ID structure +0 - valueExt (not present) for GlobalKPMnode-gNB-ID structure +1 - indicates OPTIONAL struct (GNB-CU-UP-ID) presence for GlobalKPMnode-gNB-ID structure +1 - indicates OPTIONAL struct (GNB-DU-ID) presence for GlobalKPMnode-gNB-ID structure + +--> drilling down to the GlobalgNB-ID +0 - valueExt (not present) for GlobalgNB-ID structure + +0 - Octet alignment +---------------------------- +In total this byte is 0C + +--> drilling down to the PLMN-ID (fixed length, not extensible) +21 22 23 - value of PLMN-ID which is fixed length and not extensible + +------------------------ +--> going back to the GlobalgNB-ID and drilling down to the GNB-ID-Choice +0 - valueExt (not present) for GNB-ID-Choice structure +0 - choiceIdx which indicates that we have gnb-ID choice option + +0110 - length of a BIT STRING value represented in gnb-ID + +00 - octet alignment +------------------------- +In total this byte is 18 + +d4 bc 09 00 - value of a BIT STRING + +--> going back to the GlobalGnb-ID structure and starting to encode the next item +--> encoding GNB-CU-UP-ID +--> encoding length of GNB-CU-UP-ID, 0 corresponds to the 1 byte +CU-UP needs 3 bits to hold the length which were appended to the end of the previous BitString (we had 4 bits unused). +1 Byte was used for the value (21), the next Byte was holding the length of the DU-ID, which had 3 bits to describe the +lengths, which was 000x xxxx, x is an octet alignment), the last byte was the value of DU (32). + diff --git a/onos-e2-sm/docs/kpmv2_indication_message_analysis.txt b/onos-e2-sm/docs/kpmv2_indication_message_analysis.txt new file mode 100644 index 0000000..95d8cb5 --- /dev/null +++ b/onos-e2-sm/docs/kpmv2_indication_message_analysis.txt @@ -0,0 +1,44 @@ +# SPDX-FileCopyrightText: 2019-present Open Networking Foundation +# +# SPDX-License-Identifier: Apache-2.0 + +This is an analysis of MeasurementData structure APER encoding per KPM v2.0.3 definition: +https://github.com/onosproject/onos-e2-sm/blob/e6dc49d1cd9f4554e11856f1a2a0aeac33034f71/servicemodels/e2sm_kpm_v2_go/v2/e2sm_kpm_v2_go.proto#L548 + +0x00 0x07 - is a size of MeasurementData structure (list) + +---> Drilling down to MeasurementDataItem structure +0 - stands for SEQUENCE is not extended for MeasurementDataItem. +1 - stands for OPTIONAL item incompleteFlag is present. +---> Drilling down to MeasurementRecord structure +00 - describes the length of the bytes (1, i.e., 0 above 1) which carry the length of the MeasurementRecord structure (list). +0000 - Octet-alignment. + +It gives us 0x40. + +Next byte, 0x01, gives the length of the MeasurementRecord structure (list). It is 1, so expecting 1 item. + +---> Drilling Down to MeasurementRecordItem +0 - stands for CHOICE is not extended. +00 - is a CHOICE index, i.e., 0 -> Integer. +0 0 - describes the length of the bytes (1, i.e., 0 above 1) which carry the INTEGER number. +000 - Octet-alignment. + +It gives us 0x00. +Next byte describes the number which is carried in MeasurementRecordItem->Integer option. It is 0x00. +In case of MeasurementRecordItem->Integer is 5, the byte would be 0x05. + +We're returning to MeasurementDataItem and continuing to encode it. Next item is incompleteFlag + + +0 - stands for ENUMERATED (incompleteFlag) is not extended. +---> Value of IncompleteFlag is fixed (there is only single option, so no need to carry it -> not encoded) +--> Drilling down to another MeasurementDataItem +0 - stands for SEQUENCE is not extended for MeasurementDataItem. +1 - stands for OPTIONAL item incompleteFlag is present. +---> Drilling down to MeasurementRecord structure +0 0 - describes the length of the bytes (1, i.e., 0 above 1) which carry the length of the MeasurementRecord structure (list). +000 - Octet-alignment. + +It gives us 0x20. +Next byte, 0x01, gives the length of the MeasurementRecord structure (list). It is 1, so expecting 1 item. diff --git a/onos-e2-sm/docs/kpmv2_ranfunction_description_analysis.txt b/onos-e2-sm/docs/kpmv2_ranfunction_description_analysis.txt new file mode 100644 index 0000000..4b4d1be --- /dev/null +++ b/onos-e2-sm/docs/kpmv2_ranfunction_description_analysis.txt @@ -0,0 +1,33 @@ +# SPDX-FileCopyrightText: 2019-present Open Networking Foundation +# +# SPDX-License-Identifier: Apache-2.0 + +This is an analysis of RanFunction-Description structure APER encoding per KPM v2.0.3 definition: +https://github.com/onosproject/onos-e2-sm/blob/e6dc49d1cd9f4554e11856f1a2a0aeac33034f71/servicemodels/e2sm_kpm_v2_go/v2/e2sm_kpm_v2_go.proto#L802 + +Going through the KPMv2-RanFunction-Description (RFD) structure, which is of SEQUENCE type + +0 - valueExt is not present (i.e., value of the RFD is not extended) +1 - ric-KPM-Node-List is OPTIONAL and present in the message +1 - ric-EventTriggerStyle-List is OPTIONAL and present in the RFD +1 - ric-ReportStyle-List is OPTIONAL and present in the RFD + +---> Drilling down to the RANfunction-Name +0 - valueExt is not present (i.e., value of the RANfunction-Name is not extended) +1 - ranFunction-Instance is OPTIONAL and present in the RANfunction-Name +---> Drilling down to the ranFunction-ShortName +0 - sizeExt is not present (i.e., size of ranFunction-ShortName, which is PrintableString, is not extended) + +-- At this point, length of ranFunction-ShortName is being encoded. This structure has maximum size of 150 characters, which requires 8 bits to encode the value: xxxx xxxx. + +0 0001 100 - stands for the constrained value 13 (it is 12 over 1, boundaries are 1 and 150), which is the length of the ranFunction-ShortName ("ORAN-E2SM-KPM" in our message) +0 - is an Octet-alignment + + +In the end we have: +----> first byte is 0x74 (0111 0100) +----> second byte is 0x18 (0001 1000) + + +Next byte is 0x4F, which stands for the first character of the ranFunction-ShortName, which is "O" (in ASCII table "O" is represented by 4F) + diff --git a/onos-e2-sm/docs/measLabel_analysis.txt b/onos-e2-sm/docs/measLabel_analysis.txt new file mode 100644 index 0000000..4fba49e --- /dev/null +++ b/onos-e2-sm/docs/measLabel_analysis.txt @@ -0,0 +1,77 @@ +# SPDX-FileCopyrightText: 2019-present Open Networking Foundation +# +# SPDX-License-Identifier: Apache-2.0 + +This is an analysis of MeasurementLabel structure APER encoding per KPM v2.0.3 definition: +https://github.com/onosproject/onos-e2-sm/blob/e6dc49d1cd9f4554e11856f1a2a0aeac33034f71/servicemodels/e2sm_kpm_v2_go/v2/e2sm_kpm_v2_go.proto#L181 + +Measurement Label PER analysis + +0 - indicates that MeasurementLabel is not Extended (but could potentially be) +1 - Indicates that PLMN-ID, which is OPTIONAL, present +1 - Indicates that Slice-ID, which is OPTIONAL, present +1 - Indicates that FiveQI, which is OPTIONAL, present +1 - Indicates that QFI, which is OPTIONAL, present +1 - Indicates that QCI, which is OPTIONAL, present +1 - Indicates that QCImax, which is OPTIONAL, present +1 - Indicates that QCImin, which is OPTIONAL, present +----- This gives 7f byte + +1 - Indicates that ARPmax, which is OPTIONAL, present +1 - Indicates that ARPmin, which is OPTIONAL, present +1 - Indicates that bitrateRange, which is OPTIONAL, present +1 - Indicates that layerMU-MIMO, which is OPTIONAL, present +1 - Indicates that SUM, which is OPTIONAL, present +1 - Indicates that distBinX, which is OPTIONAL, present +1 - Indicates that distBinY, which is OPTIONAL, present +1 - Indicates that distBinZ, which is OPTIONAL, present +----- This gives ff byte + +1 - Indicates that preLabelOverride, which is OPTIONAL, present +1 - Indicates that startEndInd, which is OPTIONAL, present +00 0000 - Octet alignment +----- This gives c0 byte + +-------------------------------------------------------------------- +Next 3 bytes are dedicated to PLMN-ID since it is fixed size Octet String +----- 01 02 03 is a value of PLMN-ID + +-------------------------------------------------------------------- +Next goes SNSSAI which is a structure +0 - indicates that SNSSAI is not Extended (but could potentially be) +1 - indicates that OPTIONAL item (SD - Octet string of size 3) is present +--- Next goes Octet representing SST (octet string of size 1 octets), which is exactly one Octet long +0011 1111 +00 0000 - is an Octet alignment +----- This gives us 4f c0 bytes + +Next goes OPTIONAL part of SNSSAI structure - SD which is 3 byte Octet string +----- 01 02 03 is a value of SD item in SNSSAI, which has fixed size of 3 bytes (3 Octets) + +-------------------------------------------------------------------- +Next goes FiveQI structure (constrained Integer which could be extended) +0 - indicates that FiveQI value is not Extended (but could potentially be) +-- next 3 bits carry length of a value (in bits) --> 255 need 8 bits to carry this number, 8 could be encoded with 3 bits +000 - we need 1 byte to carry value +0000 - Octet Alignment +----- In result we have 00 byte + +Next goes value of FiveQI +0a - corresponds to 10, which is an encoded value of FiveQI +-------------------------------------------------------------------- + +Now goes QFI structure +0 - indicates that QFI value is not Extended (but could potentially be) +--- next 3 bits carry length of a value (in bits) --> 63 need 6 bits to carry this number, 6 could be encoded with 3 bits +111 - + + +-------------------------------------- +Now goes ARP structure +0 - indicates that ARP(max) value is not Extended (but could potentially be) +1110 - this is a value of ARPmax, which is 15 (14 over 1) +0 - indicates that ARP(min) value is not Extended (but could potentially be) +0000 - this is a value of ARPmin, which is 1 (0 over 1) +00 0000 - Octet alignment +----- This gives us 70 00 bytes + diff --git a/onos-e2-sm/docs/sm-howto.md b/onos-e2-sm/docs/sm-howto.md new file mode 100644 index 0000000..19e79da --- /dev/null +++ b/onos-e2-sm/docs/sm-howto.md @@ -0,0 +1,250 @@ + + +# How to create your own SM? + +## Introduction +Service models are the “contracts” that establish the allowed mechanisms and +information by which near-RT RIC interacts with E2 nodes (e.g., CU/DU). +O-RAN service models are defined in ASN.1 format, as they are used to be +transported by SCTP from near-RT RIC to E2 nodes. +In the SD-RAN project, internally the near-RT RIC implementation realizes the +utilization of Service Models via gRPC, therefore the need for their definition +in protobuf. +In SD-RAN, the component responsible for the “translation” of ASN.1/SCTP to +protobuf/gRPC format is `onos-e2t`. +Therefore, xApps when implemented in SD-RAN utilize the library provided by the +compilation of protobuf definitions of Service Models (SMs). +To learn more about the definition of SMs in SD-RAN have a look at the readme of +[`onos-e2-sm` repository](https://github.com/onosproject/onos-e2-sm/blob/master/README.md). + +This tutorial defines how to write a Service Model and provide support for it in +the SD-RAN project, so it can be utilized by the xApps for instance. + + +## How to compile the SM from ASN1->protobuf->golang? + +### 1. ASN.1 to Protobuf + +#### 1.1 You have to use the ONF's distribution of the [`asn1c` tool](https://github.com/onosproject/asn1c). + +You can find it [here](https://github.com/onosproject/asn1c). Please, follow its +installation steps as indicated in the [INSTALL.md](https://github.com/onosproject/asn1c/blob/master/INSTALL.md) file. + +Once set, you can generate Protobuf out of asn1 definition using the `-B` +option. The full command should look like: + +> **Important**: Make sure that the name for the top-level messages in the +asn1 file start with "**E2SM-**" + +```bash +asn1c -B my_sm.asn1 > my_sm.proto +``` + +After that, depending on which way of implementation you choose (CGo or with Go +APER library), you should make some adjustments to the Protobuf file. + +Note (implementation choices): + +- CGo - is the Go glue code which wraps C code generated by the asn1c tool. + - SM with the CGo approach is complex on implementation and requires a lot of effort for maintenance (e.g., future upgrade of SM). + - In CGo, Go doesn’t take care of garbage collection and memory leaks (due to the C code) may happen. + +- Go APER - is the [Go package which implements APER encoder and decoder](https://github.com/onosproject/onos-lib-go/tree/master/pkg/asn1/aper). +It is capable of converting the message in the APER bytes and decode the message +from the APER bytes. This APER library is fully compatible with the asn1c tool. + - Currently, this is the best way to implement SM. + +
+ +#### 1.2 Make sure that the Protobuf messages in your generated Protobuf correspond to reference ones defined in the ASN.1 definition. + +A good example is the Protobuf for MHO SM stored in `onos-e2-sm` repo. +For this tutorial, the MHO SM is being used as a reference example. So, please +use as a reference [this Protobuf file](https://github.com/onosproject/onos-e2-sm/blob/master/servicemodels/e2sm_mho_go/v2/e2sm_mho_go.proto). + +Go APER requires the definition of tags marked as annotations in the message +fields. Having these tags would help the Go APER library to correctly encode and +decode the messages. +Currently, the automated definition of tags is not handled by the `asn1c` tool, +but this feature is going to be implemented in the future. + +It is necessary to insert all tags correctly, otherwise Go APER library wouldn’t +be able to encode or decode the message correctly. +Here are some examples: + +* [Tags for constrained Integer structures](https://github.com/onosproject/onos-e2-sm/blob/977f29d11e56f01a17b077f9d8c2c7fc00ab2f4f/servicemodels/e2sm_mho_go/v2/e2sm_mho_go.proto#L44) + +* [Tags for Choices](https://github.com/onosproject/onos-e2-sm/blob/977f29d11e56f01a17b077f9d8c2c7fc00ab2f4f/servicemodels/e2sm_mho_go/v2/e2sm_mho_go.proto#L67) + +* [Tag for Choices which could be extended](https://github.com/onosproject/onos-e2-sm/blob/977f29d11e56f01a17b077f9d8c2c7fc00ab2f4f/servicemodels/e2sm_mho_go/v2/e2sm_mho_go.proto#L129) + +* [Tag for Optional items](https://github.com/onosproject/onos-e2-sm/blob/977f29d11e56f01a17b077f9d8c2c7fc00ab2f4f/servicemodels/e2sm_mho_go/v2/e2sm_mho_go.proto#L145) + +* [Tags for Sequence Of (lists) or PrintableStrings (string), Octet Strings ([]byte) and BitStrings](https://github.com/onosproject/onos-e2-sm/blob/977f29d11e56f01a17b077f9d8c2c7fc00ab2f4f/servicemodels/e2sm_mho_go/v2/e2sm_mho_go.proto#L182) + +> Please also refer to [this](encoding_issues-howto.md) guide, which explains the APER tags usage in details. + +
+ +#### 1.3 Add SM compilation commands into the Makefile + +Embed your SM in the `onos-e2-sm` Makefile script to generate Protobuf with the +`make protos` command (i.e., to facilitate the translation of the Protobuf to +golang code, the proper references of packages are done using the makefile +targets. In the case of SMs it is done using the commands `protoc` and +`protoc-go-inject-tag`). + +> [Here](https://github.com/onosproject/onos-e2-sm/blob/977f29d11e56f01a17b077f9d8c2c7fc00ab2f4f/build/bin/compile-protos.sh#L38-L41) +is an example of how to generate a Golang driven Protobuf structures out of +plain Protobuf. +> Don’t forget to create the target that calls the injection of all tag +definitions from the Protobuf to the Golang pb generated code, for instance like +[here](https://github.com/onosproject/onos-e2-sm/blob/977f29d11e56f01a17b077f9d8c2c7fc00ab2f4f/build/bin/compile-protos.sh#L42): + +
+ +##### 1.3.1 Importance of `protoc-gen-validate` plugin. + +You can benefit from `protoc-gen-validate` plugin, it can validate your messages +and throw an error if you’ve the data inserted in your message are out of range, +i.e., INTEGER has an upper bound of 255, for some reason 256 is passed instead – +`protoc-gen-validate` will catch this error and notify you. Asn1c tool already +generates all necessary rules for this plugin, you only need to enable it in the +compilation process. + +> [Here](https://github.com/onosproject/onos-e2-sm/blob/977f29d11e56f01a17b077f9d8c2c7fc00ab2f4f/build/bin/compile-protos.sh#L62-L65) is an example +on how to do that. + +> If `protoc-gen-validate` is enabled, you can then validate your messages in [this way](https://github.com/onosproject/onos-e2-sm/blob/977f29d11e56f01a17b077f9d8c2c7fc00ab2f4f/servicemodels/e2sm_mho_go/pdubuilder/E2SM-MHO-Indication-Message.go#L23-L25). + +

+Now you can run `make protos`, which will generate a Protobuf-based Golang code +of your SM. + +> The CGo way of implementing SMs is a legacy way now. A better (and easier) way +to implement **E2*** is to use [Go APER library](https://github.com/onosproject/onos-lib-go/tree/master/pkg/asn1/aper). +> You can refer to all SMs, the outcome of Go APER library, in the `onos-e2-sm` +repo appended with **_go** to see how it's done. + +
+ +### 2. Create wrappers for encoder and decoder. + +Each SM has a specific wrapper to encode each one of its messages to APER. +> You can find an example [here](https://github.com/onosproject/onos-e2-sm/tree/master/servicemodels/e2sm_mho_go/encoder), +> where all the MHO SM messages have defined their encoders. + + +Each definition of an SM message encoder file contains encode and decode +functions associated with that message: +* For example, the encoder for MHO-ControlHeader looks [like that](https://github.com/onosproject/onos-e2-sm/blob/master/servicemodels/e2sm_mho_go/encoder/E2SM-MHO-ControlHeader.go). +* The encoding part is being invoked [here](https://github.com/onosproject/onos-e2-sm/blob/master/servicemodels/e2sm_mho_go/encoder/E2SM-MHO-ControlHeader.go#L27). +* Respectively, decoding is being done [here](https://github.com/onosproject/onos-e2-sm/blob/f7fd56fc6b0e84cf6e98490200a297bada4b3630/servicemodels/e2sm_mho_go/encoder/E2SM-MHO-ControlHeader.go#L38). + +> Please also note, that it is expected that each **top-level** message starts from `E2Sm`, otherwise the `protoc-gen-builder` plugin will assume that there are no top-level messages defined. + +**Notice**: as shown in [line 24](https://github.com/onosproject/onos-e2-sm/blob/6fd4546563ed112d47a89b173abcc31982ead240/servicemodels/e2sm_mho_go/encoder/E2SM-MHO-ControlHeader.go#L24) +of the file E2SM-MHO-ControlHeader.go, there is a mandatory prerequisite for +marshaling (and unmarshaling). +In MHO Control Header encoder look for the variable `e2smmhov2.MhoChoicemap`, +[this variable](https://github.com/onosproject/onos-e2-sm/blob/master/servicemodels/e2sm_mho_go/v2/e2sm-mho-go/choiceOptions.go) +contains a map of all CHOICE structs, which are in your SM definition. Without +that input, the encoder and decoder wouldn’t know which CHOICE option they’re +expected to encode or decode (marshal or unmarshal a message). + +> The file containing the choice options, as mentioned above, can be automatically +generated with a [`protoc-gen-choice` plugin](../protoc-gen-choice). +Please study carefully the [`README`](../protoc-gen-choice/README.md) in order +to install and use this plugin. + + +
+ +### 3. Create pdubuilders around it. + +In general, `pdubuilder` should help to create messages in a faster way (i.e., +to create the header and the content of the message). A myriad of pdubuilders +can be defined to facilitate the creation of messages. The goal of pdubuilders +is to facilitate the utilization of the SM Golang code by the xApp. + +All MHO SM pdubuilders are stored in the [`pdubuilder` directory](https://github.com/onosproject/onos-e2-sm/tree/master/servicemodels/e2sm_mho_go/pdubuilder) +of the MHO SM. + +To outline, here are some examples provided below: +* Top-level `pdubuilder` for E2SM-MHO IndicationMessage [Format1](https://github.com/onosproject/onos-e2-sm/blob/977f29d11e56f01a17b077f9d8c2c7fc00ab2f4f/servicemodels/e2sm_mho_go/pdubuilder/E2SM-MHO-Indication-Message.go#L12) +and [Format2](https://github.com/onosproject/onos-e2-sm/blob/977f29d11e56f01a17b077f9d8c2c7fc00ab2f4f/servicemodels/e2sm_mho_go/pdubuilder/E2SM-MHO-Indication-Message.go#L29) + +* An example of [other helper functions](https://github.com/onosproject/onos-e2-sm/blob/977f29d11e56f01a17b077f9d8c2c7fc00ab2f4f/servicemodels/e2sm_mho_go/pdubuilder/E2SM-MHO-Indication-Message.go#L45) which create specific/complex items. + +> All `CHOICE`s deserve their own wrappers! Like the one [here](https://github.com/onosproject/onos-e2-sm/blob/977f29d11e56f01a17b077f9d8c2c7fc00ab2f4f/servicemodels/e2sm_mho_go/pdubuilder/E2SM-MHO-Indication-Message.go#L58). + +> Some other helper functions are stored in a [builder.go](https://github.com/onosproject/onos-e2-sm/blob/master/servicemodels/e2sm_mho_go/v2/e2sm-mho-go/builder.go). This file contains Setter functions for all `OPTIONAL` items in your SM +definition. + +
+ +### 4. Pack it as a plugin. +An example could be found [here](https://github.com/onosproject/onos-e2-sm/tree/master/servicemodels/e2sm_mho_go/servicemodel). +This is an implementation of a common plugin interface. It should correspond to +the rest of the SMs. + +> Steps 2, 3 and 4 are automated with [protoc-gen-builder](../protoc-gen-builder/README.md) +plugin. Please take a look at it. It should do the majority of the work. + +> Necessary prerequisite is a correct `.proto` file, with all tags inserted +correctly! If you're unsure about the correctness of the Protobuf, please visit +[this](encoding_issues-howto.md) guide. + +
+ +### 5. Verify that encoding and decoding works with unit tests! + +Each unit test should verify that the Go APER library is able to encode the +message without any errors and decode the generated set of APER bytes. Decoded +message should be completely similar to the encoded one. +A good example of such approach could be found [here](https://github.com/onosproject/onos-e2-sm/blob/master/servicemodels/e2sm_mho_go/pdubuilder/E2SM-MHO-Control-Header_test.go) +or [here](https://github.com/onosproject/onos-e2-sm/blob/master/servicemodels/e2sm_mho_go/pdubuilder/E2SM-MHO-Indication-Message_test.go). + +> This is the most essential and a **fundamental** step before you can start +using your SM! + + +
+ +### 6. Publish the SM +Add the SM definitions (service model, proto, Golang code, encoder, etc) to the +`onos-e2-sm` repository. Similar to other SMs already contained, create a Golang +module and push the code to the `onos-e2-sm`. +Use the other SMs as reference to create the [`main.go` file](https://github.com/onosproject/onos-e2-sm/blob/master/servicemodels/e2sm_mho_go/main.go) +and structure of folders/files. + +Please also include unit tests in the [`make test` target](https://github.com/onosproject/onos-e2-sm/blob/6fd4546563ed112d47a89b173abcc31982ead240/Makefile#L63-L73). +[Here](https://github.com/onosproject/onos-e2-sm/blob/6fd4546563ed112d47a89b173abcc31982ead240/Makefile#L191-L197) +and [here](https://github.com/onosproject/onos-e2-sm/blob/6fd4546563ed112d47a89b173abcc31982ead240/Makefile#L208-L212) +is an example of building an SM image in a Docker container. An example of +loading of an image to the KinD can be found [here](https://github.com/onosproject/onos-e2-sm/blob/6fd4546563ed112d47a89b173abcc31982ead240/Makefile#L216-L222). + + +## Summary +Wrapping up all aforesaid, the source code for the SM, for instance E2SM-RC, +could be generated with following commands: +```bash +$ cd onos-e2-sm/servicemodels +$ mkdir e2sm_rc && cd e2sm_rc +$ mkdir -p v1/choiceOptions encoder pdubuilder servicemodel +$ cd v1 +# Generate your Protobuf with asn1c tool and locate it in the SM folder, for instance e2sm_rc/v1/ (since it is E2SM-RC v01.01.05) +$ asn1c -B my_sm.asn1 > my_sm.proto +# Then generate pb.go files for "my_sm.proto" file (or files) + +$ cd ../../.. # get back to the root of the ono-e2-sm repo +$ pwd +/home//go/src/github.com/onosproject/onos-e2-sm +$ proto_imports=${GOPATH}/src/github.com/onosproject/onos-e2-sm +$ protoc -I="$proto_imports:${GOPATH}/src/github.com/onosproject/onos-lib-go/api" --proto_path="servicemodels/" --choice_out="servicemodels/e2sm_rc/v1/choiceOptions/" servicemodels/e2sm_rc/v1/e2sm_common_ies.proto servicemodels/e2sm_rc/v1/e2sm_rc.proto +$ protoc -I="$proto_imports:${GOPATH}/src/github.com/onosproject/onos-lib-go/api" --proto_path="servicemodels/" --builder_out="sm=true:servicemodels/e2sm_rc/" servicemodels/e2sm_rc/v1/e2sm_common_ies.proto servicemodels/e2sm_rc/v1/e2sm_rc.proto +``` diff --git a/onos-e2t/README.md b/onos-e2t/README.md new file mode 100644 index 0000000..a1bfdf6 --- /dev/null +++ b/onos-e2t/README.md @@ -0,0 +1,17 @@ + +# onos-e2t +E2 AP Termination module for ONOS SD-RAN (µONOS Architecture) + +## Overview + +The E2 Termination (E2T) acts as an intelligent proxy and adapter for managing the interactions betwen SD-RAN components and E2 nodes. The southbound of E2T implements the E2AP specification (ASN.1 over SCTP), and the northbound implements the onos-e2t API as specified within the [onos-api]. Messages traveling southbound through E2T nodes are converted from Protobuf to ASN.1, and those received from the environment are converted from ASN.1 to Protobuf before they're propagated up through the northbound API. This process can be extended for service models with plugins. + +The E2 termination is shipped as a [Docker] image and deployed with [Helm]. To build the Docker image, run `make images`. + +[onos-api]: https://github.com/onosproject/onos-api +[Docker]: https://www.docker.com/ +[Helm]: https://helm.sh diff --git a/onos-e2t/docs/api/admin.md b/onos-e2t/docs/api/admin.md new file mode 100644 index 0000000..abf8dc1 --- /dev/null +++ b/onos-e2t/docs/api/admin.md @@ -0,0 +1,218 @@ + + +# Protocol Documentation +
+ +## Table of Contents + +- [api/admin/v1/admin.proto](#api/admin/v1/admin.proto) + - [DropE2NodeConnectionsRequest](#admin.v1.DropE2NodeConnectionsRequest) + - [DropE2NodeConnectionsResponse](#admin.v1.DropE2NodeConnectionsResponse) + - [ListE2NodeConnectionsRequest](#admin.v1.ListE2NodeConnectionsRequest) + - [ListE2NodeConnectionsResponse](#admin.v1.ListE2NodeConnectionsResponse) + - [ListRegisteredServiceModelsRequest](#admin.v1.ListRegisteredServiceModelsRequest) + - [ListRegisteredServiceModelsResponse](#admin.v1.ListRegisteredServiceModelsResponse) + - [UploadRegisterServiceModelRequest](#admin.v1.UploadRegisterServiceModelRequest) + - [UploadRegisterServiceModelResponse](#admin.v1.UploadRegisterServiceModelResponse) + + - [E2NodeConnectionType](#admin.v1.E2NodeConnectionType) + + - [E2TAdminService](#admin.v1.E2TAdminService) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## api/admin/v1/admin.proto + + + + + +### DropE2NodeConnectionsRequest +DropE2NodeConnectionsRequest carries drop connection request + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| connections | [ListE2NodeConnectionsResponse](#admin.v1.ListE2NodeConnectionsResponse) | repeated | | + + + + + + + + +### DropE2NodeConnectionsResponse +DropE2NodeConnectionsResponse carries drop connection response + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| success | [bool](#bool) | repeated | | + + + + + + + + +### ListE2NodeConnectionsRequest +ListE2NodeConnectionsRequest carries request for a list of E2 node SCTP connections. + + + + + + + + +### ListE2NodeConnectionsResponse +ListE2NodeConnectionsResponse carries information about the SCTP connection to the remote E2 node. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| remote_ip | [string](#string) | repeated | | +| remote_port | [uint32](#uint32) | | | +| id | [string](#string) | | | +| plmn_id | [string](#string) | | | +| connection_type | [E2NodeConnectionType](#admin.v1.E2NodeConnectionType) | | | + + + + + + + + +### ListRegisteredServiceModelsRequest +ListRegisteredServiceModelsRequest carries data for querying registered service model plugins. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| model_name | [string](#string) | | An optional filter on the name of the model plugins to list. | +| model_version | [string](#string) | | An optional filter on the version of the model plugins to list | + + + + + + + + +### ListRegisteredServiceModelsResponse +ListRegisteredServiceModelsResponse is general information about a service model plugin. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| name | [string](#string) | | name is the name given to the service model plugin - no spaces and title case. | +| version | [string](#string) | | version is the semantic version of the Plugin e.g. 1.0.0. | + + + + + + + + +### UploadRegisterServiceModelRequest +UploadRegisterServiceModelRequest is for streaming a model plugin file to the server. +There is a built in limit in gRPC of 4MB - plugin is usually around 20MB +so break in to chunks of approx 1-2MB. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| so_file | [string](#string) | | so_file is the name being streamed. | +| content | [bytes](#bytes) | | content is the bytes content. | + + + + + + + + +### UploadRegisterServiceModelResponse +UploadRegisterServiceModelResponse carries status of model plugin registration. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| name | [string](#string) | | name is name of the model plugin. | +| version | [string](#string) | | version is the semantic version of the model plugin. | + + + + + + + + + + +### E2NodeConnectionType +E2NodeConnectionType specifies the type of an E2 connection + +| Name | Number | Description | +| ---- | ------ | ----------- | +| UNKNOWN | 0 | | +| G_NB | 1 | | +| E_NB | 2 | | +| ENG_MB | 3 | | +| NGE_NB | 4 | | + + + + + + + + + +### E2TAdminService +E2TAdminService provides means for enhanced interactions with the ONOS RIC E2 Termination service. + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| UploadRegisterServiceModel | [UploadRegisterServiceModelRequest](#admin.v1.UploadRegisterServiceModelRequest) stream | [UploadRegisterServiceModelResponse](#admin.v1.UploadRegisterServiceModelResponse) | UploadRegisterServiceModel uploads and adds the model plugin to the list of supported models. The file is serialized in to Chunks of less than 4MB so as not to break the gRPC byte array limit | +| ListRegisteredServiceModels | [ListRegisteredServiceModelsRequest](#admin.v1.ListRegisteredServiceModelsRequest) | [ListRegisteredServiceModelsResponse](#admin.v1.ListRegisteredServiceModelsResponse) stream | ListRegisteredServiceModels returns a stream of registered service models. | +| ListE2NodeConnections | [ListE2NodeConnectionsRequest](#admin.v1.ListE2NodeConnectionsRequest) | [ListE2NodeConnectionsResponse](#admin.v1.ListE2NodeConnectionsResponse) stream | ListE2NodeConnections returns a stream of existing SCTP connections. | +| DropE2NodeConnections | [DropE2NodeConnectionsRequest](#admin.v1.DropE2NodeConnectionsRequest) | [DropE2NodeConnectionsResponse](#admin.v1.DropE2NodeConnectionsResponse) | DropE2NodeConnections drops the specified E2 node SCTP connections | + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-e2t/docs/api/e2t-xapp.md b/onos-e2t/docs/api/e2t-xapp.md new file mode 100644 index 0000000..98d75a1 --- /dev/null +++ b/onos-e2t/docs/api/e2t-xapp.md @@ -0,0 +1,66 @@ + + +# Protocol Documentation + + +## Table of Contents + +- [api/xapp/e2t.proto](#api/xapp/e2t.proto) + - [E2TService](#onos.e2t.xapp.E2TService) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## api/xapp/e2t.proto + + + + + + + + + + + +### E2TService +E2TService provides means for enhanced interactions with the ONOS RIC E2 Termination service. + +List of registered/available SMs +Register xApp (and declare interest in a list of SMs); returns bi-directional stream + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-e2t/docs/api/headers.md b/onos-e2t/docs/api/headers.md new file mode 100644 index 0000000..f24c528 --- /dev/null +++ b/onos-e2t/docs/api/headers.md @@ -0,0 +1,132 @@ + + +# Protocol Documentation + + +## Table of Contents + +- [api/ricapi/e2/headers/v1beta1/headers.proto](#api/ricapi/e2/headers/v1beta1/headers.proto) + - [RequestHeader](#ricapi.e2.headers.v1beta1.RequestHeader) + - [ResponseHeader](#ricapi.e2.headers.v1beta1.ResponseHeader) + - [ServiceModelInfo](#ricapi.e2.headers.v1beta1.ServiceModelInfo) + + - [EncodingType](#ricapi.e2.headers.v1beta1.EncodingType) + - [ResponseStatus](#ricapi.e2.headers.v1beta1.ResponseStatus) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## api/ricapi/e2/headers/v1beta1/headers.proto + + + + + +### RequestHeader +RequestHeader a common request header for all requests including encoding type, client/xApp/session info, ordering info, etc + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| encoding_type | [EncodingType](#ricapi.e2.headers.v1beta1.EncodingType) | | | +| service_model_info | [ServiceModelInfo](#ricapi.e2.headers.v1beta1.ServiceModelInfo) | | | + + + + + + + + +### ResponseHeader +ResponseHeader a common response header for all responses including encoding type, client/xApp/session info, ordering info, etc + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| encoding_type | [EncodingType](#ricapi.e2.headers.v1beta1.EncodingType) | | | +| service_model_info | [ServiceModelInfo](#ricapi.e2.headers.v1beta1.ServiceModelInfo) | | | +| response_status | [ResponseStatus](#ricapi.e2.headers.v1beta1.ResponseStatus) | | TODO more fields should be added | + + + + + + + + +### ServiceModelInfo + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| service_model_id | [string](#string) | | | + + + + + + + + + + +### EncodingType +EncodingType determines encoding type for the response messages + +| Name | Number | Description | +| ---- | ------ | ----------- | +| PROTO | 0 | | +| ASN1_PER | 1 | | +| ASN1_XER | 2 | | + + + + + +### ResponseStatus +ResponseStatus + +| Name | Number | Description | +| ---- | ------ | ----------- | +| FAILED | 0 | | +| SUCCEEDED | 1 | | + + + + + + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-e2t/docs/api/ricapi.md b/onos-e2t/docs/api/ricapi.md new file mode 100644 index 0000000..3b1607a --- /dev/null +++ b/onos-e2t/docs/api/ricapi.md @@ -0,0 +1,134 @@ + + +# Protocol Documentation + + +## Table of Contents + +- [api/ricapi/e2/v1beta1/ricapi_e2.proto](#api/ricapi/e2/v1beta1/ricapi_e2.proto) + - [ControlRequest](#ricapi.e2.v1beta1.ControlRequest) + - [ControlResponse](#ricapi.e2.v1beta1.ControlResponse) + - [Indication](#ricapi.e2.v1beta1.Indication) + - [StreamRequest](#ricapi.e2.v1beta1.StreamRequest) + - [StreamResponse](#ricapi.e2.v1beta1.StreamResponse) + + - [E2TService](#ricapi.e2.v1beta1.E2TService) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## api/ricapi/e2/v1beta1/ricapi_e2.proto + + + + + +### ControlRequest +ControlRequest + + + + + + + + +### ControlResponse +ControlResponse + + + + + + + + +### Indication +Indication an indication message + + + + + + + + +### StreamRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| app_id | [string](#string) | | | +| instance_id | [string](#string) | | | +| subscription_id | [string](#string) | | | +| encoding | [ricapi.e2.headers.v1beta1.EncodingType](#ricapi.e2.headers.v1beta1.EncodingType) | | | + + + + + + + + +### StreamResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| header | [ricapi.e2.headers.v1beta1.ResponseHeader](#ricapi.e2.headers.v1beta1.ResponseHeader) | | | +| payload | [bytes](#bytes) | | | + + + + + + + + + + + + + + +### E2TService +E2TService provides means for enhanced interactions with the ONOS RIC E2 Termination service. + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| Stream | [StreamRequest](#ricapi.e2.v1beta1.StreamRequest) stream | [StreamResponse](#ricapi.e2.v1beta1.StreamResponse) stream | Stream opens an indications stream | + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-e2t/docs/api/subscription.md b/onos-e2t/docs/api/subscription.md new file mode 100644 index 0000000..2f141c7 --- /dev/null +++ b/onos-e2t/docs/api/subscription.md @@ -0,0 +1,369 @@ + + +# Protocol Documentation + + +## Table of Contents + +- [api/subscription/v1beta1/subscription.proto](#api/subscription/v1beta1/subscription.proto) + - [AddSubscriptionRequest](#subscription.v1beta1.AddSubscriptionRequest) + - [AddSubscriptionResponse](#subscription.v1beta1.AddSubscriptionResponse) + - [GetSubscriptionRequest](#subscription.v1beta1.GetSubscriptionRequest) + - [GetSubscriptionResponse](#subscription.v1beta1.GetSubscriptionResponse) + - [ListSubscriptionsRequest](#subscription.v1beta1.ListSubscriptionsRequest) + - [ListSubscriptionsResponse](#subscription.v1beta1.ListSubscriptionsResponse) + - [Payload](#subscription.v1beta1.Payload) + - [RemoveSubscriptionRequest](#subscription.v1beta1.RemoveSubscriptionRequest) + - [RemoveSubscriptionResponse](#subscription.v1beta1.RemoveSubscriptionResponse) + - [ServiceModel](#subscription.v1beta1.ServiceModel) + - [Status](#subscription.v1beta1.Status) + - [Subscription](#subscription.v1beta1.Subscription) + - [UpdateSubscriptionRequest](#subscription.v1beta1.UpdateSubscriptionRequest) + - [UpdateSubscriptionResponse](#subscription.v1beta1.UpdateSubscriptionResponse) + - [WatchSubscriptionsRequest](#subscription.v1beta1.WatchSubscriptionsRequest) + - [WatchSubscriptionsResponse](#subscription.v1beta1.WatchSubscriptionsResponse) + + - [Encoding](#subscription.v1beta1.Encoding) + - [EventType](#subscription.v1beta1.EventType) + - [State](#subscription.v1beta1.State) + + - [SubscriptionService](#subscription.v1beta1.SubscriptionService) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## api/subscription/v1beta1/subscription.proto + + + + + +### AddSubscriptionRequest +AddSubscriptionRequest a subscription request + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| subscription | [Subscription](#subscription.v1beta1.Subscription) | | | + + + + + + + + +### AddSubscriptionResponse +AddSubscriptionResponse a subscription response + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| subscription | [Subscription](#subscription.v1beta1.Subscription) | | | + + + + + + + + +### GetSubscriptionRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | + + + + + + + + +### GetSubscriptionResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| subscription | [Subscription](#subscription.v1beta1.Subscription) | | | + + + + + + + + +### ListSubscriptionsRequest + + + + + + + + + +### ListSubscriptionsResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| subscriptions | [Subscription](#subscription.v1beta1.Subscription) | repeated | | + + + + + + + + +### Payload +Payload is a subscription payload + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| encoding | [Encoding](#subscription.v1beta1.Encoding) | | | +| bytes | [bytes](#bytes) | | | + + + + + + + + +### RemoveSubscriptionRequest +RemoveSubscriptionRequest a subscription delete request + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| subscription | [Subscription](#subscription.v1beta1.Subscription) | | | + + + + + + + + +### RemoveSubscriptionResponse +RemoveSubscriptionResponse a subscription delete response + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| subscription | [Subscription](#subscription.v1beta1.Subscription) | | | + + + + + + + + +### ServiceModel +ServiceModel is a service model definition + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | + + + + + + + + +### Status +Status is the subscription status + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| state | [State](#subscription.v1beta1.State) | | | +| e2_term_id | [int32](#int32) | | | +| e2_conn_id | [uint64](#uint64) | | | +| e2_request_id | [int32](#int32) | | | + + + + + + + + +### Subscription +Subscription is a subscription state + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | | | +| revision | [uint64](#uint64) | | | +| app_id | [string](#string) | | | +| e2_node_id | [uint64](#uint64) | | | +| service_model | [ServiceModel](#subscription.v1beta1.ServiceModel) | | | +| payload | [Payload](#subscription.v1beta1.Payload) | | | +| status | [Status](#subscription.v1beta1.Status) | | | + + + + + + + + +### UpdateSubscriptionRequest +UpdateSubscriptionRequest is a subscription update request + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| subscription | [Subscription](#subscription.v1beta1.Subscription) | | | + + + + + + + + +### UpdateSubscriptionResponse +UpdateSubscriptionResponse is a subscription update response + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| subscription | [Subscription](#subscription.v1beta1.Subscription) | | | + + + + + + + + +### WatchSubscriptionsRequest + + + + + + + + + +### WatchSubscriptionsResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| type | [EventType](#subscription.v1beta1.EventType) | | | +| subscription | [Subscription](#subscription.v1beta1.Subscription) | | | + + + + + + + + + + +### Encoding +Encoding indicates a payload encoding + +| Name | Number | Description | +| ---- | ------ | ----------- | +| ENCODING_ASN1 | 0 | | +| ENCODING_PROTO | 1 | | + + + + + +### EventType +EventType is a subscription event type + +| Name | Number | Description | +| ---- | ------ | ----------- | +| NONE | 0 | | +| ADDED | 1 | | +| UPDATED | 2 | | +| REMOVED | 3 | | + + + + + +### State +State is a subscription state + +| Name | Number | Description | +| ---- | ------ | ----------- | +| INACTIVE | 0 | INACTIVE indicates the subscription is not currently active | +| ACTIVE | 1 | ACTIVE indicates the subscription is active | + + + + + + + + + +### SubscriptionService +SubscriptionService manages subscription and subscription delete requests + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| AddSubscription | [AddSubscriptionRequest](#subscription.v1beta1.AddSubscriptionRequest) | [AddSubscriptionResponse](#subscription.v1beta1.AddSubscriptionResponse) | AddSubscription establishes E2 subscriptions on E2 Node. | +| UpdateSubscription | [UpdateSubscriptionRequest](#subscription.v1beta1.UpdateSubscriptionRequest) | [UpdateSubscriptionResponse](#subscription.v1beta1.UpdateSubscriptionResponse) | UpdateSubscription updates E2 subscriptions on E2 Node. | +| RemoveSubscription | [RemoveSubscriptionRequest](#subscription.v1beta1.RemoveSubscriptionRequest) | [RemoveSubscriptionResponse](#subscription.v1beta1.RemoveSubscriptionResponse) | RemoveSubscription removes E2 subscriptions on E2 Node. | +| GetSubscription | [GetSubscriptionRequest](#subscription.v1beta1.GetSubscriptionRequest) | [GetSubscriptionResponse](#subscription.v1beta1.GetSubscriptionResponse) | GetSubscription retrieves information about a specific subscription in the list of existing subscriptions | +| ListSubscriptions | [ListSubscriptionsRequest](#subscription.v1beta1.ListSubscriptionsRequest) | [ListSubscriptionsResponse](#subscription.v1beta1.ListSubscriptionsResponse) | ListSubscriptions returns the list of current existing subscriptions | +| WatchSubscriptions | [WatchSubscriptionsRequest](#subscription.v1beta1.WatchSubscriptionsRequest) | [WatchSubscriptionsResponse](#subscription.v1beta1.WatchSubscriptionsResponse) stream | WatchSubscriptions returns a stream of subscription changes | + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-e2t/docs/api/types_change.md b/onos-e2t/docs/api/types_change.md new file mode 100644 index 0000000..98d75a1 --- /dev/null +++ b/onos-e2t/docs/api/types_change.md @@ -0,0 +1,66 @@ + + +# Protocol Documentation + + +## Table of Contents + +- [api/xapp/e2t.proto](#api/xapp/e2t.proto) + - [E2TService](#onos.e2t.xapp.E2TService) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## api/xapp/e2t.proto + + + + + + + + + + + +### E2TService +E2TService provides means for enhanced interactions with the ONOS RIC E2 Termination service. + +List of registered/available SMs +Register xApp (and declare interest in a list of SMs); returns bi-directional stream + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/onos-exporter/README.md b/onos-exporter/README.md new file mode 100644 index 0000000..a363676 --- /dev/null +++ b/onos-exporter/README.md @@ -0,0 +1,107 @@ + + +# onos-exporter +The exporter for ONOS SD-RAN (µONOS Architecture) to scrape, format, and export KPIs to TSDB databases (e.g., Prometheus). + +## Overview +The onos-exporter realizes the collection of KPIs from multiple ONOS SD-RAN components via gRPC interfaces, properly label them according to their namespace and subsystem, and turn them available to be pulled (or pushed to) TSDBs. Currently the implementation supports Prometheus. +It also contain in its chart definitions the dependencies to enable the collection of logs from sd-ran pods. + +## Enable + +To enable logging in sdran components, in the onos-exporter chart values.yaml file enable the following components: +In the chart dependencies, fluent-bit realizes the collection of logs from kubernetes pods and stores them into opensearch database. + +```yaml +import: +... + fluent-bit: + enabled: true + opensearch: + enabled: true +``` + +Important: opensearch requires to set `sysctl -w vm.max_map_count=262144` (and restart the docker service), otherwise the pods stay in a crashloop state. + +Associated with the monitoring of sdran components is the onos-exporter component, the exporter for ONOS SD-RAN (µONOS Architecture) to scrape, format, and export onos KPIs to TSDB databases (e.g., Prometheus). Currently the implementation supports Prometheus. In order to enable onos-exporter, as shown below, make sure the prometheus-stack is enabled too in the onos-exporter chart values.yaml file. + +```yaml +import: +... + prometheus-stack: + enabled: true +``` + +The onos-exporter component supports scraping of metrics from onos-topo, onos-e2t, onos-uenib, onos-kpimon and onos-pci. + +## Deploy onos-exporter + +Given the deployment of sd-ran components already in place in the sdran namespace, onos-exporter can be deployed using the following helm command: + +```text +helm -n sdran install onos-exporter sdran/onos-exporter --set import.fluent-bit.enabled=true --set import.prometheus-stack.enabled=true --set import.opensearch.enabled=true +``` + +To remove onos-exporter deployment using helm run the following command. +```text +helm -n sdran uninstall onos-exporter +``` + + +## Visualize metrics in Grafana + +After deployed, the services and pods related to logging and monitoring will be accessible by making a port-forward rule to the grafana service on port 3000. + +```bash +kubectl -n sdran port-forward svc/onos-exporter-grafana 3000:80 +``` + +Open a browser and access `localhost:3000`. The credentials to access grafana are: +```txt +username: admin +password: prom-operator +``` + +To look at the grafana dashboard for the sdran component logs and KPIs, check in the left menu of grafana the option dashboards and select the submenu Manage (or just access in the browser the address http://localhost:3000/dashboards). + +In the menu that shows, look for the dashboard named `Kubernetes / SD-RAN KPIs` to check the KPIs of the sd-ran components (e.g., kpimon, pci, topo, uenib and e2t). + +Similarly, other dashboards can be found in the left menu of grafana, showing for instance each pod workload in the dashboad `Kubernetes / Compute Resources / Workload`. + + +## Visualize onos-exporter prometheus metrics + +To look at the onos-exporter metrics, it's possible to access the onos-exporter directly or visualize the metrics in grafana. + +To access the metrics directly have a port-forward kubectl command for onos-exporter service: + +```bash +kubectl -n sdran port-forward svc/onos-exporter 9861 +``` + +The example above shows the case when onos-exporter is deployed separately, in case it is deployed via RiaB, list the services (kubectl -n sdran get svc) in order to check what is the name of the grafana service to have the port-forward definition. + +Then access the address `localhost:9861/metrics` in the browser. The exporter shows golang related metrics too. + +To access the metrics using grafana, proceed with the access to grafana. After accessing grafana go to the Explore item on the left menu, on the openned window select the Prometheus data source, and type the name of the metrics to see its visualization and click on the Run query button. + + +## Visualize logs in opensearch dashboards + +Make a port-forward to opensearch-dashboards service on port 5601. + +```bash +kubectl -n sdran port-forward svc/onos-exporter-opensearch-dashboards 5601 +``` + +Open a browser and access `localhost:5601`. The credentials to access opensearch dashboards are: +```txt +username: admin +password: admin +``` + +In there, to access the logs, there is the need to set the index pattern, `fluentbit-*`, and explore the index using the Lucene query syntax. diff --git a/onos-kpimon/README.md b/onos-kpimon/README.md new file mode 100644 index 0000000..902251f --- /dev/null +++ b/onos-kpimon/README.md @@ -0,0 +1,37 @@ + + +# onos-kpimon +The xApplication for ONOS SD-RAN (µONOS Architecture) to monitor KPI + +## Overview +The `onos-kpimon` is the xApplication running over ONOS SD-RAN to monitor the KPI. +`onos-kpimon` collects KPIs reported by E2 nodes through the KPM service model version 2.0. +Since ONOS SD-RAN has multiple micro-services running on the Kubernetes platform, `onos-kpimon` should run on the Kubernetes along with the other ONOS SD-RAN micro-services. +In order to deploy `onos-kpimon` on the Kubernetes, a Helm chart is necessary, which is in the `sdran-helm-charts` repository. +Note that this application should be running together with the other SD-RAN micro-services, such as `Atomix`, `onos-operator`, `onos-e2t`, `onos-uenib`, `onos-topo`, and `onos-cli`). +Easily, `sd-ran` umbrella chart can be used to deploy all essential micro-services and `onos-kpimon`. + +## Interaction with the other ONOS SD-RAN micro-services +To begin with, `onos-kpimon` makes a subscription with E2 nodes connected to `onos-e2t` through `onos-topo` based ONOS xApplication SDK. +Creating a subscription, `onos-kpimon` sets `report interval` and `granularity period` which are the monitoring interval parameters. +Once the subscription is done successfully, each E2 node starts sending indication messages periodically to report KPIs to `onos-kpimon`. +Then, `onos-kpimon` decodes each indication message that has KPI monitoring reports and store them to both KPIMON local store, or `onos-uenib`. +A user can check the stored monitoring results through `onos-cli` as below. +Also, if Prometheus and Grafana are enabled, the user can see the stored monitoring results through Grafana dashboard or Prometheus web GUI. + +## Command Line Interface +Go to the `onos-cli`, and command below: +```bash +$ onos kpimon list metrics +Node ID Cell Object ID Cell Global ID Time RRC.Conn.Avg RRC.Conn.Max RRC.ConnEstabAtt.Sum RRC.ConnEstabSucc.Sum RRC.ConnReEstabAtt.HOFail RRC.ConnReEstabAtt.Other RRC.ConnReEstabAtt.Sum RRC.ConnReEstabAtt.reconfigFail +5153 13842601454c001 1454c001 06:23:44.0 0 4 0 0 0 0 0 0 +5153 13842601454c002 1454c002 06:23:44.0 0 1 0 0 0 0 0 0 +5153 13842601454c003 1454c003 06:23:44.0 6 6 0 0 0 0 0 0 +5154 138426014550001 14550001 06:23:44.0 0 5 0 0 0 0 0 0 +5154 138426014550002 14550002 06:23:44.0 4 4 0 0 0 0 0 0 +5154 138426014550003 14550003 06:23:44.0 0 2 0 0 0 0 0 0 +``` diff --git a/onos-mho/README.md b/onos-mho/README.md new file mode 100644 index 0000000..7b015a7 --- /dev/null +++ b/onos-mho/README.md @@ -0,0 +1,58 @@ + + +# onos-mho +Mobile Hand Over (MHO) xApplication for µONOS RIC + +## Overview +[µONOS RIC](https://docs.sd-ran.org/master/index.html) supports collection of per-UE mobility data from E2 nodes for the purpose of enabling development of sophisticated mobility management xApplications. The collected UE data is available to xApplications via the SDKs. `onos-mho` is a sample xApplication that implements a simple A3 event based handover function to demonstrate the mobility management capabilities of µONOS RIC platform. + +The E2 Service Model for Mobile HandOver (E2SM-MHO) specifies procedures over the E2 interface to subscribe to and receive indications of UE mobility information and trigger handovers through control messages. The service model defines two types of indications - 1) UE measurement reports and 2) UE RRC state changes. The UE measurement reports can be triggered by A3 events or periodic. The complete E2SM-MHO ASN.1 specification is available in the +[onos-e2-sm](https://github.com/onosproject/onos-e2-sm/blob/master/servicemodels/e2sm_mho/v1/e2sm-mho.asn1) repo. + +The onos-mho xApp interfaces with µONOS RIC, using the Golang SDK, to subscribe for A3 measurement reports from E2 nodes that support the E2SM-MHO service model. In addition to the A3 Events, onos-mho can be configured to subscribe to RRC state changes and periodic UE measurement reports as well. onos-mho processes the measurement event based on its configured A3 Event parameters. If a handover decision is made, onos-mho sends a handover control message to the E2 node to trigger a handover. In addition, onos-mho also updates `UE-NIB` with UE related information such as RRC state, signal strengths for serving and neighbor cells. + +onos-mho is shipped as a [Docker](https://www.docker.com/) image and deployed with [Helm](https://helm.sh/). To build the Docker image, run `make images`. + +## Getting Started +The E2SM-MHO service model is currently only supported by [RANSim](https://github.com/onosproject/ran-simulator) and not by real CU/DU/gNB. onos-mho can be deployed, alongwith the other µONOS micro-services and `RANSim`, using the [sdran-helm-charts]. Alternatively, it can also be deployed using `SDRAN-in-a-box (RIAB)`. + +### Deploy using Helm charts + +Refer to the [µONOS](https://docs.onosproject.org/developers/deploy_with_helm/) and SD-RAN documentation on how to deploy µONOS SD-RAN micro-services with the sd-ran umbrella helm chart. onos-mho is not enabled by default in the sd-ran umbrella chart. To deploy onos-mho with the other µONOS SD-RAN micro-services, either enable it in the sd-ran helm chart or on the command line as follows: +```bash +helm install --set import.ran-simulator.enabled=true --set import.onos-mho.enabled=true sd-ran sd-ran +``` +By default, RANSim uses the `model.yaml` model file. To use a different model, e.g. the two-cell-two-node-model, specify the model as follows: +```bash +helm install --set import.ran-simulator.enabled=true --set import.onos-mho.enabled=true --set ran-simulator.pci.modelName=two-cell-two-node-model sd-ran sd-ran +``` + +### Deploy using RiaB + +Refer to the [SDRAN-in-a-box](https://docs.sd-ran.org/master/riab_install_index.html) (RIAB) documentation on how to deploy onos-mho within RIAB. For example, the following command deploys `latest` version of onos-mho and µONOS SD-RAN micro-services: +```bash +make riab OPT=mho VER=latest +``` + +### Command Line Interface +The following commands are available in [onos-cli](https://github.com/onosproject/onos-cli) for viewing onos-mho related information: +```bash +$ onos mho get cells +$ onos mho get ues +$ onos uenib get ues [-v] +$ onos uenib get ue [-v] +``` +The information from the above commands on UE handovers and RRC states can be compared to information provided by RANSim using the following CLI commands: +```bash +$ onos ransim get cells +$ onos ransim get ues +$ onos ransim get ue +``` + +### RANSim models +The generic **model.yaml** model, which simulates UEs moving on randomly generated routes, can be used with onos-mho to test handovers. Alternatively, the **two-cell-two-node-model.yaml** model can be used to test onos-mho handover functionality in a more controlled and deterministic manner. Refer to documentation on [RANSim models](https://github.com/onosproject/ran-simulator/blob/master/docs/model.md) for further information. + diff --git a/onos-mho/docs/README.md b/onos-mho/docs/README.md new file mode 100644 index 0000000..10f2825 --- /dev/null +++ b/onos-mho/docs/README.md @@ -0,0 +1,10 @@ + + +# onos-mho + +* [Quick Start](quick_start.md) +* [Command Line Interface](cli.md) \ No newline at end of file diff --git a/onos-mho/docs/cli.md b/onos-mho/docs/cli.md new file mode 100644 index 0000000..d416129 --- /dev/null +++ b/onos-mho/docs/cli.md @@ -0,0 +1,7 @@ + + +# onos-mho CLI \ No newline at end of file diff --git a/onos-mho/docs/quick_start.md b/onos-mho/docs/quick_start.md new file mode 100644 index 0000000..b5bb677 --- /dev/null +++ b/onos-mho/docs/quick_start.md @@ -0,0 +1,19 @@ + + +# Quick Start + +## Prerequisite +Since ONOS SD-RAN has multiple micro-services running on the Kubernetes platform, +onos-mho can run on the Kubernetes along with other ONOS SD-RAN micro-services. In order to deploy onos-mho, a Helm chart is necessary, which is in the +[sdran-helm-charts] repository. +Note that this application should be running together with the other SD-RAN micro-services (e.g., Atomix, onos-e2t, onos-e2sub, and onos-cli). sd-ran umbrella chart can be used +to deploy all essential micro-services and onos-mho. + + + + +[sdran-helm-charts]: https://github.com/onosproject/sdran-helm-charts diff --git a/onos-mlb/README.md b/onos-mlb/README.md new file mode 100644 index 0000000..2c06251 --- /dev/null +++ b/onos-mlb/README.md @@ -0,0 +1,79 @@ + + +# onos-mlb +The xApplication for ONOS SD-RAN (µONOS Architecture) to balance load among connected cells + +## Overview +The `onos-mlb` is the xApplication running over ONOS SD-RAN to balance the load among connected cells. +For the load balancing, this application adjusts neighbor cells' cell individual offset (Ocn). +If a cell becomes overloaded, this application tries to offload the cell's load to the neighbor cells that have enough capacity. +Adjusting neighbor cells' `Ocn` triggers measurement events; it triggers handover events from a cell to it's neighbor cells. +As a result, by adjusting `Ocn`, the load of overloaded cell will be offloaded to the neighbor cells. + +## Limitation +As of now, `onos-mlb` application only supports the scenario where an E2 node manages only a single cell. +It does not support the E2 node that controls multiple cells. + +## Algorithm description +To begin with, `onos-mlb` defines each cell's load as `the number of active UEs`, not considering other factors yet. +If a cell services the most active UEs, the `onos-mlb` application considers that the cell suffers from the heaviest load. +Then, this application defines two thresholds: (i) `overload threshold` and (ii) `target threshold`. +A cell with the load that exceeds the `overloaded threshold` is an overloaded cell. +On the other hands, a cell with the load that is less than `target threshold` has enough capacity. + +With the above definition, there are two conditions. +(1) if a cell's load > `overload threshold` and its neighbor cell's load < `target threshold`, the xApplication increases `Ocn` of the neighbor cell. +(2) if a cell's load < `target threshold`, the xApplication decreases all neighbors' `Ocn`. + +The increased `Ocn` makes the measurement event happening sensitively, which brings about more handover events happening to move some UEs to the neighbor cells, i.e., offloading. +On the contrary, the measurement events happen conservatively with the decreased `Ocn`; it leads to the less handover events happening to avoid neighbor cells overloaded. + +The described algorithm runs periodically. By default, it is set to 10 seconds. + +The `Ocn` delta value (i.e., how many the application changes Ocn value) is configurable. By default, it is set to 3 to 6. + +## Interaction with other ONOS SD-RAN micro-services +Unlike other xApplications such as `onos-kpimon` and `onos-pci`, `onos-mlb` xApplication does not make a subscription with a specific service model. +In order to monitor cells, it uses `onos-uenib` and `onos-topo`. +Basically, `onos-kpimon` and `onos-pci` store the number of active UEs and cell topology to `onos-uenib`. +In addition, `onos-e2t` stores the basic cell information to `onos-topo`. +`onos-mlb` just periodically scrapes `onos-uenib` and `onos-topo`. +Then, it runs the algorithm with the scraped information as inputs. +After deciding each cell's `Ocn` values, `onos-mlb` sends the control message to the E2 node. +This control message is encoded with `RC-Pre` service model. + +## Command line interface +Go to `onos-cli` and command below for each purpose. +```bash +onos-cli-594848b59d-dr6bv:~$ # to see Ocn values for each cell +onos-cli-594848b59d-dr6bv:~$ onos mlb list ocns +sCell node ID sCell PLMN ID sCell cell ID sCell object ID nCell PLMN ID nCell cell ID Ocn [dB] +5153 138426 1454c001 87893173159116801 138426 1454c002 0 +5153 138426 1454c001 87893173159116801 138426 1454c003 6 +5154 138426 1454c002 87893173159116802 138426 1454c001 0 +5154 138426 1454c002 87893173159116802 138426 1454c003 6 +5155 138426 1454c003 87893173159116803 138426 1454c001 -6 +5155 138426 1454c003 87893173159116803 138426 1454c002 -6 + +onos-cli-594848b59d-dr6bv:~$ # to see mlb parameters +onos-cli-594848b59d-dr6bv:~$ onos mlb list parameters +Name Value +interval [sec] 10 +Delta Ocn per step 3 +Overload threshold [%] 100 +Target threshold [%] 0 +Set parameters: + +onos-cli-594848b59d-dr6bv:~# to change mlb parameters +onos-cli-594848b59d-dr6bv:~$ onos mlb set parameters --interval 20 +onos-cli-594848b59d-dr6bv:~$ onos mlb list parameters +Name Value +interval [sec] 20 +Delta Ocn per step 3 +Overload threshold [%] 100 +Target threshold [%] 0 +``` \ No newline at end of file diff --git a/onos-operator/README.md b/onos-operator/README.md new file mode 100644 index 0000000..676b2a1 --- /dev/null +++ b/onos-operator/README.md @@ -0,0 +1,123 @@ + + +# Kubernetes Operator for µONOS + +This project provides a set of [Kubernetes operators][Operator pattern] for managing components of the µONOS +architecture. µONOS operators extend the Kubernetes API with [custom resources] and integrate µONOS subsystems +with the Kubernetes control plane. + +To install the µONOS operator you can use Helm as follows: + +```bash +> helm install -n kube-system onos-operator onosproject/onos-operator --wait +NAME: onos-operator +LAST DEPLOYED: Tue Oct 12 20:02:04 2021 +NAMESPACE: kube-system +STATUS: deployed +REVISION: 1 +TEST SUITE: None +``` +The operator consists of a `topo-operator` pod and `app-operator` pod, all of which will be installed in the +`kube-system` namespace by default. + +```bash +> kubectl get pods -n kube-system +NAME READY STATUS RESTARTS AGE +onos-operator-app-585d588d5c-ndvkr 1/1 Running 0 42m39s +onos-operator-topo-7ff4df6f57-6p8dv 1/1 Running 0 42m39s +``` + +## App Operator +The application operator registers a mutating admission webhook to intercept pod deployment requests. These +requests are inspected for presence of `proxy.onosproject.org/inject` metadata annotation. If this +annotation is present and its value is `true`, the deployment request will be augmented to include a +sidecar `onosproject/onos-proxy` container as part of the pod. + +For more information about see [onos-proxy]. + +## Topology Operator + +The topology operator extends the Kubernetes API with custom resources for defining µONOS topology objects. Topology +resources are propagated from the Kubernetes API to the [onos-topo] service via the [onos-api]. When a topology resource +is created, the topology operator adds the object to µONOS topology. When a topology resource is deleted, the operator +will remove the associated object from the µONOS topology. + +### Kind + +To define a topology object kind, create a `Kind` resource: + +```yaml +apiVersion: topo.onosproject.org/v1beta1 +kind: Kind +metadata: + name: e2-node +spec: + attributes: + foo: bar +``` + +### Entity + +To define a topology entity, create an `Entity` resource: + +```yaml +apiVersion: topo.onosproject.org/v1beta1 +kind: Entity +metadata: + name: e2-node-1 +spec: + kind: + name: e2-node + attributes: + baz: foo +``` + +### Relation + +To define a topology relation, create a `Relation` resource connecting a `source` and `target` entity: + +```yaml +apiVersion: topo.onosproject.org/v1beta1 +kind: Relation +metadata: + name: e2-node-1-e2t-1 +spec: + kind: + name: e2-connection + source: + name: e2-node-1 + target: + name: e2t-1 +``` + +### Dynamic topology management + +The topology operator supports dynamic entity sets with Kubernetes label selectors using the `Service` resource: + +```yaml +apiVersion: topo.onosproject.org/v1beta1 +kind: Service +metadata: + name: my-app +spec: + selector: + matchLabels: + name: my-app + kind: + name: my-app-node +``` + +The operator will automatically populate the µONOS topology with an entity for each pod matching the service's label +selector. This allows dynamic/autoscaling Kubernetes components like `ReplicaSet`s to be represented as dynamic +objects in the µONOS topology. + +[Operator pattern]: https://kubernetes.io/docs/concepts/extend-kubernetes/operator/ +[custom resources]: https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/ +[onos-api]: https://github.com/onosproject/onos-api +[onos-topo]: https://github.com/onosproject/onos-topo +[onos-config]: https://github.com/onosproject/onos-config +[onos-proxy]: https://github.com/onosproject/onos-proxy diff --git a/onos-pci/README.md b/onos-pci/README.md new file mode 100644 index 0000000..e88d75e --- /dev/null +++ b/onos-pci/README.md @@ -0,0 +1,25 @@ + + +# onos-pci +PCI xAPP for ONOS SD-RAN (µONOS Architecture) + +## Overview +The onos-pci is an xApp running over ONOS SD-RAN and as of now it supports the following features: + +* Provides capability to subscribe to RC-PRE service model and receives indication messages from RAN simulator + +* Provides capability to send control requests to change PCI values in RAN simulator + +* Supports listing of PCI resources such metrics, neighbors, PCI, and PCI conflicts of cell(s) using CLI that is integrated with [onos-cli] + +* Detects PCI conflicts and resolves them based on an algorithm using cell neighbors information + + +See [README.md](docs/README.md) for details of running the onos-pci application. + + +[onos-cli]: https://github.com/onosproject/onos-cli \ No newline at end of file diff --git a/onos-pci/docs/README.md b/onos-pci/docs/README.md new file mode 100644 index 0000000..bb2ea11 --- /dev/null +++ b/onos-pci/docs/README.md @@ -0,0 +1,10 @@ + + +# onos-pci + +* [Quick Start](quick_start.md) +* [Command Line Interface](cli.md) \ No newline at end of file diff --git a/onos-pci/docs/cli.md b/onos-pci/docs/cli.md new file mode 100644 index 0000000..634b7e6 --- /dev/null +++ b/onos-pci/docs/cli.md @@ -0,0 +1,19 @@ + + +# onos-pci CLI + +onos-pci is equipped with a CLI which is integrated with [onos-cli] and supports the following commands: + +* List PCI resources for a specific cell or cells such as such metrics, neighbors, PCI, and PCI conflicts + +To see a list of all available commands, you can refer to [onos-pci CLI] + + + + +[onos-cli]: https://github.com/onosproject/onos-cli +[onos-pci CLI]: https://github.com/onosproject/onos-cli/blob/master/docs/cli/onos_pci.md \ No newline at end of file diff --git a/onos-pci/docs/quick_start.md b/onos-pci/docs/quick_start.md new file mode 100644 index 0000000..79e1420 --- /dev/null +++ b/onos-pci/docs/quick_start.md @@ -0,0 +1,26 @@ + + +# Quick Start + +## Prerequisite +Since ONOS SD-RAN has multiple micro-services running on the Kubernetes platform, +onos-pci can run on the Kubernetes along with other ONOS SD-RAN micro-services. In order to deploy onos-kpimon, a Helm chart is necessary, which is in the +[sdran-helm-charts] repository. +Note that this application should be running together with the other SD-RAN micro-services such as Atomix, onos-operator, onos-e2t, onos-topo, onos-uenib, and onos-cli. sd-ran umbrella chart can be used +to deploy all essential micro-services and onos-pci. + +The setup for PCI is similar to ransim, documented [here](https://github.com/onosproject/ran-simulator/blob/master/docs/quick_start.md). Instead of running +``` +helm install ran-simulator ran-simulator -n sd-ran +``` +run +``` +helm install onos-pci onos-pci -n sd-ran +``` + + +[sdran-helm-charts]: https://github.com/onosproject/sdran-helm-charts \ No newline at end of file diff --git a/onos-proxy/README.md b/onos-proxy/README.md new file mode 100644 index 0000000..6271633 --- /dev/null +++ b/onos-proxy/README.md @@ -0,0 +1,47 @@ + + +# onos-proxy +ONOS side-car proxy for various subsystems, e.g. E2T + +The main purpose of the sidecar proxy is to absorb the complexity of interfacing with various +µONOS subsystems. This allows relatively easy implementations of the SDK in various languages, without +re-implementing the complex algorithms for each language. + +Presently, the proxy implements only E2T service load-balancing and routing, but in future may be extended to accommodate sophisticated interactions with other +parts of teh µONOS platform. + +## Deployment +The proxy is intended to be deployed as a sidecar container as part of an application pod. Such deployment +can be arranged explicitly by including the proxy container details in the application Helm chart, but an +easier way is to include the following metadata annotation as part of the `deployment.yaml` file. + +```bigquery +annotations: + proxy.onosproject.org/inject: "true" +``` + +This annotation will be detected by the `onos-app-operator` via its admission hook which will augment the +deployment descriptor to include the proxy container as part of the application pod automatically. + +## E2 Services +The proxy container exposes a locally accessible port on `localhost:5151` where it hosts the following services: + +* E2 Control Service - allows issuing control requests to E2 nodes +* E2 Subscription Service - allows issuing subscribe and unsubscribe requests to E2 nodes + +The E2 proxy tracks the E2T and E2 node mastership state via `onos-topo` information and appropriately forwards +gRPC requests to the E2T instance which is presently the master for the given target E2 node. The target E2 node +ID is extracted from the E2AP request headers + +The mastership information is derived from the `MastershipState` aspect of the E2 node topology entities and +from the `controls` topology relations setup between the E2T and E2 node topology entities. + +The proxy does not manipulate the messages passed between the application and the E2T instances in any manner. + +## SDK Versions + +The `onos-ric-sdk-go` version `0.7.30` or greater and `onos-ric-sdk-py` version `0.1.6` or greater expect +the sidecar proxy to be deployed to work correctly. \ No newline at end of file diff --git a/onos-ric-python-apps/README.md b/onos-ric-python-apps/README.md new file mode 100644 index 0000000..feba3b3 --- /dev/null +++ b/onos-ric-python-apps/README.md @@ -0,0 +1,15 @@ + +# onos-ric-python-apps +ONOS RAN Intelligent Controller xApps authored in Python programming language + + +fb-ah-xapp: This app is an adapter to Airhop's eSON service, covering physical cell identifier +(PCI) confict resolution, and mobility load balancing (MLB). + +fb-kpimon-xapp: This app is used to get metrics from an E2 node and ship it to prometheus, an +open-source metrics system. diff --git a/onos-ric-sdk-go/README.md b/onos-ric-sdk-go/README.md new file mode 100644 index 0000000..36c7c10 --- /dev/null +++ b/onos-ric-sdk-go/README.md @@ -0,0 +1,37 @@ + + +# onos-ric-sdk-go +[Go] Application SDK for ONOS RIC (µONOS Architecture) + +The goal of this library is to make application development as easy as possible. To that end, the library should rely +heavily on a set of newly established conventions that will result in certain default behaviours. +To allow some applications to depart from these defaults, the library should be written in a modular +fashion with high level abstractions and behaviours composed of lower-level ones. Most applications should be able +to rely on the top-level abstractions, but some apps may need to instead utilize the lower-level abstraction. + +## Installation + +The SDK is managed using [Go modules]. To include the SDK in your Go application, add the `github.com/onosproject/onos-ric-sdk-go` module to your `go.mod`: + +``` +go get github.com/onosproject/onos-ric-sdk-go +``` + +## Usage + +For the detail usage of each API, you can refer to the following links: + +[E2 API Usage](docs/e2.md) + +[O1 API Usage](docs/o1.md) + +[Topo API Usage](docs/topo.md) + +[A1 API Usage](docs/a1.md) + +[Go]: https://golang.org/ +[Go modules]: https://golang.org/ref/mod +[onos-config]: https://github.com/onosproject/onos-config diff --git a/onos-ric-sdk-go/docs/a1.md b/onos-ric-sdk-go/docs/a1.md new file mode 100644 index 0000000..04d52bf --- /dev/null +++ b/onos-ric-sdk-go/docs/a1.md @@ -0,0 +1,101 @@ + + +## A1 API + +The `github.com/onosproject/onos-ric-sdk-go/pkg/a1` package provides an interface for interacting with onos-topo for the establishment of the xApp registration, as an entity, and setup of onos-a1t related Aspects, for instance the xApp supported policy Type IDs. + +Currently A1T only supports the Policy Management service, all the implementation for Enrichment Information service is done however there are no schemas defined for EI Job Type IDs. + +### Creating the A1 connection manager +To create the manager of the A1 connection with onos-topo the information about the supported policy Type IDs needs to be specified, jointly with the parameters for the gRPC connection (e.g., certificate, key, grpc port). + +In the following code snipped an example is provided. +```go +import ( + "context" + + "github.com/onosproject/onos-api/go/onos/topo" + "github.com/onosproject/onos-lib-go/pkg/logging" + a1connection "github.com/onosproject/onos-ric-sdk-go/pkg/a1/connection" +) + +var log = logging.GetLogger() + +type Config struct { + PolicyName string + PolicyVersion string + PolicyID string + PolicyDescription string + A1tPort int +} + +// Creates a a1 connection manager with onos-topo so the xApp can be added as an entity, and have in its aspects the annotations of the supported a1PolicyTypes. +// The registration of the xApp in onos-topo is done upon the Start of the a1 connection manager. + +func NewManager(caPath string, keyPath string, certPath string, grpcPort int, xAppName string, a1PolicyTypes []*topo.A1PolicyType) (*Manager, error) { + a1ConnManager, err := a1connection.NewManager(caPath, keyPath, certPath, grpcPort, a1PolicyTypes) + if err != nil { + return nil, err + } + return &Manager{ + a1ConnManager: a1ConnManager, + }, nil +} + + +type Manager struct { + a1ConnManager *a1connection.Manager +} + +func (m *Manager) Start() { + m.a1ConnManager.Start(context.Background()) +} + +func (m *Manager) Close(ctx context.Context) { + err := m.a1ConnManager.DeleteXAppElementOnTopo(ctx) + if err != nil { + log.Error(err) + } +} +``` + +When the manager is created and its Start method is invoked, the xApp will be registered in onos-topo as an Entity. +with that information onos-a1t can discover the xApps supporting A1 interface and interact with them via their northbound implementation of A1 gRPC services for Policy Management and Enrichment Information (see next section). + +### Northbound implementation of A1 interface +To interact with onos-a1t an xApp needs to provide an implementation of gRPC services for Policy Management and Enrichment Information, as defined by the package `github.com/onosproject/onos-api/go/onos/a1t/a1`. + +The Policy Management service defines the following methods to be implemented by an xApp northbound server (see `https://github.com/onosproject/onos-api/blob/master/proto/onos/a1t/a1/policy.proto`). + +```protobuf +service PolicyService { + rpc PolicySetup (PolicyRequestMessage) returns (PolicyResultMessage); + rpc PolicyUpdate (PolicyRequestMessage) returns (PolicyResultMessage); + rpc PolicyDelete (PolicyRequestMessage) returns (PolicyResultMessage); + rpc PolicyQuery (PolicyRequestMessage) returns (PolicyResultMessage); + rpc PolicyStatus (stream PolicyAckMessage) returns (stream PolicyStatusMessage); +} +``` + +The Enrichment Information service defines the following methods to be implemented by an xApp northbound server (see `https://github.com/onosproject/onos-api/blob/master/proto/onos/a1t/a1/ei.proto`). + +```protobuf +service EIService { + rpc EIQuery (stream EIResultMessage) returns (stream EIRequestMessage); + rpc EIJobSetup (stream EIResultMessage) returns (stream EIRequestMessage); + rpc EIJobUpdate (stream EIResultMessage) returns (stream EIRequestMessage); + rpc EIJobDelete (stream EIResultMessage) returns (stream EIRequestMessage); + rpc EIJobStatusQuery (stream EIResultMessage) returns (stream EIRequestMessage); + rpc EIJobStatusNotify (EIStatusMessage) returns (EIAckMessage); + rpc EIJobResultDelivery (EIResultMessage) returns (EIAckMessage); +} +``` + +### xApp reference implementation + +Examples of those implementation can be seen in onos-a1t integration tests, where a generic xApp implementation is provided (see `https://github.com/onosproject/onos-a1t/tree/master/test/utils/xapp/pkg`). + +In that example the xApp defines both the implementation of the a1 connection manager with onos-topo using the `onos-ric-sdk-go` a1 package, as well as the implementation of the methods that realize the Policy and EI gRPC services. diff --git a/onos-ric-sdk-go/docs/e2.md b/onos-ric-sdk-go/docs/e2.md new file mode 100644 index 0000000..2840e4f --- /dev/null +++ b/onos-ric-sdk-go/docs/e2.md @@ -0,0 +1,151 @@ + + +## E2 API +The `github.com/onosproject/onos-ric-sdk-go/pkg/e2/v1beta1` provides a high-level interface for interacting +with E2 nodes. The current interface supports E2AP *Subscription* and *Control* procedures. + +### Creating An E2 Client +To create an E2 client, the following information should be specified: + +- Service model name and its version +- E2T address +- Encoding type (e.g. Protobuf or ASN.1 PER encoding) + +For example, the following code snippet shows how to create an E2 client for KPM v2 service model: + +```go +import ( + e2client "github.com/onosproject/onos-ric-sdk-go/pkg/e2/v1beta1 +) + + +// Defines service model name and version to be used for creating an E2 client. +// For example, to create an E2 client for kpm v2 service model, the following service model name and version should be used: +const ( + serviceModelName := "oran-e2sm-kpm" + serviceModelVersion := "v2" +) + + +client := e2client.NewClient(e2client.WithE2TAddress("onos-e2t", 5150), + e2client.WithServiceModel(e2client.ServiceModelName(serviceModelName), + e2client.ServiceModelVersion(serviceModelVersion)), + e2client.WithEncoding(e2client.ProtoEncoding) + +``` + +### E2 Subscription API +To subscribe for receiving indications from an E2 node, first create an instance of E2 node using E2 node ID (i.e. the ID which is used to create E2 node entity in [onos-topo]), and define a subscription spec. +A Subscription spec should specify the following items: + +- Service model specific actions +- Service model specific event triggers + + +For example, the following code snippet, creates a subscription spec for KPM v2 service model +that requires specifying a report action including Action Definition and Event Triggers encoded data. + +```go +import ( + e2api "github.com/onosproject/onos-api/go/onos/e2t/e2/v1beta1" +) + ... + + e2node := client.Node(e2client.NodeID(e2nodeID)) + subName := "onos-kpimon-subscription" // A unique and constant subscription name + var eventTriggerData []byte // Encode the service model specific event trigger + var actionDefinitionData []byte // Encode the service model specific Action Definitions + var actions []e2api.Action + action := e2api.Action{ + ID: 100, + Type: e2api.ActionType_ACTION_TYPE_REPORT, + SubsequentAction: &e2api.SubsequentAction{ + Type: e2api.SubsequentActionType_SUBSEQUENT_ACTION_TYPE_CONTINUE, + TimeToWait: e2api.TimeToWait_TIME_TO_WAIT_ZERO, + }, + Payload: actionDefinitionData, + } + + + subSpec := e2api.SubscriptionSpec{ + Actions: actions, + EventTrigger: e2api.EventTrigger{ + Payload: eventTriggerData, + }, +} +``` + +Once the subscription spec is defined, use the `Subscribe` method to register the subscription and begin receiving indications. Indications are received in a Go channel: + +```go +ch := make(chan e2api.Indication) + +channelID, err := e2node.Subscribe(context.TODO(), subName, subSpec, ch) +if err != nil { + return err +} + +for ind := range ch { + ... +} +``` + +The `Subscribe` method will return once the subscription has been registered with the subscription service. Once a subscription has been registered, it will not be unregistered until explicitly requested by the client. Changes to the state of the E2 node, subscription service, and termination points will be handled transparently by the core services and client implementation, which will work continuously to receive indications on the given channel. + +A `context.Context` can be used to set a timeout for the subscription initialization: + +```go +ctx, cancel := context.WithTimeout(context.Background(), time.Minute) +defer cancel() +channelID, err := e2node.Subscribe(ctx, subName, subSpec, ch) + +``` + +To unsubscribe a registered subscription: + +```go +err = node.Unsubscribe(ctx, subName) +if err != nil { + return err +} +```` + +### E2 Control API +Control API providing the capability of sending E2 control messages to the E2 node via E2T and +receiving E2AP control acknowledgement and failure messages. + +To use control API, the following package should be imported in your go code +```go + e2api "github.com/onosproject/onos-api/go/onos/e2t/e2/v1beta1" +```` + +Follow the instructions in [Creating an E2 Client](#creating-an-e2-client) section to create an E2 client for a service model that supports E2AP Control API(i.e. change the service model name and version to the corresponding service model, e.g. serviceModelName = "oran-e2sm-rc-pre", serviceModelVersion = "v2") + + +After creating the client, a control message should be created which has the following items: + +- *Header*: service model specific control header bytes +- *Payload*: service model specific control message bytes + +For example, to send a control message to an E2 node: + +```go + +controlMessage := &e2api.ControlMessage { + Header: header, + Payload: payload, +} + +node := e2client.Node(e2client.NodeID(e2nodeID)) +outcome, err := node.Control(ctx, controlMessage) + +``` + +The return value of Control method is an error or service model specific control outcome bytes +that should be decoded using service models to extract control outcome information. + + +[onos-topo]: https://github.com/onosproject/onos-topo \ No newline at end of file diff --git a/onos-ric-sdk-go/docs/o1.md b/onos-ric-sdk-go/docs/o1.md new file mode 100644 index 0000000..d8054ea --- /dev/null +++ b/onos-ric-sdk-go/docs/o1.md @@ -0,0 +1,65 @@ + + +## O1 API +### Configuration of Applications + +Applications can be configured via [onos-config]. The µONOS RIC SDK provides a library that implements +gnmi agent and an interface between gnmi agent and an App. +gNMI agent is a simple and mostly stateless server to process gNMI requests from [onos-config] and +carry state related to connection and current conversation. +Agent uses callback functions to push configuration data to the xApp and to retrieve requested +configuration data from the xApp. + +#### Usage + +The following function call runs the gnmi agent server, initializes xApp configuration, +provides a pointer to the xApp config. + +```go +import ( + "github.com/onosproject/onos-ric-sdk-go/pkg/config/registry" +) + +appConfig, err := registry.RegisterConfigurable("/etc/onos/config/config.json", ®istry.RegisterRequest{}) +``` + +The application can access to its configuration as an interface{} as follows: + +```go +config := appConfig.Config.Config() +```` + +An application can write its own utility functions to +convert its configuration to an appropriate format +(e.g. JSON), however the config SDK provides some utility functions that +allows an application to retrieve its configuration for a specific path +in the config tree or monitor configuration changes continually at runtime. +For example, we can use the following function to retrieve the +configuration value for a specific config path in human readable format (e.g. /a/b/c), + +```go +value := appConfig.Config.Get("/a/b/c") +``` + +To monitor config changes at runtime in the xApp, it can write similar code +as follows: + +```go +import ( + "github.com/onosproject/onos-ric-sdk-go/pkg/config/event" +) + +ch := make(chan event.Event) +ctx, cancel := context.WithCancel(context.Background()) +defer cancel() +err := appConfig.Config.Watch(ctx, ch) + +for event := range ch { + // Process config events + ... +} + +```` \ No newline at end of file diff --git a/onos-ric-sdk-go/docs/topo.md b/onos-ric-sdk-go/docs/topo.md new file mode 100644 index 0000000..eb8e0d0 --- /dev/null +++ b/onos-ric-sdk-go/docs/topo.md @@ -0,0 +1,117 @@ + + +## Topo API +The `github.com/onosproject/onos-ric-sdk-go/pkg/topo` provides a high level interface for applications to interact +with [onos-topo] subsystem. The current interface allows applications to *Create*, *Update*, *Get*, and *List* topology entities and their relations and *Watch* topology changes. + + +### Create A Topo Client +The following code snippet shows how to create an instance of topo SDK client: + +```go +import ( + toposdk "github.com/onosproject/onos-ric-sdk-go/pkg/topo" + topoapi "github.com/onosproject/onos-api/go/onos/topo" +) + +topoClient, err := toposdk.NewClient() +if err != nil { + return err +} + +``` +### Create or Update Topo Objects +The current SDK provides *Create* and *Update* methods which allows +creating new topology objects or updating existing ones. As an example, the following +code snippet shows how to create an E2 node entity object using *Create* method: + +```go + ... + +object: = &topoapi.Object { + ID: e2NodeID, + Type: topoapi.Object_ENTITY, + Obj: & topoapi.Object_Entity { + Entity: & topoapi.Entity { + KindID: topoapi.ID(topoapi.E2NODE), + }, + }, + Aspects: make(map[string]*gogotypes.Any), + Labels: map[string] string {}, +} + +// Define E2 node aspects +e2NodeAspects := &topoapi.E2Node{ + Servicemodels: // Service models information +} +err := object.SetAspect(e2NodeAspects) +err = topoClient.Create(context.TODO(), object) + +``` + +To update an existing Object, *Get* method can be used to retrieve +an existing object and then after updating its fields, the modified topo Object +should be passed to *Update* method. + + +### Get or List Topo Objects +To get a topo object, the topology object ID should be passed to Get method as follows: + +```go +topoObject, err := topoClient.Get(context.TODO(), topoObjectID) +``` + +*List* method can be used to obtain a collection of objects. *List* method provides [Topology filters] +option to allow listing specific entities or relations. For example, the following code snippet lists all of *Control* relations in topo + +```go +controlRelationFilter := &topoapi.Filters{ + KindFilter: &topoapi.Filter{ + Filter: &topoapi.Filter_Equal_{ + Equal_: &topoapi.EqualFilter{ + Value: topoapi.CONTROLS, + }, + }, + }, + } +objects, err := topoClient.List(context.TODO(), controlRelationFilter) + +``` + + + +### Watch Topo Changes +Current SDK provides a *Watch* method that allows applications to +monitor topology changes using Go channels. *Watch* method provides [Topology filters] option that allows monitoring +changes for specific entities or relations. For example, the following code snippet shows +how to use *Watch* method to monitor *Control* relations + +```go + +controlRelationFilter := &topoapi.Filters{ + KindFilter: &topoapi.Filter{ + Filter: &topoapi.Filter_Equal_{ + Equal_: &topoapi.EqualFilter{ + Value: topoapi.CONTROLS, + }, + }, + }, + } + +ch := make(chan topoapi.Event) +err := topoClient.Watch(context.TODO(), ch, toposdk.WithWatchFilters(controlRelationFilter)) + +for event := range ch { + // Process each event +} + +// Close the channel when stopping +close (ch) + +``` + +[onos-topo]: https://github.com/onosproject/onos-topo +[Topology filters]: https://github.com/onosproject/onos-topo#filters \ No newline at end of file diff --git a/onos-ric-sdk-py/README.md b/onos-ric-sdk-py/README.md new file mode 100644 index 0000000..277f936 --- /dev/null +++ b/onos-ric-sdk-py/README.md @@ -0,0 +1,28 @@ +# onos-ric-sdk-py + +Python Application SDK for ONOS RIC (µONOS Architecture) + +## Description + +This SDK contains two modules, E2 and SDL. + +The SDK uses a sidecar proxy which implements the client side distributed system +and load-balancing logic necessary to communicate to the RIC. + +### E2 module + +The E2 module contains functions that interact with E2 nodes. Apps can subscribe +and unsubscribe to service models, and apps can send E2 control messages to +make changes to E2 nodes. The E2 module interacts with the e2t mode + +### SDL module + +The SDL module contains functions to get topology information from the RIC, for +entities such as E2 nodes and cells. This module to also includes functions to +read and write properties for E2 nodes and cells. + +## Developing + +Run lint/licensing/static checks: `make lint` + +Run unit tests (via `pytest`): `make test` diff --git a/onos-ric-sdk-py/docs/Makefile b/onos-ric-sdk-py/docs/Makefile new file mode 100644 index 0000000..c42252c --- /dev/null +++ b/onos-ric-sdk-py/docs/Makefile @@ -0,0 +1,21 @@ +# Minimal makefile for Sphinx documentation +# SPDX-FileCopyrightText: © 2021 Open Networking Foundation +# SPDX-License-Identifier: Apache-2.0 + +# You can set these variables from the command line, and also +# from the environment for the first two. +SPHINXOPTS ?= +SPHINXBUILD ?= sphinx-build +SOURCEDIR = . +BUILDDIR = _build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/onos-ric-sdk-py/docs/conf.py b/onos-ric-sdk-py/docs/conf.py new file mode 100644 index 0000000..b140d68 --- /dev/null +++ b/onos-ric-sdk-py/docs/conf.py @@ -0,0 +1,86 @@ +# SPDX-FileCopyrightText: © 2021 Open Networking Foundation +# SPDX-License-Identifier: Apache-2.0 +# +# Configuration file for the Sphinx documentation builder. +# +# This file only contains a selection of the most common options. For a full +# list see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. + +import pathlib + +import aiohttp.web + +# -- Module Remapping -------------------------------------------------------- + +aiohttp.web.Application.__module__ = "aiohttp.web" + + +# -- Project information ----------------------------------------------------- + +HERE = pathlib.Path(__file__).parent.parent +version = (HERE / "VERSION").read_text("utf-8") + +project = "onos_ric_sdk_py" +copyright = "2021, Open Networking Foundation" +author = "Open Networking Foundation" + +# The full version, including alpha/beta/rc tags +release = version + + +# -- General configuration --------------------------------------------------- + +# Set whether module names are prepended to all object names. +add_module_names = False + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + "sphinx.ext.autodoc", + "sphinx.ext.intersphinx", + "sphinx.ext.napoleon", + "sphinx_autodoc_typehints", + "sphinxcontrib.openapi", +] + +# Add any paths that contain templates here, relative to this directory. +# templates_path = ["_templates"] + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] + + +# -- intersphinx configuration ----------------------------------------------- + +intersphinx_mapping = { + "python": ("https://docs.python.org/3", None), + "aiohttp": ("https://docs.aiohttp.org/en/stable/", None), +} + + +# -- autodoc configuration --------------------------------------------------- + +autodoc_member_order = "bysource" + + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = "furo" + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +# html_static_path = ["_static"] diff --git a/onos-ric-sdk-py/docs/e2.rst b/onos-ric-sdk-py/docs/e2.rst new file mode 100644 index 0000000..4feb694 --- /dev/null +++ b/onos-ric-sdk-py/docs/e2.rst @@ -0,0 +1,18 @@ +.. + SPDX-FileCopyrightText: © 2021 Open Networking Foundation + SPDX-License-Identifier: Apache-2.0 + +.. _onos_ric_sdk_py-e2: + +== +E2 +== + +.. currentmodule:: onos_ric_sdk_py.e2 + +All communication with the E2T is done through the :class:`~.E2Client`. Its methods are +asynchronous. + +.. autoclass:: E2Client + :members: + :special-members: __aenter__, __aexit__ diff --git a/onos-ric-sdk-py/docs/exceptions.rst b/onos-ric-sdk-py/docs/exceptions.rst new file mode 100644 index 0000000..4406aa6 --- /dev/null +++ b/onos-ric-sdk-py/docs/exceptions.rst @@ -0,0 +1,26 @@ +.. + SPDX-FileCopyrightText: © 2021 Open Networking Foundation + SPDX-License-Identifier: Apache-2.0 + +.. _onos_ric_sdk_py-exceptions: + +========== +Exceptions +========== + +.. currentmodule:: onos_ric_sdk_py.exceptions + +.. automodule:: onos_ric_sdk_py.exceptions + :members: + +Hierarchy +========= + +* :exc:`OnosRicSdkPyError` + + * :exc:`DuplicateRouteError` + + * :exc:`ClientError` + + * :exc:`ClientStoppedError` + * :exc:`ClientRuntimeError` diff --git a/onos-ric-sdk-py/docs/index.rst b/onos-ric-sdk-py/docs/index.rst new file mode 100644 index 0000000..1302eee --- /dev/null +++ b/onos-ric-sdk-py/docs/index.rst @@ -0,0 +1,111 @@ +.. + SPDX-FileCopyrightText: © 2021 Open Networking Foundation + SPDX-License-Identifier: Apache-2.0 + +=========================================== +Welcome to onos_ric_sdk_py's documentation! +=========================================== + +.. toctree:: + :hidden: + :maxdepth: 2 + + reference + misc + +*onos_ric_sdk_py* is a Python 3.7+ framework built using :mod:`asyncio` and +:mod:`aiohttp.web`. At its core, *onos_ric_sdk_py* provides a simple and standardized +way to write xApps that can be deployed as microservices in Python along with the ONF +RIC. + +In addition, *onos_ric_sdk_py* creates an HTTP server with +:doc:`preregistered endpoints<./routes>` for xApp configuration and Prometheus metric +exposition. Developers can add their own endpoints to this server for their own +application logic. + +Usage +===== + +The entrypoint for the *onos_ric_sdk_py* framework is the :func:`~.run` function. + +.. autofunction:: onos_ric_sdk_py.run + +Quickstart +---------- + +The follwing example shows how to use *onos_ric_sdk_py* to create a simple microservice +for consuming and printing indication messages from an E2T subscription. + +.. code-block:: python + + import asyncio + + import onos_ric_sdk_py as sdk + from onos_api.e2t.e2.v1beta1 import ( + Action, + ActionType, + SubsequentAction, + SubsequentActionType, + TimeToWait, + ) + + from .models import MyModel + + + async def run(e2_client: sdk.E2Client, e2_node_id: str) -> None: + async for (header, message) in await e2_client.subscribe( + e2_node_id, + service_model_name="my_model", + service_model_version="v1", + subscription_id="my_app-my_model-sub", + trigger=bytes(MyModel(param="foo")), + actions=[ + Action( + id=1, + type=ActionType.ACTION_TYPE_REPORT, + payload=b"", + subsequent_actionSubsequentAction( + type=SubsequentActionType.SUBSEQUENT_ACTION_TYPE_CONTINUE, + time_to_wait=TimeToWait.TIME_TO_WAIT_ZERO, + ) + ) + ], + ): + print(header, message) + + + async def main() -> None: + e2_client = sdk.E2Client(app_id="my_app", e2t_endpoint="onos-e2t:5150") + sdl_client = sdk.SDLClient(topo_endpoint="onos-topo:5150") + async with e2_client, sdl_client: + async for e2_node_id, _ in sdl_client.watch_e2_connections(): + asyncio.create_task(run(e2_client, e2_node_id)) + + + if __name__ == "__main__": + sdk.run(main()) + +Installation +============ + +*onos_ric_sdk_py* can be installed from PyPI. + +.. code-block:: bash + + $ pip install onos_ric_sdk_py + +You can also get the latest code from GitHub. + +.. code-block:: bash + + $ pip install git+https://github.com/onosproject/onos-ric-sdk-py + +Dependencies +============ + +* Python 3.7+ +* aiohttp +* aiohttp-swagger +* betterproto +* onos-api +* prometheus-async diff --git a/onos-ric-sdk-py/docs/misc.rst b/onos-ric-sdk-py/docs/misc.rst new file mode 100644 index 0000000..f881420 --- /dev/null +++ b/onos-ric-sdk-py/docs/misc.rst @@ -0,0 +1,16 @@ +.. + SPDX-FileCopyrightText: © 2021 Open Networking Foundation + SPDX-License-Identifier: Apache-2.0 + +.. _onos_ric_sdk_py-misc: + +============= +Miscellaneous +============= + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/onos-ric-sdk-py/docs/openapi.yml b/onos-ric-sdk-py/docs/openapi.yml new file mode 100644 index 0000000..2d2dac9 --- /dev/null +++ b/onos-ric-sdk-py/docs/openapi.yml @@ -0,0 +1,176 @@ +# SPDX-FileCopyrightText: © 2021 Open Networking Foundation +# SPDX-License-Identifier: Apache-2.0 + +components: null +info: + description: Swagger API definition + title: Swagger API + version: 1.0.0 +openapi: 3.0.1 +paths: + /config: + get: + description: Return the current service configuration settings. + responses: + '200': + content: + application/json: + example: + foo: + - bar + - baz + timeout: 15 + description: Successful operation. + '500': + description: Failed to load or parse the configuration file. + tags: + - Configuration + head: + description: Return the current service configuration settings. + responses: + '200': + content: + application/json: + example: + foo: + - bar + - baz + timeout: 15 + description: Successful operation. + '500': + description: Failed to load or parse the configuration file. + tags: + - Configuration + patch: + description: Partially update the service's configuration settings. + requestBody: + content: + application/json: + example: + config: + timeout: 60 + description: New service configuration object + required: true + responses: + '200': + content: + application/json: + example: + foo: + - bar + - baz + timeout: 60 + description: Successful operation. + '400': + description: Missing or invalid 'config' parameter. + '500': + description: Failed to update service configuration. + tags: + - Configuration + put: + description: Completely overwrite the service's configuration settings. + requestBody: + content: + application/json: + example: + config: + foo: + - bar + - baz + timeout: 30 + description: New service configuration object + required: true + responses: + '200': + content: + application/json: + example: + foo: + - bar + - baz + timeout: 30 + description: Successful operation. + '400': + description: Missing or invalid 'config' parameter. + '500': + description: Failed to overwrite service configuration. + tags: + - Configuration + /log/{level}: + put: + description: Dynamically set the service's log level. + parameters: + - description: The new log level. + in: path + name: level + required: true + schema: + enum: + - DEBUG + - INFO + - WARNING + - ERROR + - FATAL + type: string + responses: + '200': + content: + text/plain: + example: Log level set to WARNING from INFO + description: Successful operation. + '400': + description: Invalid log level. + tags: + - Configuration + /metrics: + get: + description: Scrape the service's Prometheus metrics cache. + responses: + '200': + content: + text/plain: + example: 'python_gc_objects_collected_total{generation="0"} 479.0 + + python_gc_objects_collected_total{generation="1"} 260.0 + + python_gc_objects_collected_total{generation="2"} 0.0' + description: Successful operation. + tags: + - Prometheus + head: + description: Scrape the service's Prometheus metrics cache. + responses: + '200': + content: + text/plain: + example: 'python_gc_objects_collected_total{generation="0"} 479.0 + + python_gc_objects_collected_total{generation="1"} 260.0 + + python_gc_objects_collected_total{generation="2"} 0.0' + description: Successful operation. + tags: + - Prometheus + /status: + get: + description: Check if the webserver is responsive. + responses: + '200': + content: + text/plain: + example: Alive + description: Successful operation. + tags: + - Health + head: + description: Check if the webserver is responsive. + responses: + '200': + content: + text/plain: + example: Alive + description: Successful operation. + tags: + - Health +servers: +- url: / diff --git a/onos-ric-sdk-py/docs/reference.rst b/onos-ric-sdk-py/docs/reference.rst new file mode 100644 index 0000000..1328096 --- /dev/null +++ b/onos-ric-sdk-py/docs/reference.rst @@ -0,0 +1,17 @@ +.. + SPDX-FileCopyrightText: © 2021 Open Networking Foundation + SPDX-License-Identifier: Apache-2.0 + +.. _onos_ric_sdk_py-reference: + +========= +Reference +========= + +.. toctree:: + :name: reference + + E2 + SDL + Routes + Exceptions diff --git a/onos-ric-sdk-py/docs/routes.rst b/onos-ric-sdk-py/docs/routes.rst new file mode 100644 index 0000000..b4da5f9 --- /dev/null +++ b/onos-ric-sdk-py/docs/routes.rst @@ -0,0 +1,13 @@ +.. + SPDX-FileCopyrightText: © 2021 Open Networking Foundation + SPDX-License-Identifier: Apache-2.0 + +.. _onos_ric_sdk_py-routes: + +====== +Routes +====== + +.. openapi:: openapi.yml + :examples: + :group: diff --git a/onos-ric-sdk-py/docs/sdl.rst b/onos-ric-sdk-py/docs/sdl.rst new file mode 100644 index 0000000..efea898 --- /dev/null +++ b/onos-ric-sdk-py/docs/sdl.rst @@ -0,0 +1,18 @@ +.. + SPDX-FileCopyrightText: © 2021 Open Networking Foundation + SPDX-License-Identifier: Apache-2.0 + +.. _onos_ric_sdk_py-sdl: + +=== +SDL +=== + +.. currentmodule:: onos_ric_sdk_py.sdl + +The :class:`~.SDLClient` is used for fetching and storing information about the +topology of the network. + +.. autoclass:: SDLClient + :members: + :special-members: __aenter__, __aexit__ diff --git a/onos-rsm/README.md b/onos-rsm/README.md new file mode 100644 index 0000000..31ac870 --- /dev/null +++ b/onos-rsm/README.md @@ -0,0 +1,82 @@ + + +# onos-rsm +The xApplication for ONOS-SDRAN (µONOS Architecture) to manage RAN slices + +## Overview +The `onos-rsm` is the xApplication running over ONOS SD-RAN for `RAN Slice Management (RSM)`. +The RAN slice has definitions related with `Quality of Service (QoS)` for associated UEs, such as `time frame rates` and `scheduling algorithms`. +In order to manage the RAN slice, this xApplication `creates`, `deletes`, and `updates` RAN slices through CLI. +Also, this xApplication associates a specific UE to a RAN slice so that the UE can achieve the QoS that is defined in the associated RAN slice. +The `onos-rsm` xApplication subscribes CU E2 nodes as well as DU E2 nodes. +CU E2 nodes report the `EPC Mobility Management (EMM) event` to the `onos-rsm` xApp. +On the other hands, DU E2 nodes receive control messages for RAN slice management and UE-slice association. +The `onos-rsm` xApplication stores all RAN slice information to `onos-topo` and `onos-uenib`. + +## Interaction with other ONOS SD-RAN micro-services +To begin with, `onos-rsm` subscribes `CUs` and `DUs` through `onos-e2t`. +Once `UE` is attached, the `CU` send the indication message to `onos-rsm` to report that the `UE` is connected. +Then, `onos-rsm` stores the attached `UE` information to `onos-uenib`. +When a user creates/deletes/updates a slice through `onos-cli`, `onos-rsm` sends a control message to `DU`. +Likewise, the user associates `UE` with a created slice through `onos-cli`, `onos-rsm` sends a control message to `DU`. +After sending the control message successfully, `onos-rsm` updates `onos-topo` and `onos-uenib`, accordingly. + +## Command Line Interface +Go to `onos-cli` and command below for each purpose + +* Create slice + * DU_E2_NODE_ID: target DU's E2 Node ID (e.g., e2:4/e00/3/c8). + * SCHEDULER_TYPE: scheduler type such as round robin (RR) and proportional fair (PF). + * SLICE_ID: this slice's ID (e.g., 1). + * WEIGHT: time frame rates (e.g., 30). It should be less than 80. + * SLICE_TYPE: downlink (DL) or uplink (UL). + +```bash +onos-cli$ kubectl exec -it deployment/onos-cli -n riab -- onos rsm create slice --e2NodeID --scheduler --sliceID --weight --sliceType + +# example: +onos-cli$ kubectl exec -it deployment/onos-cli -n riab -- onos rsm create slice --e2NodeID e2:4/e00/3/c8 --scheduler RR --sliceID 1 --weight 30 --sliceType DL +``` + +* Update slice + * DU_E2_NODE_ID: target DU's E2 Node ID (e.g., e2:4/e00/3/c8). + * SCHEDULER_TYPE: scheduler type such as round robin (RR) and proportional fair (PF). + * SLICE_ID: this slice's ID (e.g., 1). + * WEIGHT: time frame rates (e.g., 30). It should be less than 80. + * SLICE_TYPE: downlink (DL) or uplink (UL). + +```bash +onos-cli$ kubectl exec -it deployment/onos-cli -n riab -- onos rsm update slice --e2NodeID --scheduler --sliceID --weight --sliceType + +# example: +onos-cli$ kubectl exec -it deployment/onos-cli -n riab -- onos rsm update slice --e2NodeID e2:4/e00/3/c8 --scheduler RR --sliceID 1 --weight 50 --sliceType DL +``` + +* Delete slice + * DU_E2_NODE_ID: target DU's E2 Node ID (e.g., e2:4/e00/3/c8). + * SLICE_ID: this slice's ID (e.g., 1). + * SLICE_TYPE: downlink (DL) or uplink (UL). + +```bash +onos-cli$ kubectl exec -it deployment/onos-cli -n riab -- onos rsm delete slice --e2NodeID --sliceID --sliceType + +# example: +onos-cli$ kubectl exec -it deployment/onos-cli -n riab -- onos rsm delete slice --e2NodeID e2:4/e00/3/c8 --sliceID 1 --sliceType DL +``` + +* UE-slice association + * DU_E2_NODE_ID: target DU's E2 Node ID (e.g., e2:4/e00/3/c8). + * SLICE_ID: this slice's ID (e.g., 1). + * DRB_ID: DRB-ID for the bearer. It should be in onos-uenib. + * DU_UE_F1AP_ID: DU_UE_F1AP_ID. It should be in onos-uenib. + +```bash +onos-cli$ kubectl exec -it deployment/onos-cli -n riab -- onos rsm set association --dlSliceID --e2NodeID --drbID --DuUeF1apID + +# example: +onos-cli$ kubectl exec -it deployment/onos-cli -n riab -- onos rsm set association --dlSliceID 1 --e2NodeID e2:4/e00/3/c8 --drbID 5 --DuUeF1apID 1240 +``` \ No newline at end of file diff --git a/onos-topo/README.md b/onos-topo/README.md new file mode 100644 index 0000000..1383726 --- /dev/null +++ b/onos-topo/README.md @@ -0,0 +1,140 @@ + + +# onos-topo +[![Go Report Card](https://goreportcard.com/badge/github.com/onosproject/onos-topo)](https://goreportcard.com/report/github.com/onosproject/onos-topo) +[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/gojp/goreportcard/blob/master/LICENSE) +[![GoDoc](https://godoc.org/github.com/onosproject/onos-topo?status.svg)](https://godoc.org/github.com/onosproject/onos-topo) + +## Overview + +The µONOS Topology subsystem provides topology management for µONOS core services and applications. +The topology subsystem structures the topology information as a set of objects, which can be either +`Entity`, `Relation` or a `Kind`. + +* `Entity` objects are nodes in a graph and are generally intended to represent network devices, control entities, +control domains, and so on. +* `Relation` objects are edges in a graph and are intended to represent various types of relations between two +`Entity` objects, e.g. `contains`, `controls`, `implements`. +* `Kind` objects can be thought of as template or schema objects that represent an entity or a relation kind. +Strictly speaking, `Entity` or `Relation` instances do not have to be associated with a `Kind`, +but maintaining `Kind` associations can be used for schema validation and speeding up queries and is +therefore highly encouraged. + +## API +The `onos-topo` subsystem exposes the topology information via a [gRPC API] that supports the above abstractions. + +### Unique ID +Each `Entity`, `Relation` and `Kind` objects has a unique identifier that can be used to directly look it up, +update or delete it. + +### Aspects +The `Entity` and `Relation` objects themselves carry only the essential information for identifying them, +associating them with a particular kind and in case of `Relation`, for associating the two - source and target - +`Entity` objects. Clearly, while this is necessary, it is not sufficient to allow the platform or applications to +track other pertinent information about the entities and relations. + +Since different use-cases or applications require tracking different information, and these may vary for different +types of devices or network domains, the topology schema must be extensible to carry various aspects of information. +This is where the notion of `Aspect` comes in. An `Aspect` is a collection of structured information, modeled as a +Protobuf message (although this is not strictly necessary), which is attached to any type of object; generally +mostly an `Entity` or a `Relation`. + +Each object carries a mapping of aspect type (`TypeURL`) and Protobuf `Any` message. For example, to track a geo-location +of a network element, one can associate `onos.topo.Location` instance, populated with the appropriate longitude and +latitude with the `Entity` that represents that network element, with the `Location` being defined as follows: +```proto +// Geographical location; expected value type of "location" aspect +message Location { + double lat = 1; + double lng = 2; +} +``` + +Similarly, to track information about the cone of signal coverage for a radio-unit, one can attach `onos.topo.Coverage` +instance to an `Entity` representing the radio unit, with `Coverage` being defined as follows: +```proto +// Area of coverage; expected value type of "coverage" aspect +message Coverage { + int32 height = 1; + int32 arc_width = 2; + int32 azimuth = 3; + int32 tilt = 4; +} +``` + +The [current list of aspects](https://github.com/onosproject/onos-api/tree/master/proto/onos/topo) defined in `onos-api` includes the following: +* `onos.topo.Asset` - basic asset information for the device: model, HW, SW versions, serial number, etc. +* `onos.topo.Location` - geo location coordinates +* `onos.topo.Configurable` - info for devices that support configuration via gNMI +* `onos.topo.MastershipState` - for tracking mastership role +* `onos.topo.TLSOptoins` - TLS connection options +* `onos.topo.Protocols` - for tracking connectivity state of supported device control protocols +* `onos.topo.Coverage` - radio unit signal coverage cone information +* `onos.topo.E2Node` - information about an O-RAN E2 node +* `onos.topo.E2Cell` - information about an O-RAN E2 cell +* `onos.topo.AdHoc` - for tracking ad-hoc key/value string attributes (not labels) + +The above are merely examples of aspects. Network control platforms and applications can supply their own depending on +the needs of a particular use-case. + +### Labels +To assist in categorization of the topology objects, each object can carry a number of labels as meta-data. +Each label carries a value. + +For example the `deployment` label can have `production` or `staging` or `testing` as values. Or similarly, +`tier` label can have `access`, `fabric` or `backhaul` as values to indicate the area of network where the entity +belongs. + +### Filters +The topology API provides a `List` method to obtain a collection of objects. The caller can specify a number of +different filters to narrow the results. All topology objects will be returned if the request does not contain +any filters. + +* Type Filter - specifies which type(s) of objects - `Entity`, `Relation` or `Kind` - should be included. +* Kind Filter - specifies which kind(s) of objects should be included, e.g. `contains`, `controls` +* Labels Filter - specifies which label name/value(s) should be included, e.g. `tier=fabric` +* Relation Filter - specifies target entities related to a given source entity via a relation of a given kind + +Support for other filters may be added in the future. + +## Distribution +The topology subsystem is available as a [Docker] image and deployed with [Helm]. To build the Docker image, +run `make images`. + +### Visualizer +To assist developers in visualizing the entities and relations tracked by `onos-topo`, a simple graphic visualization +tool is available. It can be run locally via: +```bash +# Requires 'kubectl port-forward deploy/onos-topo 5150' to forward topo gRPC API +> go run cmd/topo-visualizer/topo-visualizer.go --service-address localhost:5150 +``` +and then simply opening `http://localhost:5152` using your web browser of choice. + +Alternatively, the visualizer can be run directly from the `onos-topo` docker container via: +```bash +# Requires 'kubectl port-forward deploy/onos-topo 5152' to forward visualizer HTTP/WS traffic +> k exec -it deploy/onos-topo -- /usr/local/bin/topo-visualizer +``` + +The visualizer uses `onos-topo` API to watch changes occurring on the topology and forwards +these changes via web-socket to the browser where it renders the various entities and relations using +a simple force layout graph. This allows the view to dynamically adjust to reflect the current topology state. + +Clicking on nodes (entities) and links (relations) will show the full contents of the entity or relation +as JSON structure. Nodes can be dragged around and the entire graph can be zoomed and panned within the viewport. + +The visualizer is presently under active development. + +## See Also +* [Deployment](docs/deployment.md) +* [CLI examples](docs/cli.md) +* [API examples (Golang)](docs/api-go.md) + + +[gRPC API]: https://github.com/onosproject/onos-api/blob/master/proto/onos/topo/topo.proto +[topology subcommands]: https://github.com/onosproject/onos-cli/blob/master/docs/cli/onos_topo.md +[Docker]: https://www.docker.com/ +[Helm]: https://helm.sh diff --git a/onos-topo/docs/api-go.md b/onos-topo/docs/api-go.md new file mode 100644 index 0000000..c500889 --- /dev/null +++ b/onos-topo/docs/api-go.md @@ -0,0 +1,151 @@ + + +# API Examples for Golang +The following are a few examples on how to use the [Golang API] generated from the `onos-topo` gRPC API. + +All the examples assume that the following import is available: +```go +import "github.com/onosproject/onos-api/go/topo" +``` + +Similarly, all examples assume that the `TopoService` client has been obtained and that context `ctx` was +either provided or created via code similar to the following: +```go +client := topo.CreateTopoClient(conn) +... +ctx := context.Background() +``` + +## Create an Entity +The following example shows how to create an `Entity` of `e2cell` kind, with a couple of separate aspects of +information - `Location`, `Coverage` and `E2Cell`: +```go +cell := &topo.Object{ + ID: topo.ID(cellID), + Type: topo.Object_ENTITY, + Obj: &topo.Object_Entity{ + Entity: &topo.Entity{ + KindID: topo.ID(topo.E2CELL), + }, + } +} +cell.SetAspect(&topo.Location{Lat: 50.08834, Lng: 14.40372}) +cell.SetAspect(&topo.Coverage{Height: 8.7, ArcWidth: 120.0, Azimuth: 315.0, Tilt: -5.0}) +cell.SetAspect(&topo.E2Cell{CellObjectID: "4269A20", AntennaCount: 5, EARFCN: 69, PCI: 42, CellType: "FEMTO"}) + +resp, err := client.Create(ctx, &topo.CreateRequest{Object: cell}) +``` + +## Create a Relation +Here we can see an example of creating `Relation` of `neighbors` kind, representing one cell being a neighbor +of another. There are no aspects annotating this relation. Also, note that if the relation ID is unspecified +during the creation, one will be automatically generated using the `topo.RelationID(...)` method, based on +the source, kind and the target IDs. +```go +relation := &topo.Object{ + Type: topo.Object_RELATION, + Obj: &topo.Object_Relation{ + Entity: &topo.Relation{ + KindID: topo.ID(topo.NEIGHBORS), + SrcEntityID: cellID, + TgtEntityID: neighborCellID, + }, + } +} + +resp, err := client.Create(ctx, &topo.CreateRequest{Object: relation}) +``` + +## Get an Object +In order to retrieve a specific object, one must simply provide its ID. To access a specific aspect, create +an instance of the aspect object and pass its reference to the `GetAspect` method of the topology object: +```go +cell, err := client.Get(ctx, &topo.GetRequest{ID: cellID}) +if err == nil { ... } +coverage := &topo.Coverage{} +cell.GetAspect(coverage) +``` + +## Update an Entity +To update an aspect of an object, one must first obtain the object via `Get`, update its structure and +then call the `Update` method: +```go +cell, err := client.Get(&topo.GetRequest{ID: cellID}) +if err == nil { ... } +cell.SetAspect(&topo.Location{Lat: 50.08834, Lng: 14.40372}) + +resp, err := client.Update(ctx, &topo.UpdateRequest{Object: cell}) +``` + +## List Objects +The `List` method can be used to obtain various collections of objects using `Filters` specified as part of +the request. Presently, there are several types of filters. + +* Object Type filter - specifies which types of objects are relevant +* Entity or Relation Kind filter - specifies which kinds of entities or relations are relevant +* Label filters - specifies criteria to filter on specific labels and their values +* Relation filter - allows finding objects related to another object via a particular kind of relation + +The object kind and label filters can specify values via `equal`, `in` and `not` operators. + +Furthermore, the results can be optionally sorted (ascending or descending) by the ID of the objects. +This can be useful for applications where determinism in the returned results is desirable. + +Here is an example of requesting only `Entity` objects, of either `e2node` or `e2cell` kind, sorted in the +ascending order of their IDs: +```go +filters := &topo.Filters{ + KindFilter: &topoapi.Filter{ + Filter: &topoapi.Filter_In{In: &topoapi.InFilter{Values: []string{topo.E2NODE, topo.E2CELL}}}, + }, +} +resp, err := client.List(ctx, &topo.ListRequest{Filters: filters, SortOrder: topo.SortOrder_ASCENDING}) +``` + +The following shows how to obtain an unordered list of `e2cell` entities, related to a specified node entity +using a `contains` relation: +```go +resp, err := client.List(ctx, &topo.ListRequest{Filters: &topo.Filters{ + RelationFilter: &topo.RelationFilter{ + SrcId: nodeID, + RelationKind: topo.CONTAINS, + TargetKind: topo.E2CELL, + }, + }}) +``` + + +## Watch Changes +The topology API allows clients to watch the changes in real-time via its `Watch` method which delivers its +results as a continuous stream of events. These include not only the usual `create`, `update`, and `delete` events, +but also `replay` events to indicate the object as it existed prior to the `Watch` being called. + +As with the `List` method, the results can be further narrowed by specifying `Filters` in the request. +Here is a simple example of the `Watch` usage, which does not specify any filters: + +```go +stream, err := client.Watch(ctx, &topo.WatchRequest{}) +if err == nil { ... } + +for { + msg, err := stream.Recv() + if err == io.EOF { + break + } + if err != nil { ... } + processEvent(msg.Event.Type, msg.Event.Object) +} +``` +The client can cancel the watch at anytime by invoking `ctx.Done()`. + +## Delete an Object +Deleting an object requires to merely provide its ID: +```go +node, err := client.Delete(ctx, &topo.DeleteRequest{ID: nodeID}) +if err == nil { ... } +``` + +[Golang API]: https://github.com/onosproject/onos-api/tree/master/go/onos/topo diff --git a/onos-topo/docs/cli.md b/onos-topo/docs/cli.md new file mode 100644 index 0000000..83f7976 --- /dev/null +++ b/onos-topo/docs/cli.md @@ -0,0 +1,82 @@ + + +# Command-Line Interface +The project provides a command-line facilities for remotely +interacting with the topology subsystem. + +The commands are available at run-time using the consolidated `onos` client hosted in the `onos-cli` repository. + +The documentation about building and deploying the consolidated `onos` client or its Docker container +is available in the `onos-cli` GitHub repository. + +## Usage +To see the detailed usage help for the `onos topo ...` family of commands, +please see the [CLI documentation](https://github.com/onosproject/onos-cli/blob/master/docs/cli/onos_topo.md) + +## Examples +Here are some concrete examples of usage: + +List all entities. +```bash +$ onos topo get entities +Entity ID Kind ID Labels Aspects +14550002 e2cell onos.topo.E2Cell,onos.topo.Location,onos.topo.Coverage +14550001 e2cell onos.topo.Coverage,onos.topo.E2Cell,onos.topo.Location +5154 e2node onos.topo.E2Node +1454c003 e2cell onos.topo.Location,onos.topo.Coverage,onos.topo.E2Cell +14550003 e2cell onos.topo.E2Cell,onos.topo.Location,onos.topo.Coverage +5153 e2node onos.topo.E2Node +1454c001 e2cell onos.topo.Location,onos.topo.Coverage,onos.topo.E2Cell +1454c002 e2cell onos.topo.E2Cell,onos.topo.Location,onos.topo.Coverage +``` + +List all entities of `e2node` kind. +```bash +$ onos topo get entities --kind e2node +Entity ID Kind ID Labels Aspects +5153 e2node onos.topo.E2Node +5154 e2node onos.topo.E2Node +``` +List all `e2cell` entities related to the specified `e2node` via `contains` relation. + +```bash +$ onos topo get entities --related-to 5153 --related-via contains +1454c003 e2cell onos.topo.E2Cell +1454c002 e2cell onos.topo.E2Cell +1454c001 e2cell onos.topo.E2Cell +``` + +Show verbose information on entity `1454c001` +```bash +$ onos topo get entity 1454c001 -v +1454c001 e2cell + onos.topo.Location={"lat":52.486405,"lng":13.412234} + onos.topo.Coverage={"arc_width":120,"azimuth":0,"height":43,"tilt":1} + onos.topo.E2Cell={"cellObjectId":"13842601454c001","cellGlobalId":{"value":"1454c001"}} +``` + +Show all `neighbors` relations +```bash +$ onos topo get relations --kind neighbors +Relation ID Kind ID Source ID Target ID Labels Aspects +1454c003-1454c002 neighbors 1454c003 1454c002 +1454c001-1454c002 neighbors 1454c001 1454c002 +1454c002-1454c003 neighbors 1454c002 1454c003 +14550001-14550003 neighbors 14550001 14550003 +14550002-14550001 neighbors 14550002 14550001 +14550002-14550003 neighbors 14550002 14550003 +1454c003-1454c001 neighbors 1454c003 1454c001 +1454c001-1454c003 neighbors 1454c001 1454c003 +1454c002-1454c001 neighbors 1454c002 1454c001 +14550001-14550002 neighbors 14550001 14550002 +14550003-14550002 neighbors 14550003 14550002 +14550003-14550001 neighbors 14550003 14550001 +``` + +Create a new entity with sparsely populated `Configurable` aspect +```bash +$ onos topo create entity "virtual" --aspect onos.topo.Configurable='{"type": "devicesim-1.0.x", "version": "1.0.0"}' +``` diff --git a/onos-topo/docs/deployment.md b/onos-topo/docs/deployment.md new file mode 100644 index 0000000..8fdd9c3 --- /dev/null +++ b/onos-topo/docs/deployment.md @@ -0,0 +1,87 @@ + + +# Deploying onos-topo + +This guide deploys `onos-topo` through its [Helm] chart assumes you have a [Kubernetes] cluster running +with an atomix controller deployed in a namespace. +`onos-topo` Helm chart is based on Helm 3.0 version, with no need for the Tiller pod to be present. +If you don't have a cluster running and want to try on your local machine please follow first +the [Kubernetes] setup steps outlined in [deploy with Helm](https://docs.onosproject.org/developers/deploy_with_helm/). +The following steps assume you have the setup outlined in that page, including the `micro-onos` namespace configured. + +## Installing +To install the `onos-topo` published chart in the `micro-onos` namespace run: +```bash +$ helm -n micro-onos install onos-topo onosproject/onos-topo +``` +Note, that this assumes that `https://charts.onosproject.org` was added as `onosproject` Helm repo. + +Alternately, you can deploy your own version of the chart from the root directory of the `onos-helm-charts` +repo via the following: +```bash +$ helm install -n micro-onos onos-uenib onos-uenib +``` +In either case, the output of the `helm install` command should look similar to the following: +```bash +NAME: onos-topo +LAST DEPLOYED: Wed Jul 14 14:30:27 2021 +NAMESPACE: micro-onos +STATUS: deployed +REVISION: 1 +TEST SUITE: None +``` + +`helm install` assigns a unique name to the chart and displays all the k8s resources that were +created by it. To list the charts that are installed and view their statuses, run `helm ls`: + +```bash +$ helm -n micro-onos ls +NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION +onos-topo micro-onos 1 2021-07-14 14:30:27.81784 -0700 PDT deployed onos-topo-1.0.15 v0.7.9 +``` + +### Partition Set +The `onos-topo` chart also deploys a custom Atomix `PartitionSet` resource to store all the +topology information in a replicated and fail-safe manner. +In the following example there is only one partition set deployed `onos-topo-consensus-store-1-0`. + +```bash +$ kubectl -n micro-onos get pods +NAME READY STATUS RESTARTS AGE +onos-topo-854bf799f-lrnkd 3/3 Running 0 2m42s +onos-topo-consensus-store-1-0 1/1 Running 0 2m41s +``` + +One can customize the number of partitions and replicas by modifying, in `values.yaml`, under `store/raft` +the values of +```bash +partitions: 1 +partitionSize: 1 +``` + +## Uninstalling + +To uninstall the `onos-topo` chart, run the following: +```bash + helm delete -n micro-onos onos-topo +``` + +## Troubleshooting + +Helm offers two flags to help you debug your chart. This can be useful if your chart does not install, +the pod is not running for some reason, or you want to trouble-shoot custom configuration values, + +* `--dry-run` check the chart without actually installing the pod. +* `--debug` prints out more information about your chart + +```bash +helm install -n micro-onos onos-topo --debug --dry-run onos-topo/ +``` + +[Helm]: https://helm.sh/ +[Kubernetes]: https://kubernetes.io/ +[kind]: https://kind.sigs.k8s.io + diff --git a/onos-uenib/README.md b/onos-uenib/README.md new file mode 100644 index 0000000..53043a9 --- /dev/null +++ b/onos-uenib/README.md @@ -0,0 +1,60 @@ + + +# onos-uenib +UE NIB subsystem for ONOS SD-RAN (µONOS Architecture) + +## Overview +This subsystem provides a central location for tracking information associated +with RAN user equipment (UE). + +Applications can associate various aspects of information with each UE either for their +one purpose or for sharing such state with other applications. The API and the system itself +is designed to allow for high rate of data mutation and with minimum latency. + +### Unique ID +Each UE object has a unique identifier that can be used to directly look it up, update or delete it. + +### Aspects +Since different use-cases or applications require tracking different information, and these may vary for different +types of user equipment, the schema must be extensible to carry various aspects of information. +This is where the notion of `Aspect` comes in. An `Aspect` is a collection of structured information, modeled as a +Protobuf message (although this is not strictly necessary), which is attached to the UE. In fact, UE entity carries +only its unique identifier, and the rest of the information is expressed via aspects, which are tracked as a map +of aspect type (`TypeURL`) and Protobuf `Any` message bindings. + +For example, to track UE cell connectivity, the system uses the `CellInfo` aspect defined as a `CellConnection` for the +serving cell and the list of candidate cells, defined as follows: + +```proto +// CellConnection represents UE cell connection. +message CellConnection { + string id = 1 [(gogoproto.customname) = "ID", (gogoproto.casttype) = "ID"]; + double signal_strength = 2;; +} + +// CellInfo provides data on serving cell and candidate cells. +message CellInfo { + CellConnection serving_cell = 1; + repeated CellConnection candidate_cells = 2; +} +``` + +Of course applications may define their own structures of information and attach them to the UE for their own purpose +or to share with other applications. + +## See Also +* [Deployment](docs/deployment.md) +* [CLI examples](docs/cli.md) +* [API examples (Golang)](docs/api-go.md) +* [topology subsystem] + + +[gRPC API]: https://github.com/onosproject/onos-api/blob/master/proto/onos/topo/topo.proto +[topology subcommands]: https://github.com/onosproject/onos-cli/blob/master/docs/cli/onos_topo.md +[Docker]: https://www.docker.com/ +[Helm]: https://helm.sh +[topology subsystem]: https://github.com/onosproject/onos-topo \ No newline at end of file diff --git a/onos-uenib/docs/api-go.md b/onos-uenib/docs/api-go.md new file mode 100644 index 0000000..bec9def --- /dev/null +++ b/onos-uenib/docs/api-go.md @@ -0,0 +1,109 @@ + + +# API Examples for Golang + +The following are a few examples on how to use the [Golang API] generated from the `onos-uenib` gRPC API. + +All the examples assume that the following import is available: +```go +import "github.com/onosproject/onos-api/go/uenib" +``` + +Similarly, all examples assume that the `UEService` client has been obtained and that context `ctx` was +either provided or created via code similar to the following: +```go +client := uenib.CreateUEServiceClient(conn) +... +ctx := context.Background() +``` + +## Create UE aspect(s) +Since the UE itself is just an ID and all other information is provided via the `aspects` mechanism, all +operations are effectively on aspects. Therefore, even if a UE already exists, but it does not currently have +a particular aspect, one must call `Create` rather than `Update`. This example shows how to attach a new +`onos.uenib.CellInfo` aspect to a particular UE: +```go +ue := &uenib.UE{ID: ueID} +ue.SetAspect(uenib.CellInfo{ServingCell: &uenib.CellConnection{ID: cellID, SignalStrength: 11.0}}) +response, err = client.CreateUE(ctx, &uenib.CreateUERequest{UE: *ue}) +``` + +## Get UEs - specific aspects or all aspects +An application may want to get one or more aspects of information associated with a UE. The following +example shows how this can be accomplished for `CellInfo` and (fictitious) `SubscriberData` aspects: +```go +aspectTypes := []string{"onos.uenib.CellInfo", "operator.SubscriberData"} +response, err := client.GetUE(ctx, &uenib.GetUERequest{ID: ueID, AspectTypes: aspectTypes}) +``` + + +To return all aspects associated with a UE, simply omit the `AspectTypes` from the request: +```go +response, err := client.GetUE(ctx, &uenib.GetUERequest{ID: ueID}) +``` + +## Update UE aspect(s) +The UE information does not track a `Revision` and therefore it is not necessary to retrieve the UE aspect +before updating it. Once can simply provide a new aspect value as part of the update request. For example, +the following shows how to update the `CellInfo` aspect: +```go +cells := neighborCellsByStrength(ueID) // fictitious utility +ue := &uenib.UE{ID: ueID} +ue.SetAspect(uenib.CellInfo{ServingCell: cells[0], CandidateCells: cells[1:]}) +response, err = client.UpdateUE(ctx, &uenib.UpdateUERequest{UE: *ue}) +``` + +## Delete UE aspect(s) +To delete specific aspects from a UE, simply provide the UE ID and the types of aspects to be deleted: +```go +response, err := client.DeleteUE(ctx, &uenib.GetUERequest{ + ID: ueID, + AspectTypes: []string{"operator.SubscriberData"} +}) +``` + + +## List UEs +To iterate over all UEs, use the `List` method, which provides a finite stream from which the application +can read each UE with all requested aspects, as shown below: +```go +aspectTypes := []string{"onos.uenib.CellInfo", "operator.SubscriberData"} +stream, err := client.ListUEs(ctx, &uenib.ListUERequest{AspectTypes: aspectTypes}) +for { + response, err := stream.Recv() + if err == io.EOF { + break + } + if err != nil { ... } + processUE(response.UE) +} +``` +The stream will be closed when the client reads the last entry, or the client can prematurely close it +by invoking `ctx.Done()`. + +## Watch UE Changes +The UE NIB API allows clients to watch the changes in real-time via its `Watch` method which delivers its +results as a continuous stream of events. These include not only the usual `create`, `update`, and `delete` events, +but also `replay` events to indicate the object as it existed prior to the `Watch` being called. + +As with the `List` method, the results can be further narrowed by specifying `AspectTypes` in the request. +Here is a simple example of the `Watch` usage: + +```go +stream, err := client.Watch(ctx, &uenib.WatchRequest{AspectType: []string{"onos.uenib.CellInfo"}}) +if err == nil { ... } + +for { + msg, err := stream.Recv() + if err == io.EOF { + break + } + if err != nil { ... } + processEvent(msg.Event.Type, msg.Event.UE) +} +``` +The client can cancel the watch at anytime by invoking `ctx.Done()`. diff --git a/onos-uenib/docs/cli.md b/onos-uenib/docs/cli.md new file mode 100644 index 0000000..4b59b50 --- /dev/null +++ b/onos-uenib/docs/cli.md @@ -0,0 +1,47 @@ + + +# Command-Line Interface +The project provides a command-line facilities for remotely +interacting with the UE NIB subsystem. + +The commands are available at run-time using the consolidated `onos` client hosted in the `onos-cli` repository. + +The documentation about building and deploying the consolidated `onos` client or its Docker container +is available in the `onos-cli` GitHub repository. + +## Usage +To see the detailed usage help for the `onos uenib ...` family of commands, +please see the [CLI documentation](https://github.com/onosproject/onos-cli/blob/master/docs/cli/onos_uenib.md) + +## Examples +Here are some concrete examples of usage: + +List `CellInfo` and `SubscriberData` of all UEs, that have these aspects. +```bash +$ onos uenib get ues --aspect onos.uenib.CellInfo +... +``` + +Create a new `CustomData` aspect for a UE: +```bash +$ onos uenib create ue 9182838476 --aspect operator.CustomData='{"foo": "bar", "special": true}' +``` + +Show all aspect data in verbose form for a given UE: +```bash +$ onos uenib get ue 9182838476 --verbose +``` + +Watch all changes in the UE NIB, without replay of existing UE information: +```bash +$ onos uenib watch ues --no-replay +``` + +Delete `CustomData` aspect for a specific UE: +```bash +$ onos uenib delete ue 9182838476 --aspect operator.CustomData +``` diff --git a/onos-uenib/docs/deployment.md b/onos-uenib/docs/deployment.md new file mode 100644 index 0000000..54a4396 --- /dev/null +++ b/onos-uenib/docs/deployment.md @@ -0,0 +1,85 @@ + + +# Deploying onos-uenib +This guide deploys `onos-uenib` through its [Helm] chart assumes you have a [Kubernetes] cluster running +with an atomix controller deployed in a namespace. +`onos-uenib` Helm chart is based on Helm 3.0 version, with no need for the Tiller pod to be present. +If you don't have a cluster running and want to try on your local machine please follow first +the [Kubernetes] setup steps outlined in [deploy with Helm](https://docs.onosproject.org/developers/deploy_with_helm/). +The following steps assume you have the setup outlined in that page, including the `micro-onos` namespace configured. + +## Installing +To install the `onos-topo` published chart in the `micro-onos` namespace run: +```bash +$ helm -n micro-onos install onos-uenib sdran/onos-uenib +``` +Note, that this assumes that `https://sdrancharts.onosproject.org` was added as `sdran` Helm repo. + +Alternately, you can deploy your own version of the chart from the root directory of the `sdran-helm-charts` +repo via the following: +```bash +$ helm install -n micro-onos onos-uenib onos-uenib +``` +In either case, the output of the `helm install` command should look similar to the following: +```bash +NAME: onos-uenib +LAST DEPLOYED: Wed Jul 14 14:41:16 2021 +NAMESPACE: micro-onos +STATUS: deployed +REVISION: 1 +TEST SUITE: None +``` + +`helm install` assigns a unique name to the chart and displays all the k8s resources that were +created by it. To list the charts that are installed and view their statuses, run `helm ls`: + +```bash +$ helm -n micro-onos ls +NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION +onos-uenib micro-onos 1 2021-07-14 14:41:16.860966 -0700 PDT deployed onos-uenib-1.0.3 v0.0.3 +``` + +### Partition Set +The `onos-uenib` chart also deploys a custom Atomix `PartitionSet` resource to store all the +topology information in a replicated and fail-safe manner. +In the following example there is only one partition set deployed `onos-uenib-consensus-store-1-0`. + +```bash +$ kubectl -n micro-onos get pods +NAME READY STATUS RESTARTS AGE +onos-uenib-5d49c8d8b6-wbkl2 2/3 Running 0 3m8s +onos-uenib-consensus-store-1-0 1/1 Running 0 3m6s +``` + +One can customize the number of partitions and replicas by modifying, in `values.yaml`, under `store/raft` +the values of +```bash +partitions: 1 +partitionSize: 1 +``` + +## Uninstalling +To uninstall the `onos-uenib` chart, run the following: +```bash + helm delete -n micro-onos onos-uenib +``` + +## Troubleshooting +Helm offers two flags to help you debug your chart. This can be useful if your chart does not install, +the pod is not running for some reason, or you want to trouble-shoot custom configuration values, + +* `--dry-run` check the chart without actually installing the pod. +* `--debug` prints out more information about your chart + +```bash +helm install -n micro-onos onos-uenib --debug --dry-run onos-uenib/ +``` + +[Helm]: https://helm.sh/ +[Kubernetes]: https://kubernetes.io/ +[kind]: https://kind.sigs.k8s.io + diff --git a/ran-simulator/README.md b/ran-simulator/README.md new file mode 100644 index 0000000..f0bfb8d --- /dev/null +++ b/ran-simulator/README.md @@ -0,0 +1,45 @@ + + +# RAN Simulator + +This software allows simulation of a number of RAN CU/DU nodes and RU cells via the O-RAN E2AP standard. +The simulated RAN environment is described using a YAML model file loaded at start-up. +The simulator offers a gRPC API that can be used at run-time to induce changes in order to +simulate a dynamically changing environment. + +The main RAN simulator software is accompanied by a number of utilities that allow generation of YAML files +that describe large RAN topologies and various environmental metrics, e.g. PCI. + +CLI for the RAN simulator is available via `onos-cli ransim` usage and allows access to all major features of +the simulator gRPC API, for controlling and monitoring the changes to the simulated environment. + +* [Quick Start](docs/quick_start.md) +* [Simulation Models and APIs](docs/model.md) +* [E2 Nodes Simulation and Service Models](docs/e2.md) +* [Honeycomb Topology Generator](docs/topology_generator.md) + +## Architecture + +The following figure outlines the RAN simulator architecture: + +![RAN simulator Architecture](docs/images/ransim_architecture.jpg) + +* **E2 nodes**: Upper half of the RAN simulator is responsible to simulate e2 nodes where each E2 node implements an E2 agent using E2AP, and implement service models. + +* **RAN Environment**: Lower half of the RAN simulator is responsible to simulate RAN environment to support required RAN functions + for implementing E2 service models (e.g. simulating User Equipments (UEs), mobility, etc). + +* **Data Stores**: lower half and upper half are connected using data stores that stores information + about E2-nodes, E2-agents, UEs, RAN metrics, E2 subscriptions, etc. + +* **RAN simulator APIs**: RAN simulator provides a variety of gRPC APIs that can be used for controlling E2 nodes and RAN environment. + You can find more details about RAN simulator APIs here: [RAN simulator APIs](api.md) + +* **RAN simulator CLI**: RAN simulator is equipped with a command line interface which is integrated with + [onos-cli](https://github.com/onosproject/onos-cli) that allows to interact with RAN simulator to retrieve required information from data stores, + monitor RAN environment changes, create/remove/update RAN entities, metrics, etc. + The list of ransim commands is documented here [RAN simulator CLI](https://github.com/onosproject/onos-cli/blob/master/docs/cli/onos_ransim.md) diff --git a/ran-simulator/docs/api.md b/ran-simulator/docs/api.md new file mode 100644 index 0000000..f5aca5e --- /dev/null +++ b/ran-simulator/docs/api.md @@ -0,0 +1,19 @@ + + +# RAN simulator APIs + +RAN simulator gRPC APIs are defined in [onos-api][onos-api] that are listed as follows: + +* **Model API**: provides means to create, delete and read RAN simulation model + such as E2 nodes and cells. + +* **Metrics API**: provides means to create, delete, and read metrics for the specified entity + ( e.g. A node, a cell, or a UE) + +* **Traffic Sim API**: provides means to create, list, and monitor UEs. + +[onos-api]: https://github.com/onosproject/onos-api/ \ No newline at end of file diff --git a/ran-simulator/docs/cli.md b/ran-simulator/docs/cli.md new file mode 100644 index 0000000..9af7365 --- /dev/null +++ b/ran-simulator/docs/cli.md @@ -0,0 +1,92 @@ + + +# RAN simulator CLI + +RAN simulator is equipped with a command line interface which is integrated with +[onos-cli](https://github.com/onosproject/onos-cli) that allows to interact with Ransim to retrieve required information from data stores, +monitor RAN environment changes, create/remove/update RAN entities, metrics, etc. +The list of ransim commands is documented here [ransim-cli](https://github.com/onosproject/onos-cli/blob/master/docs/cli/onos_ransim.md) + +## Usage + +1) Follow the instructions in [Quick Start](quick_start.md) to deploy +sd-ran subsystems and RAN simulator. + +2) Use the following command to access to `onos-cli` that you can run the [RAN simulator commands][ransim-cli]: + +```bash +kubectl exec -it -n sd-ran onos-cli-5d8b489f69-nvfcm -- /bin/bash +``` + +_TODO: Update CLI usage to include routes and UEs!_ + +3) Run onos ransim --help to see the list of ransim commands: +```bash +ONOS RAN simulator commands + +Usage: + onos ransim [command] + +Available Commands: + clear Clear the simulated nodes, cells and metrics + config Manage the CLI configuration + create Commands for creating simulated entities + delete Commands for deleting simulated entities + get Commands for retrieving RAN simulator model and other information + load Load model and/or metric data + log logging api commands + set Commands for setting RAN simulator model metrics and other information + start Start E2 node agent + stop Stop E2 node agent + +Flags: + --auth-header string Auth header in the form 'Bearer ' + -h, --help help for ransim + --no-tls if present, do not use TLS + --service-address string the gRPC endpoint (default "ran-simulator:5150") + --tls-cert-path string the path to the TLS certificate + --tls-key-path string the path to the TLS key + +Use "onos ransim [command] --help" for more information about a command. +``` + +4) For example, the following command lists all of E2 nodes that are running +```bash +> onos ransim get nodes +GnbID Status Service Models E2T Controllers Cell NCGIs +5153 Running kpm,rc e2t-1 21458294227473,21458294227474,21458294227475 +5154 Running kpm,rc e2t-1 21458294227489,21458294227490,21458294227475 +``` + +5) As another example, you can use the following to create an E2 node: +```bash +onos ransim create node 5155 --service-models kpm --service-models rc --controllers e2t-1 --cells 21458294 +227489 --cells 21458294227490 --cells 21458294227491 +``` + +after running the above command, an e2 node will be created and will be +connected to e2t-1 which is specified in the model as a E2T endpoint. +```bash +> onos ransim get nodes +GnbID Status Service Models E2T Controllers Cell NCGIs +5153 Running kpm,rc e2t-1 21458294227473,21458294227474,21458294227475 +5154 Running kpm,rc e2t-1 21458294227489,21458294227490,21458294227475 +5155 Running kpm,rc e2t-1 21458294227489,21458294227490,21458294227491 +``` + +6) The following command displays the cell information, including the number of UEs per cell that are in RRC State Idle and Connected. + +```bash +$ onos ransim get cells +NCGI #UEs Max UEs TxDB Lat Lng Azimuth Arc A3Offset TTT A3Hyst CellOffset FreqOffset PCI Color Idle Conn Neighbors +13842601454c002 0 99999 11.00 52.486 13.412 120 120 0 0 0 0 0 148 green 49, 17, 13842601454c001,13842601454c003,1 +38426014550002 +13842601454c003 0 99999 11.00 52.486 13.412 240 120 0 0 0 0 0 480 green 92, 102, 13842601454c001,13842601454c002,1 +``` + + +[ransim-cli]: https://github.com/onosproject/onos-cli/blob/master/docs/cli/onos_ransim.md diff --git a/ran-simulator/docs/e2.md b/ran-simulator/docs/e2.md new file mode 100644 index 0000000..5f194eb --- /dev/null +++ b/ran-simulator/docs/e2.md @@ -0,0 +1,25 @@ + + +# Simulation of E2 Nodes +RAN simulator is capable of simulating an arbitrary number of E2 nodes. The E2 nodes can be defined statically in the simulation model ([Simulation Model](model.md)) from the RAN simulator helm chart or can be added/removed at runtime using [RAN simulator APIs](api.md). + +Each E2 node implements an E2 agent interface. Currently, each E2 agent implements E2AP procedures including *Subscription*, *Subscription Delete*, *Connection Update*, and *Configuration Update*. +and *Control* procedures. + +# Supported Service Models +The supported service models are listed as follows: + +### Done ✓ + +- [x] ORAN-E2SM-KPM, Version 1.0 +- [x] ORAN-E2SM-KPM, Version 2.0 +- [ ] RC-PRE + - [x] PCI Use case +- [x] E2SM-MHO, Version 1.0 + +### In Progress + diff --git a/ran-simulator/docs/images/ransim_architecture.jpg b/ran-simulator/docs/images/ransim_architecture.jpg new file mode 100644 index 0000000..bd6940a Binary files /dev/null and b/ran-simulator/docs/images/ransim_architecture.jpg differ diff --git a/ran-simulator/docs/model.md b/ran-simulator/docs/model.md new file mode 100644 index 0000000..1abb088 --- /dev/null +++ b/ran-simulator/docs/model.md @@ -0,0 +1,25 @@ + + +# Simulation Models + +RAN simulator defines two levels of simulation models: + +* **Generic model:** that defines E2 nodes, cells, service models, E2T end points in a Yaml file. RAN simulator reads this file to create E2 nodes and initializing data stores. A sample [model](https://github.com/onosproject/sdran-helm-charts/blob/master/ran-simulator/files/model/model.yaml) has been created using the [Honeycomb Topology Generator](topology_generator.md) and added to the [ran-simulator helm chart][RAN simulator helm chart]. + + +* **Use Case Specific Models**: The simulation information that is not common between use cases can be added as new service models will be introduced. These models can be added to the [ran-simulator helm chart][RAN simulator helm chart] and can be loaded by RAN simulator. + +## MHO specific model +One example of a use case specific model is the **two-cell-two-node-model.yaml** model, is used by **onos-mho** xApplication to emulate UEs moving between pre-determined end-points. As opposed to the generic model that supports UEs moving on random routes (with randomly generated end-points), the two-cell-two-node-model is ideally suited to test handover scenarios deterministically. In order to support this model, RANSim supports the ability to specify the following directives in the model's yaml description: + +* routeEndPoints: Start and end end-point coordinates for routes +* directRoute: Direct route between end-points (as opposed to the default randomly zig-zagging route) +* initialRrcState: Specify the initial RRC state of UEs (as opposed to the default randomly assigned initial state) +* rrcStateChangesDisabled: Disable RRC state changes + + +[RAN simulator helm chart]: https://github.com/onosproject/sdran-helm-charts/tree/master/ran-simulator diff --git a/ran-simulator/docs/quick_start.md b/ran-simulator/docs/quick_start.md new file mode 100644 index 0000000..ddd0e61 --- /dev/null +++ b/ran-simulator/docs/quick_start.md @@ -0,0 +1,128 @@ + + +# Quick Start + +## Prerequisite + +This guide deploys `ran-simulator` through it's [Helm] chart assumes you have a +[Kubernetes] cluster running deployed in a namespace. + +`ran-simulator` Helm chart is based on Helm 3.0 version, with no need for the Tiller pod to be present. +If you don't have a cluster running and want to try on your local machine please follow first +the [Kubernetes] setup steps outlined in [deploy with Helm](https://docs.onosproject.org/developers/deploy_with_helm/). +The following steps assume you have the setup outlined in that page, including the `micro-onos` namespace configured. + +## Usage with SD-RAN Subsystems + +The steps for using Ransim with SD-RAN subsystems are as follows: + +1) Clone [sdran-helm-charts][sdran-helm-charts] using the following command: +```bash +git clone git@github.com:onosproject/sdran-helm-charts.git +``` + +2) Deploy sd-ran chart using the following command: + +```bash +kubectl create namespace sd-ran +cd sdran-helm-charts +helm install sd-ran sd-ran -n sd-ran +``` +If you deploy the sd-ran chart successfully, you should be able to see sdran subsystems deployed successfully as follows after a period of time: +```bash +> kubectl get pods -n sd-ran +NAME READY STATUS RESTARTS AGE +onos-cli-6f45d4b475-cw78c 1/1 Running 0 21s +onos-config-6f648c5b57-27vlk 4/4 Running 0 20s +onos-consensus-db-1-0 1/1 Running 0 21s +onos-consensus-store-1-0 1/1 Running 0 18s +onos-e2t-5698597f6c-rbswj 3/3 Running 0 20s +onos-topo-66c7757f6d-t84r9 3/3 Running 0 21s +onos-uenib-6b8bd5cddf-68nm2 3/3 Running 0 21s +``` + +3) Deploy ran-simulator helm chart using the following command: + +```bash +helm install ran-simulator ran-simulator -n sd-ran +``` +RAN simulator is not enabled in the sd-ran chart by default. You can enable it when you deploy sd-ran helm chart using the following command +```bash +helm install sd-ran sd-ran -n sd-ran --set import.ran-simulator.enabled=true +``` + +If you deploy RAN simulator successfully, you should be able to see it in the list of deployments: + +```bash +> kubectl get pods -n sd-ran +NAME READY STATUS RESTARTS AGE +onos-cli-6f45d4b475-cw78c 1/1 Running 0 3m21s +onos-config-6f648c5b57-27vlk 4/4 Running 0 3m20s +onos-consensus-db-1-0 1/1 Running 0 3m21s +onos-consensus-store-1-0 1/1 Running 0 3m18s +onos-e2t-5698597f6c-rbswj 3/3 Running 0 3m20s +onos-topo-66c7757f6d-t84r9 3/3 Running 0 3m21s +onos-uenib-6b8bd5cddf-68nm2 3/3 Running 0 3m21s +ran-simulator-67bb8894cd-8jgbd 1/1 Running 0 3m21s +``` + +After deploying ran-simulator, it loads the models, create E2 nodes and make connections using SCTP to onos-e2t endpoint which is specified in the model. + + +To verify simulated e2 nodes are connected to the E2T endpoint successfully, you can use onos-cli to check list of *CONTROL* (E2T to E2 node relation) and *CONTAINS* (E2 node to E2 cell relation) relations, and E2 node and cell entities using the following commands: + +```bash +> onos topo get relations +Relation ID Kind ID Source ID Target ID Labels Aspects +uuid:87d8f851-4394-4b6d-8775-95bf9d7d5c88 controls e2:onos-e2t-56dcfbb685-knc8r e2:1/5153 +uuid:03c782b8-d993-62d3-5ada-8cde9bcc8d64 contains e2:1/5154 e2:1/5154/14550001 +uuid:74c84ff1-74c2-388b-107e-8f62180b8aed contains e2:1/5153 e2:1/5153/1454c002 +uuid:e8d1924d-8a87-3840-ada0-0cacbef26cc5 contains e2:1/5153 e2:1/5153/1454c001 +uuid:abee243a-ff82-4b0a-b037-782341b489ca controls e2:onos-e2t-56dcfbb685-knc8r e2:1/5154 +uuid:273c7b45-e7f3-ff52-43bd-891e86ff219d contains e2:1/5154 e2:1/5154/14550002 +uuid:826ab183-a742-79c2-aa83-a288ed68fa34 contains e2:1/5154 e2:1/5154/14550003 +uuid:efe476d6-a6e4-7483-4c55-97c2ca884e73 contains e2:1/5153 e2:1/5153/1454c003 + +```bash +> onos topo get entities +Entity ID Kind ID Labels Aspects +e2:1/5154/14550002 e2cell onos.topo.E2Cell +e2:1/5154/14550003 e2cell onos.topo.E2Cell +e2:1/5154/14550001 e2cell onos.topo.E2Cell +e2:1/5153/1454c003 e2cell onos.topo.E2Cell +e2:onos-e2t-56dcfbb685-knc8r e2t onos.topo.Lease,onos.topo.E2TInfo +e2:1/5153 e2node onos.topo.MastershipState,onos.topo.E2Node +e2:1/5153/1454c001 e2cell onos.topo.E2Cell +e2:1/5154 e2node onos.topo.E2Node,onos.topo.MastershipState +e2:1/5153/1454c002 e2cell onos.topo.E2Cell +``` + +or use RAN simulator CLI to check status of E2 nodes: +```bash +> onos ransim get nodes +GnbID Status Service Models E2T Controllers Cell NCGIs +5153 Running mho,rcpre2,kpm2 e2t-1 13842601454c001,13842601454c002,13842601454c003 +5154 Running mho,rcpre2,kpm2 e2t-1 138426014550001,138426014550002,138426014550003 +``` + +If you have not installed the onos cli as described in the [cli docs](https://docs.onosproject.org/onos-cli/docs/setup/), you can instead run +``` +clipod=$(kubectl -n sd-ran get pods | grep onos-cli | cut -d\ -f1) +kubectl -n sd-ran exec --stdin $clipod -- /usr/local/bin/onos e2t get connections +``` +or +``` +clipod=$(kubectl -n sd-ran get pods | grep onos-cli | cut -d\ -f1) +kubectl -n sd-ran exec --stdin $clipod -- /usr/local/bin/onos ransim get nodes +``` + + +[Helm]: https://helm.sh/ +[Kubernetes]: https://kubernetes.io/ +[kind]: https://kind.sigs.k8s.io +[Directions API]: https://developers.google.com/maps/documentation/directions/start +[sdran-helm-charts]: https://github.com/onosproject/sdran-helm-charts \ No newline at end of file diff --git a/ran-simulator/docs/topology_generator.md b/ran-simulator/docs/topology_generator.md new file mode 100644 index 0000000..794984a --- /dev/null +++ b/ran-simulator/docs/topology_generator.md @@ -0,0 +1,54 @@ + + +# Honeycomb Topology Generator + +The RAN simulator comes with an accompanying utility that generates a RAN topology YAML file that is ready to be loaded by the RAN simulator. + +This utility generates a hexagonal grid of RAN towers (E2 Nodes), each with a prescribed number of cells with equal arc of coverage. The following is the command-line usage: + +``` +Usage: + honeycomb topo outfile [flags] + +Flags: + --cell-types strings List of cell size types (default [FEMTO,ENTERPRISE,OUTDOOR_SMALL,MACRO]) + --controller-addresses strings List of E2T controller addresses or service names (default [onos-e2t]) + --controller-yaml string if specified, location of yaml file for controller + --deform-scale float scale factor for perturbation (default 0.01) + --earfcn-start uint32 start point for EARFCN generation (default 42) + --gnbid-start string GnbID start in hex (default "5152") + -h, --help help for topo + -a, --latitude float Map centre latitude in degrees (default 52.52) + -g, --longitude float Map centre longitude in degrees (default 13.405) + --max-collisions uint maximum number of collisions (default 8) + -d, --max-neighbor-distance float Maximum 'distance' between neighbor cells; see docs (default 3600) + --max-neighbors int Maximum number of neighbors a cell will have; -1 no limit (default 5) + --max-pci uint maximum PCI value (default 503) + --min-pci uint minimum PCI value + -i, --pitch float32 pitch between cells in degrees (default 0.02) + --plmnid string PlmnID in MCC-MNC format, e.g. CCCNNN or CCCNN (default "315010") + -s, --sectors-per-tower uint sectors per tower (default 3) + --service-models strings List of service models supported by the nodes (default [kpm/1,rcpre2/3,kpm2/4,mho/5]) + --single-node generate a single node for all cells + -t, --towers uint number of towers + --ue-count uint User Equipment count + --ue-count-per-cell uint Desired UE count per cell (default 15) +``` + +Most options have reasonable defaults and only the `--towers` is mandatory. Here is an example of how to run the command to generate topology for a network with PLMNID of `314628` with 10 E2 nodes (towers), each with default number of 3 cells. + +``` +go run cmd/honeycomb/honeycomb.go topo --plmnid 314628 --towers 10 pkg/utils/honeycomb/sample.yaml +``` + +Here is the [output generated by the above command](../pkg/utils/honeycomb/sample.yaml). + +Note that for options that are lists, like `--controller-addresses` for example, you can specify them as comma-separated values `--controller-addresses onos-e2t-1,onos-e2t-2` or you can simply repeat the option `--controller-addresses onos-e2t-1 --controller-addresses onos-e2t-2`. + +The `--max-neightbor-distance` parameter (specified in meters) works as follows: if after traveling this distance along a center line of the coverage sector, the endpoint falls within half this distance from another cell's such endpoint, those two cells will be considered neighbors. This is to assure that the two coverage arcs converge sufficiently. + +Note that the utility relies on random number generator and therefore its output is not deterministic. \ No newline at end of file diff --git a/sdran-in-a-box/README.md b/sdran-in-a-box/README.md new file mode 100644 index 0000000..c258931 --- /dev/null +++ b/sdran-in-a-box/README.md @@ -0,0 +1,83 @@ + + +# SDRAN-in-a-Box (RiaB) +SDRAN-in-a-Box (RiaB) is a SD-RAN cluster which is able to operate within a single host machine . +It provides a development/test environment for developers/users in ONF SD-RAN community. +RiaB deploys SD-RAN infrastructure - the EPC ([OMEC](https://github.com/omec-project)), emulated RAN (CU/DU/UE), and ONOS RAN Intelligent Controller (ONOS RIC) services - over Kubernetes. +On top of the SD-RAN infrastructure, we can conduct end-to-end tests in terms of the user plane and the SD-RAN control plane. + +## Features +* Installs Kubernetes and Helm that are the required infrastructure for SD-RAN services +* Provides one of three choices to emulate/simulate Radio Access Networks (RANs) + * RAN-Simulator + * Simulates multiple E2 nodes (CU-CP/DU/RU) and UEs + * Generates SD-RAN control plane messages + * Does not support the LTE traffic + * OMEC / CU-CP / OAI nFAPI emulator for DU/UE + * Completely runs OMEC, a 4G/LTE core network - not emulation + * Completely runs CU-CP, which generates SD-RAN control plane messages - not emulation + * Emulates DU and UEs (up to three UEs) with OAI nAFPI emulator, which generate LTE control and user plane traffic + * OMEC / CU-CP / OAI DU and UE with USRP hardware and/or LTE smartphones + * Completely runs OMEC, a 4G/LTE core network - not emulation + * Completely runs CU-CP, which generates SD-RAN control plane messages - not emulation + * Completely runs OAI DU together with the CU-CP and a USRP device to open a cell - Software Defined Radio (SDR) device-based emulation which commercial LTE phones can attach + * Completely runs OAI UE with a USRP device to attach the cell the CU-CP and OAI DU opens +* Support End-to-End (E2E) connectivity test + * The user plane E2E test + * Works with CU-CP / OAI nFAPI emulator and CU-CP / OAI DU and UE with USRP hardware cases, since RAN-Sim does not support the data traffic + * The SD-RAN control plane E2E test + * Works with xAPPs such as onos-kpimon, onos-pci, onos-mlb and onos-mho + +## RiaB versions and options + +### Versions +RiaB has three versions: **latest**, **master-stable**, **dev**, and each release/tag such as **v1.0.0**, **v1.1.0**, **v1.1.1**, and **v1.2.0**. + +#### Latest version +The *latest* version of RiaB deploys latest Helm charts and latest Docker container images. + +#### Master-stable version +The *master-stable* version of RiaB deploys latest Helm charts but not latest Docker container images. +It deploys the Docker containers according to the image tag described in each Helm chart. + +#### Release/tag versions +The release/tag version such as *v1.0.0*, *v1.1.0*, *v1.1.1*, and *v1.2.0* deployes a specific SD-RAN release version of Helm charts and Docker container images. + +#### Dev version +The *dev* version deploys Helm charts in the `~/helm-charts/sdran-helm-charts` directory and Docker container images `sdran-in-a-box-values.yaml` file. +All other versions initially change the `~/helm-charts/sdran-helm-charts` branch to the specific version. +For example, the *latest* version and *master-stable* version change the the `~/helm-charts/sdran-helm-charts` branch to `master`, +while the *v1.0.0*, *v1.1.0*, *v1.1.1*, and *v1.2.0* versions change that branch to *v1.0.0*, *v1.1.0*, *v1.1.1*, and *v1.2.0*, respectively. +If we change some Helm chart code in `~/helm-charts/sdran-helm-charts` directory for a test, the above versions will reset to the *master* or a specific version branch. +However, since the *dev* option just uses the Helm chart in `~/helm-charts/sdran-helm-charts` as is, we can test the Helm chart chages. +Also, once we specify image tags in the `sdran-in-a-box-values.yaml` files, this version deploys the Docker containers with the Helm chart change. + +### Options +RiaB also has four options: **ONOS RIC with OAI nFAPI emulator**, **ONOS RIC with RAN-Simulator**, **ONOS RIC with OAI and USRP devices**, and **Facebook-AirHop xAPP use case**. + +#### ONOS RIC with OAI nFAPI emulator option +The *ONOS RIC with OAAI nFAPI emulator* option deploys ONOS RIC services (i.e., Atomix, onos-operator, onos-topo, onos-config, onos-cli, onos-e2t, onos-e2sub, etc) with OMEC, CU-CP, and OAI nFAPI emulator. +It supports E2E connectivities on the data plane and SD-RAN control plane. +The data plane is running without the real radio signal, but nFAPI. + +#### ONOS RIC with RAN-Simulator option +The *ONOS RIC with RAN-Simulator* option deploys ONOS RIC services with RAN-Simulator. +It supports an E2E connectivity on the SD-RAN control plane. + +#### ONOS RIC with OAI and USRP devices option +The *ONOS RIC with OAI and USRP devices* option deploys ONOS RIC services with OMEC, CU-CP, OAI DU, and OAI UE with USRP devices. +It supports E2E connectivities on the data plane and SD-RAN control plane. +The data plane is running with the real radio signal, so that we can also test with commercial LTE smartphones. + +#### Facebook-AirHop use case option +The *Facebook-AirHop use case* option is similar to the *ONOS RIC with RAN-Simulator* option. +The only difference is the PCI xAPP. +This option deploys the PCI xAPP from Facebook-AirHop, while *ONOS RIC with RAN-Simulator* option uses ONF ONOS-PCI xAPP. + + +## Detailed information +See [docs](docs) directory for details of RiaB. diff --git a/sdran-in-a-box/docs/Configuration_files.md b/sdran-in-a-box/docs/Configuration_files.md new file mode 100644 index 0000000..995616f --- /dev/null +++ b/sdran-in-a-box/docs/Configuration_files.md @@ -0,0 +1,250 @@ + + +# RiaB configuration + +## Configuration files for each version +If we want to tune RiaB, we should modify below YAML file for each version before the RiaB deployment. +* For `latest` and `dev` version: `sdran-in-a-box-values.yaml` file +* For `master-stable` version: `sdran-in-a-box-values-master-stable.yaml` file +* For a specific release version: `sdran-in-a-box-values-.yaml` file + +## First block - Enables Cassandra DB in OMEC +This is the Cassandra DB configuration for OMEC. We don't really need to change this. +```yaml +cassandra: + config: + cluster_size: 1 + seed_size: 1 +``` + +## Second block - Enables CPU/MEM size configuration +This is for the CPU/MEM size configuration. We don't need to change this. +```yaml +resources: + enabled: false +``` + +## Third block - OMEC, CU-CP, and OAI nFAPI parameter configuration block +This block has parameters for OMEC, CU-CP, OAI DU (nFAPI), and OAI UE (nFAPI) parameter configuration. +```yaml +config: + spgwc: + pfcp: true + ueIpPool: + ip: 172.250.0.0 # if we use RiaB, Makefile script will override this value with the value defined in Makefile script. + upf: + name: "oaisim" + sriov: + enabled: false + hugepage: + enabled: false + cniPlugin: simpleovs + ipam: static + cfgFiles: + upf.json: + mode: af_packet + mme: + cfgFiles: + config.json: + mme: + mcc: + dig1: 2 + dig2: 0 + dig3: 8 + mnc: + dig1: 0 + dig2: 1 + dig3: -1 + apnlist: + internet: "spgwc" + hss: + bootstrap: + users: + - apn: "internet" + key: "465b5ce8b199b49faa5f0a2ee238a6bc" + opc: "d4416644f6154936193433dd20a0ace0" + sqn: 96 + imsiStart: "208014567891201" + msisdnStart: "1122334455" + count: 10 + mmes: + - id: 1 + mme_identity: mme.riab.svc.cluster.local + mme_realm: riab.svc.cluster.local + isdn: "19136246000" + unreachability: 1 + oai-enb-cu: + networks: + f1: + interface: eno1 # if we use RiaB, Makefile script will automatically apply appropriate interface name + address: 10.128.100.100 #if we use RiaB, Makefile script will automatically apply appropriate IP address + s1mme: + interface: eno1 # if we use RiaB, Makefile script will automatically apply appropriate interface name + s1u: + interface: enb + oai-enb-du: + mode: nfapi #or local_L1 for USRP and BasicSim + networks: + f1: + interface: eno1 #if we use RiaB, Makefile script will automatically apply appropriate IP address + address: 10.128.100.100 #if we use RiaB, Makefile script will automatically apply appropriate IP address + nfapi: + interface: eno1 #if we use RiaB, Makefile script will automatically apply appropriate IP address + address: 10.128.100.100 #if we use RiaB, Makefile script will automatically apply appropriate IP address + oai-ue: + numDevices: 1 # support up to 3 + networks: + nfapi: + interface: eno1 #if we use RiaB, Makefile script will automatically apply appropriate IP address + address: 10.128.100.100 #if we use RiaB, Makefile script will automatically apply appropriate IP address + onos-e2t: + enabled: "yes" + networks: + e2: + address: 127.0.0.1 # if we use RiaB, Makefile script will automatically apply appropriate interface name + port: 36421 +``` + +Normally, we don't need to touch one of those values except for `numDevices` in `oai-ue` block. +If we want to deploy more UEs, we should change `numDevices` and then deploy RiaB with OAI nFAPI emulator option. + +## Fourth block - image tag block +This block has all containers' repository, tag/version, and pulling policy. +To test a specific Docker container image within RiaB, we should change imamge tag and repository in this block. +```yaml +# for the development, we can use the custom images +# For ONOS-RIC +onos-topo: + image: + pullPolicy: IfNotPresent + repository: onosproject/onos-topo + tag: latest +onos-config: + image: + pullPolicy: IfNotPresent + repository: onosproject/onos-config + tag: latest +onos-e2t: + service: + external: + enabled: true + e2: + nodePort: 36421 + image: + pullPolicy: IfNotPresent + repository: onosproject/onos-e2t + tag: latest +onos-e2sub: + image: + pullPolicy: IfNotPresent + repository: onosproject/onos-e2sub + tag: latest +onos-cli: + image: + pullPolicy: IfNotPresent + repository: onosproject/onos-cli + tag: latest +ran-simulator: + image: + pullPolicy: IfNotPresent + repository: onosproject/ran-simulator + tag: latest +onos-kpimon-v1: + image: + pullPolicy: IfNotPresent + repository: onosproject/onos-kpimon + tag: latest +onos-kpimon-v2: + image: + pullPolicy: IfNotPresent + repository: onosproject/onos-kpimon + tag: latest +onos-pci: + image: + pullPolicy: IfNotPresent + repository: onosproject/onos-pci + tag: latest +fb-ah-xapp: + image: + repository: onosproject/fb-ah-xapp + tag: 0.0.1 + pullPolicy: IfNotPresent +fb-ah-gui: + image: + repository: onosproject/fb-ah-gui + tag: 0.0.1 + pullPolicy: IfNotPresent +ah-eson-test-server: + image: + repository: onosproject/ah-eson-test-server + tag: 0.0.1 + pullPolicy: IfNotPresent + +# For OMEC & OAI +images: + pullPolicy: IfNotPresent + tags: +# For OMEC - Those images are stable image for RiaB +# latest Aether helm chart commit ID: 3d1e936e87b4ddae784a33f036f87899e9d00b95 +# init: docker.io/omecproject/pod-init:1.0.0 +# depCheck: quay.io/stackanetes/kubernetes-entrypoint:v0.3.1 + hssdb: docker.io/onosproject/riab-hssdb:v1.0.0 + hss: docker.io/onosproject/riab-hss:v1.0.0 + mme: docker.io/onosproject/riab-nucleus-mme:v1.0.0 + spgwc: docker.io/onosproject/riab-spgw:v1.0.0 + pcrf: docker.io/onosproject/riab-pcrf:v1.0.0 + pcrfdb: docker.io/onosproject/riab-pcrfdb:v1.0.0 + bess: docker.io/onosproject/riab-bess-upf:v1.0.0 + pfcpiface: docker.io/onosproject/riab-pfcpiface:v1.0.0 +# For OAI + oaicucp: docker.io/onosproject/oai-enb-cu:latest + oaidu: docker.io/onosproject/oai-enb-du:latest + oaiue: docker.io/onosproject/oai-ue:latest +``` + +## Fifth block - import block +This block is the import block to speicify which services are onboarded in ONOS RIC services. +In fact, ONOS RIC services are packaged as a single umbrella Helm chart. +By adjusting this block, we can configure which service is onboarded and which service is not deployed. +```yaml +# For SD-RAN Umbrella chart: +# ONOS-KPIMON xAPP is imported in the RiaB by default +import: + onos-kpimon-v1: + enabled: false + onos-kpimon-v2: + enabled: true + onos-pci: + enabled: true +# Other ONOS-RIC micro-services +# onos-topo: +# enabled: true +# onos-e2t: +# enabled: true +# onos-e2sub: +# enabled: true +# onos-o1t: +# enabled: false +# onos-config: +# enabled: true +# onos-sdran-cli: +# enabled: true +# ran-simulator chart is automatically imported when pushing ransim option +# ran-simulator: +# enabled: false +# onos-gui: +# enabled: false +# nem-monitoring: +# enabled: false +# fb-ah-xapp, fb-ah-gui, and ah-eson-test-server are automatically imported when pushing fbc-pci option +# fb-ah-xapp: +# enabled: false +# fb-ah-gui: +# enabled: false +# ah-eson-test-server: +# enabled: false +``` \ No newline at end of file diff --git a/sdran-in-a-box/docs/HW_Installation_intro.md b/sdran-in-a-box/docs/HW_Installation_intro.md new file mode 100644 index 0000000..0823bb7 --- /dev/null +++ b/sdran-in-a-box/docs/HW_Installation_intro.md @@ -0,0 +1,441 @@ + + +# Hardware Installation + +This installation shows how to run the ONF SDRAN setup using ONOS-RIC, OMEC, and OAI CU/DU and UE components. +The OAI components perform connection via USRP B210 radio equipment attached to NUC machines. +This setup can be utilized as a reference implementation of the ONOS-RIC in hardware. + +Prepare two NUC machines, each installed with a Ubuntu 18.04 server Operating System. +One NUC machine will be used to run a UE setup connected to a USRP B210. The other NUC machine will be used to run the eNodeB OAI components (CU/DU) connected to another B210 device. +Prepare other two machines (or Virtual Machines - VMs) to install decomposed parts the sdRan-in-a-Box (RiaB), in one of them the RIC (ONOS-RIC) will be executed, while in the other the EPC (OMEC) will be executed - both over Kubernetes. +**Those machines (or VMs) should be connected into the same subnet (via a switch or direct connection). In all machines install Ubuntu 18.04 server first.** + +*NOTE: In the below sections, we have the following IP addresses assigned: NUC-OAI-CU/DU (192.168.13.21), NUC-UE (192.168.13.22), ONOS-RIC (192.168.10.22), and EPC-OMEC (192.168.10.21). +These IP addresses are assigned to the eno1 interface in each server, i.e., the interface associated with the default gateway route. In case of a custom setup with different IP addresses assigned to the VMs, make sure the IP addresses (and their subnets/masks) are properly referenced in the configurations utilized in this tutorial. The NUC-UE machine only needs an IP address for the setup of the OAI software requirements and components.* + +When complete, the hardware installation detains the settings shown in the following diagram: + +![Hardware Installation Setup - Logical View](./figures/hw_install.png) + +In the diagram above are presented the 4 machines described in this setup (NUC OAI-CU/DU, NUC OAI-UE, ONOS-RIC, EPC-OMEC) interconnected via a logical layer 2 network. In each represented machine, the red squared items represent the components instantiated on them using RiaB. In particular, the EPC-OMEC machine highlights the internal structure of the omec-user-plane components, presenting how the UPF and Quagga router are interconnected via different (Open vSwitch) bridges to perform the user plane communication of the EPC. Notice, the UE component is represented by a NUC OAI-UE, likewise it could be replaced by a LTE handset. + +In addition, this setup has three internal subnets: (i) enb subnet - 192.168.11.8/29, (ii) core subnet - 192.168.11.0/29, and (iii) access subnet - 192.168.11.16/29. The enb subnet is to make a connection between CU/DU machine and Quagga internal router in OMEC machine. The core subnet is for S1u interface whereas the access subnet is for Sgi interface. + +## Get the RiaB source code +To get the source code, please see: `https://github.com/onosproject/sdran-in-a-box`. + +Since SDRAN-in-a-Box repository is a member-only repository, a user should log in github and then check the git clone command on that web site. + +**Clone the RiaB repository to all the machines EPC-OMEC, ONOS-RIC, OAI-CU/DU, OAI-UE.**. + +In all the machines, after downloading the source code, in the cloned source code folder, edit the sdran-in-a-box-values.yaml file and change the file as below (we can copy and paste). + +## Change sdran-in-a-box-values yaml file + +In the cloned source code of the folder sdran-in-a-box, overwrite the content of the file sdran-in-a-box-values.yaml as provided below (copy and paste). + +```yaml +# Copyright 2020-present Open Networking Foundation +# +# SPDX-License-Identifier: Apache-2.0 + +# cassandra values +cassandra: + config: + cluster_size: 1 + seed_size: 1 + +resources: + enabled: false + +config: + spgwc: + pfcp: true + multiUpfs: true + jsonCfgFiles: + subscriber_mapping.json: + subscriber-selection-rules: + - selected-user-plane-profile: "menlo" + keys: + serving-plmn: + mcc: 315 + mnc: 10 + tac: 1 + priority: 5 + selected-access-profile: + - access-all + selected-apn-profile: "apn-internet-menlo" + selected-qos-profile: "qos-profile1" + user-plane-profiles: + menlo: + user-plane: "upf.riab.svc.cluster.local" + apn-profiles: + apn-internet-default: + apn-name: "internet" + usage: 1 + network: "lbo" + gx_enabled: true + dns_primary: "1.1.1.1" + dns_secondary: "8.8.8.8" + mtu: 1400 + apn-internet-menlo: + apn-name: "internet" + usage: 1 + network: "lbo" + gx_enabled: true + dns_primary: "8.8.8.8" + dns_secondary: "1.1.1.1" + mtu: 1400 + ueIpPool: + ip: 172.250.0.0 # if we use RiaB, Makefile script will override this value with the value defined in Makefile script. + upf: + enb: + subnet: 192.168.11.8/29 # This is the same subnet defined in the setup, check the note at the end of the page. + access: + gateway: 192.168.11.17 + ip: 192.168.11.19/29 + core: + gateway: 192.168.11.1 + ip: 192.168.11.3/29 + privileged: true + name: "oaisim" + sriov: + enabled: false + hugepage: + enabled: false + cniPlugin: simpleovs + ipam: static + cfgFiles: + upf.json: + mode: af_packet + mme: + address: 192.168.10.21 # Set here the IP address of the interface eno1 (default gw) in the VM where OMEC is executed + cfgFiles: + config.json: + mme: + mcc: + dig1: 3 + dig2: 1 + dig3: 5 + mnc: + dig1: 0 + dig2: 1 + dig3: 0 + apnlist: + internet: "spgwc" + hss: + bootstrap: + users: + - apn: "internet" + key: "000102030405060708090a0b0c0d0e0f" + opc: "69d5c2eb2e2e624750541d3bbc692ba5" + sqn: 96 + imsiStart: "315010206000001" + msisdnStart: "1122334455" + count: 30 + mmes: + - id: 1 + mme_identity: mme.riab.svc.cluster.local + mme_realm: riab.svc.cluster.local + isdn: "19136246000" + unreachability: 1 + oai-enb-cu: + networks: + f1: + interface: eno1 # if we use RiaB, Makefile script will automatically apply appropriate interface name + address: 10.128.100.100 #if we use RiaB, Makefile script will automatically apply appropriate IP address + s1mme: + interface: eno1 # if we use RiaB, Makefile script will automatically apply appropriate interface name + address: 192.168.13.21 # This is the primary IP address defined to the OAI-CU/DU machine - see `Install OAI CU/DU` + s1u: + interface: eno1 + address: 192.168.11.10 # This is the secondary IP address defined to the OAI-CU/DU machine - see `Install OAI CU/DU` + plmnID: + mcc: "315" + mnc: "010" + length: 3 + fullName: "ONF SDRAN" + shortName: "SDRAN" + oai-enb-du: + enableUSRP: true + mode: nfapi #or local_L1 for USRP and BasicSim + networks: + f1: + interface: eno1 #if we use RiaB, Makefile script will automatically apply appropriate IP address + address: 10.128.100.100 #if we use RiaB, Makefile script will automatically apply appropriate IP address + nfapi: + interface: eno1 #if we use RiaB, Makefile script will automatically apply appropriate IP address + address: 10.128.100.100 #if we use RiaB, Makefile script will automatically apply appropriate IP address + oai-ue: + enableUSRP: true + networks: + nfapi: + interface: eno1 #if we use RiaB, Makefile script will automatically apply appropriate IP address + address: 10.128.100.100 #if we use RiaB, Makefile script will automatically apply appropriate IP address + sim: + msinStart: "206000001" + apiKey: "000102030405060708090a0b0c0d0e0f" + opc: "69d5c2eb2e2e624750541d3bbc692ba5" + msisdnStart: "1122334455" + onos-e2t: + enabled: "yes" + networks: + e2: + address: 192.168.10.22 # Set here the IP address of the interface eno1 (default gw) in the VM where RIC is executed + port: 36421 + +# for the development, we can use the custom images +# For ONOS-RIC +# onos-topo: +# image: +# pullPolicy: IfNotPresent +# repository: onosproject/onos-topo +# tag: latest +# onos-config: +# image: +# pullPolicy: IfNotPresent +# repository: onosproject/onos-config +# tag: latest +onos-e2t: + service: + external: + enabled: true + e2: + nodePort: 36421 +# image: +# pullPolicy: IfNotPresent +# repository: onosproject/onos-e2t +# tag: latest +# onos-e2sub: +# image: +# pullPolicy: IfNotPresent +# repository: onosproject/onos-e2sub +# tag: latest +# onos-cli: +# image: +# pullPolicy: IfNotPresent +# repository: onosproject/onos-cli +# tag: latest +# ran-simulator: +# image: +# pullPolicy: IfNotPresent +# repository: onosproject/ran-simulator +# tag: latest +# onos-kpimon-v1: +# image: +# pullPolicy: IfNotPresent +# repository: onosproject/onos-kpimon +# tag: latest +# onos-kpimon-v2: +# image: +# pullPolicy: IfNotPresent +# repository: onosproject/onos-kpimon +# tag: latest +# onos-pci: +# image: +# pullPolicy: IfNotPresent +# repository: onosproject/onos-pci +# tag: latest +# fb-ah-xapp: +# image: +# repository: onosproject/fb-ah-xapp +# tag: 0.0.1 +# pullPolicy: IfNotPresent +# fb-ah-gui: +# image: +# repository: onosproject/fb-ah-gui +# tag: 0.0.1 +# pullPolicy: IfNotPresent +# ah-eson-test-server: +# image: +# repository: onosproject/ah-eson-test-server +# tag: 0.0.1 +# pullPolicy: IfNotPresent + +# For OMEC & OAI +images: + pullPolicy: IfNotPresent + tags: +# For OMEC - Those images are stable image for RiaB +# latest Aether helm chart commit ID: 3d1e936e87b4ddae784a33f036f87899e9d00b95 +# init: docker.io/omecproject/pod-init:1.0.0 +# depCheck: quay.io/stackanetes/kubernetes-entrypoint:v0.3.1 + hssdb: docker.io/onosproject/riab-hssdb:v1.0.0 + hss: docker.io/onosproject/riab-hss:v1.0.0 + mme: docker.io/onosproject/riab-nucleus-mme:v1.0.0 + spgwc: docker.io/onosproject/riab-spgw:v1.0.0 + pcrf: docker.io/onosproject/riab-pcrf:v1.0.0 + pcrfdb: docker.io/onosproject/riab-pcrfdb:v1.0.0 + bess: docker.io/onosproject/riab-bess-upf:v1.0.0 + pfcpiface: docker.io/onosproject/riab-pfcpiface:v1.0.0 +# For OAI + oaicucp: docker.io/onosproject/oai-enb-cu:v0.1.6 + oaidu: docker.io/onosproject/oai-enb-du:v0.1.6 + oaiue: docker.io/onosproject/oai-ue:v0.1.6 + +# For SD-RAN Umbrella chart: +# ONOS-KPIMON xAPP is imported in the RiaB by default +import: + onos-uenib: + enabled: true + onos-kpimon: + enabled: true + onos-pci: + enabled: false + onos-mlb: + enabled: false +# Other ONOS-RIC micro-services +# onos-topo: +# enabled: true +# onos-e2t: +# enabled: true +# onos-e2sub: +# enabled: true +# onos-o1t: +# enabled: false +# onos-config: +# enabled: true +# onos-cli: +# enabled: true +# ran-simulator chart is automatically imported when pushing ransim option +# ran-simulator: +# enabled: false +# onos-gui: +# enabled: false +# nem-monitoring: +# enabled: false +# fb-ah-xapp, fb-ah-gui, and ah-eson-test-server are automatically imported when pushing fbc-pci option +# fb-ah-xapp: +# enabled: false +# fb-ah-gui: +# enabled: false +# ah-eson-test-server: +# enabled: false +``` + +*Note: The IP addresses prefix (i.e., 192.168.x.z) correspond to the prefix assigned to the same subnet where the whole setup is defined. In a custom setup, make sure these IP addresses subnet match too.* + +## Change MakefileVar.mk file +In the sdran-in-a-box directory, we can find `MakefileVar.mk` file. We should change that file accordingly. Go to the last block and change it as follows: +``` +# For RIC +E2_F1_CU_INTERFACE := cu_e2f1_if +E2_F1_CU_IPADDR := 192.168.200.21/24 +E2_F1_DU_INTERFACE := du_e2f1_if +E2_F1_DU_IPADDR := 192.168.200.22/24 +S1MME_CU_INTERFACE := $(shell ip -4 route list default | awk -F 'dev' '{ print $$2; exit }' | awk '{ print $$1 }') +NFAPI_DU_INTERFACE := $(shell ip -4 route list default | awk -F 'dev' '{ print $$2; exit }' | awk '{ print $$1 }') +NFAPI_DU_IPADDR := $(shell ip -4 a show $(NFAPI_DU_INTERFACE) | grep inet | awk '{print $$2}' | awk -F '/' '{print $$1}' | tail -n 1) +NFAPI_UE_INTERFACE := $(shell ip -4 route list default | awk -F 'dev' '{ print $$2; exit }' | awk '{ print $$1 }') +NFAPI_UE_IPADDR := $(shell ip -4 a show $(NFAPI_UE_INTERFACE) | grep inet | awk '{print $$2}' | awk -F '/' '{print $$1}' | tail -n 1) +E2T_NODEPORT_INTERFACE := eno1 +E2T_NODEPORT_IPADDR := 192.168.10.22 +E2_F1_BRIDGE_NAME := br-e2f1-net + +# For routing configuarion +ENB_SUBNET := 192.168.11.8/29 +ENB_GATEWAY := 192.168.11.9/29 +ACCESS_SUBNET := 192.168.11.16/29 +UPF_ACCESS_NET_IP := 192.168.11.19/29 +ACCESS_GATEWAY := 192.168.11.17/29 +CORE_SUBNET := 192.168.11.0/29 +UPF_CORE_NET_IP := 192.168.11.3/29 +CORE_GATEWAY := 192.168.11.1/29 +OAI_ENB_NET_IP := 192.168.11.10/29 +OAI_MACHINE_IP := 192.168.13.21/16 +OAI_ENB_NET_INTERFACE := $(shell ip -4 route list default | awk -F 'dev' '{ print $$2; exit }' | awk '{ print $$1 }') +OMEC_ENB_NET_IP := 192.168.11.12/29 +OMEC_DEFAULT_INTERFACE := $(shell ip -4 route list default | awk -F 'dev' '{ print $$2; exit }' | awk '{ print $$1 }') +OMEC_MACHINE_IP := 192.168.10.21/29 +``` + +*Note: please do not forget to write the subnet mask at the end of IP address or subnet.* + +## Vagrantfiles (optional) +For this hardware installation over VMs not baremetal server directly, RiaB supports Vagrantfiles for RIC, RAN, and OMEC. +By using the below commands, we can deploy VMs on the single baremetal server (host machine). +``` +# install virsh qemu, etc +host$ sudo apt install qemu-kvm libvirt-bin bridge-utils virt-manager openvswitch-switch -y +host$ sudo apt install qemu libvirt-daemon-system libvirt-clients libxslt-dev libxml2-dev libvirt-dev zlib1g-dev ruby-dev ruby-libvirt ebtables dnsmasq-base -y + +# Vagrant install +host$ curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add - +host$ sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main" +host$ sudo apt-get update && sudo apt-get install vagrant -y +host$ vagrant plugin install vagrant-libvirt +host$ vagrant plugin install vagrant-mutate + +# OVS install +host$ sudo apt update; sudo apt-get install openvswitch-switch -y + +# OVS setup +host$ sudo ovs-vsctl --may-exist add-br br0 + +# to create VMs +host$ cd /path/to/sdran-in-a-box/vagrant +host$ ./run.vms.sh + +# to stop VMs +host$ cd /path/to/sdran-in-a-box/vagrant +host$ ./halt_vms.sh + +# to destroy VMs +host$ cd /path/to/sdran-in-a-box/vagrant +host$ ./destroy_vms.sh + +# if we want to push a vagrant command +host$ cd /path/to/sdran-in-a-box/vagrant +host$ ./vcmd.sh ric # for RIC VM +host$ ./vcmd.sh ran # for RAN VM +host$ ./vcmd.sh omec # for OMEC VM + +# If we want to ssh each VM +host$ cd /path/to/sdran-in-a-box/vagrant +host$ ./vcmd.sh ric ssh # for RIC VM +host$ ./vcmd.sh ran ssh # for RAN VM +host$ ./vcmd.sh omec ssh # for OMEC VM +``` + +*Note: If we want to deploy VMs on the multiple baremetal servers, we should create OpenVSwitch bridge `br0` for each baremetal server and create a VXLAN tunnel between bridges. Example:* +``` +# on the first server +host1$ sudo ovs-vsctl add-port br0 vxlan0 -- set interface vxlan0 type=vxlan options:remote_ip= +host1$ sudo ovs-vsctl add-port br0 vxlan0 -- set interface vxlan0 type=vxlan options:remote_ip= + +# on the second server +host2$ sudo ovs-vsctl add-port br0 vxlan0 -- set interface vxlan0 type=vxlan options:remote_ip= + +# on the third server +host3$ sudo ovs-vsctl add-port br0 vxlan0 -- set interface vxlan0 type=vxlan options:remote_ip= + +# then, deploy VMs for appropriate host machines +# e.g., host1 - RIC, host2 - RAN, host3 - OMEC +host1$ ./run_ric_vm.sh + +host2$ ./run_ran_vm.sh + +host3$ ./run_omec_vm.sh + +# if we want to stop VMs +# e.g., host1 - RIC, host2 - RAN, host3 - OMEC +host1$ ./halt_ric_vm.sh + +host2$ ./halt_ran_vm.sh + +host3$ ./halt_omec_vm.sh + +# if we want to destroy VMs +# e.g., host1 - RIC, host2 - RAN, host3 - OMEC +host1$ ./destroy_ric_vm.sh + +host2$ ./destroy_ran_vm.sh + +host3$ ./destroy_omec_vm.sh +``` + diff --git a/sdran-in-a-box/docs/HW_Installation_oai_enb.md b/sdran-in-a-box/docs/HW_Installation_oai_enb.md new file mode 100644 index 0000000..2dd8586 --- /dev/null +++ b/sdran-in-a-box/docs/HW_Installation_oai_enb.md @@ -0,0 +1,98 @@ + + +# Install OAI CU/DU + +This section explains how to execute only the OAI components using the RiaB Makefile. + +Bofere proceeding, make sure you follow all the instructions on how to install the OAI/USRP requirements prerequisites in the NUC machines. + +In the RiaB makefile targets are included options to execute OAI CU/DU/UE components using helm charts. Those steps do not require any source code compilation of OAI, the OAI components run in docker images and have their parameters configured by the sdran-in-a-box-values.yaml file. + +**Notice: The sdran-in-a-box-values.yaml contain the latest versions/tags of the OAI docker images. In order to use the versions of the OAI docker images specified in RiaB v1.0.0 or v1.1.0 releases make sure to respectively copy and paste to the sdran-in-a-box-values.yaml file the contents of the files sdran-in-a-box-values-v1.0.0.yaml and sdran-in-a-box-values-v1.1.0.yaml as needed.** + +## Network parameter configuration + +We should then configure the network parameters (e.g., routing rules, MTU size, and packet fregmentation) on the OAI-CU/DU machine. + +### Configure the IP addresses on the OAI NUC +Before run CU-CP, the NUC machine for OAI has to have two IP addresses on the Ethernet port. +The one IP address is the IP address in 192.168.11.8/29 subnet to communiacte with Quagga internal router in OMEC VM. +The other ons is for the IP address to communicate with the OMEC machine and RIC machine. +This the the IP assignment: +```bash +$ ip a show eno1 +2: eno1: mtu 1500 qdisc fq_codel state UP group default qlen 1000 + link/ether 1c:69:7a:6e:97:91 brd ff:ff:ff:ff:ff:ff + inet 192.168.11.10/29 brd 192.168.11.15 scope global eno1 + valid_lft forever preferred_lft forever + inet 192.168.13.21/16 brd 192.168.255.255 scope global eno1 + valid_lft forever preferred_lft forever +... +``` + +Here, the most important thing is the order of IP address. The IP address `192.168.11.10/29` should be first and the IP address `192.168.13.21/16` should be the secondary IP address. +Otherwise, the user traffic does not work as well as the CU-CP cannot make a E2 connection. +In order to assign two IP address like above, we can configure the `netplan`. +```bash +$ cat /etc/netplan/50-cloud-init.yaml +# This file is generated from information provided by the datasource. Changes +# to it will not persist across an instance reboot. To disable cloud-init's +# network configuration capabilities, write a file +# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following: +# network: {config: disabled} +network: + ethernets: + eno1: + addresses: + - 192.168.11.10/29 + - 192.168.13.21/16 + gateway4: 192.168.0.1 + nameservers: + addresses: + - 8.8.8.8 + version: 2 +``` + +### Configuration in OAI-CU/DU machine +Then, We should go to the the OAI-CU/DU NUC machine and add some routing rules + +```bash +$ cd /path/to/sdran-in-a-box +$ make routing-hw-oai +``` + +## Run OAI eNB CU/DU + +```bash +$ cd /path/to/sdran-in-a-box +$ sudo apt install build-essential +$ make oai-hw +``` + +This command starts the execution of oai-enb-cu and oai-enb-du components. + +This step might take some time due to the download of the oai-enb-cu and oai-enb-du docker images. +After the conditions (pod/oai-enb-cu-0 condition met and pod/oai-enb-du-0 condition met) were achieved the deployment was successful. + +The pod pod/oai-enb-du-0 takes some time to start as it needs to configure the USRP first. + +*Note: If we want to deploy a specific release version of OAI in SD-RAN project, we should add `VER=VERSION` argument; VERSION should be one of {v1.0.0, v1.1.0, v1.2.0, latest, stable}.* + +## Stop/Clean OAI components + +After finishing the hardware installation setup procedures, run the command below to delete all deployed Helm charts for OAI CU/DU components: + +```bash +$ make reset-oai +``` + +And this deletes not only deployed Helm chart but also Kubernetes and Helm. + +```bash +make clean # if we want to keep the ~/helm-charts directory - option to develop/test changed/new Helm charts +make clean-all # if we also want to delete ~/helm-charts directory +``` diff --git a/sdran-in-a-box/docs/HW_Installation_oai_source.md b/sdran-in-a-box/docs/HW_Installation_oai_source.md new file mode 100644 index 0000000..f542c84 --- /dev/null +++ b/sdran-in-a-box/docs/HW_Installation_oai_source.md @@ -0,0 +1,368 @@ + + +# Install OAI CU/DU/UE on Baremetal + +This section explains how to compile and execute only the OAI components from the source code. + +Bofere proceeding, make sure you follow all the instructions on how to install the OAI/USRP requirements prerequisites in the NUC machines. + +## Install UHD driver and push UHD image to USRP B210 device +Once we finished to check that the power management and CPU frequency configuration are good, we should reboot NUC machine again. +After the NUC is completely rebooted, then we should connect the USRP B210 device to the NUC machine. +To make the USRP B210 device run along with the NUC board, we should install UHD driver on the NUC machine. +And then, we should push the UHD image to USRP B210 device. + +```bash +$ # Install UHD driver +$ sudo apt-get install libuhd-dev libuhd003 uhd-host +$ # Push UHD image to the USRP B210 device +$ sudo uhd_images_downloader +``` + +*NOTE 1: When we cannot install `libuhd003`, we can replace it with `libuhd003.010.003`.* + +*NOTE 2: USRP B210 device has a power cable. We should keep that plugged in.* +*If we plugged off the USRP B210 power due to whatever reasons, we should push UHD image to USRP B210 device again by using `uhd_image_downloader` command.* + +## Verification of UHD driver installation and UHD image push +In order to verify the UHD driver installation and UHD image push to the USRP B210 driver, we can use below command. +```bash +$ uhd_usrp_probe +[INFO] [UHD] linux; GNU C++ version 7.5.0; Boost_106501; UHD_3.15.0.0-release +[INFO] [B200] Detected Device: B210 +[INFO] [B200] Operating over USB 2. +[INFO] [B200] Initialize CODEC control... +[INFO] [B200] Initialize Radio control... +[INFO] [B200] Performing register loopback test... +[INFO] [B200] Register loopback test passed +[INFO] [B200] Performing register loopback test... +[INFO] [B200] Register loopback test passed +[INFO] [B200] Setting master clock rate selection to 'automatic'. +[INFO] [B200] Asking for clock rate 16.000000 MHz... +[INFO] [B200] Actually got clock rate 16.000000 MHz. + _____________________________________________________ + / +| Device: B-Series Device +| _____________________________________________________ +| / +| | Mboard: B210 +| | serial: 31EABDC +| | name: MyB210 +| | product: 2 +| | revision: 4 +| | FW Version: 8.0 +| | FPGA Version: 16.0 +| | +| | Time sources: none, internal, external, gpsdo +| | Clock sources: internal, external, gpsdo +| | Sensors: ref_locked +| | _____________________________________________________ +| | / +| | | RX DSP: 0 +| | | +| | | Freq range: -8.000 to 8.000 MHz +| | _____________________________________________________ +| | / +| | | RX DSP: 1 +| | | +| | | Freq range: -8.000 to 8.000 MHz +| | _____________________________________________________ +| | / +| | | RX Dboard: A +| | | _____________________________________________________ +| | | / +| | | | RX Frontend: A +| | | | Name: FE-RX2 +| | | | Antennas: TX/RX, RX2 +| | | | Sensors: temp, rssi, lo_locked +| | | | Freq range: 50.000 to 6000.000 MHz +| | | | Gain range PGA: 0.0 to 76.0 step 1.0 dB +| | | | Bandwidth range: 200000.0 to 56000000.0 step 0.0 Hz +| | | | Connection Type: IQ +| | | | Uses LO offset: No +| | | _____________________________________________________ +| | | / +| | | | RX Frontend: B +| | | | Name: FE-RX1 +| | | | Antennas: TX/RX, RX2 +| | | | Sensors: temp, rssi, lo_locked +| | | | Freq range: 50.000 to 6000.000 MHz +| | | | Gain range PGA: 0.0 to 76.0 step 1.0 dB +| | | | Bandwidth range: 200000.0 to 56000000.0 step 0.0 Hz +| | | | Connection Type: IQ +| | | | Uses LO offset: No +| | | _____________________________________________________ +| | | / +| | | | RX Codec: A +| | | | Name: B210 RX dual ADC +| | | | Gain Elements: None +| | _____________________________________________________ +| | / +| | | TX DSP: 0 +| | | +| | | Freq range: -8.000 to 8.000 MHz +| | _____________________________________________________ +| | / +| | | TX DSP: 1 +| | | +| | | Freq range: -8.000 to 8.000 MHz +| | _____________________________________________________ +| | / +| | | TX Dboard: A +| | | _____________________________________________________ +| | | / +| | | | TX Frontend: A +| | | | Name: FE-TX2 +| | | | Antennas: TX/RX +| | | | Sensors: temp, lo_locked +| | | | Freq range: 50.000 to 6000.000 MHz +| | | | Gain range PGA: 0.0 to 89.8 step 0.2 dB +| | | | Bandwidth range: 200000.0 to 56000000.0 step 0.0 Hz +| | | | Connection Type: IQ +| | | | Uses LO offset: No +| | | _____________________________________________________ +| | | / +| | | | TX Frontend: B +| | | | Name: FE-TX1 +| | | | Antennas: TX/RX +| | | | Sensors: temp, lo_locked +| | | | Freq range: 50.000 to 6000.000 MHz +| | | | Gain range PGA: 0.0 to 89.8 step 0.2 dB +| | | | Bandwidth range: 200000.0 to 56000000.0 step 0.0 Hz +| | | | Connection Type: IQ +| | | | Uses LO offset: No +| | | _____________________________________________________ +| | | / +| | | | TX Codec: A +| | | | Name: B210 TX dual DAC +| | | | Gain Elements: None +``` + +If we see the above results which shows the device name `B210`, we are good to go. + +## Build OAI + +The OAI repository (https://github.com/onosproject/openairinterface5g) used in this tutorial requires member-only access, a user should log in github and then check the git clone command on that web site. + +After the USRP configuration, we should build the OAI code. +```bash +$ git clone https://github.com/onosproject/openairinterface5g +$ cd /path/to/openairinterface5g +$ source oaienv +$ cd cmake_targets/ +$ ./build_oai -c -I --eNB --UE -w USRP -g --build-ric-agent +``` + +*NOTE: It takes really a long time to build OAI.* + + +## Configure CU-CP on the OAI NUC +After that, we should copy the sample CU-CP configuration file in the HOME directory. +```bash +$ cp /path/to/openairinterface5g/ci-scripts/conf_files/cu.band7.tm1.25PRB.conf ~/cu.onf.conf +``` + +Then, modify below parameters in the copied file `~/cu.onf.conf`: +```text +… +////////// RIC parameters: +RIC : { + remote_ipv4_addr = "192.168.10.22"; + remote_port = 36421; + enabled = "yes"; +}; +… + +tracking_area_code = 1; +plmn_list = ( { mcc = 315; mnc = 010; mnc_length = 3; } ) +… + ////////// MME parameters: + mme_ip_address = ( + { + ipv4 = "192.168.10.21"; // *Write down EPC-CORE SDRAN-in-a-Box IP* + ipv6 = "192:168:30::17"; // *Don’t care* + active = "yes"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : { + ENB_INTERFACE_NAME_FOR_S1_MME = "eno1"; // Ethernet interface name of OAI NUC + ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.13.21/16"; // OAI NUC IP address + ENB_INTERFACE_NAME_FOR_S1U = "eno1"; // Ethernet interface name of OAI NUC + ENB_IPV4_ADDRESS_FOR_S1U = "192.168.11.10/29"; // Write the secondary IP address which we set above + ENB_PORT_FOR_S1U = 2152; # Spec 2152 # Don't touch + ENB_IPV4_ADDRESS_FOR_X2C = "192.168.13.21/16"; // OAI NUC IP address + ENB_PORT_FOR_X2C = 36422; # Spec 36422 # Don't touch + }; + } + +``` + +## Configure DU on the OAI NUC +Likewise, we should copy the sample DU configuration file in the HOME directory. +```bash +$ cp /path/to/openairinterface5g/ci-scripts/conf_files/du.band7.tm1.25PRB.conf ~/du.onf.conf +``` + +And then, we should open the copied file `~/du.onf.conf` and change the blow variables: +```text +tracking_area_code = 1001; +plmn_list = ( { mcc = 315; mnc = 010; mnc_length = 3; } ) +``` + +## Run CU and DU in the OAI-CU/DU machine + +Before running CU and DU, make sure to follow the instructions provided at [Network Parameter Configuration](#network-parameter-configuration). + +### Run CU-CP +On the OAI NUC machine, we should go to `/path/to/openairinterface5g/cmake_targets/ran_build/build` and run the command below: +```bash +ENODEB=1 sudo -E ./lte-softmodem -O ~/cu.onf.conf +``` + +### Run DU +After CU-CP is running, in another terminal we should go to `/path/to/openairinterface5g/cmake_targets/ran_build/build` and run the command below: +```bash +while true; do ENODEB=1 sudo -E ./lte-softmodem -O ~/du.onf.conf; done +``` + +## Run the User Equipment (UE) on the OAI-UE machine + +Write down a file named ~/sim.conf with the following content: + +```text +# List of known PLMNS +PLMN: { + PLMN0: { + FULLNAME="Test network"; + SHORTNAME="OAI4G"; + MNC="01"; + MCC="001"; + + }; + PLMN1: { + FULLNAME="SFR France"; + SHORTNAME="SFR"; + MNC="10"; + MCC="208"; + + }; + PLMN2: { + FULLNAME="SFR France"; + SHORTNAME="SFR"; + MNC="11"; + MCC="208"; + }; + PLMN3: { + FULLNAME="SFR France"; + SHORTNAME="SFR"; + MNC="13"; + MCC="208"; + }; + PLMN4: { + FULLNAME="Aether"; + SHORTNAME="Aether"; + MNC="010"; + MCC="315"; + }; + PLMN5: { + FULLNAME="T-Mobile USA"; + SHORTNAME="T-Mobile"; + MNC="280"; + MCC="310"; + }; + PLMN6: { + FULLNAME="FICTITIOUS USA"; + SHORTNAME="FICTITIO"; + MNC="028"; + MCC="310"; + }; + PLMN7: { + FULLNAME="Vodafone Italia"; + SHORTNAME="VODAFONE"; + MNC="10"; + MCC="222"; + }; + PLMN8: { + FULLNAME="Vodafone Spain"; + SHORTNAME="VODAFONE"; + MNC="01"; + MCC="214"; + }; + PLMN9: { + FULLNAME="Vodafone Spain"; + SHORTNAME="VODAFONE"; + MNC="06"; + MCC="214"; + }; + PLMN10: { + FULLNAME="Vodafone Germ"; + SHORTNAME="VODAFONE"; + MNC="02"; + MCC="262"; + }; + PLMN11: { + FULLNAME="Vodafone Germ"; + SHORTNAME="VODAFONE"; + MNC="04"; + MCC="262"; + }; +}; + +UE0: +{ + USER: { + IMEI="356113022094149"; + MANUFACTURER="EURECOM"; + MODEL="LTE Android PC"; + PIN="0000"; + }; + + SIM: { + MSIN="206000001"; + USIM_API_K="000102030405060708090a0b0c0d0e0f"; + OPC= "69d5c2eb2e2e624750541d3bbc692ba5"; + MSISDN="1122334455"; + }; + + # Home PLMN Selector with Access Technology + HPLMN= "315010"; + + # User controlled PLMN Selector with Access Technology + UCPLMN_LIST = (); + + # Operator PLMN List + OPLMN_LIST = ("00101", "20810", "20811", "20813", "315010", "310280", "310028"); + + # Operator controlled PLMN Selector with Access Technology + OCPLMN_LIST = ("22210", "21401", "21406", "26202", "26204"); + + # Forbidden plmns + FPLMN_LIST = (); + + # List of Equivalent HPLMNs +#TODO: UE does not connect if set, to be fixed in the UE +# EHPLMN_LIST= ("20811", "20813"); + EHPLMN_LIST= (); +}; + +``` + +On the OAI-UE NUC machine, we should go to `/path/to/openairinterface5g/cmake_targets/ran_build/build`. + +Then execute the command below to generate the UE settings. + +```bash +../../nas_sim_tools/build/conf2uedata -c ~/sim.conf -o . +``` + +After that, initialize the UE process: + +```bash +sudo ./lte-uesoftmodem -C 2630000000 -r 25 --ue-rxgain 120 --ue-txgain 0 --ue-max-power 0 --ue-scan-carrier --nokrnmod 1 2>&1 | tee UE.log +``` \ No newline at end of file diff --git a/sdran-in-a-box/docs/HW_Installation_oai_ue.md b/sdran-in-a-box/docs/HW_Installation_oai_ue.md new file mode 100644 index 0000000..36e137e --- /dev/null +++ b/sdran-in-a-box/docs/HW_Installation_oai_ue.md @@ -0,0 +1,51 @@ + + +# Install OAI UE + +This section explains how to execute only the OAI components using the RiaB Makefile. + +Bofere proceeding, make sure you follow all the instructions on how to install the OAI/USRP requirements prerequisites in the NUC machines. + +In the RiaB makefile targets are included options to execute OAI CU/DU/UE components using helm charts. Those steps do not require any source code compilation of OAI, the OAI components run in docker images and have their parameters configured by the sdran-in-a-box-values.yaml file. + +**Notice: The sdran-in-a-box-values.yaml contain the latest versions/tags of the OAI docker images. In order to use the versions of the OAI docker images specified in RiaB v1.0.0 or v1.1.0 releases make sure to respectively copy and paste to the sdran-in-a-box-values.yaml file the contents of the files sdran-in-a-box-values-v1.0.0.yaml and sdran-in-a-box-values-v1.1.0.yaml as needed.** + +## Update UE image tag in sdran-in-a-box-values-version.yaml file +In the `sdran-in-a-box-values-version.yaml` file, we can find `oai-ue` image tag. The `oai-ue` tag should be `sdran-1.1.2`: +```yaml + oaicucp: docker.io/onosproject/oai-enb-cu:v0.1.6 + oaidu: docker.io/onosproject/oai-enb-du:v0.1.6 + oaiue: docker.io/onosproject/oai-ue:sdran-1.1.2 +``` + +## Run OAI UE +```bash +$ cd /path/to/sdran-in-a-box +$ sudo apt install build-essential +$ make oai-ue-usrp +``` + +This step might take some time due to the download of the oai-ue docker image. +After the condition (pod/oai-ue-0 condition met) were achieved proceed to the next topic. + +The pod pod/oai-ue-0 takes some time to start as it needs to configure the USRP first. + + +## Stop/Clean OAI components + +After finishing the hardware installation setup procedures, run the command below to delete all deployed Helm charts for OAI UE component. + +```bash +$ make reset-oai +``` + +And this deletes not only deployed Helm chart but also Kubernetes and Helm. + +```bash +make clean # if we want to keep the ~/helm-charts directory - option to develop/test changed/new Helm charts +make clean-all # if we also want to delete ~/helm-charts directory +``` diff --git a/sdran-in-a-box/docs/HW_Installation_omec.md b/sdran-in-a-box/docs/HW_Installation_omec.md new file mode 100644 index 0000000..62c6e9b --- /dev/null +++ b/sdran-in-a-box/docs/HW_Installation_omec.md @@ -0,0 +1,56 @@ + + +# Install OMEC + +This section explains how to install the EPC OMEC components using RiaB in the EPC-OMEC machine. + +## Start the RiaB EPC-OMEC components + +After changing the file `sdran-in-a-box-values.yaml`, run the following commands: + +```bash +$ cd /path/to/sdran-in-a-box +$ sudo apt install build-essential +$ make omec +``` + +## Verify whether everything is up and running +After a while, RiaB Makefile completes to install K8s and deploy OMEC CP, OMEC UP, and an internal router. +Once it is done, you can check with the below command in the EPC-OMEC machine. +```bash +$ kubectl get pods --all-namespaces +NAMESPACE NAME READY STATUS RESTARTS AGE +default router 1/1 Running 0 19h +kube-system calico-kube-controllers-865c7978b5-k6f62 1/1 Running 0 19h +kube-system calico-node-bldr4 1/1 Running 0 19h +kube-system coredns-dff8fc7d-hqfcn 1/1 Running 0 19h +kube-system dns-autoscaler-5d74bb9b8f-5w2j4 1/1 Running 0 19h +kube-system kube-apiserver-node1 1/1 Running 0 19h +kube-system kube-controller-manager-node1 1/1 Running 0 19h +kube-system kube-multus-ds-amd64-jzvzr 1/1 Running 0 19h +kube-system kube-proxy-wclnq 1/1 Running 0 19h +kube-system kube-scheduler-node1 1/1 Running 0 19h +kube-system kubernetes-dashboard-667c4c65f8-bqkgl 1/1 Running 0 19h +kube-system kubernetes-metrics-scraper-54fbb4d595-7kjss 1/1 Running 0 19h +kube-system nodelocaldns-p6j8m 1/1 Running 0 19h +omec cassandra-0 1/1 Running 0 113m +omec hss-0 1/1 Running 0 113m +omec mme-0 4/4 Running 0 113m +omec pcrf-0 1/1 Running 0 113m +omec spgwc-0 2/2 Running 0 113m +omec upf-0 4/4 Running 0 112m +``` +If you can see the router and all OMEC PODs are running, then everything is good to go. + +## Network parameter configuration + +We should then configure the network parameters (e.g., routing rules, MTU size, and packet fregmentation) on EPC-OMEC so it can reach out to OAI-CU/DU machine. + +``` +$ cd /path/to/sdran-in-a-box +$ make routing-hw-omec +``` diff --git a/sdran-in-a-box/docs/HW_Installation_ops.md b/sdran-in-a-box/docs/HW_Installation_ops.md new file mode 100644 index 0000000..d19d3da --- /dev/null +++ b/sdran-in-a-box/docs/HW_Installation_ops.md @@ -0,0 +1,118 @@ + + +# Operations Guide + +## Evaluate the RIC operation + +In the ONOS-RIC machine, log in the onos-cli pod, running: + +```bash +$ kubectl -n riab exec -ti deployment/onos-cli -- bash +``` + +Once inside the onos-cli pod, check the ONOS-RIC connections and subscriptions: + +```bash +$ onos e2t list connections #Shows the associated CU/DU connection +$ onos e2sub list subscriptions #Shows the apps subscrition to the CU/DU nodes +``` + +In the output of the kpimonv2 list of metrics, there should appear 1 UE registered. It means the UE was attached to the DU/CU setup. + +```bash +$ kubectl exec -it deployment/onos-cli -n riab -- onos kpimonv2 list metrics +Cell ID RRC.ConnEstabAtt.sum RRC.ConnEstabSucc.sum RRC.ConnMax RRC.ConnMean RRC.ConnReEstabAtt.sum +1112066:57344 0 0 0 1 0 +``` + +## Custom Network Routes and IP Addresses + +It is important to explain the custom settings associated with the hardware installation setup, in specific the network routes and IP addresses defined in the EPC-OMEC router and the OAI-CU/DU machine and the cu.onf.conf file. + +In the EPC-OMEC, a router Pod (running the Quagga engine) interconnects the core, enb and access networks, each one respectively in the following subnets 192.168.11.0/29, 192.168.11.8/29, and 192.168.11.16/29. + +Via the definition of the secondary IP address (192.168.11.10/29) in the OAI-CU/DU machine, it was possible to configure the EPC-OMEC core to forward traffic to the host 192.168.11.10 via the gateway 192.168.13.21 (the primary OAI-CU/DU IP address). + +In the OAI-CU/DU machine, the set of routes had to be configured so the traffic from the CU/DU be forwarded to the EPC-OMEC machine. + +Inside the router of the EPC-OMEC, a route had to be configured to reach the secondary IP address of OAI-CU/DU via the enb interface. + +And the cu.onf.conf file in the OAI-CU/DU machine had to be correctly configured using the IP addresses of the MME (EPC-CORE) and RIC machines. + +**Notice, in summary the routing rule and IP addresses configuration are performed so OAI-CU/DU can reach EPC-OMEC and vice-versa.** + + +## User Equipment (UE) Handset +As of now, the current OAI with RiaB setup is running over LTE Band 7. +To communicate with this setup, we should prepare the Android smartphone which supports LTE Band 7. +We should then insert a SIM card to the smartphone, where the SIM card should have the below IMSI, Key, and OPc values: + +* IMSI: `315010999912340-315010999912370` +* Key: `465b5ce8b199b49faa5f0a2ee238a6bc` +* OPc: `69d5c2eb2e2e624750541d3bbc692ba5` + +If we want to use the different IMSI number, we have to change the HSS configuration. +In order to change SIM information in HSS, we first go to the ONOS-RIC machine and open the `sdran-in-a-box-values.yaml` file. +And change this section to the appropriate number: +```yaml + hss: + bootstrap: + users: + - apn: "internet" + key: "000102030405060708090a0b0c0d0e0f" # Change me + opc: "69d5c2eb2e2e624750541d3bbc692ba5" # Change me + sqn: 135 + imsiStart: "315010999912340" # Change me + msisdnStart: "9999334455" + count: 30 +``` + +If the new SIM information has the different PLMN ID, we should also change the PLMN ID into MME, HSS, CU-CP, and DU configuration files. +We should find PLMN ID or MCC/MNC values and change them to the appropriate number. + +`sdran-in-a-box-values.yaml`: +```yaml + spgwc: + pfcp: true + multiUpfs: true + jsonCfgFiles: + subscriber_mapping.json: + subscriber-selection-rules: + - selected-user-plane-profile: "menlo" + keys: + serving-plmn: + mcc: 315 # Change me + mnc: 10 # Change me +... + mme: + cfgFiles: + config.json: + mme: + logging: debug + mcc: + dig1: 3 # Change me + dig2: 1 # Change me + dig3: 5 # Change me + mnc: + dig1: 0 # Change me + dig2: 1 # Change me + dig3: 0 # Change me + apnlist: + internet: "spgwc" +``` + +`cu.onf.conf`: +```text +tracking_area_code = 1001; +plmn_list = ( { mcc = 315; mnc = 010; mnc_length = 3; } ) // Change me +``` + +`du.onf.conf`: +```text +tracking_area_code = 1001; +plmn_list = ( { mcc = 315; mnc = 010; mnc_length = 3; } ) // Change me +``` \ No newline at end of file diff --git a/sdran-in-a-box/docs/HW_Installation_prereq.md b/sdran-in-a-box/docs/HW_Installation_prereq.md new file mode 100644 index 0000000..c2e55ba --- /dev/null +++ b/sdran-in-a-box/docs/HW_Installation_prereq.md @@ -0,0 +1,99 @@ + + +# Prerequisites + +This section explains how to install the requirements needed for the execution of an OAI component in a host machine connected to a USRP. + +In the case of the hardware installation tutorial using 2 NUCs, proceed with the execution of the steps below on both NUCs. + +Before we start this section, we consider the host machine already have Ubuntu 18.04 server OS installed. +**Also, please DO NOT connect the USRP B210 device to the host machines yet.** +**Otherwise, the host machine may not boot up.** + + +## Install Linux Image low-latency + +```bash +$ sudo apt install linux-image-lowlatency linux-headers-lowlatency +``` + +## Power management and CPU frequency configuration +To run on OAI, we must disable p-state and c-state in Linux. +Go to `/etc/default/grub` file and add change `GRUB_CMDLINE_LINUX_DEFAULT` line as below: +```text +GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_pstate=disable processor.max_cstate=1 intel_idle.max_cstate=0 idle=poll" +``` + +After save that file, we should command this: +```bash +$ sudo update-grub2 +``` + +Next, go to `/etc/modprobe.d/blacklist.conf` file and append below at the end of the file: +```text +# for OAI +blacklist intel_powerclamp +``` + +After that, reboot the NUC machine. When rebooting, we have to change the `BIOS` configuration. +Go to the BIOS setup page and change some parameters: +* Disable secure booting option +* Disable hyperthreading +* Enable virtualization +* Disable all power management functions (c-/p-state related) +* Enable real-time tuning and Intel Turbo boost +Once it is done, we should save and exit. Then, we reboot NUC board again. + +When NUC is up and running, we should install the below tool: +```bash +$ sudo apt-get install cpufrequtils +``` + +After the installation, go to `/etc/default/cpufrequtils` and write below: +```text +GOVERNOR="performance" +``` + +*NOTE: If the `/etc/default/cpufrequtils` file does not exist, we should make that file.* + +Next, we should command below: +```bash +$ sudo systemctl disable ondemand.service +$ sudo /etc/init.d/cpufrequtils restart +``` + +After that, we should reboot this machine again. + +## Verification of the power management and CPU frequency configuration +In order to verify configurations for the power management and CPU frequency, we should use `i7z` tool. +```bash +$ sudo apt install i7z +$ sudo i7z +True Frequency (without accounting Turbo) 1607 MHz + CPU Multiplier 16x || Bus clock frequency (BCLK) 100.44 MHz + +Socket [0] - [physical cores=6, logical cores=6, max online cores ever=6] + TURBO ENABLED on 6 Cores, Hyper Threading OFF + Max Frequency without considering Turbo 1707.44 MHz (100.44 x [17]) + Max TURBO Multiplier (if Enabled) with 1/2/3/4/5/6 Cores is 47x/47x/41x/41x/39x/39x + Real Current Frequency 3058.82 MHz [100.44 x 30.45] (Max of below) + Core [core-id] :Actual Freq (Mult.) C0% Halt(C1)% C3 % C6 % Temp VCore + Core 1 [0]: 3058.81 (30.45x) 100 0 0 0 64 0.9698 + Core 2 [1]: 3058.82 (30.45x) 100 0 0 0 63 0.9698 + Core 3 [2]: 3058.82 (30.45x) 100 0 0 0 64 0.9698 + Core 4 [3]: 3058.81 (30.45x) 100 0 0 0 64 0.9698 + Core 5 [4]: 3058.81 (30.45x) 100 0 0 0 65 0.9698 + Core 6 [5]: 3058.82 (30.45x) 100 0 0 0 62 0.9686 +``` + +In the above results, we have to see that all cores should get `C0%` as `100` and `Halt(C1)%` as `0`. +If not, some of the above configuration are missing. +Or, some of BIOS configurations are incorrect. + +**The steps above conclude the installation of OAI/USRP requirements.** + +**Now, please connect the USRP B210 device to the host machines (usb 3.0).** \ No newline at end of file diff --git a/sdran-in-a-box/docs/HW_Installation_ric.md b/sdran-in-a-box/docs/HW_Installation_ric.md new file mode 100644 index 0000000..9c52fe4 --- /dev/null +++ b/sdran-in-a-box/docs/HW_Installation_ric.md @@ -0,0 +1,74 @@ + + +# Install the ONOS-RIC + +This section explains how to install the RIC components using RiaB in the ONOS-RIC machine. + +## Start the RiaB ONOS-RIC components + +```bash +$ cd /path/to/sdran-in-a-box +$ sudo apt install build-essential +$ make riab OPT=ric +``` + +*Note: If we want to deploy a specific RIC version, we should add `VER=VERSION` argument; VERSION should be one of {v1.0.0, v1.1.0, v1.2.0, latest, stable}.* + +## Verify whether everything is up and running +After a while, RiaB Makefile completes to install K8s and deploy ONOS-RIC components. +Once it is done, you can check with the below command in the ONOS-RIC machine. + +```bash +NAMESPACE NAME READY STATUS RESTARTS AGE +default router 1/1 Running 0 16m +kube-system atomix-controller-6b6d96775-bc8s4 1/1 Running 0 15m +kube-system atomix-raft-storage-controller-77bd965f8d-785gz 1/1 Running 0 15m +kube-system calico-kube-controllers-6759976d49-zkvjt 1/1 Running 0 3d7h +kube-system calico-node-n22vw 1/1 Running 0 3d7h +kube-system coredns-dff8fc7d-b8lvl 1/1 Running 52 3d7h +kube-system dns-autoscaler-5d74bb9b8f-5948j 1/1 Running 0 3d7h +kube-system kube-apiserver-node1 1/1 Running 64 3d7h +kube-system kube-controller-manager-node1 1/1 Running 64 3d7h +kube-system kube-multus-ds-amd64-wg99f 1/1 Running 0 3d7h +kube-system kube-proxy-cvxz2 1/1 Running 1 3d7h +kube-system kube-scheduler-node1 1/1 Running 62 3d7h +kube-system kubernetes-dashboard-667c4c65f8-5kdcp 1/1 Running 97 3d7h +kube-system kubernetes-metrics-scraper-54fbb4d595-slnlv 1/1 Running 63 3d7h +kube-system nodelocaldns-55nr9 1/1 Running 53 3d7h +kube-system onos-operator-app-d56cb6f55-bbqbp 1/1 Running 0 10m +kube-system onos-operator-config-7986b568b-vj8tj 1/1 Running 0 10m +kube-system onos-operator-topo-76fdf46db5-56rh9 1/1 Running 0 10m +prometheus alertmanager-prometheus-prometheus-oper-alertmanager-0 2/2 Running 46 3d4h +prometheus prometheus-grafana-d6545c767-pjchc 2/2 Running 40 3d4h +prometheus prometheus-kube-state-metrics-c65b87574-w92hj 1/1 Running 98 3d4h +prometheus prometheus-prometheus-node-exporter-khqbv 1/1 Running 84 3d4h +prometheus prometheus-prometheus-oper-operator-5ff8fbd5fb-6dm4g 2/2 Running 0 3d4h +prometheus prometheus-prometheus-prometheus-oper-prometheus-0 3/3 Running 38 3d4h +riab onos-cli-9f75bc57c-vf4mr 1/1 Running 0 7m44s +riab onos-config-5d7cd9dd8c-ml8fk 4/4 Running 0 7m44s +riab onos-consensus-store-0 1/1 Running 0 7m44s +riab onos-e2t-65cddb59cc-jztrn 3/3 Running 0 7m44s +riab onos-kpimon-6bdff5875c-gng64 2/2 Running 0 7m44s +riab onos-rsm-59f79876ff-qhmpm 2/2 Running 0 7m44s +riab onos-topo-775f5f946f-t29b2 3/3 Running 0 7m44s +riab onos-uenib-5b6445d58f-qljqp 3/3 Running 0 7m44s +``` + +**Note: RIC does not have a fixed IP address by which oai-enb-cu (or another eNB) can communicate with it. The onos-e2t component exposes a service in port 36421, which is associated with the IP address of the eno1 interface (i.e., the default gateway interface) where it is running. To check that IP address run the command "kubectl -n riab get svc". In the output of this command, one of the lines should show something similar to "onos-e2t-external NodePort x.y.w.z 36421:36421/SCTP 0m40s". The IP address "x.y.w.z" shown in the output of the previous command (listed in the onos-e2t-external service) is the one that is accessible from the outside of the RIC VM, i.e., by the oai-enb-cu in case of this tutorial. In a test case with another eNB, that should be the IP address to be configured in the eNB so it can communicate with onos RIC.** + + +## Routing +If RIC is running outside the OAI-CU/DU machine, run below command: +```bash +$ make routing-ric-external-ran +``` + +If there are multiple machines, we should manually add routing rules like: +```bash +$ sudo route add -host gw dev +$ sudo route add -host gw dev +``` \ No newline at end of file diff --git a/sdran-in-a-box/docs/HW_Installation_ric_only.md b/sdran-in-a-box/docs/HW_Installation_ric_only.md new file mode 100644 index 0000000..204ae5a --- /dev/null +++ b/sdran-in-a-box/docs/HW_Installation_ric_only.md @@ -0,0 +1,83 @@ + + +# Install RIC only + +This section explains how to execute only the RIC components (without RanSim/OAI) using the RiaB Makefile. + +## Get the RiaB source code + +To get the source code, please see: `https://github.com/onosproject/sdran-in-a-box`. + +Since SDRAN-in-a-Box repository is a member-only repository, a user should log in github and then check the git clone command on that web site. +Clone the RiaB repository to the target machine. + +This option is usefull to test RIC with CU/DU components running in other machines. + + +## Run RIC + +In the sdran-in-a-box folder, edit the Makefile to disable the ran-simulator execution, it should look like the line below: + +```bash +RANSIM_ARGS ?= --set import.ran-simulator.enabled=false # Change this value from true to false +``` + +Then run the RIC components with the commands below. + +```bash +$ cd /path/to/sdran-in-a-box +$ sudo apt install build-essential +$ make OPT=ric VER= +``` + +**Notice: The sdran-in-a-box-values.yaml contain the latest versions of the RIC components. In order to use the v1.0.0 or v1.1.0 versions make sure to respectively copy and paste to the sdran-in-a-box-values.yaml file the contents of the files sdran-in-a-box-values-v1.0.0.yaml and sdran-in-a-box-values-v1.1.0.yaml as needed.** + +Check the deployed RIC components using the commands: +```bash +$ kubectl -n riab get pods +$ kubectl -n riab get svc +``` + +Notice, in the output of the command `kubectl -n riab get svc` the service onos-e2t-external must be present in order to E2 nodes reach the RIC running node using a remote SCTP connection in port 36421. The IP address to be configured in E2 nodes connecting to RIC must be the IP address of the primary network interface of the RIC host machine. + +If such service (onos-e2t-external) does not exist, make sure in the file sdran-in-a-box-values.yaml the lines below are not commented. + +```yaml +onos-e2t: + service: + external: + enabled: true + e2: + nodePort: 36421 +``` + +## Routing +If RIC is running outside the OAI-CU/DU machine, run below command: +```bash +$ make routing-ric-external-ran +``` + +If there are multiple machines, we should manually add routing rules like: +```bash +$ sudo route add -host gw dev +$ sudo route add -host gw dev +``` + +## Stop/Clean RIC + +This deletes all deployed Helm charts for RIC components (keeps Kubernetes and Helm installed/running). + +```bash +$ make reset-ric +``` + +And this deletes not only deployed Helm charts but also Kubernetes and Helm. + +```bash +make clean # if we want to keep the ~/helm-charts directory - option to develop/test changed/new Helm charts +make clean-all # if we also want to delete ~/helm-charts directory +``` \ No newline at end of file diff --git a/sdran-in-a-box/docs/HW_Installation_troubleshooting.md b/sdran-in-a-box/docs/HW_Installation_troubleshooting.md new file mode 100644 index 0000000..5113d4c --- /dev/null +++ b/sdran-in-a-box/docs/HW_Installation_troubleshooting.md @@ -0,0 +1,141 @@ + + +# Troubleshooting Guide + +This section covers how to solve the reported issues. This section will be updated, continuously. + +## SPGW-C or UPF is not working +Please check the log with below commands: +```bash +$ kubectl logs spgwc-0 -n riab -c spgwc # for SPGW-C log +$ kubectl logs upf-0 -n riab -c bess # for UPF log +``` + +In the log, if we can see `unsupported CPU type` or `a specific flag (e.g., AES) is missing`, we should check the CPU microarchitecture. RiaB requires Intel Haswell or more recent CPU microarchitecture. +If we have the appropriate CPU type, we should build SPGW-C or UPF image on the machine where RiaB will run. + +To build SPGW-C, first clone the SPGW-C repository on the machine with `git clone https://github.com/omec-project/spgw`. Then, edit below line in Makefile: +```makefile +DOCKER_BUILD_ARGS ?= --build-arg RTE_MACHINE='native' +``` +Then, run `make` on the `spgw` directory. + +Likewise, for building UPF image, we should clone UPF repository with `git clone https://github.com/omec-project/upf-epc`. Then, edit below line in Makefile: +```makefile +CPU ?= native +``` +Then, run `make` on the `upf-epc` directory. + +After building those images, we should modify overriding value yaml file (i.e., `sdran-in-a-box-values.yaml`). Go to the file and write down below: +```yaml +images: + tags: + spgwc: + bess: + pfcpiface: + pullPolicy: IfNotPresent +``` +Then, run below commands: +```bash +$ cd /path/to/sdran-in-a-box +$ make reset-test +# after all OMEC pods are deleted, run make again +$ make +``` + +## ETCD is not working +Sometimes, we see the below outputs when building RiaB. +```text +TASK [etcd : Configure | Ensure etcd is running] *********************************************************************** +FAILED - RETRYING: Configure | Check if etcd cluster is healthy (4 retries left). +FAILED - RETRYING: Configure | Check if etcd cluster is healthy (3 retries left). +FAILED - RETRYING: Configure | Check if etcd cluster is healthy (2 retries left). +FAILED - RETRYING: Configure | Check if etcd cluster is healthy (1 retries left). +``` + +If we see this, we can command below: +```bash +$ sudo systemctl restart docker +$ cd /path/to/sdran-in-a-box +$ make +``` + +## Atomix controllers cannot be deleted/reset +Sometimes, Atomix controllers cannot be deleted (maybe we will get stuck when deleting Atomix controller pods) when we command `make reset-test`. +```bash +rm -f /tmp/build/milestones/oai-enb-cu +rm -f /tmp/build/milestones/oai-enb-du +rm -f /tmp/build/milestones/oai-ue +helm delete -n riab sd-ran || true +release "sd-ran" uninstalled +cd /tmp/build/milestones; rm -f ric +kubectl delete -f https://raw.githubusercontent.com/atomix/kubernetes-controller/master/deploy/atomix-controller.yaml || true +customresourcedefinition.apiextensions.k8s.io "databases.cloud.atomix.io" deleted +customresourcedefinition.apiextensions.k8s.io "partitions.cloud.atomix.io" deleted +customresourcedefinition.apiextensions.k8s.io "members.cloud.atomix.io" deleted +customresourcedefinition.apiextensions.k8s.io "primitives.cloud.atomix.io" deleted +serviceaccount "atomix-controller" deleted +clusterrole.rbac.authorization.k8s.io "atomix-controller" deleted +clusterrolebinding.rbac.authorization.k8s.io "atomix-controller" deleted +service "atomix-controller" deleted +deployment.apps "atomix-controller" deleted +``` + +If the script is stopped here, we can command: +```bash +# Commmand Ctrl+c first to stop the Makefile script if the make reset-test is got stuck. Then command below. +$ make reset-atomix # Manually delete Atomix controller pods +$ make atomix # Manually install Atomix controller pods +$ make reset-test # Then, make reset-test again +``` + +Or, sometimes we see this when deploying RiaB: +```text +Error from server (AlreadyExists): error when creating "https://raw.githubusercontent.com/atomix/kubernetes-controller/master/deploy/atomix-controller.yaml": object is being deleted: customresourcedefinitions.apiextensions.k8s.io "members.cloud.atomix.io" already exists +Makefile:231: recipe for target '/tmp/build/milestones/atomix' failed +``` + +In this case, we can manually delete atomix with the command `make atomix || make reset-atomix`, and then resume to deploy RiaB. + +## Pod onos-consensus-db-1-0 initialization failed + +In Ubuntu 20.04 (kernel 5.4.0-65-generic), the k8s pod named `onos-consensus-db-1-0` might fail due to a bug of using go and alpine together (e.g., https://github.com/docker-library/golang/issues/320). + +It can be seen in `kubectl logs -n riab onos-consensus-db-1-0` as: +```bash +runtime: mlock of signal stack failed: 12 +runtime: increase the mlock limit (ulimit -l) or +runtime: update your kernel to 5.3.15+, 5.4.2+, or 5.5+ +fatal error: mlock failed +``` + +Such pod utilizes the docker image atomix/raft-storage-node:v0.5.3, tagged from the build of the image atomix/dragonboat-raft-storage-node:latest available at https://github.com/atomix/dragonboat-raft-storage-node. + +A quick fix (allowing an unlimited amount memory to be locked by the pod) to this issue is cloning the repository https://github.com/atomix/dragonboat-raft-storage-node, and changing the Makefile: + +```bash +# Before change +image: build + docker build . -f build/dragonboat-raft-storage-node/Dockerfile -t atomix/dragonboat-raft-storage-node:${RAFT_STORAGE_NODE_VERSION} + +# After change: unlimited maximum locked-in-memory address space +image: build + docker build --ulimit memlock=-1 . -f build/dragonboat-raft-storage-node/Dockerfile -t atomix/dragonboat-raft-storage-node:${RAFT_STORAGE_NODE_VERSION} +``` + +Then running in the source dir of this repository the command `make image`, and tagging the built image as: + +```bash +docker tag atomix/dragonboat-raft-storage-node:latest atomix/raft-storage-node:v0.5.3 +``` + +After that proceed with the execution of the Riab setup again. + + +## Other issues? +Please contact ONF SD-RAN team, if you see any issue. Any issue report from users is very welcome. +Mostly, the redeployment by using `make reset-test and make [option]` resolves issues. \ No newline at end of file diff --git a/sdran-in-a-box/docs/Installation_OAI_nFAPI.md b/sdran-in-a-box/docs/Installation_OAI_nFAPI.md new file mode 100644 index 0000000..b36f69c --- /dev/null +++ b/sdran-in-a-box/docs/Installation_OAI_nFAPI.md @@ -0,0 +1,831 @@ + + +# Installation with CU-CP and OAI nFAPI emulator for KPIMON & RSM +This document covers how to install ONOS RIC services with CU-CP and OAI nFAPI emulator for KPIMON and RSM use-cases. +With this option, RiaB will deploy ONOS RIC services including ONOS-KPIMON (KPM 2.0 supported) together with CU-CP, OAI DU (nFAPI), and OAI UE (nFAPI). + +## Clone this repository +To begin with, clone this repository: +```bash +$ git clone https://github.com/onosproject/sdran-in-a-box +``` +**NOTE: If we want to use a specific release, we can change the branch with `git checkout [args]` command:** +```bash +$ cd /path/to/sdran-in-a-box +$ git checkout v1.0.0 # for release 1.0 +$ git checkout v1.1.0 # for release 1.1 +$ git checkout v1.1.1 # for release 1.1.1 +$ git checkout v1.2.0 # for release 1.2 +$ git checkout v1.3.0 # for release 1.3 +$ git checkout v1.4.0 # for release 1.4 +$ git checkout master # for master +``` + +## Deploy RiaB with OAI nFAPI emulator + +### Command options +To deploy RiaB with OAI nFAPI emulator, we should go to `sdran-in-a-box` directory and command below: +```bash +$ cd /path/to/sdran-in-a-box +# type one of below commands +# for "master-stable" version (KPIMON and RSM) +$ make riab OPT=oai VER=stable # or just make riab OPT=oai +# for "latest" version (KPIMON and RSM) +$ make riab OPT=oai VER=latest # +# for a specific version +$ make riab OPT=oai VER=v1.0.0 # for release SD-RAN 1.0 (KPIMON only) +$ make riab OPT=oai VER=v1.1.0 # for release SD-RAN 1.1 (KPIMON only) +$ make riab OPT=oai VER=v1.1.1 # for release SD-RAN 1.1.1 (KPIMON only) +$ make riab OPT=oai VER=v1.2.0 # for release SD-RAN 1.2 (KPIMON only) +$ make riab OPT=oai VER=v1.3.0 # for release SD-RAN 1.3 (KPIMON and RSM) +$ make riab OPT=oai VER=v1.4.0 # for release SD-RAN 1.4 (KPIMON and RSM) +# for a "dev" version +$ make riab OPT=oai VER=dev # for dev (KPIMON and RSM) +``` + +Once we push one of above commands, the deployment procedure starts. + +If we don't see any error or failure messages, everything is deployed. +```bash +$ kubectl get po --all-namespaces +NAMESPACE NAME READY STATUS RESTARTS AGE +default router 1/1 Running 0 9m25s +kube-system atomix-controller-99f978c7d-jv8vv 1/1 Running 0 8m35s +kube-system atomix-raft-storage-controller-75979cfff8-npkw4 1/1 Running 0 8m10s +kube-system calico-kube-controllers-584ddbb8fb-nxb7l 1/1 Running 0 5h8m +kube-system calico-node-s5czk 1/1 Running 1 5h8m +kube-system coredns-dff8fc7d-nznzf 1/1 Running 0 5h7m +kube-system dns-autoscaler-5d74bb9b8f-cfwvp 1/1 Running 0 5h7m +kube-system kube-apiserver-node1 1/1 Running 0 5h9m +kube-system kube-controller-manager-node1 1/1 Running 0 5h9m +kube-system kube-multus-ds-amd64-r42zf 1/1 Running 0 5h8m +kube-system kube-proxy-vp7k7 1/1 Running 1 5h9m +kube-system kube-scheduler-node1 1/1 Running 0 5h9m +kube-system kubernetes-dashboard-667c4c65f8-cr6q5 1/1 Running 0 5h7m +kube-system kubernetes-metrics-scraper-54fbb4d595-t8rgz 1/1 Running 0 5h7m +kube-system nodelocaldns-rc6w7 1/1 Running 0 5h7m +kube-system onos-operator-app-d56cb6f55-9jbkt 1/1 Running 0 7m53s +kube-system onos-operator-config-7986b568b-9dznx 1/1 Running 0 7m53s +kube-system onos-operator-topo-76fdf46db5-sbblb 1/1 Running 0 7m53s +riab cassandra-0 1/1 Running 0 7m28s +riab hss-0 1/1 Running 0 7m28s +riab mme-0 4/4 Running 0 7m28s +riab oai-enb-cu-0 1/1 Running 0 4m52s +riab oai-enb-du-0 1/1 Running 0 3m41s +riab oai-ue-0 1/1 Running 0 2m30s +riab onos-a1t-84db77df99-mswp6 2/2 Running 0 6m +riab onos-cli-6b746874c8-96zxc 1/1 Running 0 6m +riab onos-config-7bd4b6f7f6-njdsj 4/4 Running 0 6m +riab onos-consensus-store-0 1/1 Running 0 6m +riab onos-e2t-58b4cd867-tkgcd 3/3 Running 0 6m +riab onos-kpimon-966bdf77f-5nn6t 2/2 Running 0 6m +riab onos-rsm-86df4894bd-clcsp 2/2 Running 0 6m +riab onos-topo-7cc9d754d7-2qjng 3/3 Running 0 6m +riab onos-uenib-779cb5dbd6-lprns 3/3 Running 0 6m +riab pcrf-0 1/1 Running 0 7m28s +riab spgwc-0 2/2 Running 0 7m28s +riab upf-0 4/4 Running 0 6m24s +``` + +NOTE: If we see any issue when deploying RiaB, please check [Troubleshooting](./troubleshooting.md) + +## End-to-End (E2E) tests for verification +In order to check whether everything is running, we should conduct some E2E tests and check their results. +Since CU-CP supports the SD-RAN control plane and OAI nFAPI services the LTE user plane, we can do E2E tests on the user plane and SD-RAN control plane. + +### The E2E test on the user plane +We can type `make test-user-plane` on the prompt for the user plane verification. + +```bash +$ make test-user-plane +*** T1: Internal network test: ping 192.168.250.1 (Internal router IP) *** +PING 192.168.250.1 (192.168.250.1) from 172.250.255.254 oaitun_ue1: 56(84) bytes of data. +64 bytes from 192.168.250.1: icmp_seq=1 ttl=64 time=20.4 ms +64 bytes from 192.168.250.1: icmp_seq=2 ttl=64 time=19.9 ms +64 bytes from 192.168.250.1: icmp_seq=3 ttl=64 time=18.6 ms + +--- 192.168.250.1 ping statistics --- +3 packets transmitted, 3 received, 0% packet loss, time 2001ms +rtt min/avg/max/mdev = 18.664/19.686/20.479/0.758 ms +*** T2: Internet connectivity test: ping to 8.8.8.8 *** +PING 8.8.8.8 (8.8.8.8) from 172.250.255.254 oaitun_ue1: 56(84) bytes of data. +64 bytes from 8.8.8.8: icmp_seq=1 ttl=113 time=57.8 ms +64 bytes from 8.8.8.8: icmp_seq=2 ttl=113 time=56.4 ms +64 bytes from 8.8.8.8: icmp_seq=3 ttl=113 time=55.0 ms + +--- 8.8.8.8 ping statistics --- +3 packets transmitted, 3 received, 0% packet loss, time 2002ms +rtt min/avg/max/mdev = 55.004/56.441/57.878/1.189 ms +*** T3: DNS test: ping to google.com *** +PING google.com (172.217.9.142) from 172.250.255.254 oaitun_ue1: 56(84) bytes of data. +64 bytes from dfw25s26-in-f14.1e100.net (172.217.9.142): icmp_seq=1 ttl=112 time=54.7 ms +64 bytes from dfw25s26-in-f14.1e100.net (172.217.9.142): icmp_seq=2 ttl=112 time=53.6 ms +64 bytes from dfw25s26-in-f14.1e100.net (172.217.9.142): icmp_seq=3 ttl=112 time=51.9 ms + +--- google.com ping statistics --- +3 packets transmitted, 3 received, 0% packet loss, time 2002ms +rtt min/avg/max/mdev = 51.990/53.452/54.712/1.136 ms +``` + +If we can see that ping is working without any loss, the user plane is working well. + +### The E2E test on SD-RAN control plane +In order to verify the SD-RAN control plane, we should command below for each version. +* `make test-kpimon`: to see the number of active UEs +```bash +$ make test-kpimon +Helm values.yaml file: /users/wkim/sdran-in-a-box//sdran-in-a-box-values-master-stable.yaml +HEAD is now at 9f79ab8 Fix the default SRIOV resource name for UPF user plane interfaces +HEAD is now at be1b9dd Fixing SM versions for E2T (#994) +*** Get KPIMON result through CLI *** +Node ID Cell Object ID Cell Global ID Time RRC.ConnEstabAtt.sum RRC.ConnEstabSucc.sum RRC.ConnMax RRC.ConnMean RRC.ConnReEstabAtt.sum +e2:4/e00/2/64 1 e0000 03:39:24.0 1 1 1 1 0 +``` + +* `make test-e2-subscription`: to see e2 connection and subscription +```bash +$ make test-e2-subscription +Helm values.yaml file: /users/wkim/sdran-in-a-box//sdran-in-a-box-values-master-stable.yaml +HEAD is now at 9f79ab8 Fix the default SRIOV resource name for UPF user plane interfaces +HEAD is now at be1b9dd Fixing SM versions for E2T (#994) +*** Get E2 subscriptions through CLI *** +Subscription ID Revision Service Model ID E2 NodeID Encoding Phase State +43aa0af7ce9a05142e5235c7a8efbd9b:e2:4/e00/2/64 57 oran-e2sm-rsm:v1 e2:4/e00/2/64 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE +9a8f85fa67a6ef913ef4c0fa8f8fdee4:e2:4/e00/2/64 62 oran-e2sm-kpm:v2 e2:4/e00/2/64 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE +``` + +* `make test-rnib` and `make test-uenib`: to check information in R-NIB and UE-NIB +```bash +$ make test-rnib +... +*** Get R-NIB result through CLI *** +ID: e2:4/e00/3/c8 +Kind ID: e2node +Labels: +Source Id's: +Target Id's: uuid:2c192472-c952-462e-b33d-4b9d5b46ff3b +Aspects: +- onos.topo.E2Node={"serviceModels":{"1.3.6.1.4.1.53148.1.1.2.102":{"oid":"1.3.6.1.4.1.53148.1.1.2.102","name":"ORAN-E2SM-RSM","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.RSMRanFunction","ricSlicingNodeCapabilityList":[{"maxNumberOfSlicesDl":4,"maxNumberOfSlicesUl":4,"maxNumberOfUesPerSlice":4,"supportedConfig":[{},{"slicingConfigType":"E2_SM_RSM_COMMAND_SLICE_UPDATE"},{"slicingConfigType":"E2_SM_RSM_COMMAND_SLICE_DELETE"},{"slicingConfigType":"E2_SM_RSM_COMMAND_UE_ASSOCIATE"}]}]}],"ranFunctionIDs":[1]}}} +- onos.topo.MastershipState={"term":"1","nodeId":"uuid:2c192472-c952-462e-b33d-4b9d5b46ff3b"} + +ID: e2:4/e00/2/64/e0000 +Kind ID: e2cell +Labels: +Source Id's: +Target Id's: uuid:74c614b5-8666-67e9-d1a5-97d95ae83dcd +Aspects: +- onos.topo.E2Cell={"cellObjectId":"1","cellGlobalId":{"value":"e0000","type":"ECGI"},"kpiReports":{"RRC.ConnEstabAtt.sum":1,"RRC.ConnEstabSucc.sum":1,"RRC.ConnMax":1,"RRC.ConnMean":1,"RRC.ConnReEstabAtt.sum":0}} + +ID: e2:onos-e2t-58b4cd867-tkgcd +Kind ID: e2t +Labels: +Source Id's: uuid:ff39c175-c492-4831-b626-2ace5105a1c3, uuid:2c192472-c952-462e-b33d-4b9d5b46ff3b +Target Id's: +Aspects: +- onos.topo.E2TInfo={"interfaces":[{"type":"INTERFACE_E2AP200","ip":"192.168.84.169","port":36421},{"type":"INTERFACE_E2T","ip":"192.168.84.169","port":5150}]} +- onos.topo.Lease={"expiration":"2022-03-11T03:40:21.092928231Z"} + +ID: a1:onos-a1t-84db77df99-mswp6 +Kind ID: a1t +Labels: +Source Id's: +Target Id's: +Aspects: +- onos.topo.A1TInfo={"interfaces":[{"type":"INTERFACE_A1AP","ip":"192.168.84.162","port":9639}]} + +ID: gnmi:onos-config-7bd4b6f7f6-njdsj +Kind ID: onos-config +Labels: +Source Id's: +Target Id's: +Aspects: +- onos.topo.Lease={"expiration":"2022-03-11T03:40:22.243649952Z"} + +ID: e2:4/e00/2/64 +Kind ID: e2node +Labels: +Source Id's: uuid:74c614b5-8666-67e9-d1a5-97d95ae83dcd +Target Id's: uuid:ff39c175-c492-4831-b626-2ace5105a1c3 +Aspects: +- onos.topo.E2Node={"serviceModels":{"1.3.6.1.4.1.53148.1.1.2.102":{"oid":"1.3.6.1.4.1.53148.1.1.2.102","name":"ORAN-E2SM-RSM","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.RSMRanFunction","ricSlicingNodeCapabilityList":[{"maxNumberOfSlicesDl":4,"maxNumberOfSlicesUl":4,"maxNumberOfUesPerSlice":4,"supportedConfig":[{"slicingConfigType":"E2_SM_RSM_COMMAND_EVENT_TRIGGERS"}]}]}],"ranFunctionIDs":[2]},"1.3.6.1.4.1.53148.1.2.2.2":{"oid":"1.3.6.1.4.1.53148.1.2.2.2","name":"ORAN-E2SM-KPM","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.KPMRanFunction","reportStyles":[{"name":"O-CU-UP Measurement Container for the EPC connected deployment","type":6,"measurements":[{"id":"value:1","name":"RRC.ConnEstabAtt.sum"},{"id":"value:2","name":"RRC.ConnEstabSucc.sum"},{"id":"value:3","name":"RRC.ConnReEstabAtt.sum"},{"id":"value:4","name":"RRC.ConnMean"},{"id":"value:5","name":"RRC.ConnMax"}]}]}],"ranFunctionIDs":[1]}}} +- onos.topo.MastershipState={"term":"1","nodeId":"uuid:ff39c175-c492-4831-b626-2ace5105a1c3"} +``` + +* Run `make test-kpimon` before and after phone detached: to check the number of active UEs changed +```bash +$ make test-kpimon +Helm values.yaml file: /users/wkim/sdran-in-a-box//sdran-in-a-box-values-master-stable.yaml +HEAD is now at 9f79ab8 Fix the default SRIOV resource name for UPF user plane interfaces +HEAD is now at be1b9dd Fixing SM versions for E2T (#994) +*** Get KPIMON result through CLI *** +Node ID Cell Object ID Cell Global ID Time RRC.ConnEstabAtt.sum RRC.ConnEstabSucc.sum RRC.ConnMax RRC.ConnMean RRC.ConnReEstabAtt.sum +e2:4/e00/2/64 1 e0000 23:52:01.0 1 1 1 1 0 + +$ make detach-ue +Helm values.yaml file: /users/wkim/sdran-in-a-box//sdran-in-a-box-values-master-stable.yaml +HEAD is now at 9f79ab8 Fix the default SRIOV resource name for UPF user plane interfaces +HEAD is now at be1b9dd Fixing SM versions for E2T (#994) +echo -en "AT+CPIN=0000\r" | nc -u -w 1 localhost 10000 + +OK +echo -en "AT+CGATT=0\r" | nc -u -w 1 localhost 10000 + +OK + +$ make test-kpimon +Helm values.yaml file: /users/wkim/sdran-in-a-box//sdran-in-a-box-values-master-stable.yaml +HEAD is now at 9f79ab8 Fix the default SRIOV resource name for UPF user plane interfaces +HEAD is now at be1b9dd Fixing SM versions for E2T (#994) +*** Get KPIMON result through CLI *** +Node ID Cell Object ID Cell Global ID Time RRC.ConnEstabAtt.sum RRC.ConnEstabSucc.sum RRC.ConnMax RRC.ConnMean RRC.ConnReEstabAtt.sum +e2:4/e00/2/64 1 e0000 23:52:13.0 1 1 1 0 0 +``` + +As we can see, `RRC.ConnMean` which shows the number of active UEs changed from 1 to 0, since a emulated UE is detached. + +### The RSM E2E tests +If the following steps are all passed, RSM use-case is working fine. + +* Step 1. Check the default slice performance +```bash +$ make test-rsm-dataplane +Helm values.yaml file: /users/wkim/sdran-in-a-box//sdran-in-a-box-values-master-stable.yaml +HEAD is now at 9f79ab8 Fix the default SRIOV resource name for UPF user plane interfaces +Previous HEAD position was e61a87a Update e2ap101 umbrella chart for release 1.3 +HEAD is now at 0a2716d Releasing onos-rsm v0.1.9 (#992) +*** Test downlink traffic (UDP) *** +sudo apt install -y iperf3 +Reading package lists... Done +Building dependency tree +Reading state information... Done +iperf3 is already the newest version (3.1.3-1). +The following package was automatically installed and is no longer required: + ssl-cert +Use 'sudo apt autoremove' to remove it. +0 upgraded, 0 newly installed, 0 to remove and 173 not upgraded. +kubectl exec -it router -- apt install -y iperf3 +Reading package lists... Done +Building dependency tree +Reading state information... Done +The following extra packages will be installed: + libiperf0 +The following NEW packages will be installed: + iperf3 libiperf0 +0 upgraded, 2 newly installed, 0 to remove and 80 not upgraded. +Need to get 56.7 kB of archives. +After this operation, 236 kB of additional disk space will be used. +Get:1 http://archive.ubuntu.com/ubuntu/ trusty-backports/universe libiperf0 amd64 3.0.7-1~ubuntu14.04.1 [48.7 kB] +Get:2 http://archive.ubuntu.com/ubuntu/ trusty-backports/universe iperf3 amd64 3.0.7-1~ubuntu14.04.1 [7966 B] +Fetched 56.7 kB in 0s (114 kB/s) +Selecting previously unselected package libiperf0. +(Reading database ... 17318 files and directories currently installed.) +Preparing to unpack .../libiperf0_3.0.7-1~ubuntu14.04.1_amd64.deb ... +Unpacking libiperf0 (3.0.7-1~ubuntu14.04.1) ... +Selecting previously unselected package iperf3. +Preparing to unpack .../iperf3_3.0.7-1~ubuntu14.04.1_amd64.deb ... +Unpacking iperf3 (3.0.7-1~ubuntu14.04.1) ... +Setting up libiperf0 (3.0.7-1~ubuntu14.04.1) ... +Setting up iperf3 (3.0.7-1~ubuntu14.04.1) ... +Processing triggers for libc-bin (2.19-0ubuntu6.13) ... +iperf3 -s -B $(ip a show oaitun_ue1 | grep inet | grep -v inet6 | awk '{print $2}' | awk -F '/' '{print $1}') -p 5001 > /dev/null & +kubectl exec -it router -- iperf3 -u -c $(ip a show oaitun_ue1 | grep inet | grep -v inet6 | awk '{print $2}' | awk -F '/' '{print $1}') -p 5001 -b 20M -l 1450 -O 2 -t 12 --get-server-output +Connecting to host 172.250.255.254, port 5001 +[ 4] local 192.168.250.1 port 38444 connected to 172.250.255.254 port 5001 +[ ID] Interval Transfer Bandwidth Total Datagrams +[ 4] 0.00-1.00 sec 2.15 MBytes 18.1 Mbits/sec 1557 (omitted) +[ 4] 1.00-2.00 sec 2.38 MBytes 20.0 Mbits/sec 1722 (omitted) +[ 4] 0.00-1.00 sec 2.17 MBytes 18.2 Mbits/sec 1567 +[ 4] 1.00-2.00 sec 2.38 MBytes 20.0 Mbits/sec 1721 +[ 4] 2.00-3.00 sec 2.37 MBytes 19.9 Mbits/sec 1715 +[ 4] 3.00-4.00 sec 2.39 MBytes 20.0 Mbits/sec 1725 +[ 4] 4.00-5.00 sec 2.39 MBytes 20.0 Mbits/sec 1726 +[ 4] 5.00-6.00 sec 2.38 MBytes 20.0 Mbits/sec 1721 +[ 4] 6.00-7.00 sec 2.39 MBytes 20.0 Mbits/sec 1728 +[ 4] 7.00-8.00 sec 2.39 MBytes 20.1 Mbits/sec 1729 +[ 4] 8.00-9.00 sec 2.38 MBytes 19.9 Mbits/sec 1718 +[ 4] 9.00-10.00 sec 2.38 MBytes 20.0 Mbits/sec 1722 +[ 4] 10.00-11.00 sec 2.39 MBytes 20.0 Mbits/sec 1728 +[ 4] 11.00-12.00 sec 2.38 MBytes 19.9 Mbits/sec 1719 +- - - - - - - - - - - - - - - - - - - - - - - - - +[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams +[ 4] 0.00-12.00 sec 28.4 MBytes 19.8 Mbits/sec 0.645 ms 2145/20507 (10%) +[ 4] Sent 20507 datagrams + +Server output: +Accepted connection from 192.168.250.1, port 53510 +[ 5] local 172.250.255.254 port 5001 connected to 192.168.250.1 port 38444 +[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams +[ 5] 0.00-1.00 sec 1.76 MBytes 14.8 Mbits/sec 0.704 ms 7/1282 (0.55%) (omitted) +[ 5] 1.00-1.00 sec 2.10 MBytes 8.82 Mbits/sec 4.988 ms 0/3042 (0%) +[ 5] 1.00-2.00 sec 2.10 MBytes 17.7 Mbits/sec 0.630 ms 18/1540 (1.2%) +[ 5] 2.00-3.00 sec 2.10 MBytes 17.6 Mbits/sec 1.311 ms 242/1763 (14%) +[ 5] 3.00-4.00 sec 2.10 MBytes 17.6 Mbits/sec 2.584 ms 187/1708 (11%) +[ 5] 4.00-5.00 sec 2.10 MBytes 17.6 Mbits/sec 4.508 ms 192/1713 (11%) +[ 5] 5.00-6.00 sec 2.10 MBytes 17.7 Mbits/sec 0.621 ms 189/1711 (11%) +[ 5] 6.00-7.00 sec 2.10 MBytes 17.6 Mbits/sec 2.409 ms 228/1749 (13%) +[ 5] 7.00-8.00 sec 2.10 MBytes 17.6 Mbits/sec 2.778 ms 202/1723 (12%) +[ 5] 8.00-9.00 sec 2.10 MBytes 17.6 Mbits/sec 0.648 ms 181/1702 (11%) +[ 5] 9.00-10.00 sec 2.10 MBytes 17.6 Mbits/sec 1.325 ms 245/1766 (14%) +[ 5] 10.00-11.00 sec 2.10 MBytes 17.6 Mbits/sec 2.683 ms 183/1704 (11%) +[ 5] 11.00-12.00 sec 2.10 MBytes 17.7 Mbits/sec 4.491 ms 192/1714 (11%) +[ 5] 12.00-12.39 sec 835 KBytes 17.6 Mbits/sec 0.645 ms 79/669 (12%) +- - - - - - - - - - - - - - - - - - - - - - - - - +[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams +[ 5] 0.00-12.39 sec 0.00 Bytes 0.00 bits/sec 0.645 ms 2138/20983 (10%) + + +iperf Done. +pkill -9 -ef iperf3 +iperf3 killed (pid 1707) +``` +In this result, the performance is around 17.7 Mbps. + +**NOTE: depending on the iPerf3 version, the last result line in ther server output is mostly 0. We should check the performance in each step.** + +* Step 2. Create a slice +```bash +$ kubectl exec -it deployment/onos-cli -n riab -- onos rsm create slice --e2NodeID e2:4/e00/3/c8 --scheduler RR --sliceID 1 --weight 30 --sliceType DL +``` + +If there is no error message, we should check `onos-topo` result. +```bash +$ kubectl exec -it deployment/onos-cli -n riab -- onos topo get entity e2:4/e00/3/c8 -v + +ID: e2:4/e00/3/c8 +Kind ID: e2node +Labels: +Source Id's: +Target Id's: uuid:6065c5aa-4351-446d-82b4-7702b991c365 +Aspects: +- onos.topo.E2Node={"serviceModels":{"1.3.6.1.4.1.53148.1.1.2.102":{"oid":"1.3.6.1.4.1.53148.1.1.2.102","name":"ORAN-E2SM-RSM","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.RSMRanFunction","ricSlicingNodeCapabilityList":[{"maxNumberOfSlicesDl":4,"maxNumberOfSlicesUl":4,"maxNumberOfUesPerSlice":4,"supportedConfig":[{},{"slicingConfigType":"E2_SM_RSM_COMMAND_SLICE_UPDATE"},{"slicingConfigType":"E2_SM_RSM_COMMAND_SLICE_DELETE"},{"slicingConfigType":"E2_SM_RSM_COMMAND_UE_ASSOCIATE"}]}]}]}}} +- onos.topo.RSMSliceItemList={"rsmSliceList":[{"id":"1","sliceDesc":"Slice created by onos-RSM xAPP","sliceParameters":{"weight":30},"ueIdList":[]}]} +- onos.topo.MastershipState={"term":"1","nodeId":"uuid:6065c5aa-4351-446d-82b4-7702b991c365"} +``` + +`RSMSliceItemList` should not be empty and have the correct values. + +* Step 3. Associate a UE with the created slice +Before we run it, we should check the `DU-UE-F1AP-ID` in `onos-uenib` (in the below example, the ID is 49871). +```bash +$ kubectl exec -it deployment/onos-cli -n riab -- onos uenib get ues -v +ID: 455f5d5e-0f8e-4b8d-a857-c56e9bd455cb +Aspects: +- onos.uenib.RsmUeInfo={"globalUeId":"455f5d5e-0f8e-4b8d-a857-c56e9bd455cb","ueIdList":{"duUeF1apId":{"value":"49781"},"cuUeF1apId":{"value":"49781"},"ranUeNgapId":{},"enbUeS1apId":{"value":14951620},"amfUeNgapId":{}},"bearerIdList":[{"drbID":{"fourGDrbID":{"value":5,"qci":{"value":9}}}}],"cellGlobalId":"e_utra_cgi:{p_lmnidentity:{value:\"\\x02\\xf8\\x10\"} e_utracell_identity:{value:{value:\"\\x00\\xe0\\x00\\x00\" len:28}}}","cuE2NodeId":"e2:4/e00/2/64","duE2NodeId":"e2:4/e00/3/c8","sliceList":[]} + +$ kubectl exec -it deployment/onos-cli -n riab -- onos rsm set association --dlSliceID 1 --e2NodeID e2:4/e00/3/c8 --drbID 5 --DuUeF1apID 49871 +``` + +After association, we should check `onos-uenib` and `onos-topo`: +```bash +$ kubectl exec -it deployment/onos-cli -n riab -- onos topo get entity e2:4/e00/3/c8 -v + +ID: e2:4/e00/3/c8 +Kind ID: e2node +Labels: +Source Id's: +Target Id's: uuid:6065c5aa-4351-446d-82b4-7702b991c365 +Aspects: +- onos.topo.MastershipState={"term":"1","nodeId":"uuid:6065c5aa-4351-446d-82b4-7702b991c365"} +- onos.topo.E2Node={"serviceModels":{"1.3.6.1.4.1.53148.1.1.2.102":{"oid":"1.3.6.1.4.1.53148.1.1.2.102","name":"ORAN-E2SM-RSM","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.RSMRanFunction","ricSlicingNodeCapabilityList":[{"maxNumberOfSlicesDl":4,"maxNumberOfSlicesUl":4,"maxNumberOfUesPerSlice":4,"supportedConfig":[{},{"slicingConfigType":"E2_SM_RSM_COMMAND_SLICE_UPDATE"},{"slicingConfigType":"E2_SM_RSM_COMMAND_SLICE_DELETE"},{"slicingConfigType":"E2_SM_RSM_COMMAND_UE_ASSOCIATE"}]}]}]}}} +- onos.topo.RSMSliceItemList={"rsmSliceList":[{"id":"1","sliceDesc":"Slice created by onos-RSM xAPP","sliceParameters":{"weight":30},"ueIdList":[{"duUeF1apId":{"value":"49781"},"cuUeF1apId":{},"ranUeNgapId":{},"enbUeS1apId":{},"amfUeNgapId":{},"drbId":{"fourGDrbID":{"value":5,"qci":{"value":9}}}}]}]} + +$ kubectl exec -it deployment/onos-cli -n riab -- onos uenib get ues -v +ID: 455f5d5e-0f8e-4b8d-a857-c56e9bd455cb +Aspects: +- onos.uenib.RsmUeInfo={"globalUeId":"455f5d5e-0f8e-4b8d-a857-c56e9bd455cb","ueIdList":{"duUeF1apId":{"value":"49781"},"cuUeF1apId":{"value":"49781"},"ranUeNgapId":{},"enbUeS1apId":{"value":14951620},"amfUeNgapId":{}},"bearerIdList":[{"drbID":{"fourGDrbID":{"value":5,"qci":{"value":9}}}}],"cellGlobalId":"e_utra_cgi:{p_lmnidentity:{value:\"\\x02\\xf8\\x10\"} e_utracell_identity:{value:{value:\"\\x00\\xe0\\x00\\x00\" len:28}}}","cuE2NodeId":"e2:4/e00/2/64","duE2NodeId":"e2:4/e00/3/c8","sliceList":[{"duE2NodeId":"e2:4/e00/3/c8","cuE2NodeId":"e2:4/e00/2/64","id":"1","sliceParameters":{"weight":30},"drbId":{"fourGDrbID":{"value":5,"qci":{"value":9}}}}]} +``` + +`ueIdList` in `onos-topo` and `sliceList` in `onos-uenib` should not be empty and have the correct values. + +Then, check the created slice's performance: +```bash +$ make test-rsm-dataplane +Helm values.yaml file: /users/wkim/sdran-in-a-box//sdran-in-a-box-values-master-stable.yaml +HEAD is now at 9f79ab8 Fix the default SRIOV resource name for UPF user plane interfaces +HEAD is now at 0a2716d Releasing onos-rsm v0.1.9 (#992) +*** Test downlink traffic (UDP) *** +sudo apt install -y iperf3 +Reading package lists... Done +Building dependency tree +Reading state information... Done +iperf3 is already the newest version (3.1.3-1). +The following package was automatically installed and is no longer required: + ssl-cert +Use 'sudo apt autoremove' to remove it. +0 upgraded, 0 newly installed, 0 to remove and 173 not upgraded. +kubectl exec -it router -- apt install -y iperf3 +Reading package lists... Done +Building dependency tree +Reading state information... Done +iperf3 is already the newest version. +0 upgraded, 0 newly installed, 0 to remove and 80 not upgraded. +iperf3 -s -B $(ip a show oaitun_ue1 | grep inet | grep -v inet6 | awk '{print $2}' | awk -F '/' '{print $1}') -p 5001 > /dev/null & +kubectl exec -it router -- iperf3 -u -c $(ip a show oaitun_ue1 | grep inet | grep -v inet6 | awk '{print $2}' | awk -F '/' '{print $1}') -p 5001 -b 20M -l 1450 -O 2 -t 12 --get-server-output +Connecting to host 172.250.255.254, port 5001 +[ 4] local 192.168.250.1 port 43898 connected to 172.250.255.254 port 5001 +[ ID] Interval Transfer Bandwidth Total Datagrams +[ 4] 0.00-1.00 sec 2.15 MBytes 18.0 Mbits/sec 1554 (omitted) +[ 4] 1.00-2.00 sec 2.39 MBytes 20.0 Mbits/sec 1725 (omitted) +[ 4] 0.00-1.00 sec 2.15 MBytes 18.0 Mbits/sec 1556 +[ 4] 1.00-2.00 sec 2.38 MBytes 20.0 Mbits/sec 1722 +[ 4] 2.00-3.00 sec 2.38 MBytes 20.0 Mbits/sec 1724 +[ 4] 3.00-4.00 sec 2.39 MBytes 20.0 Mbits/sec 1725 +[ 4] 4.00-5.00 sec 2.39 MBytes 20.0 Mbits/sec 1725 +[ 4] 5.00-6.00 sec 2.39 MBytes 20.0 Mbits/sec 1726 +[ 4] 6.00-7.00 sec 2.38 MBytes 20.0 Mbits/sec 1721 +[ 4] 7.00-8.00 sec 2.39 MBytes 20.0 Mbits/sec 1728 +[ 4] 8.00-9.00 sec 2.38 MBytes 20.0 Mbits/sec 1720 +[ 4] 9.00-10.00 sec 2.38 MBytes 20.0 Mbits/sec 1724 +[ 4] 10.00-11.00 sec 2.39 MBytes 20.1 Mbits/sec 1729 +[ 4] 11.00-12.00 sec 2.38 MBytes 20.0 Mbits/sec 1720 +- - - - - - - - - - - - - - - - - - - - - - - - - +[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams +[ 4] 0.00-12.00 sec 28.4 MBytes 19.8 Mbits/sec 2.662 ms 16625/20395 (82%) +[ 4] Sent 20395 datagrams + +Server output: +Accepted connection from 192.168.250.1, port 35320 +[ 5] local 172.250.255.254 port 5001 connected to 192.168.250.1 port 43898 +[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams +[ 5] 0.00-1.00 sec 556 KBytes 4.56 Mbits/sec 2.382 ms 0/393 (0%) (omitted) +[ 5] 1.00-2.00 sec 656 KBytes 5.37 Mbits/sec 6.754 ms 14/477 (2.9%) (omitted) +[ 5] 0.00-1.00 sec 656 KBytes 5.37 Mbits/sec 2.369 ms 1132/1595 (71%) +[ 5] 1.00-2.00 sec 656 KBytes 5.37 Mbits/sec 4.023 ms 1232/1695 (73%) +[ 5] 2.00-3.00 sec 656 KBytes 5.37 Mbits/sec 5.281 ms 1257/1720 (73%) +[ 5] 3.00-4.00 sec 656 KBytes 5.37 Mbits/sec 7.395 ms 1253/1716 (73%) +[ 5] 4.00-5.00 sec 656 KBytes 5.37 Mbits/sec 2.378 ms 1137/1600 (71%) +[ 5] 5.00-6.00 sec 656 KBytes 5.37 Mbits/sec 4.079 ms 1398/1861 (75%) +[ 5] 6.00-7.00 sec 656 KBytes 5.37 Mbits/sec 4.805 ms 1260/1723 (73%) +[ 5] 7.00-8.00 sec 656 KBytes 5.37 Mbits/sec 7.416 ms 1250/1713 (73%) +[ 5] 8.00-9.00 sec 656 KBytes 5.37 Mbits/sec 2.357 ms 1133/1596 (71%) +[ 5] 9.00-10.00 sec 653 KBytes 5.34 Mbits/sec 5.348 ms 1401/1862 (75%) +[ 5] 10.00-11.00 sec 658 KBytes 5.40 Mbits/sec 4.816 ms 1259/1724 (73%) +[ 5] 11.00-12.00 sec 656 KBytes 5.37 Mbits/sec 7.384 ms 1251/1714 (73%) +[ 5] 12.00-13.00 sec 656 KBytes 5.37 Mbits/sec 2.379 ms 1134/1597 (71%) +[ 5] 13.00-13.38 sec 246 KBytes 5.33 Mbits/sec 2.662 ms 514/688 (75%) +- - - - - - - - - - - - - - - - - - - - - - - - - +[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams +[ 5] 0.00-13.38 sec 0.00 Bytes 0.00 bits/sec 2.662 ms 16611/22804 (73%) + + +iperf Done. +pkill -9 -ef iperf3 +iperf3 killed (pid 9709) +``` + +The measured bandwidth is around 5.3 Mbps which is around 30% performance of the default slice. +Since we created the slice to have 30% weight, this performance is correct. + +* Step 4. Update the UE's slice +Next, update the slice to have 50% weight: +```bash +$ kubectl exec -it deployment/onos-cli -n riab -- onos rsm update slice --e2NodeID e2:4/e00/3/c8 --scheduler RR --sliceID 1 --weight 50 --sliceType DL +``` + +After that, check `onos-topo` and `onos-uenib`: +```bash +$ kubectl exec -it deployment/onos-cli -n riab -- onos topo get entity e2:4/e00/3/c8 -v + +ID: e2:4/e00/3/c8 +Kind ID: e2node +Labels: +Source Id's: +Target Id's: uuid:6065c5aa-4351-446d-82b4-7702b991c365 +Aspects: +- onos.topo.RSMSliceItemList={"rsmSliceList":[{"id":"1","sliceDesc":"Slice created by onos-RSM xAPP","sliceParameters":{"weight":50},"ueIdList":[{"duUeF1apId":{"value":"49781"},"cuUeF1apId":{},"ranUeNgapId":{},"enbUeS1apId":{},"amfUeNgapId":{},"drbId":{"fourGDrbID":{"value":5,"qci":{"value":9}}}}]}]} +- onos.topo.MastershipState={"term":"1","nodeId":"uuid:6065c5aa-4351-446d-82b4-7702b991c365"} +- onos.topo.E2Node={"serviceModels":{"1.3.6.1.4.1.53148.1.1.2.102":{"oid":"1.3.6.1.4.1.53148.1.1.2.102","name":"ORAN-E2SM-RSM","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.RSMRanFunction","ricSlicingNodeCapabilityList":[{"maxNumberOfSlicesDl":4,"maxNumberOfSlicesUl":4,"maxNumberOfUesPerSlice":4,"supportedConfig":[{},{"slicingConfigType":"E2_SM_RSM_COMMAND_SLICE_UPDATE"},{"slicingConfigType":"E2_SM_RSM_COMMAND_SLICE_DELETE"},{"slicingConfigType":"E2_SM_RSM_COMMAND_UE_ASSOCIATE"}]}]}]}}} + +$ kubectl exec -it deployment/onos-cli -n riab -- onos uenib get ues -v +ID: 455f5d5e-0f8e-4b8d-a857-c56e9bd455cb +Aspects: +- onos.uenib.RsmUeInfo={"globalUeId":"455f5d5e-0f8e-4b8d-a857-c56e9bd455cb","ueIdList":{"duUeF1apId":{"value":"49781"},"cuUeF1apId":{"value":"49781"},"ranUeNgapId":{},"enbUeS1apId":{"value":14951620},"amfUeNgapId":{}},"bearerIdList":[{"drbID":{"fourGDrbID":{"value":5,"qci":{"value":9}}}}],"cellGlobalId":"e_utra_cgi:{p_lmnidentity:{value:\"\\x02\\xf8\\x10\"} e_utracell_identity:{value:{value:\"\\x00\\xe0\\x00\\x00\" len:28}}}","cuE2NodeId":"e2:4/e00/2/64","duE2NodeId":"e2:4/e00/3/c8","sliceList":[{"duE2NodeId":"e2:4/e00/3/c8","cuE2NodeId":"e2:4/e00/2/64","id":"1","sliceParameters":{"weight":50},"drbId":{"fourGDrbID":{"value":5,"qci":{"value":9}}}}]} +``` + +`ueIdList` in `onos-topo` and `sliceList` in `onos-uenib` should have weight `50%`. + +Then, check the updated slice's performance: +```bash +$ make test-rsm-dataplane +Helm values.yaml file: /users/wkim/sdran-in-a-box//sdran-in-a-box-values-master-stable.yaml +HEAD is now at 9f79ab8 Fix the default SRIOV resource name for UPF user plane interfaces +HEAD is now at 0a2716d Releasing onos-rsm v0.1.9 (#992) +*** Test downlink traffic (UDP) *** +sudo apt install -y iperf3 +Reading package lists... Done +Building dependency tree +Reading state information... Done +iperf3 is already the newest version (3.1.3-1). +The following package was automatically installed and is no longer required: + ssl-cert +Use 'sudo apt autoremove' to remove it. +0 upgraded, 0 newly installed, 0 to remove and 173 not upgraded. +kubectl exec -it router -- apt install -y iperf3 +Reading package lists... Done +Building dependency tree +Reading state information... Done +iperf3 is already the newest version. +0 upgraded, 0 newly installed, 0 to remove and 80 not upgraded. +iperf3 -s -B $(ip a show oaitun_ue1 | grep inet | grep -v inet6 | awk '{print $2}' | awk -F '/' '{print $1}') -p 5001 > /dev/null & +kubectl exec -it router -- iperf3 -u -c $(ip a show oaitun_ue1 | grep inet | grep -v inet6 | awk '{print $2}' | awk -F '/' '{print $1}') -p 5001 -b 20M -l 1450 -O 2 -t 12 --get-server-output +Connecting to host 172.250.255.254, port 5001 +[ 4] local 192.168.250.1 port 48644 connected to 172.250.255.254 port 5001 +[ ID] Interval Transfer Bandwidth Total Datagrams +[ 4] 0.00-1.00 sec 2.17 MBytes 18.2 Mbits/sec 1571 (omitted) +[ 4] 1.00-2.00 sec 2.39 MBytes 20.0 Mbits/sec 1725 (omitted) +[ 4] 0.00-1.00 sec 2.16 MBytes 18.1 Mbits/sec 1562 +[ 4] 1.00-2.00 sec 2.38 MBytes 20.0 Mbits/sec 1721 +[ 4] 2.00-3.00 sec 2.38 MBytes 20.0 Mbits/sec 1723 +[ 4] 3.00-4.00 sec 2.39 MBytes 20.0 Mbits/sec 1727 +[ 4] 4.00-5.00 sec 2.38 MBytes 20.0 Mbits/sec 1722 +[ 4] 5.00-6.00 sec 2.41 MBytes 20.2 Mbits/sec 1740 +[ 4] 6.00-7.00 sec 2.39 MBytes 20.0 Mbits/sec 1725 +[ 4] 7.00-8.00 sec 2.37 MBytes 19.8 Mbits/sec 1711 +[ 4] 8.00-9.00 sec 2.39 MBytes 20.0 Mbits/sec 1727 +[ 4] 9.00-10.00 sec 2.38 MBytes 20.0 Mbits/sec 1720 +[ 4] 10.00-11.00 sec 2.40 MBytes 20.1 Mbits/sec 1736 +[ 4] 11.00-12.00 sec 2.37 MBytes 19.9 Mbits/sec 1717 +- - - - - - - - - - - - - - - - - - - - - - - - - +[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams +[ 4] 0.00-12.00 sec 28.4 MBytes 19.8 Mbits/sec 1.299 ms 12476/20503 (61%) +[ 4] Sent 20503 datagrams + +Server output: +Accepted connection from 192.168.250.1, port 53640 +[ 5] local 172.250.255.254 port 5001 connected to 192.168.250.1 port 48644 +[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams +[ 5] 0.00-1.00 sec 913 KBytes 7.48 Mbits/sec 1.459 ms 0/645 (0%) (omitted) +[ 5] 1.00-2.00 sec 1.07 MBytes 8.96 Mbits/sec 1.554 ms 390/1162 (34%) (omitted) +[ 5] 0.00-1.00 sec 1.07 MBytes 8.95 Mbits/sec 1.315 ms 840/1612 (52%) +[ 5] 1.00-2.00 sec 1.07 MBytes 8.95 Mbits/sec 1.406 ms 901/1673 (54%) +[ 5] 2.00-3.00 sec 1.07 MBytes 8.94 Mbits/sec 1.347 ms 963/1734 (56%) +[ 5] 3.00-4.00 sec 1.07 MBytes 8.94 Mbits/sec 1.771 ms 925/1696 (55%) +[ 5] 4.00-5.00 sec 1.07 MBytes 8.96 Mbits/sec 1.540 ms 963/1735 (56%) +[ 5] 5.00-6.00 sec 1.07 MBytes 8.96 Mbits/sec 1.536 ms 952/1724 (55%) +[ 5] 6.00-7.00 sec 1.07 MBytes 8.96 Mbits/sec 1.772 ms 951/1723 (55%) +[ 5] 7.00-8.00 sec 1.05 MBytes 8.83 Mbits/sec 1.607 ms 961/1722 (56%) +[ 5] 8.00-9.00 sec 1.08 MBytes 9.04 Mbits/sec 1.416 ms 972/1751 (56%) +[ 5] 9.00-10.00 sec 1.07 MBytes 8.96 Mbits/sec 1.548 ms 941/1713 (55%) +[ 5] 10.00-11.00 sec 1.07 MBytes 8.94 Mbits/sec 1.475 ms 958/1729 (55%) +[ 5] 11.00-12.00 sec 1.07 MBytes 8.96 Mbits/sec 1.396 ms 954/1726 (55%) +[ 5] 12.00-12.84 sec 919 KBytes 8.96 Mbits/sec 1.299 ms 805/1454 (55%) +- - - - - - - - - - - - - - - - - - - - - - - - - +[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams +[ 5] 0.00-12.84 sec 0.00 Bytes 0.00 bits/sec 1.299 ms 12086/21992 (55%) + +iperf Done. +pkill -9 -ef iperf3 +iperf3 killed (pid 9709) +``` + +The measured bandwidth is around 8.96 Mbps which is around 50% performance of the default slice. +Since we updated the slice to have 50% weight, this performance is correct. + +* Step 5. Switch the UE's slice +To switch the slice, we should create one more slice. +```bash +$ kubectl exec -it deployment/onos-cli -n riab -- onos rsm create slice --e2NodeID e2:4/e00/3/c8 --scheduler RR --sliceID 2 --weight 10 --sliceType DL +``` + +After that, check `onos-topo`: +```bash +$ kubectl exec -it deployment/onos-cli -n riab -- onos topo get entity e2:4/e00/3/c8 -v + +ID: e2:4/e00/3/c8 +Kind ID: e2node +Labels: +Source Id's: +Target Id's: uuid:6065c5aa-4351-446d-82b4-7702b991c365 +Aspects: +- onos.topo.MastershipState={"term":"1","nodeId":"uuid:6065c5aa-4351-446d-82b4-7702b991c365"} +- onos.topo.RSMSliceItemList={"rsmSliceList":[{"id":"1","sliceDesc":"Slice created by onos-RSM xAPP","sliceParameters":{"weight":50},"ueIdList":[]},{"id":"2","sliceDesc":"Slice created by onos-RSM xAPP","sliceParameters":{"weight":10},"ueIdList":[{"duUeF1apId":{"value":"49781"},"cuUeF1apId":{},"ranUeNgapId":{},"enbUeS1apId":{},"amfUeNgapId":{},"drbId":{"fourGDrbID":{"value":5,"qci":{"value":9}}}}]}]} +- onos.topo.E2Node={"serviceModels":{"1.3.6.1.4.1.53148.1.1.2.102":{"oid":"1.3.6.1.4.1.53148.1.1.2.102","name":"ORAN-E2SM-RSM","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.RSMRanFunction","ricSlicingNodeCapabilityList":[{"maxNumberOfSlicesDl":4,"maxNumberOfSlicesUl":4,"maxNumberOfUesPerSlice":4,"supportedConfig":[{},{"slicingConfigType":"E2_SM_RSM_COMMAND_SLICE_UPDATE"},{"slicingConfigType":"E2_SM_RSM_COMMAND_SLICE_DELETE"},{"slicingConfigType":"E2_SM_RSM_COMMAND_UE_ASSOCIATE"}]}]}]}}} +``` + +`RSMSliceItemList` should have two slices - one has 50% weight and the other one has 10% weight. + +Then, switch the slice from slice ID 1 to slice ID 2. (Before doing that, please double check the DU-UE-F1AP ID): +```bash +$ kubectl exec -it deployment/onos-cli -n riab -- onos rsm set association --dlSliceID 2 --e2NodeID e2:4/e00/3/c8 --drbID 5 --DuUeF1apID 49781 +``` + +After that, check `onos-uenib`: +```bash +$ kubectl exec -it deployment/onos-cli -n riab -- onos uenib get ues -v +ID: 455f5d5e-0f8e-4b8d-a857-c56e9bd455cb +Aspects: +- onos.uenib.RsmUeInfo={"globalUeId":"455f5d5e-0f8e-4b8d-a857-c56e9bd455cb","ueIdList":{"duUeF1apId":{"value":"49781"},"cuUeF1apId":{"value":"49781"},"ranUeNgapId":{},"enbUeS1apId":{"value":14951620},"amfUeNgapId":{}},"bearerIdList":[{"drbID":{"fourGDrbID":{"value":5,"qci":{"value":9}}}}],"cellGlobalId":"e_utra_cgi:{p_lmnidentity:{value:\"\\x02\\xf8\\x10\"} e_utracell_identity:{value:{value:\"\\x00\\xe0\\x00\\x00\" len:28}}}","cuE2NodeId":"e2:4/e00/2/64","duE2NodeId":"e2:4/e00/3/c8","sliceList":[{"duE2NodeId":"e2:4/e00/3/c8","cuE2NodeId":"e2:4/e00/2/64","id":"2","sliceParameters":{"weight":10},"drbId":{"fourGDrbID":{"value":5,"qci":{"value":9}}}}]} +``` + +The slice ID should be `2` and weight should be `10`. + +Then, check the updated slice's performance: +```bash +$ make test-rsm-dataplane +Helm values.yaml file: /users/wkim/sdran-in-a-box//sdran-in-a-box-values-master-stable.yaml +HEAD is now at 9f79ab8 Fix the default SRIOV resource name for UPF user plane interfaces +HEAD is now at 0a2716d Releasing onos-rsm v0.1.9 (#992) +*** Test downlink traffic (UDP) *** +sudo apt install -y iperf3 +Reading package lists... Done +Building dependency tree +Reading state information... Done +iperf3 is already the newest version (3.1.3-1). +The following package was automatically installed and is no longer required: + ssl-cert +Use 'sudo apt autoremove' to remove it. +0 upgraded, 0 newly installed, 0 to remove and 173 not upgraded. +kubectl exec -it router -- apt install -y iperf3 +Reading package lists... Done +Building dependency tree +Reading state information... Done +iperf3 is already the newest version. +0 upgraded, 0 newly installed, 0 to remove and 80 not upgraded. +iperf3 -s -B $(ip a show oaitun_ue1 | grep inet | grep -v inet6 | awk '{print $2}' | awk -F '/' '{print $1}') -p 5001 > /dev/null & +kubectl exec -it router -- iperf3 -u -c $(ip a show oaitun_ue1 | grep inet | grep -v inet6 | awk '{print $2}' | awk -F '/' '{print $1}') -p 5001 -b 20M -l 1450 -O 2 -t 12 --get-server-output +Connecting to host 172.250.255.254, port 5001 +[ 4] local 192.168.250.1 port 60165 connected to 172.250.255.254 port 5001 +[ ID] Interval Transfer Bandwidth Total Datagrams +[ 4] 0.00-1.00 sec 2.15 MBytes 18.0 Mbits/sec 1554 (omitted) +[ 4] 1.00-2.00 sec 2.38 MBytes 20.0 Mbits/sec 1724 (omitted) +[ 4] 0.00-1.00 sec 2.15 MBytes 18.0 Mbits/sec 1554 +[ 4] 1.00-2.00 sec 2.38 MBytes 20.0 Mbits/sec 1724 +[ 4] 2.00-3.00 sec 2.40 MBytes 20.1 Mbits/sec 1733 +[ 4] 3.00-4.00 sec 2.37 MBytes 19.9 Mbits/sec 1716 +[ 4] 4.00-5.00 sec 2.40 MBytes 20.1 Mbits/sec 1734 +[ 4] 5.00-6.00 sec 2.37 MBytes 19.9 Mbits/sec 1715 +[ 4] 6.00-7.00 sec 2.38 MBytes 20.0 Mbits/sec 1723 +[ 4] 7.00-8.00 sec 2.39 MBytes 20.0 Mbits/sec 1725 +[ 4] 8.00-9.00 sec 2.38 MBytes 20.0 Mbits/sec 1723 +[ 4] 9.00-10.00 sec 2.38 MBytes 20.0 Mbits/sec 1724 +[ 4] 10.00-11.00 sec 2.39 MBytes 20.0 Mbits/sec 1725 +[ 4] 11.00-12.00 sec 2.38 MBytes 20.0 Mbits/sec 1724 +- - - - - - - - - - - - - - - - - - - - - - - - - +[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams +[ 4] 0.00-12.00 sec 28.4 MBytes 19.8 Mbits/sec 8.400 ms 20849/20372 (1e+02%) +[ 4] Sent 20372 datagrams + +Server output: +Accepted connection from 192.168.250.1, port 55520 +[ 5] local 172.250.255.254 port 5001 connected to 192.168.250.1 port 60165 +[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams +[ 5] 0.00-1.00 sec 188 KBytes 1.54 Mbits/sec 6.480 ms 0/133 (0%) (omitted) +[ 5] 1.00-1.00 sec 218 KBytes 893 Kbits/sec 6.346 ms 0/309 (0%) +[ 5] 1.00-2.00 sec 218 KBytes 1.79 Mbits/sec 6.541 ms 0/154 (0%) +[ 5] 2.00-3.00 sec 219 KBytes 1.80 Mbits/sec 7.384 ms 139/294 (47%) +[ 5] 3.00-4.00 sec 218 KBytes 1.79 Mbits/sec 16.664 ms 1900/2054 (93%) +[ 5] 4.00-5.00 sec 218 KBytes 1.79 Mbits/sec 10.540 ms 1229/1383 (89%) +[ 5] 5.00-6.00 sec 219 KBytes 1.80 Mbits/sec 11.020 ms 1575/1730 (91%) +[ 5] 6.00-7.00 sec 218 KBytes 1.79 Mbits/sec 8.349 ms 1404/1558 (90%) +[ 5] 7.00-8.00 sec 218 KBytes 1.79 Mbits/sec 18.142 ms 1896/2050 (92%) +[ 5] 8.00-9.00 sec 219 KBytes 1.80 Mbits/sec 10.674 ms 1403/1558 (90%) +[ 5] 9.00-10.00 sec 218 KBytes 1.79 Mbits/sec 10.690 ms 1577/1731 (91%) +[ 5] 10.00-11.00 sec 218 KBytes 1.79 Mbits/sec 8.359 ms 1403/1557 (90%) +[ 5] 11.00-12.00 sec 219 KBytes 1.80 Mbits/sec 16.308 ms 1896/2051 (92%) +[ 5] 12.00-13.00 sec 218 KBytes 1.79 Mbits/sec 10.457 ms 1404/1558 (90%) +[ 5] 13.00-14.00 sec 218 KBytes 1.79 Mbits/sec 10.937 ms 1576/1730 (91%) +[ 5] 14.00-15.00 sec 219 KBytes 1.80 Mbits/sec 8.334 ms 1403/1558 (90%) +[ 5] 15.00-16.00 sec 218 KBytes 1.79 Mbits/sec 16.737 ms 1897/2051 (92%) +[ 5] 16.00-16.29 sec 62.3 KBytes 1.76 Mbits/sec 8.400 ms 147/191 (77%) +- - - - - - - - - - - - - - - - - - - - - - - - - +[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams +[ 5] 0.00-16.29 sec 0.00 Bytes 0.00 bits/sec 8.400 ms 20849/23362 (89%) + + +iperf Done. +pkill -9 -ef iperf3 +iperf3 killed (pid 3530) +``` + +The measured bandwidth is around 1.76 Mbps which is around 10% performance of the default slice. +Since we switched the slice to have 10% weight, this performance is correct. + +* Step 6. Delete the UE's slice +Then, delete the slice 2 that is associated with the UE in order to check if the UE's slice is switched from the slice 2 to the default slice. +```bash +$ kubectl exec -it deployment/onos-cli -n riab -- onos rsm delete slice --e2NodeID e2:4/e00/3/c8 --sliceID 2 --sliceType DL +``` + +After that, check `onos-topo` and `onos-uenib`: +```bash +$ kubectl exec -it deployment/onos-cli -n riab -- onos topo get entity e2:4/e00/3/c8 -v + +ID: e2:4/e00/3/c8 +Kind ID: e2node +Labels: +Source Id's: +Target Id's: uuid:6065c5aa-4351-446d-82b4-7702b991c365 +Aspects: +- onos.topo.E2Node={"serviceModels":{"1.3.6.1.4.1.53148.1.1.2.102":{"oid":"1.3.6.1.4.1.53148.1.1.2.102","name":"ORAN-E2SM-RSM","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.RSMRanFunction","ricSlicingNodeCapabilityList":[{"maxNumberOfSlicesDl":4,"maxNumberOfSlicesUl":4,"maxNumberOfUesPerSlice":4,"supportedConfig":[{},{"slicingConfigType":"E2_SM_RSM_COMMAND_SLICE_UPDATE"},{"slicingConfigType":"E2_SM_RSM_COMMAND_SLICE_DELETE"},{"slicingConfigType":"E2_SM_RSM_COMMAND_UE_ASSOCIATE"}]}]}]}}} +- onos.topo.RSMSliceItemList={"rsmSliceList":[{"id":"1","sliceDesc":"Slice created by onos-RSM xAPP","sliceParameters":{"weight":50},"ueIdList":[]}]} +- onos.topo.MastershipState={"term":"1","nodeId":"uuid:6065c5aa-4351-446d-82b4-7702b991c365"} + +$ kubectl exec -it deployment/onos-cli -n riab -- onos uenib get ues -v +ID: 455f5d5e-0f8e-4b8d-a857-c56e9bd455cb +Aspects: +- onos.uenib.RsmUeInfo={"globalUeId":"455f5d5e-0f8e-4b8d-a857-c56e9bd455cb","ueIdList":{"duUeF1apId":{"value":"49781"},"cuUeF1apId":{"value":"49781"},"ranUeNgapId":{},"enbUeS1apId":{"value":14951620},"amfUeNgapId":{}},"bearerIdList":[{"drbID":{"fourGDrbID":{"value":5,"qci":{"value":9}}}}],"cellGlobalId":"e_utra_cgi:{p_lmnidentity:{value:\"\\x02\\xf8\\x10\"} e_utracell_identity:{value:{value:\"\\x00\\xe0\\x00\\x00\" len:28}}}","cuE2NodeId":"e2:4/e00/2/64","duE2NodeId":"e2:4/e00/3/c8","sliceList":[]} +``` + +`RSMSliceItemList` in `onos-topo` should have one slice item and `sliceList` in `onos-uenib` should be empty. + +Then, check the UE's performance: +```bash +$ make test-rsm-dataplane +Helm values.yaml file: /users/wkim/sdran-in-a-box//sdran-in-a-box-values-master-stable.yaml +HEAD is now at 9f79ab8 Fix the default SRIOV resource name for UPF user plane interfaces +HEAD is now at 0a2716d Releasing onos-rsm v0.1.9 (#992) +*** Test downlink traffic (UDP) *** +sudo apt install -y iperf3 +Reading package lists... Done +Building dependency tree +Reading state information... Done +iperf3 is already the newest version (3.1.3-1). +The following package was automatically installed and is no longer required: + ssl-cert +Use 'sudo apt autoremove' to remove it. +0 upgraded, 0 newly installed, 0 to remove and 173 not upgraded. +kubectl exec -it router -- apt install -y iperf3 +Reading package lists... Done +Building dependency tree +Reading state information... Done +iperf3 is already the newest version. +0 upgraded, 0 newly installed, 0 to remove and 80 not upgraded. +iperf3 -s -B $(ip a show oaitun_ue1 | grep inet | grep -v inet6 | awk '{print $2}' | awk -F '/' '{print $1}') -p 5001 > /dev/null & +kubectl exec -it router -- iperf3 -u -c $(ip a show oaitun_ue1 | grep inet | grep -v inet6 | awk '{print $2}' | awk -F '/' '{print $1}') -p 5001 -b 20M -l 1450 -O 2 -t 12 --get-server-output +Connecting to host 172.250.255.254, port 5001 +[ 4] local 192.168.250.1 port 41372 connected to 172.250.255.254 port 5001 +[ ID] Interval Transfer Bandwidth Total Datagrams +[ 4] 0.00-1.00 sec 2.15 MBytes 18.0 Mbits/sec 1554 (omitted) +[ 4] 1.00-2.00 sec 2.39 MBytes 20.0 Mbits/sec 1725 (omitted) +[ 4] 0.00-1.00 sec 2.16 MBytes 18.1 Mbits/sec 1560 +[ 4] 1.00-2.00 sec 2.38 MBytes 20.0 Mbits/sec 1721 +[ 4] 2.00-3.00 sec 2.39 MBytes 20.0 Mbits/sec 1726 +[ 4] 3.00-4.00 sec 2.38 MBytes 20.0 Mbits/sec 1721 +[ 4] 4.00-5.00 sec 2.38 MBytes 20.0 Mbits/sec 1723 +[ 4] 5.00-6.00 sec 2.38 MBytes 20.0 Mbits/sec 1724 +[ 4] 6.00-7.00 sec 2.39 MBytes 20.0 Mbits/sec 1727 +[ 4] 7.00-8.00 sec 2.38 MBytes 20.0 Mbits/sec 1723 +[ 4] 8.00-9.00 sec 2.38 MBytes 20.0 Mbits/sec 1722 +[ 4] 9.00-10.00 sec 2.39 MBytes 20.0 Mbits/sec 1726 +[ 4] 10.00-11.00 sec 2.38 MBytes 20.0 Mbits/sec 1724 +[ 4] 11.00-12.00 sec 2.39 MBytes 20.0 Mbits/sec 1727 +- - - - - - - - - - - - - - - - - - - - - - - - - +[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams +[ 4] 0.00-12.00 sec 28.4 MBytes 19.8 Mbits/sec 0.669 ms 2135/20489 (10%) +[ 4] Sent 20489 datagrams + +Server output: +Accepted connection from 192.168.250.1, port 35326 +[ 5] local 172.250.255.254 port 5001 connected to 192.168.250.1 port 41372 +[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams +[ 5] 0.00-1.00 sec 1.75 MBytes 14.7 Mbits/sec 0.810 ms 0/1265 (0%) (omitted) +[ 5] 1.00-2.00 sec 2.10 MBytes 17.6 Mbits/sec 2.008 ms 0/1521 (0%) (omitted) +[ 5] 0.00-1.00 sec 2.10 MBytes 17.6 Mbits/sec 0.641 ms 0/1521 (0%) +[ 5] 1.00-2.00 sec 2.10 MBytes 17.6 Mbits/sec 0.657 ms 5/1526 (0.33%) +[ 5] 2.00-3.00 sec 2.10 MBytes 17.6 Mbits/sec 0.656 ms 222/1743 (13%) +[ 5] 3.00-4.00 sec 2.10 MBytes 17.7 Mbits/sec 2.946 ms 237/1759 (13%) +[ 5] 4.00-5.00 sec 2.10 MBytes 17.6 Mbits/sec 3.615 ms 196/1717 (11%) +[ 5] 5.00-6.00 sec 2.10 MBytes 17.6 Mbits/sec 6.710 ms 192/1713 (11%) +[ 5] 6.00-7.00 sec 2.10 MBytes 17.6 Mbits/sec 0.656 ms 185/1706 (11%) +[ 5] 7.00-8.00 sec 2.10 MBytes 17.7 Mbits/sec 3.232 ms 235/1757 (13%) +[ 5] 8.00-9.00 sec 2.10 MBytes 17.6 Mbits/sec 6.728 ms 192/1713 (11%) +[ 5] 9.00-10.00 sec 2.10 MBytes 17.6 Mbits/sec 0.650 ms 183/1704 (11%) +[ 5] 10.00-11.00 sec 2.10 MBytes 17.6 Mbits/sec 3.110 ms 234/1755 (13%) +[ 5] 11.00-12.00 sec 2.10 MBytes 17.7 Mbits/sec 3.484 ms 200/1722 (12%) +[ 5] 12.00-12.39 sec 838 KBytes 17.6 Mbits/sec 0.669 ms 54/646 (8.4%) +- - - - - - - - - - - - - - - - - - - - - - - - - +[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams +[ 5] 0.00-12.39 sec 0.00 Bytes 0.00 bits/sec 0.669 ms 2135/20982 (10%) + + +iperf Done. +pkill -9 -ef iperf3 +iperf3 killed (pid 19333) +``` + +The measured bandwidth is around 17.6 Mbps which is the same as the default slice performance measured at step 1. +Since the UE was switched from the slice 2 to the default slice due to the slice deletion, the performance is correct. + +*Note: if we want to create UL slice, we should change `--dlSliceID` to `--ulSliceID` and `--sliceType DL` to `--sliceType UL`. All other commands are the same.* + +## Other commands +### Reset and delete RiaB environment +If we want to reset our RiaB environment or delete RiaB compoents, we can use below commands: +* `make reset-test`: It deletes ONOS RIC services, CU-CP, and OAI nFAPI emulator but Kubernetes is still running +* `make clean`: It just deletes Kubernets environment; Eventually, all ONOS RIC services, CU-CP, and OAI nFAPI emulator are terminated; The Helm chart directory is not deleted +* `make clean-all`: It deletes all including Kubernetes environment, all componentes/PODs which RiaB deployed, and even the Helm chart directory + +### Deploy or reset a chart/service +If we want to only deploy or reset a chart/service, we can use below command: +* `make omec`: It deploys OMEC chart +* `make reset-omec`: It deletes OMEC chart +* `make atomix`: It deploys Atomix controllers +* `make reset-atomix`: It deletes Atomix controllers +* `make ric`: It deploys ONOS RIC services +* `make reset-ric`: It deletes ONOS RIC services +* `make oai`: It deploys CU-CP and OAI nFAPI emulator +* `make reset-oai`: It deletes CU-CP and OAI nFAPI emulator diff --git a/sdran-in-a-box/docs/Installation_RANSim_FBAH.md b/sdran-in-a-box/docs/Installation_RANSim_FBAH.md new file mode 100644 index 0000000..c56a701 --- /dev/null +++ b/sdran-in-a-box/docs/Installation_RANSim_FBAH.md @@ -0,0 +1,153 @@ + + +# Installation with RAN-Simulator and Facebook-AirHop xAPP +This document covers how to install ONOS RIC services with RAN-Simulator and Facebook-Airhop xAPP. +With this option, RiaB will deploy ONOS RIC services including ONOS-KPIMON (KPM 2.0 supported) together with RAN-Simulator and Facebook-AirHop xAPP. + +## Clone this repository +To begin with, clone this repository: +```bash +$ git clone https://github.com/onosproject/sdran-in-a-box +``` +**NOTE: If we want to use a specific release, we can change the branch with `git checkout [args]` command:** +```bash +$ cd /path/to/sdran-in-a-box +$ git checkout v1.1.0 # for release 1.1 +$ git checkout v1.1.1 # for release 1.1.1 +$ git checkout v1.2.0 # for release 1.2 +$ git checkout v1.3.0 # for release 1.3 +$ git checkout v1.4.0 # for release 1.4 +$ git checkout master # for master +``` + +## Deploy RiaB with RAN-Simulator and Facebook-AirHop xAPP +To deploy RiaB with RAN-Simulator and Facebook-AirHop xAPP, we should go to `sdran-in-a-box` directory and command below: +```bash +$ cd /path/to/sdran-in-a-box +# type one of below commands +# for "master-stable" version +$ make riab OPT=fbah VER=stable # or just make riab OPT=fbah +# for "latest" version +$ make riab OPT=fbah VER=latest +# for a specific version +$ make riab OPT=fbah VER=v1.1.0 # for release SD-RAN 1.1 +$ make riab OPT=fbah VER=v1.1.1 # for release SD-RAN 1.1.1 +$ make riab OPT=fbah VER=v1.2.0 # for release SD-RAN 1.2 +$ make riab OPT=fbah VER=v1.3.0 # for release SD-RAN 1.3 +$ make riab OPT=fbah VER=v1.4.0 # for release SD-RAN 1.4 +# for a "dev" version +$ make riab OPT=fbah VER=dev # for dev version +``` + +Once we push one of above commands, the deployment procedure starts. + +If we don't see any error or failure messages, everything is deployed. +```bash +$ kubectl get po --all-namespaces +NAMESPACE NAME READY STATUS RESTARTS AGE +kube-system atomix-controller-99f978c7d-85cpn 1/1 Running 0 25m +kube-system atomix-raft-storage-controller-75979cfff8-4bsnz 1/1 Running 0 25m +kube-system calico-kube-controllers-584ddbb8fb-nxb7l 1/1 Running 0 4h42m +kube-system calico-node-s5czk 1/1 Running 1 4h42m +kube-system coredns-dff8fc7d-nznzf 1/1 Running 0 4h42m +kube-system dns-autoscaler-5d74bb9b8f-cfwvp 1/1 Running 0 4h42m +kube-system kube-apiserver-node1 1/1 Running 0 4h43m +kube-system kube-controller-manager-node1 1/1 Running 0 4h43m +kube-system kube-multus-ds-amd64-r42zf 1/1 Running 0 4h42m +kube-system kube-proxy-vp7k7 1/1 Running 1 4h43m +kube-system kube-scheduler-node1 1/1 Running 0 4h43m +kube-system kubernetes-dashboard-667c4c65f8-cr6q5 1/1 Running 0 4h42m +kube-system kubernetes-metrics-scraper-54fbb4d595-t8rgz 1/1 Running 0 4h42m +kube-system nodelocaldns-rc6w7 1/1 Running 0 4h42m +kube-system onos-operator-app-d56cb6f55-stfkb 1/1 Running 0 24m +kube-system onos-operator-config-7986b568b-f8dlq 1/1 Running 0 24m +kube-system onos-operator-topo-76fdf46db5-h2vvd 1/1 Running 0 24m +riab ah-eson-test-server-ccf5ccf5d-jcmj7 1/1 Running 0 2m52s +riab fb-ah-gui-64689f6986-tjvpc 1/1 Running 0 88s +riab fb-ah-xapp-58b745fcf9-6bgbv 2/2 Running 0 70s +riab fb-kpimon-xapp-5c78fd7486-ms6wq 2/2 Running 2 2m52s +riab onos-a1t-84db77df99-4klzb 2/2 Running 0 2m52s +riab onos-cli-6b746874c8-9cn82 1/1 Running 0 2m52s +riab onos-config-7bd4b6f7f6-b24ws 4/4 Running 0 2m52s +riab onos-consensus-store-0 1/1 Running 0 2m51s +riab onos-e2t-58b4cd867-ljmpr 3/3 Running 0 2m52s +riab onos-kpimon-966bdf77f-97pmr 2/2 Running 0 2m51s +riab onos-topo-7cc9d754d7-kngj9 3/3 Running 0 2m51s +riab onos-uenib-779cb5dbd6-tb7nm 3/3 Running 0 2m51s +riab ran-simulator-85b945db79-ltjnd 1/1 Running 0 2m51s +``` + +NOTE: If we see any issue when deploying RiaB, please check [Troubleshooting](./troubleshooting.md) + +## End-to-End (E2E) tests for verification +In order to check whether everything is running, we should conduct some E2E tests and check their results. +Since RAN-Sim does only generate SD-RAN control messages, we can run E2E tests on the SD-RAN control plane. + +### The E2E test on SD-RAN control plane +* `make test-kpimon`: +```bash +$ make test-kpimon +... +*** Get KPIMON result through CLI *** +Node ID Cell Object ID Cell Global ID Time RRC.Conn.Avg RRC.Conn.Max RRC.ConnEstabAtt.Sum RRC.ConnEstabSucc.Sum RRC.ConnReEstabAtt.HOFail RRC.ConnReEstabAtt.Other RRC.ConnReEstabAtt.Sum RRC.ConnReEstabAtt.reconfigFail +e2:1/5153 13842601454c001 1454c001 03:11:28.0 2 2 0 0 0 0 0 0 +e2:1/5153 13842601454c002 1454c002 03:11:28.0 3 3 0 0 0 0 0 0 +e2:1/5153 13842601454c003 1454c003 03:11:28.0 2 2 0 0 0 0 0 0 +e2:1/5154 138426014550001 14550001 03:11:51.0 1 1 0 0 0 0 0 0 +e2:1/5154 138426014550002 14550002 03:11:51.0 2 2 0 0 0 0 0 0 +e2:1/5154 138426014550003 14550003 03:11:50.0 1 1 0 0 0 0 0 0 +``` + +* Use Facebook-AirHop GUI page: for SD-RAN release 1.1, release 1.1.1, release 1.2, release 1.3, master-stable, latest, and dev versions + +### GUI [for SD-RAN release 1.2 and beyond] + +To access GUI, we should open web browser like [Chrome](https://www.google.com/chrome/) or [Safari](https://www.apple.com/safari/). +Next, go to `http://:30095` +Then, we can see the xAPP webpage. + +![FBAH WEB GUI](./figures/fbah-with-map-v1.2.png) + +*Note: If we put the mouse cursor over the black circles, some tool tips should pop up.* + +*Note: If we want to change the cell's location, please see push-cell-loc.sh file in scripts directory.* + +### GUI [for SD-RAN release 1.1 and 1.1.1] + +To access GUI, we should open web browser like [Chrome](https://www.google.com/chrome/) or [Safari](https://www.apple.com/safari/). +Next, go to `http://:30095` +Then, we can see the xAPP webpage. + +![FBAH WEB GUI](./figures/fbah-no-map-v1.1.png) + +On this page, we can see the `Cells` table which shows ECGI, PCI, and each cell's neighbor cells. + +If we want to see the Google Map View, we should make a SSH tunnel from our local machine to the RiaB server with below command: +```bash +$ ssh @ -L "*:8080::30095" +``` +After that, go to `http://localhost:8080` on the web browser. + +![FBAH WEB GUI](./figures/fbah-with-map-v1.1.png) + +Since the Google Map API only allows us to use the url `localhost:8080` to show Google Map view, we should make the SSH tunnel. + +NOTE 1: Of course, all other port forwarding should work as long as we can access the GUI with `localhost:8080` URL. + +## Other commands +### Reset and delete RiaB environment +If we want to reset our RiaB environment or delete RiaB compoents, we can use below commands: +* `make reset-test`: It deletes ONOS RIC services and RAN-Simulator but Kubernetes is still running +* `make clean`: It just deletes Kubernets environment; Eventually, all ONOS RIC and RAN-Simulator are terminated; The Helm chart directory is not deleted +* `make clean-all`: It deletes all including Kubernetes environment, all componentes/PODs which RiaB deployed, and even the Helm chart directory + +### Deploy or reset a chart/service +If we want to only deploy or reset a chart/service, we can use below command: +* `make atomix`: It deploys Atomix controllers +* `make reset-atomix`: It deletes Atomix controllers +* `make ric`: It deploys ONOS RIC services +* `make reset-ric`: It deletes ONOS RIC services \ No newline at end of file diff --git a/sdran-in-a-box/docs/Installation_RANSim_MHO.md b/sdran-in-a-box/docs/Installation_RANSim_MHO.md new file mode 100644 index 0000000..e20cd1a --- /dev/null +++ b/sdran-in-a-box/docs/Installation_RANSim_MHO.md @@ -0,0 +1,215 @@ + + +# Installation with RAN-Simulator and ONOS MHO xAPP +This document covers how to install ONOS RIC services with RAN-Simulator. +With this option, RiaB will deploy ONOS RIC services including ONOS-KPIMON (KPM 2.0 supported), and ONOS-MHO xAPPs together with RAN-Simulator + +## Clone this repository +To begin with, clone this repository: +```bash +$ git clone https://github.com/onosproject/sdran-in-a-box +``` +**NOTE: If we want to use a specific release, we can change the branch with `git checkout [args]` command:** +```bash +$ cd /path/to/sdran-in-a-box +$ git checkout v1.3.0 # for release 1.3 +$ git checkout v1.4.0 # for release 1.4 +$ git checkout master # for master +``` + +## Deploy RiaB with RAN-Simulator +### Command options +To deploy RiaB with RAN-Simulator, we should go to `sdran-in-a-box` directory and command below: +```bash +$ cd /path/to/sdran-in-a-box +# type one of below commands +# for "master-stable" version +$ make riab OPT=mho VER=stable # or just make riab OPT=mho +# for "latest" version +$ make riab OPT=mho VER=latest +# for a specific version +$ make riab OPT=mho VER=v1.3.0 # for release SD-RAN 1.3 +$ make riab OPT=mho VER=v1.4.0 # for release SD-RAN 1.4 +# for a "dev" version +$ make riab OPT=mho VER=dev # for dev version +``` +**NOTE: There is no need to manually install any software (e.g., Kubernetes, Helm, etc.) because RiaB takes care of everything.** + +Once we push one of above commands, the deployment procedure starts. + +If we don't see any error or failure messages, everything is deployed. +```bash +$ kubectl get po --all-namespaces +NAMESPACE NAME READY STATUS RESTARTS AGE +kube-system atomix-controller-99f978c7d-t6p79 1/1 Running 0 3m13s +kube-system atomix-raft-storage-controller-75979cfff8-vdqc6 1/1 Running 0 2m52s +kube-system calico-kube-controllers-584ddbb8fb-nxb7l 1/1 Running 0 4h6m +kube-system calico-node-s5czk 1/1 Running 1 4h6m +kube-system coredns-dff8fc7d-nznzf 1/1 Running 0 4h6m +kube-system dns-autoscaler-5d74bb9b8f-cfwvp 1/1 Running 0 4h6m +kube-system kube-apiserver-node1 1/1 Running 0 4h7m +kube-system kube-controller-manager-node1 1/1 Running 0 4h7m +kube-system kube-multus-ds-amd64-r42zf 1/1 Running 0 4h6m +kube-system kube-proxy-vp7k7 1/1 Running 1 4h7m +kube-system kube-scheduler-node1 1/1 Running 0 4h7m +kube-system kubernetes-dashboard-667c4c65f8-cr6q5 1/1 Running 0 4h6m +kube-system kubernetes-metrics-scraper-54fbb4d595-t8rgz 1/1 Running 0 4h6m +kube-system nodelocaldns-rc6w7 1/1 Running 0 4h6m +kube-system onos-operator-app-d56cb6f55-f5zp6 1/1 Running 0 2m37s +kube-system onos-operator-config-7986b568b-lmt8n 1/1 Running 0 2m37s +kube-system onos-operator-topo-76fdf46db5-2k67g 1/1 Running 0 2m39s +riab onos-a1t-84db77df99-gjqcx 2/2 Running 0 2m5s +riab onos-cli-6b746874c8-6qn27 1/1 Running 0 2m5s +riab onos-config-7bd4b6f7f6-brd68 4/4 Running 0 2m5s +riab onos-consensus-store-0 1/1 Running 0 2m4s +riab onos-e2t-58b4cd867-hskmq 3/3 Running 0 2m5s +riab onos-kpimon-966bdf77f-q4q5l 2/2 Running 0 2m5s +riab onos-mho-7859ffdd68-m85vf 2/2 Running 0 2m5s +riab onos-topo-7cc9d754d7-t7mqs 3/3 Running 0 2m5s +riab onos-uenib-779cb5dbd6-bvg8f 3/3 Running 0 2m5s +riab ran-simulator-5449b4c8f9-jqhm7 1/1 Running 0 2m5s +``` + +NOTE: If we see any issue when deploying RiaB, please check [Troubleshooting](./troubleshooting.md) + +## End-to-End (E2E) tests for verification +In order to check whether everything is running, we should conduct some E2E tests and check their results. +Since RAN-Sim does only generate SD-RAN control messages, we can run E2E tests on the SD-RAN control plane. + +### The E2E test on SD-RAN control plane +First, we can check E2 connections and subscriptions with `make test-e2-subscription` commands: +```bash +$ make test-e2-subscription +... +*** Get E2 subscriptions through CLI *** +Subscription ID Revision Service Model ID E2 NodeID Encoding Phase State +76d79858affefc5ecef79683581f1561:e2:1/5153 116 oran-e2sm-mho:v2 e2:1/5153 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE +bab81642e0e6d82c57a54060feeabe6f:e2:1/5153 127 oran-e2sm-mho:v2 e2:1/5153 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE +1ef6855642744782186c9ba6626393a6:e2:1/5154 54 oran-e2sm-kpm:v2 e2:1/5154 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE +84ce5613b27ac3b1e357879244014095:e2:1/5153 59 oran-e2sm-kpm:v2 e2:1/5153 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE +14d96d88f13bba8ba7889bdf532c059d:e2:1/5153 71 oran-e2sm-mho:v2 e2:1/5153 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE +bab81642e0e6d82c57a54060feeabe6f:e2:1/5154 78 oran-e2sm-mho:v2 e2:1/5154 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE +76d79858affefc5ecef79683581f1561:e2:1/5154 102 oran-e2sm-mho:v2 e2:1/5154 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE +14d96d88f13bba8ba7889bdf532c059d:e2:1/5154 111 oran-e2sm-mho:v2 e2:1/5154 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE +``` + +Next, we can check KPIMON xAPP CLI and MHO xAPP CLI. +In order to check KPIMON xAPP CLI, we should type `make test-kpimon` +```bash +$ make test-kpimon +... +*** Get KPIMON result through CLI *** +Node ID Cell Object ID Cell Global ID Time RRC.Conn.Avg RRC.Conn.Max RRC.ConnEstabAtt.Sum RRC.ConnEstabSucc.Sum RRC.ConnReEstabAtt.HOFail RRC.ConnReEstabAtt.Other RRC.ConnReEstabAtt.Sum RRC.ConnReEstabAtt.reconfigFail +e2:1/5153 13842601454c001 1454c001 02:37:49.0 0 1 0 0 0 0 0 0 +e2:1/5154 138426014550001 14550001 02:37:49.0 1 1 0 0 0 0 0 0 +``` + +*Note: It shows the current number of active UEs and the maximum number of active UEs. All other values should be 0.* + +Also, we should type `make test-mho` to check MHO xAPP CLI. +```bash +$ make test-mho +... +*** Get MHO result through CLI - Cells *** +CGI Num UEs Handovers-in Handovers-out +13842601c054140 1 3 3 +138426010055140 0 3 3 +*** Get MHO result through CLI - UEs *** +UeID CellGlobalID RrcState +2a54d6 13842601c054140 CONNECTED +``` + +*Note: The `Handovers-in/out` values should be changed in time.* + +Also, there are two more test Makefile targets `make test-rnib` and `make test-uenib` to check R-NIB and UE-NIB, which have cell and UE related monitoring information. +```bash +$ make test-rnib +... +*** Get R-NIB result through CLI *** +ID: gnmi:onos-config-7bd4b6f7f6-brd68 +Kind ID: onos-config +Labels: +Source Id's: +Target Id's: +Aspects: +- onos.topo.Lease={"expiration":"2022-03-11T02:38:49.785658001Z"} + +ID: e2:1/5154 +Kind ID: e2node +Labels: +Source Id's: uuid:03c782b8-d993-62d3-5ada-8cde9bcc8d64 +Target Id's: uuid:8b340ee9-1aa0-492f-bd8c-2ffefeef8185 +Aspects: +- onos.topo.MastershipState={"term":"1","nodeId":"uuid:8b340ee9-1aa0-492f-bd8c-2ffefeef8185"} +- onos.topo.E2Node={"serviceModels":{"1.3.6.1.4.1.53148.1.2.2.100":{"oid":"1.3.6.1.4.1.53148.1.2.2.100","name":"ORAN-E2SM-RC-PRE","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.RCRanFunction","reportStyles":[{"name":"PCI and NRT update for eNB","type":1}]}],"ranFunctionIDs":[3]},"1.3.6.1.4.1.53148.1.2.2.101":{"oid":"1.3.6.1.4.1.53148.1.2.2.101","name":"ORAN-E2SM-MHO","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.MHORanFunction","reportStyles":[{"name":"PCI and NRT update for eNB","type":1}]}],"ranFunctionIDs":[5]},"1.3.6.1.4.1.53148.1.2.2.2":{"oid":"1.3.6.1.4.1.53148.1.2.2.2","name":"ORAN-E2SM-KPM","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.KPMRanFunction","reportStyles":[{"name":"Periodic Report","type":1,"measurements":[{"id":"value:1","name":"RRC.ConnEstabAtt.Sum"},{"id":"value:2","name":"RRC.ConnEstabSucc.Sum"},{"id":"value:3","name":"RRC.ConnReEstabAtt.Sum"},{"id":"value:4","name":"RRC.ConnReEstabAtt.reconfigFail"},{"id":"value:5","name":"RRC.ConnReEstabAtt.HOFail"},{"id":"value:6","name":"RRC.ConnReEstabAtt.Other"},{"id":"value:7","name":"RRC.Conn.Avg"},{"id":"value:8","name":"RRC.Conn.Max"}]}]}],"ranFunctionIDs":[4]}}} + +ID: e2:1/5153/1454c001 +Kind ID: e2cell +Labels: +Source Id's: +Target Id's: uuid:e8d1924d-8a87-3840-ada0-0cacbef26cc5 +Aspects: +- onos.topo.E2Cell={"cellObjectId":"13842601454c001","cellGlobalId":{"value":"1454c001"},"kpiReports":{"RRC.Conn.Avg":0,"RRC.Conn.Max":1,"RRC.ConnEstabAtt.Sum":0,"RRC.ConnEstabSucc.Sum":0,"RRC.ConnReEstabAtt.HOFail":0,"RRC.ConnReEstabAtt.Other":0,"RRC.ConnReEstabAtt.Sum":0,"RRC.ConnReEstabAtt.reconfigFail":0}} + +ID: e2:1/5154/14550001 +Kind ID: e2cell +Labels: +Source Id's: +Target Id's: uuid:03c782b8-d993-62d3-5ada-8cde9bcc8d64 +Aspects: +- onos.topo.E2Cell={"cellObjectId":"138426014550001","cellGlobalId":{"value":"14550001"},"kpiReports":{"RRC.Conn.Avg":1,"RRC.Conn.Max":1,"RRC.ConnEstabAtt.Sum":0,"RRC.ConnEstabSucc.Sum":0,"RRC.ConnReEstabAtt.HOFail":0,"RRC.ConnReEstabAtt.Other":0,"RRC.ConnReEstabAtt.Sum":0,"RRC.ConnReEstabAtt.reconfigFail":0}} + +ID: e2:1/5153 +Kind ID: e2node +Labels: +Source Id's: uuid:e8d1924d-8a87-3840-ada0-0cacbef26cc5 +Target Id's: uuid:7c05ca75-a88d-433b-bf2c-997292cd60e8 +Aspects: +- onos.topo.E2Node={"serviceModels":{"1.3.6.1.4.1.53148.1.2.2.100":{"oid":"1.3.6.1.4.1.53148.1.2.2.100","name":"ORAN-E2SM-RC-PRE","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.RCRanFunction","reportStyles":[{"name":"PCI and NRT update for eNB","type":1}]}],"ranFunctionIDs":[3]},"1.3.6.1.4.1.53148.1.2.2.101":{"oid":"1.3.6.1.4.1.53148.1.2.2.101","name":"ORAN-E2SM-MHO","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.MHORanFunction","reportStyles":[{"name":"PCI and NRT update for eNB","type":1}]}],"ranFunctionIDs":[5]},"1.3.6.1.4.1.53148.1.2.2.2":{"oid":"1.3.6.1.4.1.53148.1.2.2.2","name":"ORAN-E2SM-KPM","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.KPMRanFunction","reportStyles":[{"name":"Periodic Report","type":1,"measurements":[{"id":"value:1","name":"RRC.ConnEstabAtt.Sum"},{"id":"value:2","name":"RRC.ConnEstabSucc.Sum"},{"id":"value:3","name":"RRC.ConnReEstabAtt.Sum"},{"id":"value:4","name":"RRC.ConnReEstabAtt.reconfigFail"},{"id":"value:5","name":"RRC.ConnReEstabAtt.HOFail"},{"id":"value:6","name":"RRC.ConnReEstabAtt.Other"},{"id":"value:7","name":"RRC.Conn.Avg"},{"id":"value:8","name":"RRC.Conn.Max"}]}]}],"ranFunctionIDs":[4]}}} +- onos.topo.MastershipState={"term":"1","nodeId":"uuid:7c05ca75-a88d-433b-bf2c-997292cd60e8"} + +ID: e2:onos-e2t-58b4cd867-hskmq +Kind ID: e2t +Labels: +Source Id's: uuid:7c05ca75-a88d-433b-bf2c-997292cd60e8, uuid:8b340ee9-1aa0-492f-bd8c-2ffefeef8185 +Target Id's: +Aspects: +- onos.topo.E2TInfo={"interfaces":[{"type":"INTERFACE_E2AP200","ip":"192.168.84.87","port":36421},{"type":"INTERFACE_E2T","ip":"192.168.84.87","port":5150}]} +- onos.topo.Lease={"expiration":"2022-03-11T02:38:54.250647685Z"} + +ID: a1:onos-a1t-84db77df99-gjqcx +Kind ID: a1t +Labels: +Source Id's: +Target Id's: +Aspects: +- onos.topo.A1TInfo={"interfaces":[{"type":"INTERFACE_A1AP","ip":"192.168.84.79","port":9639}]} + +$ make test-uenib +*** Get UE-NIB result through CLI *** +ID: 2774230 +Aspects: +- RSRP-Neighbors=138426010055140:-117 +- 5QI=166 +- RSRP-Serving=-100 +- RRCState=RRCSTATUS_CONNECTED +- CGI=13842601c054140 +``` + +## Other commands +### Reset and delete RiaB environment +If we want to reset our RiaB environment or delete RiaB compoents, we can use below commands: +* `make reset-test`: It deletes ONOS RIC services and RAN-Simulator but Kubernetes is still running +* `make clean`: It just deletes Kubernets environment; Eventually, all ONOS RIC and RAN-Simulator are terminated; The Helm chart directory is not deleted +* `make clean-all`: It deletes all including Kubernetes environment, all componentes/PODs which RiaB deployed, and even the Helm chart directory + +### Deploy or reset a chart/service +If we want to only deploy or reset a chart/service, we can use below command: +* `make atomix`: It deploys Atomix controllers +* `make reset-atomix`: It deletes Atomix controllers +* `make ric`: It deploys ONOS RIC services +* `make reset-ric`: It deletes ONOS RIC services diff --git a/sdran-in-a-box/docs/Installation_RANSim_MLB.md b/sdran-in-a-box/docs/Installation_RANSim_MLB.md new file mode 100644 index 0000000..242eb31 --- /dev/null +++ b/sdran-in-a-box/docs/Installation_RANSim_MLB.md @@ -0,0 +1,235 @@ + + +# Installation with RAN-Simulator and ONOS MLB xAPP +This document covers how to install ONOS RIC services with RAN-Simulator. +With this option, RiaB will deploy ONOS RIC services including ONOS-KPIMON (KPM 2.0 supported), ONOS-PCI, and ONOS-MLB xAPPs together with RAN-Simulator + +## Clone this repository +To begin with, clone this repository: +```bash +$ git clone https://github.com/onosproject/sdran-in-a-box +``` +**NOTE: If we want to use a specific release, we can change the branch with `git checkout [args]` command:** +```bash +$ cd /path/to/sdran-in-a-box +$ git checkout v1.2.0 # for release 1.2 +$ git checkout v1.3.0 # for release 1.3 +$ git checkout v1.4.0 # for release 1.4 +$ git checkout master # for master +``` + +## Deploy RiaB with RAN-Simulator +### Command options +To deploy RiaB with RAN-Simulator, we should go to `sdran-in-a-box` directory and command below: +```bash +$ cd /path/to/sdran-in-a-box +# type one of below commands +# for "master-stable" version +$ make riab OPT=mlb VER=stable # or just make riab OPT=mlb +# for "latest" version +$ make riab OPT=mlb VER=latest +# for a specific version +$ make riab OPT=mlb VER=v1.2.0 # for release SD-RAN 1.2 +$ make riab OPT=mlb VER=v1.3.0 # for release SD-RAN 1.3 +$ make riab OPT=mlb VER=v1.4.0 # for release SD-RAN 1.4 +# for a "dev" version +$ make riab OPT=mlb VER=dev # for dev version +``` + +Once we push one of above commands, the deployment procedure starts. + +If we don't see any error or failure messages, everything is deployed. +```bash +$ kubectl get po --all-namespaces +NAMESPACE NAME READY STATUS RESTARTS AGE +kube-system atomix-controller-99f978c7d-fscn4 1/1 Running 0 148m +kube-system atomix-raft-storage-controller-75979cfff8-kjs9k 1/1 Running 0 148m +kube-system calico-kube-controllers-584ddbb8fb-nxb7l 1/1 Running 0 3h59m +kube-system calico-node-s5czk 1/1 Running 1 3h59m +kube-system coredns-dff8fc7d-nznzf 1/1 Running 0 3h58m +kube-system dns-autoscaler-5d74bb9b8f-cfwvp 1/1 Running 0 3h58m +kube-system kube-apiserver-node1 1/1 Running 0 4h +kube-system kube-controller-manager-node1 1/1 Running 0 4h +kube-system kube-multus-ds-amd64-r42zf 1/1 Running 0 3h59m +kube-system kube-proxy-vp7k7 1/1 Running 1 4h +kube-system kube-scheduler-node1 1/1 Running 0 4h +kube-system kubernetes-dashboard-667c4c65f8-cr6q5 1/1 Running 0 3h58m +kube-system kubernetes-metrics-scraper-54fbb4d595-t8rgz 1/1 Running 0 3h58m +kube-system nodelocaldns-rc6w7 1/1 Running 0 3h58m +kube-system onos-operator-app-d56cb6f55-mhjsj 1/1 Running 0 147m +kube-system onos-operator-config-7986b568b-rgb72 1/1 Running 0 147m +kube-system onos-operator-topo-76fdf46db5-5ttxx 1/1 Running 0 147m +riab onos-a1t-84db77df99-8sgrd 2/2 Running 0 99s +riab onos-cli-6b746874c8-wmj2s 1/1 Running 0 99s +riab onos-config-7bd4b6f7f6-4h7sd 4/4 Running 0 99s +riab onos-consensus-store-0 1/1 Running 0 99s +riab onos-e2t-58b4cd867-jkpvx 3/3 Running 0 99s +riab onos-kpimon-966bdf77f-vwnmt 2/2 Running 0 99s +riab onos-mlb-8478c544f6-gjm5v 2/2 Running 0 99s +riab onos-pci-896557979-8wzpt 2/2 Running 0 99s +riab onos-topo-7cc9d754d7-glmrp 3/3 Running 0 99s +riab onos-uenib-779cb5dbd6-gfllx 3/3 Running 0 99s +riab ran-simulator-6976db498c-mqf74 1/1 Running 0 99s +``` + +NOTE: If we see any issue when deploying RiaB, please check [Troubleshooting](./troubleshooting.md) + +## End-to-End (E2E) tests for verification +In order to check whether everything is running, we should conduct some E2E tests and check their results. +Since RAN-Sim does only generate SD-RAN control messages, we can run E2E tests on the SD-RAN control plane. + +### The E2E test on SD-RAN control plane +First, we can check E2 connections and subscriptions with `make test-e2-subscription` commands: +```bash +$ make test-e2-subscription +... +*** Get E2 subscriptions through CLI *** +Subscription ID Revision Service Model ID E2 NodeID Encoding Phase State +30627c2029157eec36fdafaa0f2618a0:e2:1/5154 54 oran-e2sm-kpm:v2 e2:1/5154 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE +e2bc512b4c17accfe2b59877444e2bbd:e2:1/5155 59 oran-e2sm-kpm:v2 e2:1/5155 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE +6eb185a4fc905039fd46a9af89c65030:e2:1/5155 64 oran-e2sm-rc-pre:v2 e2:1/5155 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE +6eb185a4fc905039fd46a9af89c65030:e2:1/5153 76 oran-e2sm-rc-pre:v2 e2:1/5153 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE +84ce5613b27ac3b1e357879244014095:e2:1/5153 85 oran-e2sm-kpm:v2 e2:1/5153 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE +6eb185a4fc905039fd46a9af89c65030:e2:1/5154 90 oran-e2sm-rc-pre:v2 e2:1/5154 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE +``` + +Next, we can check KPIMON xAPP CLI, PCI xAPP CLI, and MLB xAPP CLI. +In order to check KPIMON xAPP CLI, we should type `make test-kpimon` +```bash +$ make test-kpimon +... +*** Get KPIMON result through CLI *** +Node ID Cell Object ID Cell Global ID Time RRC.Conn.Avg RRC.Conn.Max RRC.ConnEstabAtt.Sum RRC.ConnEstabSucc.Sum RRC.ConnReEstabAtt.HOFail RRC.ConnReEstabAtt.Other RRC.ConnReEstabAtt.Sum RRC.ConnReEstabAtt.reconfigFail +e2:1/5153 13842601454c001 1454c001 02:30:32.0 2 3 0 0 0 0 0 0 +e2:1/5154 13842601454c002 1454c002 02:30:33.0 7 7 0 0 0 0 0 0 +e2:1/5155 13842601454c003 1454c003 02:30:33.0 1 4 0 0 0 0 0 0 +``` + +*Note: It shows the current number of active UEs and the maximum number of active UEs. All other values should be 0.* + +Similarly, we should type `make test-pci` to check PCI xAPP CLI. +```bash +$ make test-pci +... +*** Get PCI result through CLI *** +ID Total Resolved Conflicts Most Recent Resolution +13842601454c003 1 148=>172 +``` + +*Note: The `Most Recent Resolution` results can be changed. It assigns random value.* + +Also, we should type `make test-mlb` to check MLB xAPP CLI. +```bash +$ make test-mlb +... +*** Get MLB result through CLI *** +sCell node ID sCell PLMN ID sCell cell ID sCell object ID nCell PLMN ID nCell cell ID Ocn [dB] +e2:1/5153 138426 1454c001 13842601454c001 138426 1454c002 0 +e2:1/5153 138426 1454c001 13842601454c001 138426 1454c003 0 +e2:1/5154 138426 1454c002 13842601454c002 138426 1454c001 0 +e2:1/5154 138426 1454c002 13842601454c002 138426 1454c003 0 +e2:1/5155 138426 1454c003 13842601454c003 138426 1454c001 0 +e2:1/5155 138426 1454c003 13842601454c003 138426 1454c002 0 +``` + +*Note: The `Ocn` value should be changed in time. It depends on the number of active UEs per cell.* + +Also, there are two more test Makefile targets `make test-rnib` to check R-NIB, which have cell related monitoring information. +```bash +$ make test-rnib +... +*** Get R-NIB result through CLI *** +ID: e2:1/5153/1454c001 +Kind ID: e2cell +Labels: +Source Id's: +Target Id's: uuid:e8d1924d-8a87-3840-ada0-0cacbef26cc5 +Aspects: +- onos.topo.E2Cell={"cellObjectId":"13842601454c001","cellGlobalId":{"value":"1454c001"},"cellType":"CELL_SIZE_MACRO","pci":148,"kpiReports":{"RRC.Conn.Avg":2,"RRC.Conn.Max":3,"RRC.ConnEstabAtt.Sum":0,"RRC.ConnEstabSucc.Sum":0,"RRC.ConnReEstabAtt.HOFail":0,"RRC.ConnReEstabAtt.Other":0,"RRC.ConnReEstabAtt.Sum":0,"RRC.ConnReEstabAtt.reconfigFail":0},"neighborCellIds":[{"cellGlobalId":{"value":"1454c003"},"plmnId":"138426"},{"cellGlobalId":{"value":"1454c002"},"plmnId":"138426"}]} + +ID: gnmi:onos-config-7bd4b6f7f6-4h7sd +Kind ID: onos-config +Labels: +Source Id's: +Target Id's: +Aspects: +- onos.topo.Lease={"expiration":"2022-03-11T02:31:47.462971305Z"} + +ID: e2:1/5153 +Kind ID: e2node +Labels: +Source Id's: uuid:e8d1924d-8a87-3840-ada0-0cacbef26cc5 +Target Id's: uuid:ea0e83f2-25cf-4890-90c7-53f737adb7de +Aspects: +- onos.topo.MastershipState={"term":"1","nodeId":"uuid:ea0e83f2-25cf-4890-90c7-53f737adb7de"} +- onos.topo.E2Node={"serviceModels":{"1.3.6.1.4.1.53148.1.2.2.100":{"oid":"1.3.6.1.4.1.53148.1.2.2.100","name":"ORAN-E2SM-RC-PRE","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.RCRanFunction","reportStyles":[{"name":"PCI and NRT update for eNB","type":1}]}],"ranFunctionIDs":[3]},"1.3.6.1.4.1.53148.1.2.2.101":{"oid":"1.3.6.1.4.1.53148.1.2.2.101","name":"ORAN-E2SM-MHO","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.MHORanFunction","reportStyles":[{"name":"PCI and NRT update for eNB","type":1}]}],"ranFunctionIDs":[5]},"1.3.6.1.4.1.53148.1.2.2.2":{"oid":"1.3.6.1.4.1.53148.1.2.2.2","name":"ORAN-E2SM-KPM","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.KPMRanFunction","reportStyles":[{"name":"Periodic Report","type":1,"measurements":[{"id":"value:1","name":"RRC.ConnEstabAtt.Sum"},{"id":"value:2","name":"RRC.ConnEstabSucc.Sum"},{"id":"value:3","name":"RRC.ConnReEstabAtt.Sum"},{"id":"value:4","name":"RRC.ConnReEstabAtt.reconfigFail"},{"id":"value:5","name":"RRC.ConnReEstabAtt.HOFail"},{"id":"value:6","name":"RRC.ConnReEstabAtt.Other"},{"id":"value:7","name":"RRC.Conn.Avg"},{"id":"value:8","name":"RRC.Conn.Max"}]}]}],"ranFunctionIDs":[4]}}} + +ID: e2:1/5155 +Kind ID: e2node +Labels: +Source Id's: uuid:da68d065-efe0-b19c-12be-f74d184e622d +Target Id's: uuid:34c44d72-d509-4cbe-b089-e64551d918f0 +Aspects: +- onos.topo.MastershipState={"term":"1","nodeId":"uuid:34c44d72-d509-4cbe-b089-e64551d918f0"} +- onos.topo.E2Node={"serviceModels":{"1.3.6.1.4.1.53148.1.2.2.100":{"oid":"1.3.6.1.4.1.53148.1.2.2.100","name":"ORAN-E2SM-RC-PRE","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.RCRanFunction","reportStyles":[{"name":"PCI and NRT update for eNB","type":1}]}],"ranFunctionIDs":[3]},"1.3.6.1.4.1.53148.1.2.2.101":{"oid":"1.3.6.1.4.1.53148.1.2.2.101","name":"ORAN-E2SM-MHO","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.MHORanFunction","reportStyles":[{"name":"PCI and NRT update for eNB","type":1}]}],"ranFunctionIDs":[5]},"1.3.6.1.4.1.53148.1.2.2.2":{"oid":"1.3.6.1.4.1.53148.1.2.2.2","name":"ORAN-E2SM-KPM","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.KPMRanFunction","reportStyles":[{"name":"Periodic Report","type":1,"measurements":[{"id":"value:1","name":"RRC.ConnEstabAtt.Sum"},{"id":"value:2","name":"RRC.ConnEstabSucc.Sum"},{"id":"value:3","name":"RRC.ConnReEstabAtt.Sum"},{"id":"value:4","name":"RRC.ConnReEstabAtt.reconfigFail"},{"id":"value:5","name":"RRC.ConnReEstabAtt.HOFail"},{"id":"value:6","name":"RRC.ConnReEstabAtt.Other"},{"id":"value:7","name":"RRC.Conn.Avg"},{"id":"value:8","name":"RRC.Conn.Max"}]}]}],"ranFunctionIDs":[4]}}} + +ID: e2:1/5154/1454c002 +Kind ID: e2cell +Labels: +Source Id's: +Target Id's: uuid:ac8a3f12-9016-38a1-58a2-4f0cd38ad9ff +Aspects: +- onos.topo.E2Cell={"cellObjectId":"13842601454c002","cellGlobalId":{"value":"1454c002"},"cellType":"CELL_SIZE_FEMTO","pci":218,"kpiReports":{"RRC.Conn.Avg":6,"RRC.Conn.Max":7,"RRC.ConnEstabAtt.Sum":0,"RRC.ConnEstabSucc.Sum":0,"RRC.ConnReEstabAtt.HOFail":0,"RRC.ConnReEstabAtt.Other":0,"RRC.ConnReEstabAtt.Sum":0,"RRC.ConnReEstabAtt.reconfigFail":0},"neighborCellIds":[{"cellGlobalId":{"value":"1454c001"},"plmnId":"138426"},{"cellGlobalId":{"value":"1454c003"},"plmnId":"138426"}]} + +ID: e2:1/5155/1454c003 +Kind ID: e2cell +Labels: +Source Id's: +Target Id's: uuid:da68d065-efe0-b19c-12be-f74d184e622d +Aspects: +- onos.topo.E2Cell={"cellObjectId":"13842601454c003","cellGlobalId":{"value":"1454c003"},"cellType":"CELL_SIZE_OUTDOOR_SMALL","pci":172,"kpiReports":{"RRC.Conn.Avg":2,"RRC.Conn.Max":4,"RRC.ConnEstabAtt.Sum":0,"RRC.ConnEstabSucc.Sum":0,"RRC.ConnReEstabAtt.HOFail":0,"RRC.ConnReEstabAtt.Other":0,"RRC.ConnReEstabAtt.Sum":0,"RRC.ConnReEstabAtt.reconfigFail":0},"neighborCellIds":[{"cellGlobalId":{"value":"1454c001"},"plmnId":"138426"},{"cellGlobalId":{"value":"1454c002"},"plmnId":"138426"}]} + +ID: e2:onos-e2t-58b4cd867-jkpvx +Kind ID: e2t +Labels: +Source Id's: uuid:ea0e83f2-25cf-4890-90c7-53f737adb7de, uuid:c5c9ab24-a97e-47c0-aa2e-67bae33a89eb, uuid:34c44d72-d509-4cbe-b089-e64551d918f0 +Target Id's: +Aspects: +- onos.topo.Lease={"expiration":"2022-03-11T02:31:50.942961091Z"} +- onos.topo.E2TInfo={"interfaces":[{"type":"INTERFACE_E2AP200","ip":"192.168.84.62","port":36421},{"type":"INTERFACE_E2T","ip":"192.168.84.62","port":5150}]} + +ID: e2:1/5154 +Kind ID: e2node +Labels: +Source Id's: uuid:ac8a3f12-9016-38a1-58a2-4f0cd38ad9ff +Target Id's: uuid:c5c9ab24-a97e-47c0-aa2e-67bae33a89eb +Aspects: +- onos.topo.MastershipState={"term":"1","nodeId":"uuid:c5c9ab24-a97e-47c0-aa2e-67bae33a89eb"} +- onos.topo.E2Node={"serviceModels":{"1.3.6.1.4.1.53148.1.2.2.100":{"oid":"1.3.6.1.4.1.53148.1.2.2.100","name":"ORAN-E2SM-RC-PRE","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.RCRanFunction","reportStyles":[{"name":"PCI and NRT update for eNB","type":1}]}],"ranFunctionIDs":[3]},"1.3.6.1.4.1.53148.1.2.2.101":{"oid":"1.3.6.1.4.1.53148.1.2.2.101","name":"ORAN-E2SM-MHO","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.MHORanFunction","reportStyles":[{"name":"PCI and NRT update for eNB","type":1}]}],"ranFunctionIDs":[5]},"1.3.6.1.4.1.53148.1.2.2.2":{"oid":"1.3.6.1.4.1.53148.1.2.2.2","name":"ORAN-E2SM-KPM","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.KPMRanFunction","reportStyles":[{"name":"Periodic Report","type":1,"measurements":[{"id":"value:1","name":"RRC.ConnEstabAtt.Sum"},{"id":"value:2","name":"RRC.ConnEstabSucc.Sum"},{"id":"value:3","name":"RRC.ConnReEstabAtt.Sum"},{"id":"value:4","name":"RRC.ConnReEstabAtt.reconfigFail"},{"id":"value:5","name":"RRC.ConnReEstabAtt.HOFail"},{"id":"value:6","name":"RRC.ConnReEstabAtt.Other"},{"id":"value:7","name":"RRC.Conn.Avg"},{"id":"value:8","name":"RRC.Conn.Max"}]}]}],"ranFunctionIDs":[4]}}} + +ID: a1:onos-a1t-84db77df99-8sgrd +Kind ID: a1t +Labels: +Source Id's: +Target Id's: +Aspects: +- onos.topo.A1TInfo={"interfaces":[{"type":"INTERFACE_A1AP","ip":"192.168.84.64","port":9639}]} +``` + +## Other commands +### Reset and delete RiaB environment +If we want to reset our RiaB environment or delete RiaB compoents, we can use below commands: +* `make reset-test`: It deletes ONOS RIC services and RAN-Simulator but Kubernetes is still running +* `make clean`: It just deletes Kubernets environment; Eventually, all ONOS RIC and RAN-Simulator are terminated; The Helm chart directory is not deleted +* `make clean-all`: It deletes all including Kubernetes environment, all componentes/PODs which RiaB deployed, and even the Helm chart directory + +### Deploy or reset a chart/service +If we want to only deploy or reset a chart/service, we can use below command: +* `make atomix`: It deploys Atomix controllers +* `make reset-atomix`: It deletes Atomix controllers +* `make ric`: It deploys ONOS RIC services +* `make reset-ric`: It deletes ONOS RIC services \ No newline at end of file diff --git a/sdran-in-a-box/docs/Installation_RANSim_PCI.md b/sdran-in-a-box/docs/Installation_RANSim_PCI.md new file mode 100644 index 0000000..89cc85c --- /dev/null +++ b/sdran-in-a-box/docs/Installation_RANSim_PCI.md @@ -0,0 +1,240 @@ + + +# Installation with RAN-Simulator and ONOS PCI xAPP +This document covers how to install ONOS RIC services with RAN-Simulator. +With this option, RiaB will deploy ONOS RIC services including ONOS-KPIMON (KPM 2.0 supported) and ONOS-PCI xAPPs together with RAN-Simulator + +## Clone this repository +To begin with, clone this repository: +```bash +$ git clone https://github.com/onosproject/sdran-in-a-box +``` +**NOTE: If we want to use a specific release, we can change the branch with `git checkout [args]` command:** +```bash +$ cd /path/to/sdran-in-a-box +$ git checkout v1.0.0 # for release 1.0 +$ git checkout v1.1.0 # for release 1.1 +$ git checkout v1.1.1 # for release 1.1.1 +$ git checkout v1.2.0 # for release 1.2 +$ git checkout v1.3.0 # for release 1.3 +$ git checkout v1.4.0 # for release 1.4 +$ git checkout master # for master +``` + +## Deploy RiaB with RAN-Simulator +### Command options +To deploy RiaB with RAN-Simulator, we should go to `sdran-in-a-box` directory and command below: +```bash +$ cd /path/to/sdran-in-a-box +# type one of below commands +# for "master-stable" version +$ make riab OPT=ransim VER=stable # or just make riab OPT=ransim +# for "latest" version +$ make riab OPT=ransim VER=latest +# for a specific version +$ make riab OPT=ransim VER=v1.0.0 # for release SD-RAN 1.0 +$ make riab OPT=ransim VER=v1.1.0 # for release SD-RAN 1.1 +$ make riab OPT=ransim VER=v1.1.1 # for release SD-RAN 1.1.1 +$ make riab OPT=ransim VER=v1.2.0 # for release SD-RAN 1.2 +$ make riab OPT=ransim VER=v1.3.0 # for release SD-RAN 1.3 +$ make riab OPT=ransim VER=v1.4.0 # for release SD-RAN 1.4 +# for a "dev" version +$ make riab OPT=ransim VER=dev # for dev version +``` + +Once we push one of above commands, the deployment procedure starts. + +If we don't see any error or failure messages, everything is deployed. +```bash +NAMESPACE NAME READY STATUS RESTARTS AGE +kube-system atomix-controller-99f978c7d-fscn4 1/1 Running 0 3m5s +kube-system atomix-raft-storage-controller-75979cfff8-kjs9k 1/1 Running 0 2m51s +kube-system calico-kube-controllers-584ddbb8fb-nxb7l 1/1 Running 0 93m +kube-system calico-node-s5czk 1/1 Running 1 94m +kube-system coredns-dff8fc7d-nznzf 1/1 Running 0 93m +kube-system dns-autoscaler-5d74bb9b8f-cfwvp 1/1 Running 0 93m +kube-system kube-apiserver-node1 1/1 Running 0 95m +kube-system kube-controller-manager-node1 1/1 Running 0 95m +kube-system kube-multus-ds-amd64-r42zf 1/1 Running 0 93m +kube-system kube-proxy-vp7k7 1/1 Running 1 94m +kube-system kube-scheduler-node1 1/1 Running 0 95m +kube-system kubernetes-dashboard-667c4c65f8-cr6q5 1/1 Running 0 93m +kube-system kubernetes-metrics-scraper-54fbb4d595-t8rgz 1/1 Running 0 93m +kube-system nodelocaldns-rc6w7 1/1 Running 0 93m +kube-system onos-operator-app-d56cb6f55-mhjsj 1/1 Running 0 2m31s +kube-system onos-operator-config-7986b568b-rgb72 1/1 Running 0 2m32s +kube-system onos-operator-topo-76fdf46db5-5ttxx 1/1 Running 0 2m31s +riab onos-a1t-84db77df99-qrnrl 2/2 Running 0 114s +riab onos-cli-6b746874c8-92577 1/1 Running 0 114s +riab onos-config-7bd4b6f7f6-pcstn 4/4 Running 0 114s +riab onos-consensus-store-0 1/1 Running 0 113s +riab onos-e2t-58b4cd867-5x5jc 3/3 Running 0 114s +riab onos-kpimon-966bdf77f-zk8cj 2/2 Running 0 114s +riab onos-pci-896557979-cgt9x 2/2 Running 0 114s +riab onos-topo-7cc9d754d7-sb9bh 3/3 Running 0 114s +riab onos-uenib-779cb5dbd6-lvmbb 3/3 Running 0 114s +riab ran-simulator-85b945db79-jhzrr 1/1 Running 0 114s +``` + +NOTE: If we see any issue when deploying RiaB, please check [Troubleshooting](./troubleshooting.md) + +## End-to-End (E2E) tests for verification +In order to check whether everything is running, we should conduct some E2E tests and check their results. +Since RAN-Sim does only generate SD-RAN control messages, we can run E2E tests on the SD-RAN control plane. + +### The E2E test on SD-RAN control plane +First, we can check E2 connections and subscriptions with `make test-e2-subscription` commands: +```bash +$ make test-e2-subscription +... +*** Get E2 subscriptions through CLI *** +Subscription ID Revision Service Model ID E2 NodeID Encoding Phase State +fc5e2d6967fd1923e6853e796571c946:e2:1/5153 64 oran-e2sm-kpm:v2 e2:1/5153 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE +6eb185a4fc905039fd46a9af89c65030:e2:1/5154 72 oran-e2sm-rc-pre:v2 e2:1/5154 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE +c0007daeef88f0702cce3e1b47f62420:e2:1/5154 84 oran-e2sm-kpm:v2 e2:1/5154 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE +6eb185a4fc905039fd46a9af89c65030:e2:1/5153 88 oran-e2sm-rc-pre:v2 e2:1/5153 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE +``` + +Next, we can check KPIMON xAPP CLI and PCI xAPP CLI. +In order to check KPIMON xAPP CLI, we should type `make test-kpimon` +```bash +$ make test-kpimon +... +*** Get KPIMON result through CLI *** +Node ID Cell Object ID Cell Global ID Time RRC.Conn.Avg RRC.Conn.Max RRC.ConnEstabAtt.Sum RRC.ConnEstabSucc.Sum RRC.ConnReEstabAtt.HOFail RRC.ConnReEstabAtt.Other RRC.ConnReEstabAtt.Sum RRC.ConnReEstabAtt.reconfigFail +e2:1/5153 13842601454c001 1454c001 00:05:12.0 3 3 0 0 0 0 0 0 +e2:1/5153 13842601454c002 1454c002 00:05:12.0 3 5 0 0 0 0 0 0 +e2:1/5153 13842601454c003 1454c003 00:05:12.0 1 1 0 0 0 0 0 0 +e2:1/5154 138426014550001 14550001 00:05:12.0 1 1 0 0 0 0 0 0 +e2:1/5154 138426014550002 14550002 00:05:12.0 1 1 0 0 0 0 0 0 +e2:1/5154 138426014550003 14550003 00:05:12.0 2 4 0 0 0 0 0 0 +``` + +*Note: It shows the current number of active UEs and the maximum number of active UEs. All other values should be 0.* + +Similarly, we should type `make test-pci` to check PCI xAPP CLI. +```bash +$ make test-pci +... +*** Get PCI result through CLI *** +ID Total Resolved Conflicts Most Recent Resolution +138426014550002 1 480=>412 +138426014550003 1 148=>91 +``` + +*Note: The `Most Recent Resolution` results can be changed. It assigns random value.* + +Also, there are two more test Makefile targets `make test-rnib` to check R-NIB, which have cell related monitoring information. +```bash +$ make test-rnib +... +*** Get R-NIB result through CLI *** +ID: e2:1/5154/14550001 +Kind ID: e2cell +Labels: +Source Id's: +Target Id's: uuid:03c782b8-d993-62d3-5ada-8cde9bcc8d64 +Aspects: +- onos.topo.E2Cell={"cellObjectId":"138426014550001","cellGlobalId":{"value":"14550001"},"cellType":"CELL_SIZE_OUTDOOR_SMALL","pci":115,"kpiReports":{"RRC.Conn.Avg":1,"RRC.Conn.Max":2,"RRC.ConnEstabAtt.Sum":0,"RRC.ConnEstabSucc.Sum":0,"RRC.ConnReEstabAtt.HOFail":0,"RRC.ConnReEstabAtt.Other":0,"RRC.ConnReEstabAtt.Sum":0,"RRC.ConnReEstabAtt.reconfigFail":0},"neighborCellIds":[{"cellGlobalId":{"value":"14550003"},"plmnId":"138426"},{"cellGlobalId":{"value":"1454c001"},"plmnId":"138426"},{"cellGlobalId":{"value":"14550002"},"plmnId":"138426"}]} + +ID: a1:onos-a1t-84db77df99-qrnrl +Kind ID: a1t +Labels: +Source Id's: +Target Id's: +Aspects: +- onos.topo.A1TInfo={"interfaces":[{"type":"INTERFACE_A1AP","ip":"192.168.84.57","port":9639}]} + +ID: e2:1/5154/14550003 +Kind ID: e2cell +Labels: +Source Id's: +Target Id's: uuid:826ab183-a742-79c2-aa83-a288ed68fa34 +Aspects: +- onos.topo.E2Cell={"cellObjectId":"138426014550003","cellGlobalId":{"value":"14550003"},"cellType":"CELL_SIZE_FEMTO","pci":91,"kpiReports":{"RRC.Conn.Avg":1,"RRC.Conn.Max":4,"RRC.ConnEstabAtt.Sum":0,"RRC.ConnEstabSucc.Sum":0,"RRC.ConnReEstabAtt.HOFail":0,"RRC.ConnReEstabAtt.Other":0,"RRC.ConnReEstabAtt.Sum":0,"RRC.ConnReEstabAtt.reconfigFail":0},"neighborCellIds":[{"cellGlobalId":{"value":"1454c003"},"plmnId":"138426"},{"cellGlobalId":{"value":"14550001"},"plmnId":"138426"},{"cellGlobalId":{"value":"14550002"},"plmnId":"138426"}]} + +ID: e2:1/5153/1454c003 +Kind ID: e2cell +Labels: +Source Id's: +Target Id's: uuid:efe476d6-a6e4-7483-4c55-97c2ca884e73 +Aspects: +- onos.topo.E2Cell={"cellObjectId":"13842601454c003","cellGlobalId":{"value":"1454c003"},"cellType":"CELL_SIZE_MACRO","pci":480,"kpiReports":{"RRC.Conn.Avg":1,"RRC.Conn.Max":1,"RRC.ConnEstabAtt.Sum":0,"RRC.ConnEstabSucc.Sum":0,"RRC.ConnReEstabAtt.HOFail":0,"RRC.ConnReEstabAtt.Other":0,"RRC.ConnReEstabAtt.Sum":0,"RRC.ConnReEstabAtt.reconfigFail":0},"neighborCellIds":[{"cellGlobalId":{"value":"1454c001"},"plmnId":"138426"},{"cellGlobalId":{"value":"1454c002"},"plmnId":"138426"},{"cellGlobalId":{"value":"14550003"},"plmnId":"138426"}]} + +ID: e2:1/5153 +Kind ID: e2node +Labels: +Source Id's: uuid:e8d1924d-8a87-3840-ada0-0cacbef26cc5, uuid:74c84ff1-74c2-388b-107e-8f62180b8aed, uuid:efe476d6-a6e4-7483-4c55-97c2ca884e73 +Target Id's: uuid:ff76b287-e903-4362-afd7-6cdfaf8d1411 +Aspects: +- onos.topo.MastershipState={"term":"1","nodeId":"uuid:ff76b287-e903-4362-afd7-6cdfaf8d1411"} +- onos.topo.E2Node={"serviceModels":{"1.3.6.1.4.1.53148.1.2.2.100":{"oid":"1.3.6.1.4.1.53148.1.2.2.100","name":"ORAN-E2SM-RC-PRE","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.RCRanFunction","reportStyles":[{"name":"PCI and NRT update for eNB","type":1}]}],"ranFunctionIDs":[3]},"1.3.6.1.4.1.53148.1.2.2.101":{"oid":"1.3.6.1.4.1.53148.1.2.2.101","name":"ORAN-E2SM-MHO","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.MHORanFunction","reportStyles":[{"name":"PCI and NRT update for eNB","type":1}]}],"ranFunctionIDs":[5]},"1.3.6.1.4.1.53148.1.2.2.2":{"oid":"1.3.6.1.4.1.53148.1.2.2.2","name":"ORAN-E2SM-KPM","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.KPMRanFunction","reportStyles":[{"name":"Periodic Report","type":1,"measurements":[{"id":"value:1","name":"RRC.ConnEstabAtt.Sum"},{"id":"value:2","name":"RRC.ConnEstabSucc.Sum"},{"id":"value:3","name":"RRC.ConnReEstabAtt.Sum"},{"id":"value:4","name":"RRC.ConnReEstabAtt.reconfigFail"},{"id":"value:5","name":"RRC.ConnReEstabAtt.HOFail"},{"id":"value:6","name":"RRC.ConnReEstabAtt.Other"},{"id":"value:7","name":"RRC.Conn.Avg"},{"id":"value:8","name":"RRC.Conn.Max"}]}]}],"ranFunctionIDs":[4]}}} + +ID: e2:1/5153/1454c002 +Kind ID: e2cell +Labels: +Source Id's: +Target Id's: uuid:74c84ff1-74c2-388b-107e-8f62180b8aed +Aspects: +- onos.topo.E2Cell={"cellObjectId":"13842601454c002","cellGlobalId":{"value":"1454c002"},"cellType":"CELL_SIZE_OUTDOOR_SMALL","pci":148,"kpiReports":{"RRC.Conn.Avg":3,"RRC.Conn.Max":5,"RRC.ConnEstabAtt.Sum":0,"RRC.ConnEstabSucc.Sum":0,"RRC.ConnReEstabAtt.HOFail":0,"RRC.ConnReEstabAtt.Other":0,"RRC.ConnReEstabAtt.Sum":0,"RRC.ConnReEstabAtt.reconfigFail":0},"neighborCellIds":[{"cellGlobalId":{"value":"1454c001"},"plmnId":"138426"},{"cellGlobalId":{"value":"1454c003"},"plmnId":"138426"},{"cellGlobalId":{"value":"14550002"},"plmnId":"138426"}]} + +ID: e2:onos-e2t-58b4cd867-5x5jc +Kind ID: e2t +Labels: +Source Id's: uuid:03c825a3-c71c-40d5-aa14-f051d4c8af76, uuid:ff76b287-e903-4362-afd7-6cdfaf8d1411 +Target Id's: +Aspects: +- onos.topo.E2TInfo={"interfaces":[{"type":"INTERFACE_E2AP200","ip":"192.168.84.60","port":36421},{"type":"INTERFACE_E2T","ip":"192.168.84.60","port":5150}]} +- onos.topo.Lease={"expiration":"2022-03-11T00:06:20.370713981Z"} + +ID: gnmi:onos-config-7bd4b6f7f6-pcstn +Kind ID: onos-config +Labels: +Source Id's: +Target Id's: +Aspects: +- onos.topo.Lease={"expiration":"2022-03-11T00:06:22.723391817Z"} + +ID: e2:1/5153/1454c001 +Kind ID: e2cell +Labels: +Source Id's: +Target Id's: uuid:e8d1924d-8a87-3840-ada0-0cacbef26cc5 +Aspects: +- onos.topo.E2Cell={"cellObjectId":"13842601454c001","cellGlobalId":{"value":"1454c001"},"cellType":"CELL_SIZE_OUTDOOR_SMALL","pci":218,"kpiReports":{"RRC.Conn.Avg":4,"RRC.Conn.Max":4,"RRC.ConnEstabAtt.Sum":0,"RRC.ConnEstabSucc.Sum":0,"RRC.ConnReEstabAtt.HOFail":0,"RRC.ConnReEstabAtt.Other":0,"RRC.ConnReEstabAtt.Sum":0,"RRC.ConnReEstabAtt.reconfigFail":0},"neighborCellIds":[{"cellGlobalId":{"value":"1454c002"},"plmnId":"138426"},{"cellGlobalId":{"value":"1454c003"},"plmnId":"138426"},{"cellGlobalId":{"value":"14550001"},"plmnId":"138426"}]} + +ID: e2:1/5154/14550002 +Kind ID: e2cell +Labels: +Source Id's: +Target Id's: uuid:273c7b45-e7f3-ff52-43bd-891e86ff219d +Aspects: +- onos.topo.E2Cell={"cellObjectId":"138426014550002","cellGlobalId":{"value":"14550002"},"cellType":"CELL_SIZE_MACRO","pci":412,"kpiReports":{"RRC.Conn.Avg":0,"RRC.Conn.Max":1,"RRC.ConnEstabAtt.Sum":0,"RRC.ConnEstabSucc.Sum":0,"RRC.ConnReEstabAtt.HOFail":0,"RRC.ConnReEstabAtt.Other":0,"RRC.ConnReEstabAtt.Sum":0,"RRC.ConnReEstabAtt.reconfigFail":0},"neighborCellIds":[{"cellGlobalId":{"value":"1454c002"},"plmnId":"138426"},{"cellGlobalId":{"value":"14550001"},"plmnId":"138426"},{"cellGlobalId":{"value":"14550003"},"plmnId":"138426"}]} + +ID: e2:1/5154 +Kind ID: e2node +Labels: +Source Id's: uuid:03c782b8-d993-62d3-5ada-8cde9bcc8d64, uuid:273c7b45-e7f3-ff52-43bd-891e86ff219d, uuid:826ab183-a742-79c2-aa83-a288ed68fa34 +Target Id's: uuid:03c825a3-c71c-40d5-aa14-f051d4c8af76 +Aspects: +- onos.topo.MastershipState={"term":"1","nodeId":"uuid:03c825a3-c71c-40d5-aa14-f051d4c8af76"} +- onos.topo.E2Node={"serviceModels":{"1.3.6.1.4.1.53148.1.2.2.100":{"oid":"1.3.6.1.4.1.53148.1.2.2.100","name":"ORAN-E2SM-RC-PRE","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.RCRanFunction","reportStyles":[{"name":"PCI and NRT update for eNB","type":1}]}],"ranFunctionIDs":[3]},"1.3.6.1.4.1.53148.1.2.2.101":{"oid":"1.3.6.1.4.1.53148.1.2.2.101","name":"ORAN-E2SM-MHO","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.MHORanFunction","reportStyles":[{"name":"PCI and NRT update for eNB","type":1}]}],"ranFunctionIDs":[5]},"1.3.6.1.4.1.53148.1.2.2.2":{"oid":"1.3.6.1.4.1.53148.1.2.2.2","name":"ORAN-E2SM-KPM","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.KPMRanFunction","reportStyles":[{"name":"Periodic Report","type":1,"measurements":[{"id":"value:1","name":"RRC.ConnEstabAtt.Sum"},{"id":"value:2","name":"RRC.ConnEstabSucc.Sum"},{"id":"value:3","name":"RRC.ConnReEstabAtt.Sum"},{"id":"value:4","name":"RRC.ConnReEstabAtt.reconfigFail"},{"id":"value:5","name":"RRC.ConnReEstabAtt.HOFail"},{"id":"value:6","name":"RRC.ConnReEstabAtt.Other"},{"id":"value:7","name":"RRC.Conn.Avg"},{"id":"value:8","name":"RRC.Conn.Max"}]}]}],"ranFunctionIDs":[4]}}} +``` + +## Other commands +### Reset and delete RiaB environment +If we want to reset our RiaB environment or delete RiaB compoents, we can use below commands: +* `make reset-test`: It deletes ONOS RIC services and RAN-Simulator but Kubernetes is still running +* `make clean`: It just deletes Kubernets environment; Eventually, all ONOS RIC and RAN-Simulator are terminated; The Helm chart directory is not deleted +* `make clean-all`: It deletes all including Kubernetes environment, all componentes/PODs which RiaB deployed, and even the Helm chart directory + +### Deploy or reset a chart/service +If we want to only deploy or reset a chart/service, we can use below command: +* `make atomix`: It deploys Atomix controllers +* `make reset-atomix`: It deletes Atomix controllers +* `make ric`: It deploys ONOS RIC services +* `make reset-ric`: It deletes ONOS RIC services \ No newline at end of file diff --git a/sdran-in-a-box/docs/Installation_RANSim_RIMDEO_TS.md b/sdran-in-a-box/docs/Installation_RANSim_RIMDEO_TS.md new file mode 100644 index 0000000..1b82f6f --- /dev/null +++ b/sdran-in-a-box/docs/Installation_RANSim_RIMDEO_TS.md @@ -0,0 +1,298 @@ + + +# Installation with RAN-Simulator and RIMEDO Labs Traffic Steering xAPP (rimedo-ts xApp) +This document covers how to install ONOS RIC services with RAN-Simulator. +With this option, RiaB will deploy ONOS RIC services including ONOS-KPIMON (KPM 2.0 supported), and RIMDEO-TS xAPPs together with RAN-Simulator + +## Clone this repository +To begin with, clone this repository: +```bash +$ git clone https://github.com/onosproject/sdran-in-a-box +``` +**NOTE: If we want to use a specific release, we can change the branch with `git checkout [args]` command:** +```bash +$ cd /path/to/sdran-in-a-box +$ git checkout v1.4.0 # for release 1.4 +$ git checkout master # for master +``` + +## Deploy RiaB with RAN-Simulator +### Command options +To deploy RiaB with RAN-Simulator, we should go to `sdran-in-a-box` directory and command below: +```bash +$ cd /path/to/sdran-in-a-box +# type one of below commands +# for "master-stable" version +$ make riab OPT=rimedots VER=stable # or just make riab OPT=rimedots +# for "latest" version +$ make riab OPT=rimedots VER=latest +# for a specific version +$ make riab OPT=rimedots VER=v1.4.0 # for release SD-RAN 1.4 +# for a "dev" version +$ make riab OPT=rimedots VER=dev # for dev version +``` + +Once we push one of above commands, the deployment procedure starts. + +If we don't see any error or failure messages, everything is deployed. +```bash +$ kubectl get po --all-namespaces +NAMESPACE NAME READY STATUS RESTARTS AGE +kube-system atomix-controller-99f978c7d-vhphs 1/1 Running 0 35m +kube-system atomix-raft-storage-controller-75979cfff8-p2mb4 1/1 Running 0 34m +kube-system calico-kube-controllers-584ddbb8fb-tn4wh 1/1 Running 0 3h7m +kube-system calico-node-g4zj8 1/1 Running 1 3h8m +kube-system coredns-dff8fc7d-b7gcl 1/1 Running 0 3h7m +kube-system dns-autoscaler-5d74bb9b8f-scxgf 1/1 Running 0 3h7m +kube-system kube-apiserver-node1 1/1 Running 0 3h8m +kube-system kube-controller-manager-node1 1/1 Running 0 3h8m +kube-system kube-multus-ds-amd64-g4mfr 1/1 Running 0 3h7m +kube-system kube-proxy-rflq8 1/1 Running 0 3h8m +kube-system kube-scheduler-node1 1/1 Running 0 3h8m +kube-system kubernetes-dashboard-667c4c65f8-gqpx4 1/1 Running 0 3h7m +kube-system kubernetes-metrics-scraper-54fbb4d595-7nlsp 1/1 Running 0 3h7m +kube-system nodelocaldns-8ktdr 1/1 Running 0 3h7m +kube-system onos-operator-app-588d479876-zdc4f 1/1 Running 0 34m +kube-system onos-operator-topo-5f8cd6ff7c-q4pc5 1/1 Running 0 34m +riab onos-a1t-84db77df99-shtxx 2/2 Running 0 69s +riab onos-cli-6b746874c8-zkcxg 1/1 Running 0 69s +riab onos-config-7bd4b6f7f6-zwxkb 4/4 Running 0 69s +riab onos-consensus-store-0 1/1 Running 0 69s +riab onos-e2t-58b4cd867-s25bf 3/3 Running 0 69s +riab onos-kpimon-966bdf77f-xjxn4 2/2 Running 0 69s +riab onos-topo-7cc9d754d7-xnngw 3/3 Running 0 69s +riab onos-uenib-779cb5dbd6-8jn6h 3/3 Running 0 69s +riab ran-simulator-5449b4c8f9-cqbwt 1/1 Running 0 69s +riab sd-ran-rimedo-ts-7fb74c65c-mbc9k 2/2 Running 0 69s +``` + +NOTE: If we see any issue when deploying RiaB, please check [Troubleshooting](./troubleshooting.md) + +## End-to-End (E2E) tests for verification +In order to check whether everything is running, we should conduct some E2E tests and check their results. +Since RAN-Sim does only generate SD-RAN control messages, we can run E2E tests on the SD-RAN control plane. + +### The E2E test on SD-RAN control plane +First, we can check E2 connections and subscriptions with `make test-e2-subscription` commands: +```bash +$ make test-e2-subscription +... +*** Get E2 subscriptions through CLI *** +Subscription ID Revision Service Model ID E2 NodeID Encoding Phase State +76d79858affefc5ecef79683581f1561:e2:1/5153 89 oran-e2sm-mho:v2 e2:1/5153 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE +14d96d88f13bba8ba7889bdf532c059d:e2:1/5153 96 oran-e2sm-mho:v2 e2:1/5153 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE +76d79858affefc5ecef79683581f1561:e2:1/5154 103 oran-e2sm-mho:v2 e2:1/5154 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE +bab81642e0e6d82c57a54060feeabe6f:e2:1/5153 112 oran-e2sm-mho:v2 e2:1/5153 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE +1ef6855642744782186c9ba6626393a6:e2:1/5154 55 oran-e2sm-kpm:v2 e2:1/5154 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE +84ce5613b27ac3b1e357879244014095:e2:1/5153 62 oran-e2sm-kpm:v2 e2:1/5153 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE +bab81642e0e6d82c57a54060feeabe6f:e2:1/5154 71 oran-e2sm-mho:v2 e2:1/5154 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE +14d96d88f13bba8ba7889bdf532c059d:e2:1/5154 79 oran-e2sm-mho:v2 e2:1/5154 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE +``` + +Next, we can check KPIMON xAPP CLI and RIMDEO-TS xAPP CLI. +In order to check KPIMON xAPP CLI, we should type `make test-kpimon` +```bash +$ make test-kpimon +... +*** Get KPIMON result through CLI *** +Node ID Cell Object ID Cell Global ID Time RRC.Conn.Avg RRC.Conn.Max RRC.ConnEstabAtt.Sum RRC.ConnEstabSucc.Sum RRC.ConnReEstabAtt.HOFail RRC.ConnReEstabAtt.Other RRC.ConnReEstabAtt.Sum RRC.ConnReEstabAtt.reconfigFail +e2:1/5153 13842601454c001 1454c001 12:54:46.0 1 1 0 0 0 0 0 0 +e2:1/5154 138426014550001 14550001 12:54:46.0 0 1 0 0 0 0 0 0 +``` + +*Note: It shows the current number of active UEs and the maximum number of active UEs. All other values should be 0.* + +Also, we should type `make a1t` to check A1 policies installed in RIMEDO-TS xApp. +```bash +$ make test-a1t +... +*** Get A1T subscriptions through CLI *** +xApp ID xApp A1 Interface A1 Service A1 Service Type ID +a1:sd-ran-rimedo-ts-7fb74c65c-mbc9k 192.168.84.249:5150 PolicyManagement ORAN_TrafficSteeringPreference_2.0.0 +a1:sd-ran-rimedo-ts-7fb74c65c-mbc9k 192.168.84.249:5150 EnrichmentInformation +*** Get A1T policy type through CLI *** +PolicyTypeID List(PolicyObjectID) +ORAN_TrafficSteeringPreference_2.0.0 [] +*** Get A1T policy objects through CLI *** +PolicyTypeID PolicyObjectID +*** Get A1T policy status through CLI *** +PolicyTypeID PolicyObjectID Status +``` + +*Note: there should be two A1 services {`PolicyManagement`, `EnrichmentInformation`}, one PolicyTypeID `ORAN_TrafficSteeringPreference_2.0.0` and empty object list and status result at this moment* + +Also, there are two more test Makefile targets `make test-rnib` to check R-NIB, which have cell related information. +```bash +$ make test-rnib +... +*** Get R-NIB result through CLI *** +ID: e2:onos-e2t-58b4cd867-s25bf +Kind ID: e2t +Labels: +Source Id's: uuid:f7e7fb07-42f5-43d9-a6d1-f4329deb59be, uuid:865b465c-df7a-4c35-a478-bfedf73009ac +Target Id's: +Aspects: +- onos.topo.E2TInfo={"interfaces":[{"type":"INTERFACE_E2AP200","ip":"192.168.84.248","port":36421},{"type":"INTERFACE_E2T","ip":"192.168.84.248","port":5150}]} +- onos.topo.Lease={"expiration":"2022-03-11T12:56:04.666612200Z"} + +ID: e2:1/5154 +Kind ID: e2node +Labels: +Source Id's: uuid:03c782b8-d993-62d3-5ada-8cde9bcc8d64 +Target Id's: uuid:865b465c-df7a-4c35-a478-bfedf73009ac +Aspects: +- onos.topo.MastershipState={"term":"1","nodeId":"uuid:865b465c-df7a-4c35-a478-bfedf73009ac"} +- onos.topo.E2Node={"serviceModels":{"1.3.6.1.4.1.53148.1.2.2.100":{"oid":"1.3.6.1.4.1.53148.1.2.2.100","name":"ORAN-E2SM-RC-PRE","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.RCRanFunction","reportStyles":[{"name":"PCI and NRT update for eNB","type":1}]}],"ranFunctionIDs":[3]},"1.3.6.1.4.1.53148.1.2.2.101":{"oid":"1.3.6.1.4.1.53148.1.2.2.101","name":"ORAN-E2SM-MHO","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.MHORanFunction","reportStyles":[{"name":"PCI and NRT update for eNB","type":1}]}],"ranFunctionIDs":[5]},"1.3.6.1.4.1.53148.1.2.2.2":{"oid":"1.3.6.1.4.1.53148.1.2.2.2","name":"ORAN-E2SM-KPM","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.KPMRanFunction","reportStyles":[{"name":"Periodic Report","type":1,"measurements":[{"id":"value:1","name":"RRC.ConnEstabAtt.Sum"},{"id":"value:2","name":"RRC.ConnEstabSucc.Sum"},{"id":"value:3","name":"RRC.ConnReEstabAtt.Sum"},{"id":"value:4","name":"RRC.ConnReEstabAtt.reconfigFail"},{"id":"value:5","name":"RRC.ConnReEstabAtt.HOFail"},{"id":"value:6","name":"RRC.ConnReEstabAtt.Other"},{"id":"value:7","name":"RRC.Conn.Avg"},{"id":"value:8","name":"RRC.Conn.Max"}]}]}],"ranFunctionIDs":[4]}}} + +ID: e2:1/5154/14550001 +Kind ID: e2cell +Labels: +Source Id's: +Target Id's: uuid:03c782b8-d993-62d3-5ada-8cde9bcc8d64 +Aspects: +- onos.topo.E2Cell={"cellObjectId":"138426014550001","cellGlobalId":{"value":"14550001"},"kpiReports":{"RRC.Conn.Avg":0,"RRC.Conn.Max":1,"RRC.ConnEstabAtt.Sum":0,"RRC.ConnEstabSucc.Sum":0,"RRC.ConnReEstabAtt.HOFail":0,"RRC.ConnReEstabAtt.Other":0,"RRC.ConnReEstabAtt.Sum":0,"RRC.ConnReEstabAtt.reconfigFail":0}} + +ID: gnmi:onos-config-7bd4b6f7f6-zwxkb +Kind ID: onos-config +Labels: +Source Id's: +Target Id's: +Aspects: +- onos.topo.Lease={"expiration":"2022-03-11T12:56:08.895301044Z"} + +ID: a1:onos-a1t-84db77df99-shtxx +Kind ID: a1t +Labels: +Source Id's: uuid:039b05b5-5b33-72bf-4d93-bbc7178e4afc +Target Id's: +Aspects: +- onos.topo.A1TInfo={"interfaces":[{"type":"INTERFACE_A1AP","ip":"192.168.84.247","port":9639}]} + +ID: e2:1/5153 +Kind ID: e2node +Labels: +Source Id's: uuid:e8d1924d-8a87-3840-ada0-0cacbef26cc5 +Target Id's: uuid:f7e7fb07-42f5-43d9-a6d1-f4329deb59be +Aspects: +- onos.topo.MastershipState={"term":"1","nodeId":"uuid:f7e7fb07-42f5-43d9-a6d1-f4329deb59be"} +- onos.topo.E2Node={"serviceModels":{"1.3.6.1.4.1.53148.1.2.2.100":{"oid":"1.3.6.1.4.1.53148.1.2.2.100","name":"ORAN-E2SM-RC-PRE","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.RCRanFunction","reportStyles":[{"name":"PCI and NRT update for eNB","type":1}]}],"ranFunctionIDs":[3]},"1.3.6.1.4.1.53148.1.2.2.101":{"oid":"1.3.6.1.4.1.53148.1.2.2.101","name":"ORAN-E2SM-MHO","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.MHORanFunction","reportStyles":[{"name":"PCI and NRT update for eNB","type":1}]}],"ranFunctionIDs":[5]},"1.3.6.1.4.1.53148.1.2.2.2":{"oid":"1.3.6.1.4.1.53148.1.2.2.2","name":"ORAN-E2SM-KPM","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.KPMRanFunction","reportStyles":[{"name":"Periodic Report","type":1,"measurements":[{"id":"value:1","name":"RRC.ConnEstabAtt.Sum"},{"id":"value:2","name":"RRC.ConnEstabSucc.Sum"},{"id":"value:3","name":"RRC.ConnReEstabAtt.Sum"},{"id":"value:4","name":"RRC.ConnReEstabAtt.reconfigFail"},{"id":"value:5","name":"RRC.ConnReEstabAtt.HOFail"},{"id":"value:6","name":"RRC.ConnReEstabAtt.Other"},{"id":"value:7","name":"RRC.Conn.Avg"},{"id":"value:8","name":"RRC.Conn.Max"}]}]}],"ranFunctionIDs":[4]}}} + +ID: e2:1/5153/1454c001 +Kind ID: e2cell +Labels: +Source Id's: +Target Id's: uuid:e8d1924d-8a87-3840-ada0-0cacbef26cc5 +Aspects: +- onos.topo.E2Cell={"cellObjectId":"13842601454c001","cellGlobalId":{"value":"1454c001"},"kpiReports":{"RRC.Conn.Avg":1,"RRC.Conn.Max":1,"RRC.ConnEstabAtt.Sum":0,"RRC.ConnEstabSucc.Sum":0,"RRC.ConnReEstabAtt.HOFail":0,"RRC.ConnReEstabAtt.Other":0,"RRC.ConnReEstabAtt.Sum":0,"RRC.ConnReEstabAtt.reconfigFail":0}} + +ID: a1:sd-ran-rimedo-ts-7fb74c65c-mbc9k +Kind ID: xapp +Labels: +Source Id's: +Target Id's: uuid:039b05b5-5b33-72bf-4d93-bbc7178e4afc +Aspects: +- onos.topo.MastershipState={"term":"1","nodeId":"uuid:039b05b5-5b33-72bf-4d93-bbc7178e4afc"} +- onos.topo.XAppInfo={"interfaces":[{"type":"INTERFACE_A1_XAPP","ip":"192.168.84.249","port":5150}],"a1PolicyTypes":[{"id":"ORAN_TrafficSteeringPreference_2.0.0","name":"ORAN_TrafficSteeringPreference","version":"2.0.0","description":"O-RAN traffic steering"}]} +``` + +Then, we can put the A1 policy JSON to the RIMEDO-TS xApp through onos-a1t. +In the `resources` directory, there is a `rimedots-sample-a1p.json` file which is a sample A1 policy file. +To use this file, we initially update the `IMSI` in this file. +We can check the IMSI with below command: + +```bash +$ kubectl exec -it deployment/onos-cli -n riab -- onos ransim get ues +IMSI Serving Cell CRNTI Admitted RRC +9295552 13842601454c001 90125 false RRCSTATUS_CONNECTED +``` + +In this example, IMSI is `9295552` but it is random value, which means that everytime the IMSI number is changed. +Once we get the IMSI, we should update IMSI to `rimedots-sample-a1p.json` file. +Note that the IMSI should have 16-digit value, so we should add 0 pads to the left side. +For example, if IMSI is `9295552`, the IMSI in json field should be `0000000009295552`: +```json +{ + "scope":{ + "ueId":"0000000009295552" + }, + "tspResources":[ + { + "cellIdList":[ + { + "plmnId":{ + "mcc":"138", + "mnc":"426" + }, + "cId":{ + "ncI":470106432 + } + } + ], + "preference":"FORBID" + } + ] + } +``` + +After that, we should push the JSON file to A1T with below command: +```bash +$ curl -X PUT -H "Content-Type: application/json" 128.105.144.101:31963/policytypes/ORAN_TrafficSteeringPreference_2.0.0/policies/1 -d @resources/rimedots-sample-a1p.json +{ + "scope": { + "ueId": "0000000009295552" + }, + "tspResources": [ + { + "cellIdList": [ + { + "cId": { + "ncI": 470106432 + }, + "plmnId": { + "mcc": "138", + "mnc": "426" + } + } + ], + "preference": "FORBID" + } + ] +} +``` + +After pushing this json file, `make test-a1t` should show the policy object and status: +```bash +$ make test-a1t +... +*** Get A1T subscriptions through CLI *** +xApp ID xApp A1 Interface A1 Service A1 Service Type ID +a1:sd-ran-rimedo-ts-7fb74c65c-mbc9k 192.168.84.249:5150 PolicyManagement ORAN_TrafficSteeringPreference_2.0.0 +a1:sd-ran-rimedo-ts-7fb74c65c-mbc9k 192.168.84.249:5150 EnrichmentInformation +*** Get A1T policy type through CLI *** +PolicyTypeID List(PolicyObjectID) +ORAN_TrafficSteeringPreference_2.0.0 [1] +*** Get A1T policy objects through CLI *** +PolicyTypeID PolicyObjectID +ORAN_TrafficSteeringPreference_2.0.0 1 +*** Get A1T policy status through CLI *** +PolicyTypeID PolicyObjectID Status +ORAN_TrafficSteeringPreference_2.0.0 1 {"enforceStatus":"ENFORCED"} +``` + +## Other commands +### Reset and delete RiaB environment +If we want to reset our RiaB environment or delete RiaB compoents, we can use below commands: +* `make reset-test`: It deletes ONOS RIC services and RAN-Simulator but Kubernetes is still running +* `make clean`: It just deletes Kubernets environment; Eventually, all ONOS RIC and RAN-Simulator are terminated; The Helm chart directory is not deleted +* `make clean-all`: It deletes all including Kubernetes environment, all componentes/PODs which RiaB deployed, and even the Helm chart directory + +### Deploy or reset a chart/service +If we want to only deploy or reset a chart/service, we can use below command: +* `make atomix`: It deploys Atomix controllers +* `make reset-atomix`: It deletes Atomix controllers +* `make ric`: It deploys ONOS RIC services +* `make reset-ric`: It deletes ONOS RIC services \ No newline at end of file diff --git a/sdran-in-a-box/docs/Installation_mon_logs.md b/sdran-in-a-box/docs/Installation_mon_logs.md new file mode 100644 index 0000000..c7bf8b9 --- /dev/null +++ b/sdran-in-a-box/docs/Installation_mon_logs.md @@ -0,0 +1,242 @@ + + +# RiaB Logging and Monitoring + +This tutorial explains how to run RiaB with logging and monitoring enabled. + +For logging, RiaB enables the collection of logs using fluent-bit, storage in elasticsearch DB, and presentation of metrics in grafana (kibana can also be used). Logs are collected from all pods in the RiaB k8s cluster. +For monitoring, RiaB enables a colletions of pods and node metrics using prometheus exporters and grafana. + +## Enabling logging/monitoring in the sdran-in-a-box-values yaml file + +To enable logging/monitoring in RiaB, in the sdran-in-a-box-values.yaml (**available for the latest version**) file remove the comments of the lines below: + +```yaml +# Monitoring/Logging + fluent-bit: + enabled: true + opendistro-es: + enabled: true + prometheus-stack: + enabled: true +``` + +Associated with the monitoring of sdran components is the [onos-exporter](https://github.com/onosproject/onos-exporter), the exporter for ONOS SD-RAN (µONOS Architecture) to scrape, format, and export onos KPIs to TSDB databases (e.g., Prometheus). Currently the implementation supports Prometheus. +In order to enable onos-exporter, as shown below, make sure the prometheus-stack is enabled too. + +```yaml + prometheus-stack: + enabled: true + onos-exporter: + enabled: true +``` + + +## Accessing grafana and looking for logs and metrics + +After modified the values file, then run the make command to instantiate RiaB. +After deployed, the services and pods related to logging and monitoring will be shown as: + +```bash +$ kubectl -n riab get svc +... +alertmanager-operated ClusterIP None 9093/TCP,9094/TCP,9094/UDP 90s +prometheus-operated ClusterIP None 9090/TCP 90s +sd-ran-fluent-bit ClusterIP 192.168.205.134 2020/TCP 90s +sd-ran-grafana ClusterIP 192.168.209.213 80/TCP 90s +sd-ran-kube-prometheus-sta-alertmanager ClusterIP 192.168.166.174 9093/TCP 90s +sd-ran-kube-prometheus-sta-operator ClusterIP 192.168.152.79 443/TCP 90s +sd-ran-kube-prometheus-sta-prometheus ClusterIP 192.168.199.115 9090/TCP 90s +sd-ran-kube-state-metrics ClusterIP 192.168.155.231 8080/TCP 90s +sd-ran-opendistro-es-client-service ClusterIP 192.168.183.47 9200/TCP,9300/TCP,9600/TCP,9650/TCP 90s +sd-ran-opendistro-es-data-svc ClusterIP None 9300/TCP,9200/TCP,9600/TCP,9650/TCP 90s +sd-ran-opendistro-es-discovery ClusterIP None 9300/TCP 90s +sd-ran-opendistro-es-kibana-svc ClusterIP 192.168.129.238 5601/TCP 90s +sd-ran-prometheus-node-exporter ClusterIP 192.168.137.224 9100/TCP 90s +``` + +```bash +$ kubectl -n riab get pods +... +alertmanager-sd-ran-kube-prometheus-sta-alertmanager-0 2/2 Running 0 43s +sd-ran-fluent-bit-x75mt 1/1 Running 0 43s +sd-ran-grafana-584fbb69cf-cvzcn 2/2 Running 0 43s +sd-ran-kube-prometheus-sta-operator-5f47f669dd-xkm7k 1/1 Running 0 43s +sd-ran-kube-state-metrics-6f675bf9cf-kzkdc 1/1 Running 0 43s +sd-ran-opendistro-es-client-78649698c8-tfh47 1/1 Running 0 42s +sd-ran-opendistro-es-data-0 1/1 Running 0 43s +sd-ran-opendistro-es-kibana-7cff67c748-vp4g8 1/1 Running 0 43s +sd-ran-opendistro-es-master-0 1/1 Running 0 43s +sd-ran-prometheus-node-exporter-grt5k 1/1 Running 0 43s +``` + +### Port forward grafana service + +Make a port-forward rule to the grafana service on port 3000. + +```bash +kubectl -n riab port-forward svc/sd-ran-grafana 3000:80 +``` + +### Access the grafana dashboards + +Open a browser and access `localhost:3000`. The credentials to access grafana are: `username: admin` and `password: prom-operator`. + +To look at the grafana dashboard for the sdran component logs, check in the left menu of grafana the option dashboards and selec the submenu Manage (or just access in the browser the address `http://localhost:3000/dashboards`). + +In the menu that shows, look for the dashboard named `Kubernetes / Logs / Pod`. It is possible to access this dashboard directly via the address `http://localhost:3000/d/e2QUYvPMk/kubernetes-logs-pod?orgId=1&refresh=10s`. + +In the top menu, the dropdown menus allow the selection of the Namespace `riab` and one of its Pods. It is also possible to type a string to be found in the logs of a particular pod using the field String. + + +Similarly, other dashboards can be found in the left menu of grafana, showing for instance each pod workload in the dashboad `Kubernetes / Compute Resources / Workload`. + +## Accessing kibana and looking for logs + +The helm chart repository used by sdran for the kibana and elasticsearch instantiation had its settings modified to disable security modules. +However to disable kibana security modules a different approach must be followed so it can be accessible via browser (see https://opendistro.github.io/for-elasticsearch-docs/docs/security/configuration/disable/). + +The simples way to do that, is creating a new docker image for kibana. Thus, create a file named `Dockerfile` with the following content. + +```dockerfile +FROM amazon/opendistro-for-elasticsearch-kibana:1.13.0 +RUN /usr/share/kibana/bin/kibana-plugin remove opendistroSecurityKibana +``` + +Then in the folder where the Dockerfile is located run the following command. + +```bash +docker build --tag=amazon/opendistro-for-elasticsearch-kibana-no-security:1.13.0 . +``` + + +Add the following lines to the end of the file sdran-in-a-box-values.yaml. + +```yaml +opendistro-es: + kibana: + image: amazon/opendistro-for-elasticsearch-kibana-no-security + imagePullPolicy: IfNotPresent +``` + +Then execute RiaB make command and after finished, run the port-forward to the kibana service (as stated below) and access in the browser the address `localhost:5601`. The kibana portal will be accessible without login to browse the logs of the RiaB components. + +```bash +kubectl -n riab port-forward svc/sd-ran-opendistro-es-kibana-svc 5601 +``` + +# About the onos-exporter metrics + +The onos-exporter scrapes the following KPIs from the onos components: + +- onos-e2t: + - onos_e2t_connections + + Description: The number of e2t connections. + + Value: float64. + + Dimensions/Labels: connection_type, id, plmnid, remote_ip, remote_port. + + Example: onos_e2t_connections{connection_type="G_NB",id="00000000003020f9:0",plmnid="1279014",remote_ip="192.168.84.46",remote_port="35823",sdran="e2t"} 1 +- onos-e2sub: + - onos_e2sub_subscriptions + + Description: The number of e2sub subscriptions. + + Value: float64. + + Dimensions/Labels: appid, e2nodeid, id, lifecycle_status, revision, service_model_name, service_model_version. + + Example: onos_e2sub_subscriptions{appid="onos-kpimon-v2",e2nodeid="00000000003020f9:0",id="2a0e7586-b8ac-11eb-b363-6f6e6f732d6b",lifecycle_status="ACTIVE",revision="17",sdran="e2sub",service_model_name="oran-e2sm-kpm",service_model_version="v2"} 1 +- onos-kpimon-v2: + - onos_xappkpimon_rrc_conn_avg + + Description: RRCConnAvg the mean number of users in RRC connected mode during each granularity period. + + Value: float64. + + Dimensions/Labels: cellid, egnbid, plmnid. + + Example: onos_xappkpimon_rrc_conn_avg{cellid="343332707639553",egnbid="5153",plmnid="1279014",sdran="xappkpimon"} 5 + - onos_xappkpimon_rrc_conn_max + + Description: RRCConnMax the max number of users in RRC connected mode during each granularity period. + + Value: float64. + + Dimensions/Labels: cellid, egnbid, plmnid. + + Example: onos_xappkpimon_rrc_conn_max{cellid="343332707639553",egnbid="5153",plmnid="1279014",sdran="xappkpimon"} 5 + - onos_xappkpimon_rrc_connestabatt_tot + + Description: RRCConnEstabAttTot total number of RRC connection establishment attempts. + + Value: float64. + + Dimensions/Labels: cellid, egnbid, plmnid. + + Example: onos_xappkpimon_rrc_connestabatt_tot{cellid="343332707639553",egnbid="5153",plmnid="1279014",sdran="xappkpimon"} 5 + - onos_xappkpimon_rrc_connestabsucc_tot + + Description: RRCConnEstabSuccTot total number of successful RRC Connection establishments. + + Value: float64. + + Dimensions/Labels: cellid, egnbid, plmnid. + + Example: onos_xappkpimon_rrc_connestabsucc_tot{cellid="343332707639553",egnbid="5153",plmnid="1279014",sdran="xappkpimon"} 5 + - onos_xappkpimon_rrc_connreestabatt_hofail + + Description: RRCConnReEstabAttHOFail total number of RRC connection re-establishment attempts due to Handover failure. + + Value: float64. + + Dimensions/Labels: cellid, egnbid, plmnid. + + Example: onos_xappkpimon_rrc_connreestabatt_hofail{cellid="343332707639553",egnbid="5153",plmnid="1279014",sdran="xappkpimon"} 5 + - onos_xappkpimon_rrc_connreestabatt_other + + Description: RRCConnReEstabAttOther total number of RRC connection re-establishment attempts due to Other reasons. + + Value: float64. + + Dimensions/Labels: cellid, egnbid, plmnid. + + Example: onos_xappkpimon_rrc_connreestabatt_other{cellid="343332707639553",egnbid="5153",plmnid="1279014",sdran="xappkpimon"} 5 + - onos_xappkpimon_rrc_connreestabatt_reconfigfail + + Description: RRCConnReEstabAttreconfigFail total number of RRC connection re-establishment attempts due to reconfiguration failure. + + Value: float64. + + Dimensions/Labels: cellid, egnbid, plmnid. + + Example: onos_xappkpimon_rrc_connreestabatt_reconfigfail{cellid="343332707639553",egnbid="5153",plmnid="1279014",sdran="xappkpimon"} 5 + - onos_xappkpimon_rrc_connreestabatt_tot + + Description: RRCConnReEstabAttTot total number of RRC connection re-establishment attempts. + + Value: float64. + + Dimensions/Labels: cellid, egnbid, plmnid. + + Example: onos_xappkpimon_rrc_connreestabatt_tot{cellid="343332707639553",egnbid="5153",plmnid="1279014",sdran="xappkpimon"} 5 +- onos-pci: + - onos_xapppci_conflicts + + Description: The number of pci conflicts. + + Value: float64. + + Dimensions/Labels: cellid. + + Example: onos_xapppci_conflicts{cellid="343332707639809",sdran="xapppci"} 9 + + +## Accessing the onos-exporter metrics + +To look at the onos-exporter metrics, it's possible to access the onos-exporter directly or visualize the metrics in grafana. + +To access the metrics directly have a port-forward kubectl command for onos-exporter service: +```bash +kubectl -n riab port-forward svc/onos-exporter 9861 +``` + +Then access the address `localhost:9861/metrics` in the browser. The exporter shows golang related metrics too. + +To access the metrics using grafana, proceed with the access to [grafana](#access-the-grafana-dashboards). After accessing grafana go to the `Explore` item on the left menu, on the openned window select the Prometheus data source, and type the name of the metrics to see its visualization and click on the `Run query` button. + + +# Enabling custom sdran logging parser + +In fluentbit there is the possibility to declare custom parsers for particular kubernetes pods, [check this to learn more](https://docs.fluentbit.io/manual/pipeline/parsers). It can be configured via annotations to a deployment pod. +The sdran components have a particular log format, as they use the logging package of onos-lib-go. +In the sdran logs presented by grafana, there is no strict parsing, i.e., the logs are presented in a raw format. + +A fluentbit logging parser for the sdran components is defined in the sdran chart, check its structure definition as shown below: +```text + customParsers: | + [PARSER] + Name sdran + Format regex + Regex ^(?\d{4}-\d{2}-\d{2}.\d{2}:\d{2}:\d{2}.\d{3}).\s+(?\S+)\s+(?\S+)\s+(?\S+):(?\d+)\s+(?.*)$ + Time_Key timestamp + Time_Format %Y-%m-%dT%H:%M:%S.%L +``` + +In order to enable this logging parser, there is the need to define annotations in the template deployments of the helm charts for those components. +This annotation is defined as the value below: + +```yaml +spec: + template: + metadata: + annotations: + fluentbit.io/parser: sdran +``` + +Given the application of the fluentbit logging parser to a Kubernetes pod deployment via the annotations above, the sdran log format in grafana for such component will be parsed, as the Regex patter of the custom sdran parser, with the fields: timestamp, logLevel, process, file, lineNo, log. The field log will be the last one presenting the message in the logs shown in the grafana SDRAN logging dashboard. + +## Cleaning +As logging and monitoring are enabled via the same sdran umbrella helm chart, when running the commands to reset the test and clean the environment, logging and monitoring k8s components will also be removed in RiaB. diff --git a/sdran-in-a-box/docs/RiaB_Prerequisites.md b/sdran-in-a-box/docs/RiaB_Prerequisites.md new file mode 100644 index 0000000..c2f2328 --- /dev/null +++ b/sdran-in-a-box/docs/RiaB_Prerequisites.md @@ -0,0 +1,21 @@ + + +# Prerequisites + +## Supported machines and OS +In order to run RiaB, we should prepare at least a single machine which has the below minimum requirements. + +* CloudLab Wisconsin and Utah clusters + * CPU: Intel CPU and Haswell microarchitecture or beyond; at least 4 cores + * OS: Ubuntu 18.04 (e.g., OnePC-Ubuntu18.04 profile in CloudLab) + * RAM: At least 16GB + * Storage: At least 50GB (recommendation: 100GB) +* Any baremetal server, VM, or public cloud VM (e.g., Amazon AWS, MS Azure, Google Cloud, etc.) + * CPU: Intel CPU and Haswell microarchitecture or beyond; at least 4 cores + * OS: Ubuntu 18.04 (under test with Ubuntu 20.04) + * RAM: At least 16GB + * Storage: At least 50GB (recommendation: 100GB) diff --git a/sdran-in-a-box/docs/Troubleshooting.md b/sdran-in-a-box/docs/Troubleshooting.md new file mode 100644 index 0000000..193c499 --- /dev/null +++ b/sdran-in-a-box/docs/Troubleshooting.md @@ -0,0 +1,173 @@ + + +# Troubleshooting +This section covers how to solve the reported issues. This section will be updated, continuously. + +## Helm charts are out-of-date +If we want to update Helm chart up-to-date, we can fetch all charts to `~/helm-charts/aether-helm-charts` and `~/helm-charts/sdran-helm-charts` directories. +For the development perspective, sometimes we need to fetch the latest Helm chart commits, although the RiaB uses a specific chart version. This command fetches all latest commits: +```bash +$ make fetch-all-charts +``` +It just fetches the all latest commits, i.e., it does not change/checkout the specific branch/commit. + +NOTE: It may request credentials for the OpenCORD gerrit and SD-RAN Github. + +## SPGW-C or UPF is not working +Please check the log with below commands: +```bash +$ kubectl logs spgwc-0 -n riab -c spgwc # for SPGW-C log +$ kubectl logs upf-0 -n riab -c bess # for UPF log +``` + +In the log, if we can see `unsupported CPU type` or `a specific flag (e.g., AES) is missing`, we should check the CPU microarchitecture. RiaB requires Intel Haswell or more recent CPU microarchitecture. +If we have the appropriate CPU type, we should build SPGW-C or UPF image on the machine where RiaB will run. + +To build SPGW-C, first clone the SPGW-C repository on the machine with `git clone https://github.com/omec-project/spgw`. Then, edit below line in Makefile: +```makefile +DOCKER_BUILD_ARGS ?= --build-arg RTE_MACHINE='native' +``` +Then, run `make` on the `spgw` directory. + +Likewise, for building UPF image, we should clone UPF repository with `git clone https://github.com/omec-project/upf-epc`. Then, edit below line in Makefile: +```makefile +CPU ?= native +``` +Then, run `make` on the `upf-epc` directory. + +After building those images, we should modify overriding value yaml file (i.e., `sdran-in-a-box-values.yaml`). Go to the file and write down below: +```yaml +images: + tags: + spgwc: + bess: + pfcpiface: + pullPolicy: IfNotPresent +``` +Then, run below commands: +```bash +$ cd /path/to/sdran-in-a-box +$ make reset-test +# after all OMEC pods are deleted, run make again +$ make +``` + +## ETCD is not working +Sometimes, we see the below outputs when building RiaB. +```text +TASK [etcd : Configure | Ensure etcd is running] *********************************************************************** +FAILED - RETRYING: Configure | Check if etcd cluster is healthy (4 retries left). +FAILED - RETRYING: Configure | Check if etcd cluster is healthy (3 retries left). +FAILED - RETRYING: Configure | Check if etcd cluster is healthy (2 retries left). +FAILED - RETRYING: Configure | Check if etcd cluster is healthy (1 retries left). +``` + +If we see this, we can command below: +```bash +$ sudo systemctl restart docker +$ cd /path/to/sdran-in-a-box +$ make +``` + +## Pod onos-consensus-db-1-0 initialization failed + +In Ubuntu 20.04 (kernel 5.4.0-65-generic), the k8s pod named `onos-consensus-db-1-0` might fail due to a bug of using go and alpine together (e.g., https://github.com/docker-library/golang/issues/320). + +It can be seen in `kubectl logs -n riab onos-consensus-db-1-0` as: +```bash +runtime: mlock of signal stack failed: 12 +runtime: increase the mlock limit (ulimit -l) or +runtime: update your kernel to 5.3.15+, 5.4.2+, or 5.5+ +fatal error: mlock failed +``` + +Such pod utilizes the docker image atomix/raft-storage-node:v0.5.3, tagged from the build of the image atomix/dragonboat-raft-storage-node:latest available at https://github.com/atomix/dragonboat-raft-storage-node. + +A quick fix (allowing an unlimited amount memory to be locked by the pod) to this issue is cloning the repository https://github.com/atomix/dragonboat-raft-storage-node, and changing the Makefile: + +```bash +# Before change +image: build + docker build . -f build/dragonboat-raft-storage-node/Dockerfile -t atomix/dragonboat-raft-storage-node:${RAFT_STORAGE_NODE_VERSION} + +# After change: unlimited maximum locked-in-memory address space +image: build + docker build --ulimit memlock=-1 . -f build/dragonboat-raft-storage-node/Dockerfile -t atomix/dragonboat-raft-storage-node:${RAFT_STORAGE_NODE_VERSION} +``` + +Then running in the source dir of this repository the command `make image`, and tagging the built image as: + +```bash +docker tag atomix/dragonboat-raft-storage-node:latest atomix/raft-storage-node:v0.5.3 +``` + +After that proceed with the execution of the Riab setup again. + +## Cannot see Google Map view on the Facebook-AirHop xAPP GUI +### for all SD-RAN releases +Please remove caches and then try again. +Or, it would be good to use `Incognito window` in Chrome. + +### only for SD-RAN release 1.1 and 1.1.1 +The Google Map API in the Facebook-AirHop xAPP GUI only allows us to use `localhost:8080` URL. +If we runs Facebook-AirHop xAPP on the remote machine, we have to make a SSH tunnel from the local machine to the remote machine: +```bash +$ ssh @ -L "*:8080::30095" +``` + +## Failed to install with `Create kubeadm token for joining nodes with 24h expiration` message +In order to resolve this problem, we need to reinstall RiaB again. +You should `make clean` or `make clean-all` and then install RiaB again. + +## Failed to clean RiaB +When we clean up RiaB, sometimes we can see below error messages. +```bash +TASK [reset : reset | gather mounted kubelet dirs] ******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************* +fatal: [node1]: FAILED! => {"changed": true, "cmd": "set -o pipefail && mount | grep /var/lib/kubelet/ | awk '{print $3}' | tac", "delta": "0:00:00.007286", "end": "2021-07-15 19:15:47.566996", "msg": "non-zero return code", "rc": 1, "start": "2021-07-15 19:15:47.559710", "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []} + +PLAY RECAP *********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** +localhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 +node1 : ok=14 changed=7 unreachable=0 failed=1 skipped=22 rescued=0 ignored=0 +``` + +The easiest way to solve this issue is to remove Kubernetes manually. +Here is the instructions to remote the Kubernetes. +```bash +sudo reboot + +docker rm -f $(docker ps -qa) +docker rmi -f $(docker images -q) +docker volume rm $(docker volume ls -q) + +sudo su + +for mount in $(mount | grep tmpfs | grep '/var/lib/kubelet' | awk '{ print $3 }') /var/lib/kubelet /var/lib/rancher; do umount $mount; done + +rm -rf /etc/ceph \ + /etc/cni \ + /etc/kubernetes \ + /opt/cni \ + /opt/rke \ + /run/secrets/kubernetes.io \ + /run/calico \ + /run/flannel \ + /var/lib/calico \ + /var/lib/etcd \ + /var/lib/cni \ + /var/lib/kubelet \ + /var/lib/rancher/rke/log \ + /var/log/containers \ + /var/log/kube-audit \ + /var/log/pods \ + /var/run/calico + +sudo reboot +``` + +## Other issues? +Please contact ONF SD-RAN team, if you see any issue. Any issue report from users is very welcome. +Mostly, the redeployment by using `make clean-all and make [option]` resolves issues. \ No newline at end of file diff --git a/sdran-in-a-box/docs/Vagrant_nFAPI.md b/sdran-in-a-box/docs/Vagrant_nFAPI.md new file mode 100644 index 0000000..c6daea9 --- /dev/null +++ b/sdran-in-a-box/docs/Vagrant_nFAPI.md @@ -0,0 +1,334 @@ + + +# Installation with CU-CP and OAI nFAPI emulator for KPIMON & RSM over Vagrant environment +This document covers how to install ONOS RIC services with CU-CP and OAI nFAPI emulator for KPIMON and RSM use-cases over the Vagrant environment. +With this option, RiaB will deploy ONOS RIC services including ONOS-KPIMON (KPM 2.0 supported) and ONOS-RSM, together with CU-CP, OAI DU (nFAPI), and OAI UE (nFAPI). +Note that the Vagrant environment consists of three VMs on Linux Ubuntu 18.04 OS. + +## Clone this repository +To begin with, clone this repository: +```bash +$ git clone https://github.com/onosproject/sdran-in-a-box +``` +**NOTE: If we want to use a specific release, we can change the branch with `git checkout [args]` command:** +```bash +$ cd /path/to/sdran-in-a-box +$ git checkout v1.0.0 # for release 1.0 +$ git checkout v1.1.0 # for release 1.1 +$ git checkout v1.1.1 # for release 1.1.1 +$ git checkout v1.2.0 # for release 1.2 +$ git checkout v1.3.0 # for release 1.3 +$ git checkout v1.4.0 # for release 1.4 +$ git checkout master # for master +``` + +## Deploy RiaB with OAI nFAPI emulator over the Vagrant environment + +### Set up the Vagrant environment +To set up the Vagrant environment, we should go to `sdran-in-a-box/vagrant` directory and command below: +```bash +Host $ cd /path/to/sdran-in-a-box/vagrant +Host $ ./setup.sh +``` + +Once we push the above command, the Vagrant setup procedure starts. +If we don't see any error or failure messages, all VMs are deployed. +The below command is for the verification: +```bash +$ sudo virsh list --all + Id Name State +---------------------------------------------------- + 1 ran_ran running + 2 ric_ric running + 3 omec_omec running +``` + +### Config and run RIC VM +In order to config and run RIC VM, we should access the RIC VM. +After that, in the RIC VM, we should clone this repository. +```bash +Host $ cd /path/to/sdran-in-a-box/vagrant +Host $ ./vcmd.sh ric ssh +RIC $ git clone https://github.com/onosproject/sdran-in-a-box +``` + +Next, we should update `sdran-in-a-box/MakefileVar.mk` file. +``` +... +S1MME_CU_INTERFACE := eth1 +... +ENB_SUBNET := 192.168.11.8/29 +ENB_GATEWAY := 192.168.11.9/29 +ACCESS_SUBNET := 192.168.11.16/29 +UPF_ACCESS_NET_IP := 192.168.11.19/29 +ACCESS_GATEWAY := 192.168.11.17/29 +CORE_SUBNET := 192.168.11.0/29 +UPF_CORE_NET_IP := 192.168.11.3/29 +CORE_GATEWAY := 192.168.11.1/29 +OAI_ENB_NET_IP := 192.168.11.10/29 +OAI_MACHINE_IP := 192.168.13.21/16 +OAI_ENB_NET_INTERFACE := eth1 +OMEC_ENB_NET_IP := 192.168.11.12/29 +OMEC_DEFAULT_INTERFACE := eth1 +OMEC_MACHINE_IP := 192.168.10.21/29 +RIC_MACHINE_IP := 192.168.10.22/24 +RIC_DEFAULT_IP := eth1 +``` + +Then, we should deploy RIC with one of below commands for the version we want: +```bash +RIC $ cd path/to/sdran-in-a-box +# type one of below commands +# for "master-stable" version +RIC $ make OPT=ric VER=stable +# for "latest" version +RIC $ make OPT=ric VER=latest +# for a specific version +RIC $ make OPT=ric VER=v1.0.0 +RIC $ make OPT=ric VER=v1.1.0 +RIC $ make OPT=ric VER=v1.1.1 +RIC $ make OPT=ric VER=v1.2.0 +RIC $ make OPT=ric VER=v1.3.0 +RIC $ make OPT=ric VER=v1.4.0 +# for a "dev" version +RIC $ make OPT=ric VER=dev +``` + +Once we push one of above commands, the deployment procedure starts. + +If we don't see any error or failure messages, everything is deployed. +```bash +$ kubectl get po --all-namespaces +NAMESPACE NAME READY STATUS RESTARTS AGE +kube-system atomix-controller-99f978c7d-4t2xz 1/1 Running 0 2d22h +kube-system atomix-raft-storage-controller-75979cfff8-hgln4 1/1 Running 0 2d22h +kube-system calico-kube-controllers-6b84489d67-ctxs4 1/1 Running 0 2d22h +kube-system calico-node-78hmc 1/1 Running 1 2d22h +kube-system coredns-dff8fc7d-bn7np 1/1 Running 0 2d22h +kube-system dns-autoscaler-5d74bb9b8f-w9x76 1/1 Running 0 2d22h +kube-system kube-apiserver-node1 1/1 Running 0 2d22h +kube-system kube-controller-manager-node1 1/1 Running 0 2d22h +kube-system kube-multus-ds-amd64-fdtvr 1/1 Running 0 2d22h +kube-system kube-proxy-cvhx7 1/1 Running 0 2d22h +kube-system kube-scheduler-node1 1/1 Running 0 2d22h +kube-system kubernetes-dashboard-667c4c65f8-cspjh 1/1 Running 0 2d22h +kube-system kubernetes-metrics-scraper-54fbb4d595-tvrvv 1/1 Running 0 2d22h +kube-system nodelocaldns-hvnzp 1/1 Running 0 2d22h +kube-system onos-operator-app-676674b79c-4fjqr 1/1 Running 0 2d22h +kube-system onos-operator-topo-7698956594-wr962 1/1 Running 0 2d22h +riab onos-a1t-84db77df99-rj5fb 2/2 Running 0 2d20h +riab onos-cli-6b746874c8-qqz7n 1/1 Running 0 2d20h +riab onos-config-7bd4b6f7f6-zt74q 4/4 Running 0 2d20h +riab onos-consensus-store-0 1/1 Running 0 2d20h +riab onos-e2t-58b4cd867-mw65z 3/3 Running 0 2d20h +riab onos-kpimon-966bdf77f-xlbs6 2/2 Running 0 2d20h +riab onos-rsm-86df4894bd-cszdr 2/2 Running 0 2d20h +riab onos-topo-7cc9d754d7-kdrxm 3/3 Running 0 2d20h +riab onos-uenib-779cb5dbd6-8kwhr 3/3 Running 0 2d20h +``` + +NOTE: If we see any issue when deploying RiaB, please check [Troubleshooting](./troubleshooting.md) + +### Config and run OMEC VM +In the OMEC VM, we should initially clone this repository. +```bash +Host $ cd /path/to/sdran-in-a-box/vagrant +Host $ ./vcmd.sh omec ssh +OMEC $ git clone https://github.com/onosproject/sdran-in-a-box +``` + +Next, we should update `sdran-in-a-box/MakefileVar.mk` file. +``` +... +S1MME_CU_INTERFACE := eth1 +... +ENB_SUBNET := 192.168.11.8/29 +ENB_GATEWAY := 192.168.11.9/29 +ACCESS_SUBNET := 192.168.11.16/29 +UPF_ACCESS_NET_IP := 192.168.11.19/29 +ACCESS_GATEWAY := 192.168.11.17/29 +CORE_SUBNET := 192.168.11.0/29 +UPF_CORE_NET_IP := 192.168.11.3/29 +CORE_GATEWAY := 192.168.11.1/29 +OAI_ENB_NET_IP := 192.168.11.10/29 +OAI_MACHINE_IP := 192.168.13.21/16 +OAI_ENB_NET_INTERFACE := eth1 +OMEC_ENB_NET_IP := 192.168.11.12/29 +OMEC_DEFAULT_INTERFACE := eth1 +OMEC_MACHINE_IP := 192.168.10.21/29 +RIC_MACHINE_IP := 192.168.10.22/24 +RIC_DEFAULT_IP := eth1 +``` + +Then, we should update UPF config in the `sdran-in-a-box-values-master-stable.yaml` file. +```yaml +config: +... + upf: + privileged: true + enb: + subnet: 192.168.11.8/29 + access: + gateway: 192.168.11.17 + ip: 192.168.11.19/29 + core: + gateway: 192.168.11.1 + ip: 192.168.11.3/29 +... +``` + +After updating the above two files, we should deploy OMEC with the below command: +```bash +OMEC $ make omec +OMEC $ make routing-hw-omec +``` + +After deployment, we should see below results on OMEC VM. +```bash +OMEC $ kubectl get po --all-namespaces +NAMESPACE NAME READY STATUS RESTARTS AGE +default router 1/1 Running 0 2d23h +kube-system calico-kube-controllers-59c5f46b69-f6srk 1/1 Running 0 2d23h +kube-system calico-node-wl556 1/1 Running 0 2d23h +kube-system coredns-dff8fc7d-s7v6r 1/1 Running 0 2d23h +kube-system dns-autoscaler-5d74bb9b8f-r5wdx 1/1 Running 0 2d23h +kube-system kube-apiserver-node1 1/1 Running 0 2d23h +kube-system kube-controller-manager-node1 1/1 Running 0 2d23h +kube-system kube-multus-ds-amd64-jcjl2 1/1 Running 0 2d23h +kube-system kube-proxy-g47md 1/1 Running 0 2d23h +kube-system kube-scheduler-node1 1/1 Running 0 2d23h +kube-system kubernetes-dashboard-667c4c65f8-86m6w 1/1 Running 0 2d23h +kube-system kubernetes-metrics-scraper-54fbb4d595-dfksw 1/1 Running 0 2d23h +kube-system nodelocaldns-s29k8 1/1 Running 0 2d23h +riab cassandra-0 1/1 Running 0 2d20h +riab hss-0 1/1 Running 0 2d20h +riab mme-0 4/4 Running 0 2d20h +riab pcrf-0 1/1 Running 0 2d20h +riab spgwc-0 2/2 Running 0 2d20h +riab upf-0 4/4 Running 0 2d20h +``` + +### Config and run RAN VM +First, we should clone this repository in RAN VM. +```bash +Host $ cd /path/to/sdran-in-a-box/vagrant +Host $ ./vcmd.sh ran ssh +RAN $ git clone https://github.com/onosproject/sdran-in-a-box +``` + +Next, we should update `sdran-in-a-box/MakefileVar.mk` file. +``` +... +S1MME_CU_INTERFACE := eth1 +... +E2T_NODEPORT_IPADDR := 192.168.10.22/24 +... ++ENB_SUBNET := 192.168.11.8/29 ++ENB_GATEWAY := 192.168.11.9/29 ++ACCESS_SUBNET := 192.168.11.16/29 ++UPF_ACCESS_NET_IP := 192.168.11.19/29 ++ACCESS_GATEWAY := 192.168.11.17/29 ++CORE_SUBNET := 192.168.11.0/29 ++UPF_CORE_NET_IP := 192.168.11.3/29 ++CORE_GATEWAY := 192.168.11.1/29 ++OAI_ENB_NET_IP := 192.168.11.10/29 ++OAI_MACHINE_IP := 192.168.13.21/16 ++OAI_ENB_NET_INTERFACE := eth1 ++OMEC_ENB_NET_IP := 192.168.11.12/29 ++OMEC_DEFAULT_INTERFACE := eth1 ++OMEC_MACHINE_IP := 192.168.10.21/29 ++RIC_MACHINE_IP := 192.168.10.22/24 ++RIC_DEFAULT_IP := eth1 +``` + +Then, we should update `oai-enb-cu` Makefile target in `sdran-in-a-box/mk/ran.mk` file. +It is just deleting `$(M)/ric` dependency from `oai-enb-cu` target. +``` +... +$(M)/oai-enb-cu: | version $(M)/helm-ready +... +``` + +After that, we should update `mme` and `oai-enb-cu` in `sdran-in-a-box/sdran-in-a-box-master-stable.yaml` file. +```yaml +config: + mme: + address: 192.168.10.21 +... + oai-enb-cu: + networks: +... + s1u: + interface: eth1 +... +``` + +After updating those three above files, we should do some network configurations. +First of all, we should get `onos-e2t` POD IP address. +`onos-e2t` POD IP address should be collected from `RIC` VM with below commands (not RAN VM): +```bash +Host $ cd /path/to/sdran-in-a-box/vagrant +Host $ ./vcmd.sh ric ssh +RIC $ kubectl get po -n riab -o wide | grep onos-e2t | awk '{print $6}' + +``` + +Once we get `E2T_POD_IP`, we should add a routing rule. +And also, we should two dummy network interfaces in RAN VM (Not RIC VM): +```bash +Host $ cd /path/to/sdran-in-a-box/vagrant +Host $ ./vcmd.sh ran ssh +RAN $ git clone https://github.com/onosproject/sdran-in-a-box +RAN $ sudo ip l add cu_e2f1_if type dummy +RAN $ sudo ip l add du_e2f1_if type dummy +RAN $ sudo ifconfig cu_e2f1_if 192.168.200.21 up +RAN $ sudo ifconfig du_e2f1_if 192.168.200.22 up +RAN $ sudo route add -host gw 192.168.10.22 +``` + +After finishing the configuration, we should deploy RAN nFAPI emulator with below commands: +```bash +RAN $ make routing-hw-oai +RAN $ make oai +``` + +After deployment, we should see below outputs on RAN VM: +```bash +RAN $ kubectl get po --all-namespaces +NAMESPACE NAME READY STATUS RESTARTS AGE +kube-system atomix-controller-99f978c7d-ltfc7 1/1 Running 0 2d22h +kube-system atomix-raft-storage-controller-75979cfff8-jflp6 1/1 Running 0 2d22h +kube-system calico-kube-controllers-6d9c99cc7c-p2vwv 1/1 Running 0 2d23h +kube-system calico-node-p4qvj 1/1 Running 0 2d23h +kube-system coredns-dff8fc7d-46szp 1/1 Running 0 2d23h +kube-system dns-autoscaler-5d74bb9b8f-86kkx 1/1 Running 0 2d23h +kube-system kube-apiserver-node1 1/1 Running 0 2d23h +kube-system kube-controller-manager-node1 1/1 Running 0 2d23h +kube-system kube-multus-ds-amd64-ds6rt 1/1 Running 0 2d23h +kube-system kube-proxy-sf8tx 1/1 Running 0 2d23h +kube-system kube-scheduler-node1 1/1 Running 0 2d23h +kube-system kubernetes-dashboard-667c4c65f8-9xp2l 1/1 Running 0 2d23h +kube-system kubernetes-metrics-scraper-54fbb4d595-vgdcm 1/1 Running 0 2d23h +kube-system nodelocaldns-sn4x7 1/1 Running 0 2d23h +riab oai-enb-cu-0 1/1 Running 0 2d20h +riab oai-enb-du-0 1/1 Running 0 2d20h +riab oai-ue-0 1/1 Running 0 2d20 + +``` + +## End-to-End (E2E) tests for verification +For the E2E verification, we can use `ping` command on RAN VM: +```bash +$ ping 1.1.1.1 -I oaitun_ue1 +PING 1.1.1.1 (1.1.1.1) from 172.250.255.252 oaitun_ue1: 56(84) bytes of data. +64 bytes from 1.1.1.1: icmp_seq=1 ttl=53 time=36.2 ms +64 bytes from 1.1.1.1: icmp_seq=2 ttl=53 time=29.0 ms +64 bytes from 1.1.1.1: icmp_seq=3 ttl=53 time=28.0 ms +64 bytes from 1.1.1.1: icmp_seq=4 ttl=53 time=39.9 ms +64 bytes from 1.1.1.1: icmp_seq=5 ttl=53 time=35.0 ms +... +``` diff --git a/sdran-in-a-box/docs/figures/fbah-no-map-v1.1.png b/sdran-in-a-box/docs/figures/fbah-no-map-v1.1.png new file mode 100644 index 0000000..74cb0fb Binary files /dev/null and b/sdran-in-a-box/docs/figures/fbah-no-map-v1.1.png differ diff --git a/sdran-in-a-box/docs/figures/fbah-with-map-v1.1.png b/sdran-in-a-box/docs/figures/fbah-with-map-v1.1.png new file mode 100644 index 0000000..f61d344 Binary files /dev/null and b/sdran-in-a-box/docs/figures/fbah-with-map-v1.1.png differ diff --git a/sdran-in-a-box/docs/figures/fbah-with-map-v1.2.png b/sdran-in-a-box/docs/figures/fbah-with-map-v1.2.png new file mode 100644 index 0000000..171f5a5 Binary files /dev/null and b/sdran-in-a-box/docs/figures/fbah-with-map-v1.2.png differ diff --git a/sdran-in-a-box/docs/figures/hw_install.png b/sdran-in-a-box/docs/figures/hw_install.png new file mode 100644 index 0000000..57d69ff Binary files /dev/null and b/sdran-in-a-box/docs/figures/hw_install.png differ