| { |
| "servers": [ |
| { |
| "name": "grpc_command", |
| "port": 55555, |
| "address": "", |
| "type": "grpc", |
| "routers": [ |
| { |
| "_TODO": "Suport a router list, remove the package and service from the router", |
| "package": "voltha", |
| "service": "VolthaService", |
| "router": "vcore" |
| } |
| ] |
| } |
| ], |
| "routers": [ |
| { |
| "name": "vcore", |
| "package": "voltha", |
| "service": "VolthaService", |
| "routes": [ |
| { |
| "name": "dev_manager", |
| "proto_descriptor": "voltha.pb", |
| "type": "rpc_affinity_message", |
| "association": "round_robin", |
| "routing_field": "id", |
| "backend_cluster": "vcore", |
| "_COMMENT": "Methods are naturally southbound affinity binding unless otherwise specified below", |
| "methods": [ |
| "CreateDevice", |
| "GetCoreInstance", |
| "EnableLogicalDevicePort", |
| "DisableLogicalDevicePort", |
| "EnableDevice", |
| "DisableDevice", |
| "RebootDevice", |
| "DeleteDevice", |
| "DownloadImage", |
| "CancelImageDownload", |
| "ActivateImageUpdate", |
| "RevertImageUpdate", |
| "UpdateDevicePmConfigs", |
| "CreateAlarmFilter", |
| "UpdateAlarmFilter", |
| "DeleteAlarmFilter", |
| "SelfTest" |
| ], |
| "_COMMENT": "If a method is northbound affinity binding then association is used to route", |
| "_COMMENT": "but affinity is not set southbound but only based on the response", |
| "_COMMENT": "Methods here MUST be specified above, this overrides thier default beahvior", |
| "nb_binding_methods": [ |
| "CreateDevice" |
| ], |
| "_TODO": "Overrides not implemented yet, config ignored", |
| "overrides": [ |
| { |
| "methods": [ |
| "abc", |
| "def" |
| ], |
| "routing_field": "id" |
| }, |
| { |
| "methods": [ |
| "ghi", |
| "jkl" |
| ] |
| }, |
| { |
| "method": "mno", |
| "routing_field": "id" |
| }, |
| { |
| "method": "pqr" |
| } |
| ] |
| }, |
| { |
| "name": "read_only", |
| "type": "round_robin", |
| "association": "round_robin", |
| "backend_cluster": "ro_vcore", |
| "methods": [ |
| "ListDevicePorts", |
| "ListDevicePmConfigs", |
| "GetImages", |
| "GetImageDownloadStatus", |
| "GetImageDownload", |
| "ListImageDownloads", |
| "ListDeviceFlows", |
| "ListDeviceFlowGroups", |
| "ListLogicalDeviceFlows", |
| "ListLogicalDeviceFlowGroups", |
| "ListDevices", |
| "GetDevice", |
| "ListLogicalDevices", |
| "GetLogicalDevices", |
| "GetDeviceType", |
| "GetDeviceGroup", |
| "GetLogicalDevice", |
| "GetAlarmFilter", |
| "ListLogicalDevicePorts", |
| "GetLogicalDevicePort" |
| ] |
| }, |
| { |
| "name": "dev_manager_ofagent", |
| "type": "binding", |
| "_association": "round_robin", |
| "binding": { |
| "type": "header", |
| "field": "voltha_backend_name", |
| "method": "Subscribe", |
| "association": "round_robin" |
| }, |
| "backend_cluster": "vcore", |
| "methods": [ |
| "StreamPacketsOut", |
| "ReceivePacketsIn", |
| "ReceiveChangeEvents", |
| "Subscribe", |
| "UpdateLogicalDeviceFlowTable", |
| "UpdateLogicalDeviceFlowGroupTable", |
| "GetLogicalDevice", |
| "GetLogicalDevicePort", |
| "EnableLogicalDevicePort", |
| "DisableLogicalDevicePort", |
| "ListLogicalDevices", |
| "ListLogicalDeviceFlows", |
| "ListLogicalDeviceFlowGroups", |
| "ListLogicalDevicePorts" |
| ], |
| "_TODO": "Overrides not implemented yet, config ignored", |
| "overrides": [ |
| { |
| "methods": [ |
| "abc", |
| "def" |
| ], |
| "routing_field": "id" |
| }, |
| { |
| "methods": [ |
| "ghi", |
| "jkl" |
| ] |
| }, |
| { |
| "method": "mno", |
| "routing_field": "id" |
| }, |
| { |
| "method": "pqr" |
| } |
| ] |
| } |
| ] |
| } |
| ], |
| "backend_clusters": [ |
| { |
| "name": "vcore", |
| "backends": [ |
| { |
| "name": "vcore1", |
| "type": "active_active", |
| "association": { |
| "strategy": "serial_number", |
| "location": "header", |
| "_TODO": "The key below needs to be implemented, currently hard coded", |
| "key": "voltha_serial_number" |
| }, |
| "connections": [ |
| { |
| "name": "vcore11", |
| "addr": "voltha-rw-core-11.voltha.svc.cluster.local", |
| "port": "50057" |
| }, |
| { |
| "name": "vcore12", |
| "addr": "voltha-rw-core-12.voltha.svc.cluster.local", |
| "port": "50057" |
| } |
| ] |
| }, |
| { |
| "name": "vcore2", |
| "type": "active_active", |
| "association": { |
| "strategy": "serial_number", |
| "location": "header", |
| "_TODO": "The key below needs to be implemented, currently hard coded", |
| "key": "voltha_serial_number" |
| }, |
| "connections": [ |
| { |
| "name": "vcore21", |
| "addr": "voltha-rw-core-21.voltha.svc.cluster.local", |
| "port": "50057" |
| }, |
| { |
| "name": "vcore22", |
| "addr": "voltha-rw-core-22.voltha.svc.cluster.local", |
| "port": "50057" |
| } |
| ] |
| }, |
| { |
| "name": "vcore3", |
| "type": "active_active", |
| "association": { |
| "strategy": "serial_number", |
| "location": "header", |
| "_TODO": "The key below needs to be implemented, currently hard coded", |
| "key": "voltha_serial_number" |
| }, |
| "connections": [ |
| { |
| "name": "vcore31", |
| "addr": "voltha-rw-core-31.voltha.svc.cluster.local", |
| "port": "50057" |
| }, |
| { |
| "name": "vcore32", |
| "addr": "voltha-rw-core-32.voltha.svc.cluster.local", |
| "port": "50057" |
| } |
| ] |
| } |
| ] |
| }, |
| { |
| "name": "ro_vcore", |
| "backends": [ |
| { |
| "name": "ro_vcore1", |
| "type": "server", |
| "connections": [ |
| { |
| "name": "ro_vcore11", |
| "addr": "voltha-ro-core-0.voltha-ro-core.voltha.svc.cluster.local", |
| "port": "50057" |
| } |
| ] |
| }, |
| { |
| "name": "ro_vcore2", |
| "type": "server", |
| "connections": [ |
| { |
| "name": "ro_vcore21", |
| "addr": "voltha-ro-core-1.voltha-ro-core.voltha.svc.cluster.local", |
| "port": "50057" |
| } |
| ] |
| }, |
| { |
| "name": "ro_vcore3", |
| "type": "server", |
| "connections": [ |
| { |
| "name": "ro_vcore31", |
| "addr": "voltha-ro-core-2.voltha-ro-core.voltha.svc.cluster.local", |
| "port": "50057" |
| } |
| ] |
| } |
| ] |
| } |
| ], |
| "api": { |
| "_comment": "If this isn't defined then no api is available for dynamic configuration and queries", |
| "address": "", |
| "port": 55554 |
| } |
| } |