vapi metadata routing: service info

Information about a vAPI service that has routing information A service is said to contain routing information if any of its operations have routing information

Representation:

{
    "operations"{
        "obj-103"{
            "routing_info"{
                "operation_hints"[
                    "string",
                    "string"
                ],
                "id_types"{
                    "<string>""string"
                },
                "routing_strategy""string",
                "routing_path""string"
            }
        }
    },
    "routing_info"{
        "operation_hints"[
            "string",
            "string"
        ],
        "id_types"{
            "<string>""string"
        },
        "routing_strategy""string",
        "routing_path""string"
    }
}
{
    "operations"[
        {
            "value"{
                "routing_info"{
                    "operation_hints"[
                        "string",
                        "string"
                    ],
                    "id_types"[
                        {
                            "value""string",
                            "key""string"
                        }
                    ],
                    "routing_strategy""string",
                    "routing_path""string"
                }
            },
            "key""obj-103"
        }
    ],
    "routing_info"{
        "operation_hints"[
            "string",
            "string"
        ],
        "id_types"[
            {
                "value""string",
                "key""string"
            }
        ],
        "routing_strategy""string",
        "routing_path""string"
    }
}

Attributes:

Name Type Description
Required
-.routing_info routing_info The routing information to be used for all the operations present in this service. If a particular operation has no explicit routing information defined in the routing definition file, this routing info will be used for enforcing routing.

-.routing_info.routing_path string The initial version of the routing info allowed routing by single parameter. Clients requested allowing them to place more than one parameters so that the routing is performed by the first non-null argument in the list. To achieve that we have added method com.vmware.vapi.metadata.RoutingInfo#getRoutingPaths() which should be preferred over com.vmware.vapi.metadata.RoutingInfo#getRoutingPath() which is deprecated. The deprecated method will return string representation of the comma-separated list of ids, while the com.vmware.vapi.metadata.RoutingInfo#getRoutingPaths() will return instance of java.util.List<String> containing the ids.

-.routing_info.routing_strategy string The routingStrategy is the actual strategy, based on which will be performed the routing. If the routingStrategy is IDROUTE, in vapi.metadata.routing.routing_info.routing_path must be assigned the id for the routing. There are also default strategies like IDFIRSTROUTE, LOCAL for which there is no need to specify routingPath. The name of these strategies is clear about where we should look for an ID to route, or if we need ID at all.

-.routing_info.operation_hints string[] This is comma-separated list of hints from the input ini file. Here the user must mention the type of the invoked method, e.g. HINTS(create) or HINTS(delete). In the future we expect this field to contain other hints also e.g. HINTS(create,lazy).

-.routing_info.id_types object This is map of specifically predefined resource types in the routing metadata. For example id types that do not require storage in the Inventory Service. Those type of objects are called 'positioned' - it is well known in advance where those objects will be routed, because their ids contain VC server guid. Example: Content Library Sessions are considered transient objects that do not need to be persisted in the IS. Routing ini file must contain section: [types] com.vmware.content.DownloadSession=positioned The map therefore will contain: {{"com.vmware.content.DownloadSession", "positioned"}} Note: This should not be final solution. To avoid duplication, currently this map will be stored only in one RoutingInfo object across the whole ProductModel. In the future, it might be moved to a common place as ComponentInfo, for example.

Object with element values of type string.

-.operations object Information about all operations in this service that contain routing Information. The key in the map is the ID of the operation and the value in the map is the routing information for this operation.

For an explanation of routing information within operations, see com.vmware.vapi.metadata.routing.Operation

When clients pass a value of this structure as a parameter, the key in the field key/value pairs must be an identifier for the resource type: com.vmware.vapi.operation. When operations return a value of this structure as a result, the key in the field key/value pairs will be an identifier for the resource type: com.vmware.vapi.operation.Object with element values of type operation_info.