Commits (27)
......@@ -115,6 +115,9 @@ python3 client_connection.py
cd ~/tfs-ctrl/hackfest/tapi/server
pip install -r requirements.txt
cd ~/tfs-ctrl/hackfest/tapi/tapi_app
./requirements.sh
# (done) Build & Implement methods for the TAPI v2.1.3 server:
cd ~/tfs-ctrl/hackfest/tapi
wget https://repo1.maven.org/maven2/io/swagger/codegen/v3/swagger-codegen-cli/3.0.35/swagger-codegen-cli-3.0.35.jar
......@@ -134,7 +137,7 @@ cd ~/tfs-ctrl/hackfest/tapi/server
python3 -m tapi_server 8080 database/mini-ols-context.json
# Run TAPI client using cURL (In a new window):
$ cd ~/tfs-ctrl/hackfest/tapi/client
cd ~/tfs-ctrl/hackfest/tapi/client
# Interrogate Context and SIPs:
curl -X GET -H "Content-Type: application/json" http://127.0.0.1:8080/restconf/data/tapi-common:context/
......@@ -163,6 +166,7 @@ curl -X DELETE -H "Content-Type: application/json" http://127.0.0.1:8080/restcon
## EXERCISE
# Exercise: retrieve and draw the topology
# solution in folder tapi_app
......@@ -175,24 +179,32 @@ python3 tapi_app.py
# Deploy TeraFlowSDN
################################################################################
# Check status of Kubernetes
## GUIDED
# Check status of MicroK8s
microk8s.status --wait-ready
# If not running, start MicroK8s
microk8s.start
# Periodically inspect status of MicroK8s until all addons are enabled
watch -n 1 microk8s.status --wait-ready
# Check all resources in Kubernetes
microk8s.kubectl get all --all-namespaces
watch -n 1 kubectl get all --all-namespaces
# Deploy TeraFlowSDN
cd ~/tfs-ctrl
source my_deploy.sh
./deploy.sh
./deploy/all.sh
# Show status of your deployment
(if new terminal) cd ~/tfs-ctrl && source my_deploy.sh
./show_deploy.sh
./deploy/show.sh
# Show logs of a specific component
(if new terminal) cd ~/tfs-ctrl && source my_deploy.sh
scripts/show_logs_device.sh
./scripts/show_logs_device.sh
......@@ -202,6 +214,8 @@ scripts/show_logs_device.sh
# (done) Build a Netconf server supporting basic OpenConfig data model
## GUIDED
# Start the Netconf/OpenConfig server
cd ~/tfs-ctrl/hackfest/netconf-oc
python3 server_openconfig.py 8300
......@@ -212,7 +226,8 @@ python3 server_openconfig.py 8300
# Service requests
################################################################################
## L3VPN service from JSON descriptors
## EXERCISE
# Exercise: L3VPN service from JSON descriptors
# (in a new terminal) Start OLS TAPI server:
cd ~/tfs-ctrl/hackfest/tapi/server
......@@ -236,9 +251,8 @@ python3 server_openconfig.py 8304
############
# Mock OSM
############
## EXERCISE
# Exercise: L2VPN slice from Mock OSM
$ cd ~/tfs-ctrl/hackfest/
$ python -m mock_osm
......@@ -262,12 +276,65 @@ Service b8c99e2c-39d8-424d-9833-554634269555 deleted
(mock-osm) exit
Bye!
############
# gRPC
############
## GUIDED
# Generate connection messages from .proto
cd ~/tfs-ctrl/hackfest/grpc
python -m grpc_tools.protoc -I=. --python_out=connection/ connection.proto
# Create a connection message and save to a file
cd ~/tfs-ctrl/hackfest/grpc/connection
python3 create.py connection.txt
# List a connection from a file
cd ~/tfs-ctrl/hackfest/grpc/connection
python3 list.py connection.txt
# Build ConnectionService from .proto
cd ~/tfs-ctrl/hackfest/grpc
python -m grpc_tools.protoc -I=. --python_out=connectionService/ --grpc_python_out=connectionService/ connectionService.proto
# Start ConnectionService server
cd ~/tfs-ctrl/hackfest/grpc/connectionService
python3 connectionService_server.py
# Start ConnectionService client (in another terminal)
cd ~/tfs-ctrl/hackfest/grpc/connectionService
python3 connectionService_client.py
## EXERCISE
# Exercise: add streams
# Build ConnectionServiceWithNotif from .proto
cd ~/tfs-ctrl/hackfest/grpc
python -m grpc_tools.protoc -I=. --python_out=connectionServiceWithNotif/ --grpc_python_out=connectionServiceWithNotif/ connectionServiceWithNotif.proto
## Solution:
# Run ConnectionServiceWithNotif server
cd ~/tfs-ctrl/hackfest/grpc/connectionServiceWithNotif
python3 connectionServiceWithNotif_server.py
# Run ConnectionServiceWithNotif client (in another terminal)
$ cd ~/tfs-ctrl/hackfest/grpc/connectionServiceWithNotif
$ python3 connectionServiceWithNotif_client.py
############
# gNMI
############
## GUIDED
## Download and install the latest release
$ sudo bash -c "$(curl -sL https://get.containerlab.dev)
$ sudo bash -c "$(curl -sL https://get.containerlab.dev)"
## Deploy proposed two SR node scenario
$ cd tfs-ctrl/hackfest/gnmi
......
......@@ -12,18 +12,17 @@
# See the License for the specific language governing permissions and
# limitations under the License.
# file: sonic.clab.yml
name: sonic-vs
# file: srlinux.clab.yml
name: srlinux
topology:
nodes:
srl1:
kind: sonic-vs
image: docker-sonic-vs
kind: srl
image: ghcr.io/nokia/srlinux
srl2:
kind: sonic-vs
image: docker-sonic-vs
kind: srl
image: ghcr.io/nokia/srlinux
links:
- endpoints: ["srl1:e1-1", "srl2:e1-1"]
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: connection.proto
import sys
_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
from google.protobuf import symbol_database as _symbol_database
......@@ -14,163 +14,34 @@ _sym_db = _symbol_database.Default()
DESCRIPTOR = _descriptor.FileDescriptor(
name='connection.proto',
package='connection',
syntax='proto3',
serialized_options=None,
serialized_pb=_b('\n\x10\x63onnection.proto\x12\nconnection\"\xf5\x01\n\nConnection\x12\x14\n\x0c\x63onnectionId\x18\x01 \x01(\t\x12\x12\n\nsourceNode\x18\x02 \x01(\t\x12\x12\n\ntargetNode\x18\x03 \x01(\t\x12\x12\n\nsourcePort\x18\x04 \x01(\t\x12\x12\n\ntargetPort\x18\x05 \x01(\t\x12\x11\n\tbandwidth\x18\x06 \x01(\r\x12\x43\n\x11layerProtocolName\x18\x07 \x01(\x0e\x32(.connection.Connection.LayerProtocolName\")\n\x11LayerProtocolName\x12\x07\n\x03\x45TH\x10\x00\x12\x0b\n\x07OPTICAL\x10\x01\"<\n\x0e\x43onnectionList\x12*\n\nconnection\x18\x01 \x03(\x0b\x32\x16.connection.Connectionb\x06proto3')
)
_CONNECTION_LAYERPROTOCOLNAME = _descriptor.EnumDescriptor(
name='LayerProtocolName',
full_name='connection.Connection.LayerProtocolName',
filename=None,
file=DESCRIPTOR,
values=[
_descriptor.EnumValueDescriptor(
name='ETH', index=0, number=0,
serialized_options=None,
type=None),
_descriptor.EnumValueDescriptor(
name='OPTICAL', index=1, number=1,
serialized_options=None,
type=None),
],
containing_type=None,
serialized_options=None,
serialized_start=237,
serialized_end=278,
)
_sym_db.RegisterEnumDescriptor(_CONNECTION_LAYERPROTOCOLNAME)
_CONNECTION = _descriptor.Descriptor(
name='Connection',
full_name='connection.Connection',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='connectionId', full_name='connection.Connection.connectionId', index=0,
number=1, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
_descriptor.FieldDescriptor(
name='sourceNode', full_name='connection.Connection.sourceNode', index=1,
number=2, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
_descriptor.FieldDescriptor(
name='targetNode', full_name='connection.Connection.targetNode', index=2,
number=3, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
_descriptor.FieldDescriptor(
name='sourcePort', full_name='connection.Connection.sourcePort', index=3,
number=4, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
_descriptor.FieldDescriptor(
name='targetPort', full_name='connection.Connection.targetPort', index=4,
number=5, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
_descriptor.FieldDescriptor(
name='bandwidth', full_name='connection.Connection.bandwidth', index=5,
number=6, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
_descriptor.FieldDescriptor(
name='layerProtocolName', full_name='connection.Connection.layerProtocolName', index=6,
number=7, type=14, cpp_type=8, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
],
extensions=[
],
nested_types=[],
enum_types=[
_CONNECTION_LAYERPROTOCOLNAME,
],
serialized_options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=33,
serialized_end=278,
)
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x10\x63onnection.proto\x12\nconnection\"\xf5\x01\n\nConnection\x12\x14\n\x0c\x63onnectionId\x18\x01 \x01(\t\x12\x12\n\nsourceNode\x18\x02 \x01(\t\x12\x12\n\ntargetNode\x18\x03 \x01(\t\x12\x12\n\nsourcePort\x18\x04 \x01(\t\x12\x12\n\ntargetPort\x18\x05 \x01(\t\x12\x11\n\tbandwidth\x18\x06 \x01(\r\x12\x43\n\x11layerProtocolName\x18\x07 \x01(\x0e\x32(.connection.Connection.LayerProtocolName\")\n\x11LayerProtocolName\x12\x07\n\x03\x45TH\x10\x00\x12\x0b\n\x07OPTICAL\x10\x01\"<\n\x0e\x43onnectionList\x12*\n\nconnection\x18\x01 \x03(\x0b\x32\x16.connection.Connectionb\x06proto3')
_CONNECTIONLIST = _descriptor.Descriptor(
name='ConnectionList',
full_name='connection.ConnectionList',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='connection', full_name='connection.ConnectionList.connection', index=0,
number=1, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=280,
serialized_end=340,
)
_CONNECTION.fields_by_name['layerProtocolName'].enum_type = _CONNECTION_LAYERPROTOCOLNAME
_CONNECTION_LAYERPROTOCOLNAME.containing_type = _CONNECTION
_CONNECTIONLIST.fields_by_name['connection'].message_type = _CONNECTION
DESCRIPTOR.message_types_by_name['Connection'] = _CONNECTION
DESCRIPTOR.message_types_by_name['ConnectionList'] = _CONNECTIONLIST
_sym_db.RegisterFileDescriptor(DESCRIPTOR)
Connection = _reflection.GeneratedProtocolMessageType('Connection', (_message.Message,), dict(
DESCRIPTOR = _CONNECTION,
__module__ = 'connection_pb2'
_CONNECTION = DESCRIPTOR.message_types_by_name['Connection']
_CONNECTIONLIST = DESCRIPTOR.message_types_by_name['ConnectionList']
_CONNECTION_LAYERPROTOCOLNAME = _CONNECTION.enum_types_by_name['LayerProtocolName']
Connection = _reflection.GeneratedProtocolMessageType('Connection', (_message.Message,), {
'DESCRIPTOR' : _CONNECTION,
'__module__' : 'connection_pb2'
# @@protoc_insertion_point(class_scope:connection.Connection)
))
})
_sym_db.RegisterMessage(Connection)
ConnectionList = _reflection.GeneratedProtocolMessageType('ConnectionList', (_message.Message,), dict(
DESCRIPTOR = _CONNECTIONLIST,
__module__ = 'connection_pb2'
ConnectionList = _reflection.GeneratedProtocolMessageType('ConnectionList', (_message.Message,), {
'DESCRIPTOR' : _CONNECTIONLIST,
'__module__' : 'connection_pb2'
# @@protoc_insertion_point(class_scope:connection.ConnectionList)
))
})
_sym_db.RegisterMessage(ConnectionList)
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
_CONNECTION._serialized_start=33
_CONNECTION._serialized_end=278
_CONNECTION_LAYERPROTOCOLNAME._serialized_start=237
_CONNECTION_LAYERPROTOCOLNAME._serialized_end=278
_CONNECTIONLIST._serialized_start=280
_CONNECTIONLIST._serialized_end=340
# @@protoc_insertion_point(module_scope)
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: connectionService.proto
import sys
_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
from google.protobuf import symbol_database as _symbol_database
......@@ -15,197 +15,37 @@ _sym_db = _symbol_database.Default()
from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
DESCRIPTOR = _descriptor.FileDescriptor(
name='connectionService.proto',
package='connection',
syntax='proto3',
serialized_options=None,
serialized_pb=_b('\n\x17\x63onnectionService.proto\x12\nconnection\x1a\x1bgoogle/protobuf/empty.proto\"\xf5\x01\n\nConnection\x12\x14\n\x0c\x63onnectionId\x18\x01 \x01(\t\x12\x12\n\nsourceNode\x18\x02 \x01(\t\x12\x12\n\ntargetNode\x18\x03 \x01(\t\x12\x12\n\nsourcePort\x18\x04 \x01(\t\x12\x12\n\ntargetPort\x18\x05 \x01(\t\x12\x11\n\tbandwidth\x18\x06 \x01(\r\x12\x43\n\x11layerProtocolName\x18\x07 \x01(\x0e\x32(.connection.Connection.LayerProtocolName\")\n\x11LayerProtocolName\x12\x07\n\x03\x45TH\x10\x00\x12\x0b\n\x07OPTICAL\x10\x01\"<\n\x0e\x43onnectionList\x12*\n\nconnection\x18\x01 \x03(\x0b\x32\x16.connection.Connection2\xa1\x01\n\x11\x43onnectionService\x12\x44\n\x10\x43reateConnection\x12\x16.connection.Connection\x1a\x16.google.protobuf.Empty\"\x00\x12\x46\n\x0eListConnection\x12\x16.google.protobuf.Empty\x1a\x1a.connection.ConnectionList\"\x00\x62\x06proto3')
,
dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,])
_CONNECTION_LAYERPROTOCOLNAME = _descriptor.EnumDescriptor(
name='LayerProtocolName',
full_name='connection.Connection.LayerProtocolName',
filename=None,
file=DESCRIPTOR,
values=[
_descriptor.EnumValueDescriptor(
name='ETH', index=0, number=0,
serialized_options=None,
type=None),
_descriptor.EnumValueDescriptor(
name='OPTICAL', index=1, number=1,
serialized_options=None,
type=None),
],
containing_type=None,
serialized_options=None,
serialized_start=273,
serialized_end=314,
)
_sym_db.RegisterEnumDescriptor(_CONNECTION_LAYERPROTOCOLNAME)
_CONNECTION = _descriptor.Descriptor(
name='Connection',
full_name='connection.Connection',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='connectionId', full_name='connection.Connection.connectionId', index=0,
number=1, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
_descriptor.FieldDescriptor(
name='sourceNode', full_name='connection.Connection.sourceNode', index=1,
number=2, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
_descriptor.FieldDescriptor(
name='targetNode', full_name='connection.Connection.targetNode', index=2,
number=3, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
_descriptor.FieldDescriptor(
name='sourcePort', full_name='connection.Connection.sourcePort', index=3,
number=4, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
_descriptor.FieldDescriptor(
name='targetPort', full_name='connection.Connection.targetPort', index=4,
number=5, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
_descriptor.FieldDescriptor(
name='bandwidth', full_name='connection.Connection.bandwidth', index=5,
number=6, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
_descriptor.FieldDescriptor(
name='layerProtocolName', full_name='connection.Connection.layerProtocolName', index=6,
number=7, type=14, cpp_type=8, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
],
extensions=[
],
nested_types=[],
enum_types=[
_CONNECTION_LAYERPROTOCOLNAME,
],
serialized_options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=69,
serialized_end=314,
)
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17\x63onnectionService.proto\x12\nconnection\x1a\x1bgoogle/protobuf/empty.proto\"\xf5\x01\n\nConnection\x12\x14\n\x0c\x63onnectionId\x18\x01 \x01(\t\x12\x12\n\nsourceNode\x18\x02 \x01(\t\x12\x12\n\ntargetNode\x18\x03 \x01(\t\x12\x12\n\nsourcePort\x18\x04 \x01(\t\x12\x12\n\ntargetPort\x18\x05 \x01(\t\x12\x11\n\tbandwidth\x18\x06 \x01(\r\x12\x43\n\x11layerProtocolName\x18\x07 \x01(\x0e\x32(.connection.Connection.LayerProtocolName\")\n\x11LayerProtocolName\x12\x07\n\x03\x45TH\x10\x00\x12\x0b\n\x07OPTICAL\x10\x01\"<\n\x0e\x43onnectionList\x12*\n\nconnection\x18\x01 \x03(\x0b\x32\x16.connection.Connection2\xa1\x01\n\x11\x43onnectionService\x12\x44\n\x10\x43reateConnection\x12\x16.connection.Connection\x1a\x16.google.protobuf.Empty\"\x00\x12\x46\n\x0eListConnection\x12\x16.google.protobuf.Empty\x1a\x1a.connection.ConnectionList\"\x00\x62\x06proto3')
_CONNECTIONLIST = _descriptor.Descriptor(
name='ConnectionList',
full_name='connection.ConnectionList',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='connection', full_name='connection.ConnectionList.connection', index=0,
number=1, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=316,
serialized_end=376,
)
_CONNECTION.fields_by_name['layerProtocolName'].enum_type = _CONNECTION_LAYERPROTOCOLNAME
_CONNECTION_LAYERPROTOCOLNAME.containing_type = _CONNECTION
_CONNECTIONLIST.fields_by_name['connection'].message_type = _CONNECTION
DESCRIPTOR.message_types_by_name['Connection'] = _CONNECTION
DESCRIPTOR.message_types_by_name['ConnectionList'] = _CONNECTIONLIST
_sym_db.RegisterFileDescriptor(DESCRIPTOR)
Connection = _reflection.GeneratedProtocolMessageType('Connection', (_message.Message,), dict(
DESCRIPTOR = _CONNECTION,
__module__ = 'connectionService_pb2'
_CONNECTION = DESCRIPTOR.message_types_by_name['Connection']
_CONNECTIONLIST = DESCRIPTOR.message_types_by_name['ConnectionList']
_CONNECTION_LAYERPROTOCOLNAME = _CONNECTION.enum_types_by_name['LayerProtocolName']
Connection = _reflection.GeneratedProtocolMessageType('Connection', (_message.Message,), {
'DESCRIPTOR' : _CONNECTION,
'__module__' : 'connectionService_pb2'
# @@protoc_insertion_point(class_scope:connection.Connection)
))
})
_sym_db.RegisterMessage(Connection)
ConnectionList = _reflection.GeneratedProtocolMessageType('ConnectionList', (_message.Message,), dict(
DESCRIPTOR = _CONNECTIONLIST,
__module__ = 'connectionService_pb2'
ConnectionList = _reflection.GeneratedProtocolMessageType('ConnectionList', (_message.Message,), {
'DESCRIPTOR' : _CONNECTIONLIST,
'__module__' : 'connectionService_pb2'
# @@protoc_insertion_point(class_scope:connection.ConnectionList)
))
})
_sym_db.RegisterMessage(ConnectionList)
_CONNECTIONSERVICE = _descriptor.ServiceDescriptor(
name='ConnectionService',
full_name='connection.ConnectionService',
file=DESCRIPTOR,
index=0,
serialized_options=None,
serialized_start=379,
serialized_end=540,
methods=[
_descriptor.MethodDescriptor(
name='CreateConnection',
full_name='connection.ConnectionService.CreateConnection',
index=0,
containing_service=None,
input_type=_CONNECTION,
output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
serialized_options=None,
),
_descriptor.MethodDescriptor(
name='ListConnection',
full_name='connection.ConnectionService.ListConnection',
index=1,
containing_service=None,
input_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
output_type=_CONNECTIONLIST,
serialized_options=None,
),
])
_sym_db.RegisterServiceDescriptor(_CONNECTIONSERVICE)
DESCRIPTOR.services_by_name['ConnectionService'] = _CONNECTIONSERVICE
_CONNECTIONSERVICE = DESCRIPTOR.services_by_name['ConnectionService']
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
_CONNECTION._serialized_start=69
_CONNECTION._serialized_end=314
_CONNECTION_LAYERPROTOCOLNAME._serialized_start=273
_CONNECTION_LAYERPROTOCOLNAME._serialized_end=314
_CONNECTIONLIST._serialized_start=316
_CONNECTIONLIST._serialized_end=376
_CONNECTIONSERVICE._serialized_start=379
_CONNECTIONSERVICE._serialized_end=540
# @@protoc_insertion_point(module_scope)
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc
import connectionService_pb2 as connectionService__pb2
......@@ -6,59 +7,94 @@ from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
class ConnectionServiceStub(object):
# missing associated documentation comment in .proto file
pass
"""Missing associated documentation comment in .proto file."""
def __init__(self, channel):
"""Constructor.
def __init__(self, channel):
"""Constructor.
Args:
channel: A grpc.Channel.
"""
self.CreateConnection = channel.unary_unary(
'/connection.ConnectionService/CreateConnection',
request_serializer=connectionService__pb2.Connection.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.ListConnection = channel.unary_unary(
'/connection.ConnectionService/ListConnection',
request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
response_deserializer=connectionService__pb2.ConnectionList.FromString,
)
Args:
channel: A grpc.Channel.
"""
self.CreateConnection = channel.unary_unary(
'/connection.ConnectionService/CreateConnection',
request_serializer=connectionService__pb2.Connection.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.ListConnection = channel.unary_unary(
'/connection.ConnectionService/ListConnection',
request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
response_deserializer=connectionService__pb2.ConnectionList.FromString,
)
class ConnectionServiceServicer(object):
# missing associated documentation comment in .proto file
pass
"""Missing associated documentation comment in .proto file."""
def CreateConnection(self, request, context):
# missing associated documentation comment in .proto file
pass
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def CreateConnection(self, request, context):
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def ListConnection(self, request, context):
# missing associated documentation comment in .proto file
pass
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def ListConnection(self, request, context):
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def add_ConnectionServiceServicer_to_server(servicer, server):
rpc_method_handlers = {
'CreateConnection': grpc.unary_unary_rpc_method_handler(
servicer.CreateConnection,
request_deserializer=connectionService__pb2.Connection.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'ListConnection': grpc.unary_unary_rpc_method_handler(
servicer.ListConnection,
request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
response_serializer=connectionService__pb2.ConnectionList.SerializeToString,
),
}
generic_handler = grpc.method_handlers_generic_handler(
'connection.ConnectionService', rpc_method_handlers)
server.add_generic_rpc_handlers((generic_handler,))
rpc_method_handlers = {
'CreateConnection': grpc.unary_unary_rpc_method_handler(
servicer.CreateConnection,
request_deserializer=connectionService__pb2.Connection.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'ListConnection': grpc.unary_unary_rpc_method_handler(
servicer.ListConnection,
request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
response_serializer=connectionService__pb2.ConnectionList.SerializeToString,
),
}
generic_handler = grpc.method_handlers_generic_handler(
'connection.ConnectionService', rpc_method_handlers)
server.add_generic_rpc_handlers((generic_handler,))
# This class is part of an EXPERIMENTAL API.
class ConnectionService(object):
"""Missing associated documentation comment in .proto file."""
@staticmethod
def CreateConnection(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/connection.ConnectionService/CreateConnection',
connectionService__pb2.Connection.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def ListConnection(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/connection.ConnectionService/ListConnection',
google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
connectionService__pb2.ConnectionList.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: connectionServiceWithNotif.proto
import sys
_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
from google.protobuf import symbol_database as _symbol_database
......@@ -15,245 +15,47 @@ _sym_db = _symbol_database.Default()
from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
DESCRIPTOR = _descriptor.FileDescriptor(
name='connectionServiceWithNotif.proto',
package='connection',
syntax='proto3',
serialized_options=None,
serialized_pb=_b('\n connectionServiceWithNotif.proto\x12\nconnection\x1a\x1bgoogle/protobuf/empty.proto\"\x14\n\x03\x42\x65r\x12\r\n\x05value\x18\x01 \x01(\x01\"\xf5\x01\n\nConnection\x12\x14\n\x0c\x63onnectionId\x18\x01 \x01(\t\x12\x12\n\nsourceNode\x18\x02 \x01(\t\x12\x12\n\ntargetNode\x18\x03 \x01(\t\x12\x12\n\nsourcePort\x18\x04 \x01(\t\x12\x12\n\ntargetPort\x18\x05 \x01(\t\x12\x11\n\tbandwidth\x18\x06 \x01(\r\x12\x43\n\x11layerProtocolName\x18\x07 \x01(\x0e\x32(.connection.Connection.LayerProtocolName\")\n\x11LayerProtocolName\x12\x07\n\x03\x45TH\x10\x00\x12\x0b\n\x07OPTICAL\x10\x01\"<\n\x0e\x43onnectionList\x12*\n\nconnection\x18\x01 \x03(\x0b\x32\x16.connection.Connection2\xe1\x01\n\x1a\x43onnectionServiceWithNotif\x12\x44\n\x10\x43reateConnection\x12\x16.connection.Connection\x1a\x16.google.protobuf.Empty\"\x00\x12\x46\n\x0eListConnection\x12\x16.google.protobuf.Empty\x1a\x1a.connection.ConnectionList\"\x00\x12\x35\n\x06GetBer\x12\x16.connection.Connection\x1a\x0f.connection.Ber\"\x00\x30\x01\x62\x06proto3')
,
dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,])
_CONNECTION_LAYERPROTOCOLNAME = _descriptor.EnumDescriptor(
name='LayerProtocolName',
full_name='connection.Connection.LayerProtocolName',
filename=None,
file=DESCRIPTOR,
values=[
_descriptor.EnumValueDescriptor(
name='ETH', index=0, number=0,
serialized_options=None,
type=None),
_descriptor.EnumValueDescriptor(
name='OPTICAL', index=1, number=1,
serialized_options=None,
type=None),
],
containing_type=None,
serialized_options=None,
serialized_start=304,
serialized_end=345,
)
_sym_db.RegisterEnumDescriptor(_CONNECTION_LAYERPROTOCOLNAME)
_BER = _descriptor.Descriptor(
name='Ber',
full_name='connection.Ber',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='value', full_name='connection.Ber.value', index=0,
number=1, type=1, cpp_type=5, label=1,
has_default_value=False, default_value=float(0),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=77,
serialized_end=97,
)
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n connectionServiceWithNotif.proto\x12\nconnection\x1a\x1bgoogle/protobuf/empty.proto\"\x14\n\x03\x42\x65r\x12\r\n\x05value\x18\x01 \x01(\x01\"\xf5\x01\n\nConnection\x12\x14\n\x0c\x63onnectionId\x18\x01 \x01(\t\x12\x12\n\nsourceNode\x18\x02 \x01(\t\x12\x12\n\ntargetNode\x18\x03 \x01(\t\x12\x12\n\nsourcePort\x18\x04 \x01(\t\x12\x12\n\ntargetPort\x18\x05 \x01(\t\x12\x11\n\tbandwidth\x18\x06 \x01(\r\x12\x43\n\x11layerProtocolName\x18\x07 \x01(\x0e\x32(.connection.Connection.LayerProtocolName\")\n\x11LayerProtocolName\x12\x07\n\x03\x45TH\x10\x00\x12\x0b\n\x07OPTICAL\x10\x01\"<\n\x0e\x43onnectionList\x12*\n\nconnection\x18\x01 \x03(\x0b\x32\x16.connection.Connection2\xe1\x01\n\x1a\x43onnectionServiceWithNotif\x12\x44\n\x10\x43reateConnection\x12\x16.connection.Connection\x1a\x16.google.protobuf.Empty\"\x00\x12\x46\n\x0eListConnection\x12\x16.google.protobuf.Empty\x1a\x1a.connection.ConnectionList\"\x00\x12\x35\n\x06GetBer\x12\x16.connection.Connection\x1a\x0f.connection.Ber\"\x00\x30\x01\x62\x06proto3')
_CONNECTION = _descriptor.Descriptor(
name='Connection',
full_name='connection.Connection',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='connectionId', full_name='connection.Connection.connectionId', index=0,
number=1, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
_descriptor.FieldDescriptor(
name='sourceNode', full_name='connection.Connection.sourceNode', index=1,
number=2, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
_descriptor.FieldDescriptor(
name='targetNode', full_name='connection.Connection.targetNode', index=2,
number=3, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
_descriptor.FieldDescriptor(
name='sourcePort', full_name='connection.Connection.sourcePort', index=3,
number=4, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
_descriptor.FieldDescriptor(
name='targetPort', full_name='connection.Connection.targetPort', index=4,
number=5, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
_descriptor.FieldDescriptor(
name='bandwidth', full_name='connection.Connection.bandwidth', index=5,
number=6, type=13, cpp_type=3, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
_descriptor.FieldDescriptor(
name='layerProtocolName', full_name='connection.Connection.layerProtocolName', index=6,
number=7, type=14, cpp_type=8, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
],
extensions=[
],
nested_types=[],
enum_types=[
_CONNECTION_LAYERPROTOCOLNAME,
],
serialized_options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=100,
serialized_end=345,
)
_CONNECTIONLIST = _descriptor.Descriptor(
name='ConnectionList',
full_name='connection.ConnectionList',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='connection', full_name='connection.ConnectionList.connection', index=0,
number=1, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=347,
serialized_end=407,
)
_CONNECTION.fields_by_name['layerProtocolName'].enum_type = _CONNECTION_LAYERPROTOCOLNAME
_CONNECTION_LAYERPROTOCOLNAME.containing_type = _CONNECTION
_CONNECTIONLIST.fields_by_name['connection'].message_type = _CONNECTION
DESCRIPTOR.message_types_by_name['Ber'] = _BER
DESCRIPTOR.message_types_by_name['Connection'] = _CONNECTION
DESCRIPTOR.message_types_by_name['ConnectionList'] = _CONNECTIONLIST
_sym_db.RegisterFileDescriptor(DESCRIPTOR)
Ber = _reflection.GeneratedProtocolMessageType('Ber', (_message.Message,), dict(
DESCRIPTOR = _BER,
__module__ = 'connectionServiceWithNotif_pb2'
_BER = DESCRIPTOR.message_types_by_name['Ber']
_CONNECTION = DESCRIPTOR.message_types_by_name['Connection']
_CONNECTIONLIST = DESCRIPTOR.message_types_by_name['ConnectionList']
_CONNECTION_LAYERPROTOCOLNAME = _CONNECTION.enum_types_by_name['LayerProtocolName']
Ber = _reflection.GeneratedProtocolMessageType('Ber', (_message.Message,), {
'DESCRIPTOR' : _BER,
'__module__' : 'connectionServiceWithNotif_pb2'
# @@protoc_insertion_point(class_scope:connection.Ber)
))
})
_sym_db.RegisterMessage(Ber)
Connection = _reflection.GeneratedProtocolMessageType('Connection', (_message.Message,), dict(
DESCRIPTOR = _CONNECTION,
__module__ = 'connectionServiceWithNotif_pb2'
Connection = _reflection.GeneratedProtocolMessageType('Connection', (_message.Message,), {
'DESCRIPTOR' : _CONNECTION,
'__module__' : 'connectionServiceWithNotif_pb2'
# @@protoc_insertion_point(class_scope:connection.Connection)
))
})
_sym_db.RegisterMessage(Connection)
ConnectionList = _reflection.GeneratedProtocolMessageType('ConnectionList', (_message.Message,), dict(
DESCRIPTOR = _CONNECTIONLIST,
__module__ = 'connectionServiceWithNotif_pb2'
ConnectionList = _reflection.GeneratedProtocolMessageType('ConnectionList', (_message.Message,), {
'DESCRIPTOR' : _CONNECTIONLIST,
'__module__' : 'connectionServiceWithNotif_pb2'
# @@protoc_insertion_point(class_scope:connection.ConnectionList)
))
})
_sym_db.RegisterMessage(ConnectionList)
_CONNECTIONSERVICEWITHNOTIF = _descriptor.ServiceDescriptor(
name='ConnectionServiceWithNotif',
full_name='connection.ConnectionServiceWithNotif',
file=DESCRIPTOR,
index=0,
serialized_options=None,
serialized_start=410,
serialized_end=635,
methods=[
_descriptor.MethodDescriptor(
name='CreateConnection',
full_name='connection.ConnectionServiceWithNotif.CreateConnection',
index=0,
containing_service=None,
input_type=_CONNECTION,
output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
serialized_options=None,
),
_descriptor.MethodDescriptor(
name='ListConnection',
full_name='connection.ConnectionServiceWithNotif.ListConnection',
index=1,
containing_service=None,
input_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
output_type=_CONNECTIONLIST,
serialized_options=None,
),
_descriptor.MethodDescriptor(
name='GetBer',
full_name='connection.ConnectionServiceWithNotif.GetBer',
index=2,
containing_service=None,
input_type=_CONNECTION,
output_type=_BER,
serialized_options=None,
),
])
_sym_db.RegisterServiceDescriptor(_CONNECTIONSERVICEWITHNOTIF)
DESCRIPTOR.services_by_name['ConnectionServiceWithNotif'] = _CONNECTIONSERVICEWITHNOTIF
_CONNECTIONSERVICEWITHNOTIF = DESCRIPTOR.services_by_name['ConnectionServiceWithNotif']
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
_BER._serialized_start=77
_BER._serialized_end=97
_CONNECTION._serialized_start=100
_CONNECTION._serialized_end=345
_CONNECTION_LAYERPROTOCOLNAME._serialized_start=304
_CONNECTION_LAYERPROTOCOLNAME._serialized_end=345
_CONNECTIONLIST._serialized_start=347
_CONNECTIONLIST._serialized_end=407
_CONNECTIONSERVICEWITHNOTIF._serialized_start=410
_CONNECTIONSERVICEWITHNOTIF._serialized_end=635
# @@protoc_insertion_point(module_scope)
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc
import connectionServiceWithNotif_pb2 as connectionServiceWithNotif__pb2
......@@ -6,76 +7,127 @@ from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
class ConnectionServiceWithNotifStub(object):
# missing associated documentation comment in .proto file
pass
def __init__(self, channel):
"""Constructor.
Args:
channel: A grpc.Channel.
"""
self.CreateConnection = channel.unary_unary(
'/connection.ConnectionServiceWithNotif/CreateConnection',
request_serializer=connectionServiceWithNotif__pb2.Connection.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.ListConnection = channel.unary_unary(
'/connection.ConnectionServiceWithNotif/ListConnection',
request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
response_deserializer=connectionServiceWithNotif__pb2.ConnectionList.FromString,
)
self.GetBer = channel.unary_stream(
'/connection.ConnectionServiceWithNotif/GetBer',
request_serializer=connectionServiceWithNotif__pb2.Connection.SerializeToString,
response_deserializer=connectionServiceWithNotif__pb2.Ber.FromString,
)
"""Missing associated documentation comment in .proto file."""
def __init__(self, channel):
"""Constructor.
Args:
channel: A grpc.Channel.
"""
self.CreateConnection = channel.unary_unary(
'/connection.ConnectionServiceWithNotif/CreateConnection',
request_serializer=connectionServiceWithNotif__pb2.Connection.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.ListConnection = channel.unary_unary(
'/connection.ConnectionServiceWithNotif/ListConnection',
request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
response_deserializer=connectionServiceWithNotif__pb2.ConnectionList.FromString,
)
self.GetBer = channel.unary_stream(
'/connection.ConnectionServiceWithNotif/GetBer',
request_serializer=connectionServiceWithNotif__pb2.Connection.SerializeToString,
response_deserializer=connectionServiceWithNotif__pb2.Ber.FromString,
)
class ConnectionServiceWithNotifServicer(object):
# missing associated documentation comment in .proto file
pass
def CreateConnection(self, request, context):
# missing associated documentation comment in .proto file
pass
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def ListConnection(self, request, context):
# missing associated documentation comment in .proto file
pass
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def GetBer(self, request, context):
# missing associated documentation comment in .proto file
pass
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
"""Missing associated documentation comment in .proto file."""
def CreateConnection(self, request, context):
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def ListConnection(self, request, context):
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def GetBer(self, request, context):
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def add_ConnectionServiceWithNotifServicer_to_server(servicer, server):
rpc_method_handlers = {
'CreateConnection': grpc.unary_unary_rpc_method_handler(
servicer.CreateConnection,
request_deserializer=connectionServiceWithNotif__pb2.Connection.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'ListConnection': grpc.unary_unary_rpc_method_handler(
servicer.ListConnection,
request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
response_serializer=connectionServiceWithNotif__pb2.ConnectionList.SerializeToString,
),
'GetBer': grpc.unary_stream_rpc_method_handler(
servicer.GetBer,
request_deserializer=connectionServiceWithNotif__pb2.Connection.FromString,
response_serializer=connectionServiceWithNotif__pb2.Ber.SerializeToString,
),
}
generic_handler = grpc.method_handlers_generic_handler(
'connection.ConnectionServiceWithNotif', rpc_method_handlers)
server.add_generic_rpc_handlers((generic_handler,))
rpc_method_handlers = {
'CreateConnection': grpc.unary_unary_rpc_method_handler(
servicer.CreateConnection,
request_deserializer=connectionServiceWithNotif__pb2.Connection.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'ListConnection': grpc.unary_unary_rpc_method_handler(
servicer.ListConnection,
request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
response_serializer=connectionServiceWithNotif__pb2.ConnectionList.SerializeToString,
),
'GetBer': grpc.unary_stream_rpc_method_handler(
servicer.GetBer,
request_deserializer=connectionServiceWithNotif__pb2.Connection.FromString,
response_serializer=connectionServiceWithNotif__pb2.Ber.SerializeToString,
),
}
generic_handler = grpc.method_handlers_generic_handler(
'connection.ConnectionServiceWithNotif', rpc_method_handlers)
server.add_generic_rpc_handlers((generic_handler,))
# This class is part of an EXPERIMENTAL API.
class ConnectionServiceWithNotif(object):
"""Missing associated documentation comment in .proto file."""
@staticmethod
def CreateConnection(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/connection.ConnectionServiceWithNotif/CreateConnection',
connectionServiceWithNotif__pb2.Connection.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def ListConnection(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/connection.ConnectionServiceWithNotif/ListConnection',
google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
connectionServiceWithNotif__pb2.ConnectionList.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def GetBer(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_stream(request, target, '/connection.ConnectionServiceWithNotif/GetBer',
connectionServiceWithNotif__pb2.Connection.SerializeToString,
connectionServiceWithNotif__pb2.Ber.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
{
"contexts": [
{
"context_id": {"context_uuid": {"uuid": "admin"}},
"topology_ids": [],
"service_ids": []
}
{"context_id": {"context_uuid": {"uuid": "admin"}}}
],
"topologies": [
{
"topology_id": {
"context_id": {"context_uuid": {"uuid": "admin"}},
"topology_uuid": {"uuid": "admin"}
},
"device_ids": [],
"link_ids": []
}
}
]
}
......@@ -4,7 +4,7 @@
"device_id": {"device_uuid": {"uuid": "R1"}},
"device_type": "packet-router",
"device_config": {"config_rules": [
{"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "10.0.2.15"}},
{"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "10.0.2.10"}},
{"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "8301"}},
{"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {
"username": "admin", "password": "admin",
......@@ -21,7 +21,7 @@
"device_id": {"device_uuid": {"uuid": "R2"}},
"device_type": "packet-router",
"device_config": {"config_rules": [
{"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "10.0.2.15"}},
{"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "10.0.2.10"}},
{"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "8302"}},
{"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {
"username": "admin", "password": "admin",
......@@ -38,7 +38,7 @@
"device_id": {"device_uuid": {"uuid": "R3"}},
"device_type": "packet-router",
"device_config": {"config_rules": [
{"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "10.0.2.15"}},
{"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "10.0.2.10"}},
{"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "8303"}},
{"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {
"username": "admin", "password": "admin",
......@@ -55,7 +55,7 @@
"device_id": {"device_uuid": {"uuid": "R4"}},
"device_type": "packet-router",
"device_config": {"config_rules": [
{"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "10.0.2.15"}},
{"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "10.0.2.10"}},
{"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "8304"}},
{"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {
"username": "admin", "password": "admin",
......@@ -72,7 +72,7 @@
"device_id": {"device_uuid": {"uuid": "OLS"}},
"device_type": "open-line-system",
"device_config": {"config_rules": [
{"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "10.0.2.15"}},
{"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "10.0.2.10"}},
{"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "8080"}},
{"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"timeout": 120}}}
]},
......
......@@ -48,9 +48,52 @@ from common.proto.context_pb2 import Link
LOGGER = logging.getLogger(__name__)
MAP_TAPI_UUIDS = {
"c3dbaa44-9cda-5d54-8f99-0f282362be65": "5b835e46-53f7-52e8-9c8a-077322679e36", # node-1-port-13-input => node-1-port-13-output
"1fb9ac86-b7ad-5d6d-87b1-a09d995f1ddd": "c9df6ece-1650-5078-876a-1e488a453625", # node-1-port-14-input => node-1-port-14-output
"aa109937-8291-5a09-853a-97bff463e569": "b245480f-027c-53a0-9320-fca5b9d7a1e1", # node-1-port-15-input => node-1-port-15-output
"6653ae16-42a3-56b5-adf3-71adda024a61": "ac356900-ce2f-5c15-b038-1b05e6f50bf7", # node-1-port-17-input => node-1-port-17-output
"d782ef85-a473-50b4-93b5-2af86024a42a": "dcfeedd3-2d47-5bc8-b31c-ed9f973d8b76", # node-2-port-13-input => node-2-port-13-output
"bbbd83ef-6053-55dc-ab08-06fb0c2bd081": "57bcf45b-eb47-5a9c-86d1-d9cff0c910fd", # node-2-port-14-input => node-2-port-14-output
"27cdf70d-4e48-53ff-bc4f-20addf6524c0": "fd31eff5-392e-5fb5-a6f4-6dfca583344d", # node-2-port-15-input => node-2-port-15-output
"55ac2364-fad8-5a05-ac2b-5003997ff89e": "d12a2591-7f4a-575d-8fda-0bc3d6b7ca32", # node-2-port-17-input => node-2-port-17-output
"59f44a3c-32a5-5abf-af58-45e6fa7ca657": "1977ef5c-4383-5195-9221-0cdf8ee26cb7", # node-3-port-13-input => node-3-port-13-output
"1be3f905-d553-5291-9906-47c0772d45aa": "9def067b-9a75-54df-8867-853f35a42e87", # node-3-port-14-input => node-3-port-14-output
"fb4ece7a-2dd1-593a-b6ca-a787b3b59fc5": "1f294257-132a-54ad-b653-ef8b7517c9d8", # node-3-port-15-input => node-3-port-15-output
"a571d2fe-c7f8-5ac8-b2af-8e5b92a558b0": "5b60a688-deac-567a-8e36-0d52e56fd4fc", # node-3-port-16-input => node-3-port-16-output
"9ea9dc53-2d6a-5f28-b81a-e930f7cbedf9": "2aec14c1-3a84-5cba-8f22-783bd0273cd0", # node-3-port-17-input => node-3-port-17-output
"9ec8e0f3-3378-55e0-bed1-be1fe120a1a9": "ece2ed55-ce16-59d3-8137-3f4cf17e67ab", # node-3-port-18-input => node-3-port-18-output
"a7e114aa-a3b6-52ae-b7b7-0e5fe4dd4d1c": "0a05e43d-a13c-5276-9839-613600f3ff28", # node-4-port-13-input => node-4-port-13-output
"4ca8357a-3468-51e6-bba8-65137486666f": "18926fdf-de5c-5a52-be88-cccc065e5e03", # node-4-port-14-input => node-4-port-14-output
"a7e9f06f-6fd2-594e-8a0c-25bfe8c652d7": "1adb9e17-e499-58dc-8aa2-881ed5ce9670", # node-4-port-15-input => node-4-port-15-output
"9f6a23b2-c71c-5559-8fb3-f76421bea1d9": "049bb1f1-cc04-5b72-8c0f-43891d9637bf", # node-4-port-16-input => node-4-port-16-output
"f1d74c96-41f5-5eb9-a160-a38463184934": "2206440b-ef66-5d3e-8da5-40608fb00a10", # node-4-port-17-input => node-4-port-17-output
"5b835e46-53f7-52e8-9c8a-077322679e36": "c3dbaa44-9cda-5d54-8f99-0f282362be65", # node-1-port-13-output => node-1-port-13-input
"c9df6ece-1650-5078-876a-1e488a453625": "1fb9ac86-b7ad-5d6d-87b1-a09d995f1ddd", # node-1-port-14-output => node-1-port-14-input
"b245480f-027c-53a0-9320-fca5b9d7a1e1": "aa109937-8291-5a09-853a-97bff463e569", # node-1-port-15-output => node-1-port-15-input
"ac356900-ce2f-5c15-b038-1b05e6f50bf7": "6653ae16-42a3-56b5-adf3-71adda024a61", # node-1-port-17-output => node-1-port-17-input
"dcfeedd3-2d47-5bc8-b31c-ed9f973d8b76": "d782ef85-a473-50b4-93b5-2af86024a42a", # node-2-port-13-output => node-2-port-13-input
"57bcf45b-eb47-5a9c-86d1-d9cff0c910fd": "bbbd83ef-6053-55dc-ab08-06fb0c2bd081", # node-2-port-14-output => node-2-port-14-input
"fd31eff5-392e-5fb5-a6f4-6dfca583344d": "27cdf70d-4e48-53ff-bc4f-20addf6524c0", # node-2-port-15-output => node-2-port-15-input
"d12a2591-7f4a-575d-8fda-0bc3d6b7ca32": "55ac2364-fad8-5a05-ac2b-5003997ff89e", # node-2-port-17-output => node-2-port-17-input
"1977ef5c-4383-5195-9221-0cdf8ee26cb7": "59f44a3c-32a5-5abf-af58-45e6fa7ca657", # node-3-port-13-output => node-3-port-13-input
"9def067b-9a75-54df-8867-853f35a42e87": "1be3f905-d553-5291-9906-47c0772d45aa", # node-3-port-14-output => node-3-port-14-input
"1f294257-132a-54ad-b653-ef8b7517c9d8": "fb4ece7a-2dd1-593a-b6ca-a787b3b59fc5", # node-3-port-15-output => node-3-port-15-input
"5b60a688-deac-567a-8e36-0d52e56fd4fc": "a571d2fe-c7f8-5ac8-b2af-8e5b92a558b0", # node-3-port-16-output => node-3-port-16-input
"2aec14c1-3a84-5cba-8f22-783bd0273cd0": "9ea9dc53-2d6a-5f28-b81a-e930f7cbedf9", # node-3-port-17-output => node-3-port-17-input
"ece2ed55-ce16-59d3-8137-3f4cf17e67ab": "9ec8e0f3-3378-55e0-bed1-be1fe120a1a9", # node-3-port-18-output => node-3-port-18-input
"0a05e43d-a13c-5276-9839-613600f3ff28": "a7e114aa-a3b6-52ae-b7b7-0e5fe4dd4d1c", # node-4-port-13-output => node-4-port-13-input
"18926fdf-de5c-5a52-be88-cccc065e5e03": "4ca8357a-3468-51e6-bba8-65137486666f", # node-4-port-14-output => node-4-port-14-input
"1adb9e17-e499-58dc-8aa2-881ed5ce9670": "a7e9f06f-6fd2-594e-8a0c-25bfe8c652d7", # node-4-port-15-output => node-4-port-15-input
"049bb1f1-cc04-5b72-8c0f-43891d9637bf": "9f6a23b2-c71c-5559-8fb3-f76421bea1d9", # node-4-port-16-output => node-4-port-16-input
"2206440b-ef66-5d3e-8da5-40608fb00a10": "f1d74c96-41f5-5eb9-a160-a38463184934", # node-4-port-17-output => node-4-port-17-input
}
def eropath_to_hops(
ero_path : List[Dict], endpoint_to_link_dict : Dict[Tuple[str, str, str], Tuple[Dict, Link]]
) -> List[Dict]:
LOGGER.debug('ero_path = {:s}'.format(str(ero_path)))
try:
path_hops = []
num_ero_hops = len(ero_path)
......@@ -68,13 +111,22 @@ def eropath_to_hops(
if num_ero_hops - 1 == len(path_hops): break
link_tuple = endpoint_to_link_dict[(device_uuid, endpoint_uuid, 'src')]
if link_tuple is None: raise Exception('Malformed path')
ingress = link_tuple[0]['link_endpoint_ids'][-1]
endpoint_key = (last_hop['device'], last_hop['egress_ep'])
link_tuple = endpoint_to_link_dict.get(endpoint_key)
ingress = next(iter([
ep_id for ep_id in link_tuple[0]['link_endpoint_ids']
if (ep_id['endpoint_id']['device_id'] == device_uuid) and\
(ep_id['endpoint_id']['endpoint_uuid'] != endpoint_uuid)
]), None)
if ingress['endpoint_id']['device_id'] != device_uuid: raise Exception('Malformed path')
ingress_ep = ingress['endpoint_id']['endpoint_uuid']
ingress_ep = MAP_TAPI_UUIDS.get(ingress_ep, ingress_ep)
path_hops.append({
'device': ingress['endpoint_id']['device_id'],
'ingress_ep': ingress['endpoint_id']['endpoint_uuid']
'ingress_ep': ingress_ep,
'egress_ep': endpoint_uuid,
})
LOGGER.debug('path_hops = {:s}'.format(str(path_hops)))
return path_hops
except:
LOGGER.exception('Unhandled exception: ero_path={:s} endpoint_to_link_dict={:s}'.format(
......
......@@ -1837,6 +1837,10 @@ public class Serializer {
return PolicyAction.PolicyRuleActionEnum.POLICYRULE_ACTION_ADD_SERVICE_CONSTRAINT;
case POLICY_RULE_ACTION_NO_ACTION:
return PolicyAction.PolicyRuleActionEnum.POLICYRULE_ACTION_NO_ACTION;
case POLICY_RULE_ACTION_CALL_SERVICE_RPC:
return PolicyAction.PolicyRuleActionEnum.POLICY_RULE_ACTION_CALL_SERVICE_RPC;
case POLICY_RULE_ACTION_RECALCULATE_PATH:
return PolicyAction.PolicyRuleActionEnum.POLICY_RULE_ACTION_RECALCULATE_PATH;
default:
return PolicyAction.PolicyRuleActionEnum.UNRECOGNIZED;
}
......@@ -1851,6 +1855,10 @@ public class Serializer {
return PolicyRuleActionEnum.POLICY_RULE_ACTION_ADD_SERVICE_CONFIGRULE;
case POLICYRULE_ACTION_ADD_SERVICE_CONSTRAINT:
return PolicyRuleActionEnum.POLICY_RULE_ACTION_ADD_SERVICE_CONSTRAINT;
case POLICY_RULE_ACTION_CALL_SERVICE_RPC:
return PolicyRuleActionEnum.POLICY_RULE_ACTION_CALL_SERVICE_RPC;
case POLICY_RULE_ACTION_RECALCULATE_PATH:
return PolicyRuleActionEnum.POLICY_RULE_ACTION_RECALCULATE_PATH;
case POLICYRULE_ACTION_NO_ACTION:
case UNRECOGNIZED:
default:
......
......@@ -136,6 +136,55 @@
{"device_id": {"device_uuid": {"uuid": "CS2-GW2"}}, "endpoint_uuid": {"uuid": "1/1"}},
{"device_id": {"device_uuid": {"uuid": "OLS"}}, "endpoint_uuid": {"uuid": "50296d99-58cc-5ce7-82f5-fc8ee4eec2ec"}}
]
},
{
"link_id": {"link_uuid": {"uuid": "CS1-GW1/10/1==DC1-GW/eth1"}}, "link_endpoint_ids": [
{"device_id": {"device_uuid": {"uuid": "CS1-GW1"}}, "endpoint_uuid": {"uuid": "10/1"}},
{"device_id": {"device_uuid": {"uuid": "DC1-GW"}}, "endpoint_uuid": {"uuid": "eth1"}}
]
},
{
"link_id": {"link_uuid": {"uuid": "CS1-GW2/10/1==DC1-GW/eth2"}}, "link_endpoint_ids": [
{"device_id": {"device_uuid": {"uuid": "CS1-GW2"}}, "endpoint_uuid": {"uuid": "10/1"}},
{"device_id": {"device_uuid": {"uuid": "DC1-GW"}}, "endpoint_uuid": {"uuid": "eth2"}}
]
},
{
"link_id": {"link_uuid": {"uuid": "CS2-GW1/10/1==DC2-GW/eth1"}}, "link_endpoint_ids": [
{"device_id": {"device_uuid": {"uuid": "CS2-GW1"}}, "endpoint_uuid": {"uuid": "10/1"}},
{"device_id": {"device_uuid": {"uuid": "DC2-GW"}}, "endpoint_uuid": {"uuid": "eth1"}}
]
},
{
"link_id": {"link_uuid": {"uuid": "CS2-GW2/10/1==DC2-GW/eth2"}}, "link_endpoint_ids": [
{"device_id": {"device_uuid": {"uuid": "CS2-GW2"}}, "endpoint_uuid": {"uuid": "10/1"}},
{"device_id": {"device_uuid": {"uuid": "DC2-GW"}}, "endpoint_uuid": {"uuid": "eth2"}}
]
},
{
"link_id": {"link_uuid": {"uuid": "OLS/aade6001-f00b-5e2f-a357-6a0a9d3de870==CS1-GW1/1/1"}}, "link_endpoint_ids": [
{"device_id": {"device_uuid": {"uuid": "OLS"}}, "endpoint_uuid": {"uuid": "aade6001-f00b-5e2f-a357-6a0a9d3de870"}},
{"device_id": {"device_uuid": {"uuid": "CS1-GW1"}}, "endpoint_uuid": {"uuid": "1/1"}}
]
},
{
"link_id": {"link_uuid": {"uuid": "OLS/eb287d83-f05e-53ec-ab5a-adf6bd2b5418==CS1-GW2/1/1"}}, "link_endpoint_ids": [
{"device_id": {"device_uuid": {"uuid": "OLS"}}, "endpoint_uuid": {"uuid": "eb287d83-f05e-53ec-ab5a-adf6bd2b5418"}},
{"device_id": {"device_uuid": {"uuid": "CS1-GW2"}}, "endpoint_uuid": {"uuid": "1/1"}}
]
},
{
"link_id": {"link_uuid": {"uuid": "OLS/0ef74f99-1acc-57bd-ab9d-4b958b06c513==CS2-GW1/1/1"}}, "link_endpoint_ids": [
{"device_id": {"device_uuid": {"uuid": "OLS"}}, "endpoint_uuid": {"uuid": "0ef74f99-1acc-57bd-ab9d-4b958b06c513"}},
{"device_id": {"device_uuid": {"uuid": "CS2-GW1"}}, "endpoint_uuid": {"uuid": "1/1"}}
]
},
{
"link_id": {"link_uuid": {"uuid": "OLS/50296d99-58cc-5ce7-82f5-fc8ee4eec2ec==CS2-GW2/1/1"}}, "link_endpoint_ids": [
{"device_id": {"device_uuid": {"uuid": "OLS"}}, "endpoint_uuid": {"uuid": "50296d99-58cc-5ce7-82f5-fc8ee4eec2ec"}},
{"device_id": {"device_uuid": {"uuid": "CS2-GW2"}}, "endpoint_uuid": {"uuid": "1/1"}}
]
}
]
}