Skip to content
Snippets Groups Projects
Commit 52021db0 authored by Lluis Gifre Renom's avatar Lluis Gifre Renom
Browse files

Revert "Merge branch 'feat/context-service' into 'master'"

This reverts merge request !3
parent a5a3da5d
No related branches found
No related tags found
No related merge requests found
Showing
with 1 addition and 1169 deletions
......@@ -49,7 +49,6 @@ coverage.xml
*.py,cover
.hypothesis/
.pytest_cache/
.benchmarks/
cover/
# Translations
......@@ -86,7 +85,7 @@ ipython_config.py
# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
.python-version
# .python-version
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
......@@ -118,9 +117,6 @@ venv.bak/
.spyderproject
.spyproject
# VSCode project settings
.vscode/
# Rope project settings
.ropeproject
......
apiVersion: apps/v1
kind: Deployment
metadata:
name: contextservice
spec:
selector:
matchLabels:
app: contextservice
template:
metadata:
labels:
app: contextservice
spec:
terminationGracePeriodSeconds: 5
containers:
- name: server
image: context_service:develop
imagePullPolicy: Never
ports:
- containerPort: 7070
env:
- name: DB_ENGINE
value: "redis"
- name: REDISDB_DATABASE_ID
value: "0"
- name: LOG_LEVEL
value: "DEBUG"
readinessProbe:
exec:
command: ["/bin/grpc_health_probe", "-addr=:7070"]
livenessProbe:
exec:
command: ["/bin/grpc_health_probe", "-addr=:7070"]
resources:
requests:
cpu: 250m
memory: 512Mi
limits:
cpu: 700m
memory: 1024Mi
---
apiVersion: v1
kind: Service
metadata:
name: contextservice
spec:
type: ClusterIP
selector:
app: contextservice
ports:
- name: grpc
port: 7070
targetPort: 7070
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: redisdb
spec:
selector:
matchLabels:
app: redisdb
replicas: 1
template:
metadata:
labels:
app: redisdb
version: v1
spec:
containers:
- name: redisdb
image: redis:6.2
ports:
- containerPort: 6379
---
apiVersion: v1
kind: Service
metadata:
name: redisdb
labels:
app: redisdb
spec:
type: ClusterIP
selector:
app: redisdb
ports:
- name: redisdb
protocol: TCP
port: 6379
targetPort: 6379
---
#!/usr/bin/env bash
# Make folder containing the script the root folder for its execution
cd $(dirname $0)
echo "BUILD context"
context/genproto.sh
docker build -t "context_service:develop" -f context/Dockerfile_develop --quiet .
docker build -t "context_service:test" -f context/Dockerfile_test --quiet .
cd monitoring
./genproto.sh
cd ..
......@@ -15,5 +7,3 @@ cd ..
echo "BUILD monitoring"
docker build -t "monitoring:dockerfile" -f monitoring/Dockerfile .
echo "Prune unused images"
docker image prune --force
import logging, json
LOGGER = logging.getLogger(__name__)
FILEPATH = 'data/topo_nsfnet.json'
class InMemoryDatabase:
def __init__(self, filepath=FILEPATH, **parameters):
with open(filepath, 'r') as f:
self.json_topology = json.loads(f.read())
def get_topology(self):
return(self.json_topology)
import logging, json, os, redis
#from .context_api.Context import Context
LOGGER = logging.getLogger(__name__)
# 60.0 seconds (aprox) in incremental steps from 0.002 till 29.99 seconds
RETRY_DELAY_INITIAL = 0.002
RETRY_DELAY_INCREMENT = 1.831
MAX_RETRIES = 15
URL_TEMPLATE = 'redis://{host}:{port}/{dbid}'
FILEPATH = 'data/topo_nsfnet.json'
class RedisDatabase:
def __init__(self, **parameters):
host = os.environ.get('REDISDB_SERVICE_HOST')
if(host is None): raise Exception('EnvironmentVariable(REDISDB_SERVICE_HOST) not found')
port = os.environ.get('REDISDB_SERVICE_PORT')
if(port is None): raise Exception('EnvironmentVariable(REDISDB_SERVICE_PORT) not found')
dbid = os.environ.get('REDISDB_DATABASE_ID')
if(dbid is None): raise Exception('EnvironmentVariable(REDISDB_DATABASE_ID) not found')
self.redis_url = URL_TEMPLATE.format(host=host, port=port, dbid=dbid)
self.handler = None
self.connect() # initialize self.handler and connect to server
def connect(self):
self.handler = redis.Redis.from_url(self.redis_url)
def close(self):
if(self.handler is not None): del self.handler
self.handler = None
def get_topology(self):
str_topology = self.handler.get('topology')
if(str_topology is None):
with open(FILEPATH, 'r') as f:
json_topology = json.loads(f.read())
str_topology = json.dumps(json_topology)
self.handler.setnx('topology', str_topology)
json_topology['source'] = 'redis missing, loaded from file'
else:
json_topology = json.loads(str_topology)
json_topology['source'] = 'redis found!'
return(json_topology)
#def __getattr__(self, method_name):
# # Expose all methods in the database engine as owned
# def method(*args, **kwargs):
# num_try, delay = 1, RETRY_DELAY_INITIAL
# while num_try <= MAX_RETRIES:
# try:
# handler_method = getattr(self.handler, method_name, None)
# if handler_method is None: raise Exception('Redis does not support method({})'.format(method_name))
# return handler_method(*args, **kwargs)
# except ConnectionError: # as e:
# #if('Channel is closed' not in str(e)): raise
# self.connect() # Try to reconnect
# time.sleep(delay)
# num_try, delay = num_try + 1, delay * RETRY_DELAY_INCREMENT
# raise Exception('Unable to reconnect to Redis after {}'.format(MAX_RETRIES))
# return(method)
# This decorator re-executes the decorated function when it raises an exception. It enables to control the exception
# classes that should trigger the re-execution, the maximum number of retries, the delay between retries, and set the
# execution of a preparation method before every retry. The delay is specfied by means of user-customizable functions.
#
# Delay functions should return a compute function with a single parameter, the number of retry. For instance:
# delay_linear(initial=0, increment=0):
# adds a constant delay of 0 seconds between retries
# delay_linear(initial=1, increment=0):
# adds a constant delay of 1 second between retries
# delay_linear(initial=1, increment=0.5, maximum=10):
# adds an increasing delay between retries, starting with 1 second, and incresing it linearly by steps of 0.5
# seconds, up to 10 seconds, every time an exception is caught within the current execution.
# E.g. 1.0, 1.5, 2.0, 2.5, ..., 10.0, 10.0, 10.0, ...
# delay_exponential(initial=1, increment=1): adds a constant delay of 1 second between retries
# delay_exponential(initial=1, increment=2, maximum=10):
# adds an increasing delay between retries, starting with 1 second, and incresing it exponentially by steps of 2
# seconds, up to 10 seconds, every time an exception is caught within the current execution.
# E.g. 1.0, 2.0, 4.0, 8.0, 10.0, 10.0, 10.0, ...
# Arguments:
# - exceptions: defines the set of exception classes to be catched for reconnection. Others are re-raised.
# By default all exceptions are re-raised.
# - max_retries: defines the maximum number of retries acceptable before giving up. By default, 0 retries are executed.
# - delay_function: defines the delay computation method to be used. By default, delay_linear with a fixed delay of 0.1
# seconds is used.
# - prepare_method_name: if not None, defines the name of the preparation method within the same class to be executed
# when an exception in exceptions is caught, and before running the next retry. By default, is None, meaning that no
# method is executed.
# - prepare_method_args: defines the list of positional arguments to be provided to the preparation method. If no
# preparation method is specified, the argument is silently ignored. By default, an empty list is defined.
# - prepare_method_kwargs: defines the dictionary of keyword arguments to be provided to the preparation method. If no
# preparation method is specified, the argument is silently ignored. By default, an empty dictionary is defined.
import time
def delay_linear(initial=0, increment=0, maximum=None):
def compute(num_try):
delay = initial + (num_try - 1) * increment
if maximum is not None: delay = max(delay, maximum)
return delay
return compute
def delay_exponential(initial=1, increment=1, maximum=None):
def compute(num_try):
delay = initial * (num_try - 1) ^ increment
if maximum is not None: delay = max(delay, maximum)
return delay
return compute
def retry(exceptions=set(), max_retries=0, delay_function=delay_linear(initial=0, increment=0),
prepare_method_name=None, prepare_method_args=[], prepare_method_kwargs={}):
def _reconnect(func):
def wrapper(self, *args, **kwargs):
if prepare_method_name is not None:
prepare_method = getattr(self, prepare_method_name, None)
if prepare_method is None: raise Exception('Prepare Method ({}) not found'.format(prepare_method_name))
num_try, given_up = 0, False
while not given_up:
try:
return func(self, *args, **kwargs)
except Exception as e:
if not isinstance(e, tuple(exceptions)): raise
num_try += 1
given_up = num_try > max_retries
if given_up: raise Exception('Giving up... {} tries failed'.format(max_retries))
if delay_function is not None: time.sleep(delay_function(num_try))
if prepare_method_name is not None: prepare_method(*prepare_method_args, **prepare_method_kwargs)
return(wrapper)
return(_reconnect)
import logging
# gRPC settings
SERVICE_PORT = 7070
MAX_WORKERS = 10
GRACE_PERIOD = 60
LOG_LEVEL = logging.WARNING
# Prometheus settings
METRICS_PORT = 8080
FROM python:3-slim
# Install dependencies
RUN apt-get --yes --quiet --quiet update && \
apt-get --yes --quiet --quiet install wget g++ && \
rm -rf /var/lib/apt/lists/*
# Set Python to show logs as they occur
ENV PYTHONUNBUFFERED=0
# Download the gRPC health probe
RUN GRPC_HEALTH_PROBE_VERSION=v0.2.0 && \
wget -qO/bin/grpc_health_probe https://github.com/grpc-ecosystem/grpc-health-probe/releases/download/${GRPC_HEALTH_PROBE_VERSION}/grpc_health_probe-linux-amd64 && \
chmod +x /bin/grpc_health_probe
# Get generic Python packages
RUN python3 -m pip install --upgrade pip setuptools wheel pip-tools
# Set working directory
WORKDIR /var/teraflow
# Create module sub-folders
RUN mkdir -p /var/teraflow/context
# Get Python packages per module
COPY context/requirements.in context/requirements.in
RUN pip-compile --output-file=context/requirements.txt context/requirements.in
RUN python3 -m pip install -r context/requirements.in
# Add files into working directory
COPY common/. common
COPY context/. context
# Start context service
ENTRYPOINT ["python", "-m", "context.service"]
FROM context_service:develop
# Run integration tests
ENTRYPOINT ["pytest", "-v", "--log-level=DEBUG", "context/tests/test_integration.py"]
import grpc, logging
from google.protobuf.json_format import MessageToDict
from common.tools.RetryDecorator import retry, delay_exponential
from context.proto.context_pb2_grpc import ContextServiceStub
LOGGER = logging.getLogger(__name__)
MAX_RETRIES = 15
DELAY_FUNCTION = delay_exponential(initial=0.01, increment=2.0, maximum=5.0)
class ContextClient:
def __init__(self, address, port):
self.endpoint = '{}:{}'.format(address, port)
LOGGER.debug('Creating channel to {}...'.format(self.endpoint))
self.channel = None
self.stub = None
self.connect()
LOGGER.debug('Channel created')
def connect(self):
self.channel = grpc.insecure_channel(self.endpoint)
self.stub = ContextServiceStub(self.channel)
def close(self):
if(self.channel is not None): self.channel.close()
self.channel = None
self.stub = None
@retry(exceptions=set(), max_retries=MAX_RETRIES, delay_function=DELAY_FUNCTION, prepare_method_name='connect')
def GetTopology(self, request):
LOGGER.debug('GetTopology request: {}'.format(request))
response = self.stub.GetTopology(request)
LOGGER.debug('GetTopology result: {}'.format(response))
return MessageToDict(
response, including_default_value_fields=True, preserving_proto_field_name=True,
use_integers_for_enums=False)
#!/bin/bash -eu
#
# Copyright 2018 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#!/bin/bash -e
# Make folder containing the script the root folder for its execution
cd $(dirname $0)
rm -rf proto/*.py
touch proto/__init__.py
python -m grpc_tools.protoc -I../../proto --python_out=proto --grpc_python_out=proto context.proto
sed -i -E 's/(import\ .*)_pb2/from context.proto \1_pb2/g' proto/context_pb2.py
sed -i -E 's/(import\ .*)_pb2/from context.proto \1_pb2/g' proto/context_pb2_grpc.py
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: context.proto
"""Generated protocol buffer code."""
from google.protobuf.internal import enum_type_wrapper
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
from google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
DESCRIPTOR = _descriptor.FileDescriptor(
name='context.proto',
package='context',
syntax='proto3',
serialized_options=None,
create_key=_descriptor._internal_create_key,
serialized_pb=b'\n\rcontext.proto\x12\x07\x63ontext\"\x07\n\x05\x45mpty\"{\n\x07\x43ontext\x12%\n\tcontextId\x18\x01 \x01(\x0b\x32\x12.context.ContextId\x12\x1f\n\x04topo\x18\x02 \x01(\x0b\x32\x11.context.Topology\x12(\n\x03\x63tl\x18\x03 \x01(\x0b\x32\x1b.context.TeraFlowController\"/\n\tContextId\x12\"\n\x0b\x63ontextUuid\x18\x01 \x01(\x0b\x32\r.context.Uuid\"m\n\x08Topology\x12#\n\x06topoId\x18\x02 \x01(\x0b\x32\x13.context.TopologyId\x12\x1f\n\x06\x64\x65vice\x18\x03 \x03(\x0b\x32\x0f.context.Device\x12\x1b\n\x04link\x18\x04 \x03(\x0b\x32\r.context.Link\"1\n\x04Link\x12)\n\x0c\x65ndpointList\x18\x01 \x03(\x0b\x32\x13.context.EndPointId\"R\n\nTopologyId\x12%\n\tcontextId\x18\x01 \x01(\x0b\x32\x12.context.ContextId\x12\x1d\n\x06topoId\x18\x02 \x01(\x0b\x32\r.context.Uuid\"?\n\nConstraint\x12\x17\n\x0f\x63onstraint_type\x18\x01 \x01(\t\x12\x18\n\x10\x63onstraint_value\x18\x02 \x01(\t\"\xda\x01\n\x06\x44\x65vice\x12$\n\tdevice_id\x18\x01 \x01(\x0b\x32\x11.context.DeviceId\x12\x13\n\x0b\x64\x65vice_type\x18\x02 \x01(\t\x12,\n\rdevice_config\x18\x03 \x01(\x0b\x32\x15.context.DeviceConfig\x12>\n\x14\x64\x65vOperationalStatus\x18\x04 \x01(\x0e\x32 .context.DeviceOperationalStatus\x12\'\n\x0c\x65ndpointList\x18\x05 \x03(\x0b\x32\x11.context.EndPoint\"%\n\x0c\x44\x65viceConfig\x12\x15\n\rdevice_config\x18\x01 \x01(\t\"C\n\x08\x45ndPoint\x12$\n\x07port_id\x18\x01 \x01(\x0b\x32\x13.context.EndPointId\x12\x11\n\tport_type\x18\x02 \x01(\t\"t\n\nEndPointId\x12#\n\x06topoId\x18\x01 \x01(\x0b\x32\x13.context.TopologyId\x12!\n\x06\x64\x65v_id\x18\x02 \x01(\x0b\x32\x11.context.DeviceId\x12\x1e\n\x07port_id\x18\x03 \x01(\x0b\x32\r.context.Uuid\",\n\x08\x44\x65viceId\x12 \n\tdevice_id\x18\x01 \x01(\x0b\x32\r.context.Uuid\"\x14\n\x04Uuid\x12\x0c\n\x04uuid\x18\x01 \x01(\t\"K\n\x12TeraFlowController\x12\"\n\x06\x63tl_id\x18\x01 \x01(\x0b\x32\x12.context.ContextId\x12\x11\n\tipaddress\x18\x02 \x01(\t\"Q\n\x14\x41uthenticationResult\x12\"\n\x06\x63tl_id\x18\x01 \x01(\x0b\x32\x12.context.ContextId\x12\x15\n\rauthenticated\x18\x02 \x01(\x08*4\n\x17\x44\x65viceOperationalStatus\x12\x0c\n\x08\x44ISABLED\x10\x00\x12\x0b\n\x07\x45NABLED\x10\x01\x32\x44\n\x0e\x43ontextService\x12\x32\n\x0bGetTopology\x12\x0e.context.Empty\x1a\x11.context.Topology\"\x00\x62\x06proto3'
)
_DEVICEOPERATIONALSTATUS = _descriptor.EnumDescriptor(
name='DeviceOperationalStatus',
full_name='context.DeviceOperationalStatus',
filename=None,
file=DESCRIPTOR,
create_key=_descriptor._internal_create_key,
values=[
_descriptor.EnumValueDescriptor(
name='DISABLED', index=0, number=0,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
_descriptor.EnumValueDescriptor(
name='ENABLED', index=1, number=1,
serialized_options=None,
type=None,
create_key=_descriptor._internal_create_key),
],
containing_type=None,
serialized_options=None,
serialized_start=1195,
serialized_end=1247,
)
_sym_db.RegisterEnumDescriptor(_DEVICEOPERATIONALSTATUS)
DeviceOperationalStatus = enum_type_wrapper.EnumTypeWrapper(_DEVICEOPERATIONALSTATUS)
DISABLED = 0
ENABLED = 1
_EMPTY = _descriptor.Descriptor(
name='Empty',
full_name='context.Empty',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=26,
serialized_end=33,
)
_CONTEXT = _descriptor.Descriptor(
name='Context',
full_name='context.Context',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='contextId', full_name='context.Context.contextId', index=0,
number=1, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='topo', full_name='context.Context.topo', index=1,
number=2, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='ctl', full_name='context.Context.ctl', index=2,
number=3, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=35,
serialized_end=158,
)
_CONTEXTID = _descriptor.Descriptor(
name='ContextId',
full_name='context.ContextId',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='contextUuid', full_name='context.ContextId.contextUuid', index=0,
number=1, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=160,
serialized_end=207,
)
_TOPOLOGY = _descriptor.Descriptor(
name='Topology',
full_name='context.Topology',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='topoId', full_name='context.Topology.topoId', index=0,
number=2, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='device', full_name='context.Topology.device', index=1,
number=3, 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, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='link', full_name='context.Topology.link', index=2,
number=4, 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, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=209,
serialized_end=318,
)
_LINK = _descriptor.Descriptor(
name='Link',
full_name='context.Link',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='endpointList', full_name='context.Link.endpointList', 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, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=320,
serialized_end=369,
)
_TOPOLOGYID = _descriptor.Descriptor(
name='TopologyId',
full_name='context.TopologyId',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='contextId', full_name='context.TopologyId.contextId', index=0,
number=1, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='topoId', full_name='context.TopologyId.topoId', index=1,
number=2, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=371,
serialized_end=453,
)
_CONSTRAINT = _descriptor.Descriptor(
name='Constraint',
full_name='context.Constraint',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='constraint_type', full_name='context.Constraint.constraint_type', 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, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='constraint_value', full_name='context.Constraint.constraint_value', 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, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=455,
serialized_end=518,
)
_DEVICE = _descriptor.Descriptor(
name='Device',
full_name='context.Device',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='device_id', full_name='context.Device.device_id', index=0,
number=1, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='device_type', full_name='context.Device.device_type', 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, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='device_config', full_name='context.Device.device_config', index=2,
number=3, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='devOperationalStatus', full_name='context.Device.devOperationalStatus', index=3,
number=4, 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, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='endpointList', full_name='context.Device.endpointList', index=4,
number=5, 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, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=521,
serialized_end=739,
)
_DEVICECONFIG = _descriptor.Descriptor(
name='DeviceConfig',
full_name='context.DeviceConfig',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='device_config', full_name='context.DeviceConfig.device_config', 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, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=741,
serialized_end=778,
)
_ENDPOINT = _descriptor.Descriptor(
name='EndPoint',
full_name='context.EndPoint',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='port_id', full_name='context.EndPoint.port_id', index=0,
number=1, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='port_type', full_name='context.EndPoint.port_type', 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, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=780,
serialized_end=847,
)
_ENDPOINTID = _descriptor.Descriptor(
name='EndPointId',
full_name='context.EndPointId',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='topoId', full_name='context.EndPointId.topoId', index=0,
number=1, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='dev_id', full_name='context.EndPointId.dev_id', index=1,
number=2, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='port_id', full_name='context.EndPointId.port_id', index=2,
number=3, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=849,
serialized_end=965,
)
_DEVICEID = _descriptor.Descriptor(
name='DeviceId',
full_name='context.DeviceId',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='device_id', full_name='context.DeviceId.device_id', index=0,
number=1, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=967,
serialized_end=1011,
)
_UUID = _descriptor.Descriptor(
name='Uuid',
full_name='context.Uuid',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='uuid', full_name='context.Uuid.uuid', 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, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=1013,
serialized_end=1033,
)
_TERAFLOWCONTROLLER = _descriptor.Descriptor(
name='TeraFlowController',
full_name='context.TeraFlowController',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='ctl_id', full_name='context.TeraFlowController.ctl_id', index=0,
number=1, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='ipaddress', full_name='context.TeraFlowController.ipaddress', 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, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=1035,
serialized_end=1110,
)
_AUTHENTICATIONRESULT = _descriptor.Descriptor(
name='AuthenticationResult',
full_name='context.AuthenticationResult',
filename=None,
file=DESCRIPTOR,
containing_type=None,
create_key=_descriptor._internal_create_key,
fields=[
_descriptor.FieldDescriptor(
name='ctl_id', full_name='context.AuthenticationResult.ctl_id', index=0,
number=1, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
_descriptor.FieldDescriptor(
name='authenticated', full_name='context.AuthenticationResult.authenticated', index=1,
number=2, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
],
extensions=[
],
nested_types=[],
enum_types=[
],
serialized_options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
serialized_start=1112,
serialized_end=1193,
)
_CONTEXT.fields_by_name['contextId'].message_type = _CONTEXTID
_CONTEXT.fields_by_name['topo'].message_type = _TOPOLOGY
_CONTEXT.fields_by_name['ctl'].message_type = _TERAFLOWCONTROLLER
_CONTEXTID.fields_by_name['contextUuid'].message_type = _UUID
_TOPOLOGY.fields_by_name['topoId'].message_type = _TOPOLOGYID
_TOPOLOGY.fields_by_name['device'].message_type = _DEVICE
_TOPOLOGY.fields_by_name['link'].message_type = _LINK
_LINK.fields_by_name['endpointList'].message_type = _ENDPOINTID
_TOPOLOGYID.fields_by_name['contextId'].message_type = _CONTEXTID
_TOPOLOGYID.fields_by_name['topoId'].message_type = _UUID
_DEVICE.fields_by_name['device_id'].message_type = _DEVICEID
_DEVICE.fields_by_name['device_config'].message_type = _DEVICECONFIG
_DEVICE.fields_by_name['devOperationalStatus'].enum_type = _DEVICEOPERATIONALSTATUS
_DEVICE.fields_by_name['endpointList'].message_type = _ENDPOINT
_ENDPOINT.fields_by_name['port_id'].message_type = _ENDPOINTID
_ENDPOINTID.fields_by_name['topoId'].message_type = _TOPOLOGYID
_ENDPOINTID.fields_by_name['dev_id'].message_type = _DEVICEID
_ENDPOINTID.fields_by_name['port_id'].message_type = _UUID
_DEVICEID.fields_by_name['device_id'].message_type = _UUID
_TERAFLOWCONTROLLER.fields_by_name['ctl_id'].message_type = _CONTEXTID
_AUTHENTICATIONRESULT.fields_by_name['ctl_id'].message_type = _CONTEXTID
DESCRIPTOR.message_types_by_name['Empty'] = _EMPTY
DESCRIPTOR.message_types_by_name['Context'] = _CONTEXT
DESCRIPTOR.message_types_by_name['ContextId'] = _CONTEXTID
DESCRIPTOR.message_types_by_name['Topology'] = _TOPOLOGY
DESCRIPTOR.message_types_by_name['Link'] = _LINK
DESCRIPTOR.message_types_by_name['TopologyId'] = _TOPOLOGYID
DESCRIPTOR.message_types_by_name['Constraint'] = _CONSTRAINT
DESCRIPTOR.message_types_by_name['Device'] = _DEVICE
DESCRIPTOR.message_types_by_name['DeviceConfig'] = _DEVICECONFIG
DESCRIPTOR.message_types_by_name['EndPoint'] = _ENDPOINT
DESCRIPTOR.message_types_by_name['EndPointId'] = _ENDPOINTID
DESCRIPTOR.message_types_by_name['DeviceId'] = _DEVICEID
DESCRIPTOR.message_types_by_name['Uuid'] = _UUID
DESCRIPTOR.message_types_by_name['TeraFlowController'] = _TERAFLOWCONTROLLER
DESCRIPTOR.message_types_by_name['AuthenticationResult'] = _AUTHENTICATIONRESULT
DESCRIPTOR.enum_types_by_name['DeviceOperationalStatus'] = _DEVICEOPERATIONALSTATUS
_sym_db.RegisterFileDescriptor(DESCRIPTOR)
Empty = _reflection.GeneratedProtocolMessageType('Empty', (_message.Message,), {
'DESCRIPTOR' : _EMPTY,
'__module__' : 'context_pb2'
# @@protoc_insertion_point(class_scope:context.Empty)
})
_sym_db.RegisterMessage(Empty)
Context = _reflection.GeneratedProtocolMessageType('Context', (_message.Message,), {
'DESCRIPTOR' : _CONTEXT,
'__module__' : 'context_pb2'
# @@protoc_insertion_point(class_scope:context.Context)
})
_sym_db.RegisterMessage(Context)
ContextId = _reflection.GeneratedProtocolMessageType('ContextId', (_message.Message,), {
'DESCRIPTOR' : _CONTEXTID,
'__module__' : 'context_pb2'
# @@protoc_insertion_point(class_scope:context.ContextId)
})
_sym_db.RegisterMessage(ContextId)
Topology = _reflection.GeneratedProtocolMessageType('Topology', (_message.Message,), {
'DESCRIPTOR' : _TOPOLOGY,
'__module__' : 'context_pb2'
# @@protoc_insertion_point(class_scope:context.Topology)
})
_sym_db.RegisterMessage(Topology)
Link = _reflection.GeneratedProtocolMessageType('Link', (_message.Message,), {
'DESCRIPTOR' : _LINK,
'__module__' : 'context_pb2'
# @@protoc_insertion_point(class_scope:context.Link)
})
_sym_db.RegisterMessage(Link)
TopologyId = _reflection.GeneratedProtocolMessageType('TopologyId', (_message.Message,), {
'DESCRIPTOR' : _TOPOLOGYID,
'__module__' : 'context_pb2'
# @@protoc_insertion_point(class_scope:context.TopologyId)
})
_sym_db.RegisterMessage(TopologyId)
Constraint = _reflection.GeneratedProtocolMessageType('Constraint', (_message.Message,), {
'DESCRIPTOR' : _CONSTRAINT,
'__module__' : 'context_pb2'
# @@protoc_insertion_point(class_scope:context.Constraint)
})
_sym_db.RegisterMessage(Constraint)
Device = _reflection.GeneratedProtocolMessageType('Device', (_message.Message,), {
'DESCRIPTOR' : _DEVICE,
'__module__' : 'context_pb2'
# @@protoc_insertion_point(class_scope:context.Device)
})
_sym_db.RegisterMessage(Device)
DeviceConfig = _reflection.GeneratedProtocolMessageType('DeviceConfig', (_message.Message,), {
'DESCRIPTOR' : _DEVICECONFIG,
'__module__' : 'context_pb2'
# @@protoc_insertion_point(class_scope:context.DeviceConfig)
})
_sym_db.RegisterMessage(DeviceConfig)
EndPoint = _reflection.GeneratedProtocolMessageType('EndPoint', (_message.Message,), {
'DESCRIPTOR' : _ENDPOINT,
'__module__' : 'context_pb2'
# @@protoc_insertion_point(class_scope:context.EndPoint)
})
_sym_db.RegisterMessage(EndPoint)
EndPointId = _reflection.GeneratedProtocolMessageType('EndPointId', (_message.Message,), {
'DESCRIPTOR' : _ENDPOINTID,
'__module__' : 'context_pb2'
# @@protoc_insertion_point(class_scope:context.EndPointId)
})
_sym_db.RegisterMessage(EndPointId)
DeviceId = _reflection.GeneratedProtocolMessageType('DeviceId', (_message.Message,), {
'DESCRIPTOR' : _DEVICEID,
'__module__' : 'context_pb2'
# @@protoc_insertion_point(class_scope:context.DeviceId)
})
_sym_db.RegisterMessage(DeviceId)
Uuid = _reflection.GeneratedProtocolMessageType('Uuid', (_message.Message,), {
'DESCRIPTOR' : _UUID,
'__module__' : 'context_pb2'
# @@protoc_insertion_point(class_scope:context.Uuid)
})
_sym_db.RegisterMessage(Uuid)
TeraFlowController = _reflection.GeneratedProtocolMessageType('TeraFlowController', (_message.Message,), {
'DESCRIPTOR' : _TERAFLOWCONTROLLER,
'__module__' : 'context_pb2'
# @@protoc_insertion_point(class_scope:context.TeraFlowController)
})
_sym_db.RegisterMessage(TeraFlowController)
AuthenticationResult = _reflection.GeneratedProtocolMessageType('AuthenticationResult', (_message.Message,), {
'DESCRIPTOR' : _AUTHENTICATIONRESULT,
'__module__' : 'context_pb2'
# @@protoc_insertion_point(class_scope:context.AuthenticationResult)
})
_sym_db.RegisterMessage(AuthenticationResult)
_CONTEXTSERVICE = _descriptor.ServiceDescriptor(
name='ContextService',
full_name='context.ContextService',
file=DESCRIPTOR,
index=0,
serialized_options=None,
create_key=_descriptor._internal_create_key,
serialized_start=1249,
serialized_end=1317,
methods=[
_descriptor.MethodDescriptor(
name='GetTopology',
full_name='context.ContextService.GetTopology',
index=0,
containing_service=None,
input_type=_EMPTY,
output_type=_TOPOLOGY,
serialized_options=None,
create_key=_descriptor._internal_create_key,
),
])
_sym_db.RegisterServiceDescriptor(_CONTEXTSERVICE)
DESCRIPTOR.services_by_name['ContextService'] = _CONTEXTSERVICE
# @@protoc_insertion_point(module_scope)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment