grpc: removed get_node_links, added links to get_node instead
This commit is contained in:
parent
f271b0289e
commit
38e162aec5
7 changed files with 28 additions and 136 deletions
|
@ -531,20 +531,6 @@ class CoreGrpcClient:
|
||||||
)
|
)
|
||||||
return self.stub.GetNodeTerminal(request)
|
return self.stub.GetNodeTerminal(request)
|
||||||
|
|
||||||
def get_node_links(
|
|
||||||
self, session_id: int, node_id: int
|
|
||||||
) -> core_pb2.GetNodeLinksResponse:
|
|
||||||
"""
|
|
||||||
Get current links for a node.
|
|
||||||
|
|
||||||
:param session_id: session id
|
|
||||||
:param node_id: node id
|
|
||||||
:return: response with a list of links
|
|
||||||
:raises grpc.RpcError: when session or node doesn't exist
|
|
||||||
"""
|
|
||||||
request = core_pb2.GetNodeLinksRequest(session_id=session_id, node_id=node_id)
|
|
||||||
return self.stub.GetNodeLinks(request)
|
|
||||||
|
|
||||||
def add_link(
|
def add_link(
|
||||||
self,
|
self,
|
||||||
session_id: int,
|
session_id: int,
|
||||||
|
|
|
@ -550,7 +550,7 @@ class CoreGrpcClient:
|
||||||
|
|
||||||
def get_node(
|
def get_node(
|
||||||
self, session_id: int, node_id: int
|
self, session_id: int, node_id: int
|
||||||
) -> Tuple[wrappers.Node, List[wrappers.Interface]]:
|
) -> Tuple[wrappers.Node, List[wrappers.Interface], List[wrappers.Link]]:
|
||||||
"""
|
"""
|
||||||
Get node details.
|
Get node details.
|
||||||
|
|
||||||
|
@ -566,7 +566,11 @@ class CoreGrpcClient:
|
||||||
for iface_proto in response.ifaces:
|
for iface_proto in response.ifaces:
|
||||||
iface = wrappers.Interface.from_proto(iface_proto)
|
iface = wrappers.Interface.from_proto(iface_proto)
|
||||||
ifaces.append(iface)
|
ifaces.append(iface)
|
||||||
return node, ifaces
|
links = []
|
||||||
|
for link_proto in response.links:
|
||||||
|
link = wrappers.Link.from_proto(link_proto)
|
||||||
|
links.append(link)
|
||||||
|
return node, ifaces, links
|
||||||
|
|
||||||
def edit_node(
|
def edit_node(
|
||||||
self,
|
self,
|
||||||
|
|
|
@ -647,7 +647,8 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
|
||||||
iface_proto = grpcutils.iface_to_proto(request.node_id, iface)
|
iface_proto = grpcutils.iface_to_proto(request.node_id, iface)
|
||||||
ifaces.append(iface_proto)
|
ifaces.append(iface_proto)
|
||||||
node_proto = grpcutils.get_node_proto(session, node)
|
node_proto = grpcutils.get_node_proto(session, node)
|
||||||
return core_pb2.GetNodeResponse(node=node_proto, ifaces=ifaces)
|
links = get_links(node)
|
||||||
|
return core_pb2.GetNodeResponse(node=node_proto, ifaces=ifaces, links=links)
|
||||||
|
|
||||||
def MoveNodes(
|
def MoveNodes(
|
||||||
self,
|
self,
|
||||||
|
@ -778,22 +779,6 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
|
||||||
terminal = node.termcmdstring("/bin/bash")
|
terminal = node.termcmdstring("/bin/bash")
|
||||||
return core_pb2.GetNodeTerminalResponse(terminal=terminal)
|
return core_pb2.GetNodeTerminalResponse(terminal=terminal)
|
||||||
|
|
||||||
def GetNodeLinks(
|
|
||||||
self, request: core_pb2.GetNodeLinksRequest, context: ServicerContext
|
|
||||||
) -> core_pb2.GetNodeLinksResponse:
|
|
||||||
"""
|
|
||||||
Retrieve all links form a requested node
|
|
||||||
|
|
||||||
:param request: get-node-links request
|
|
||||||
:param context: context object
|
|
||||||
:return: get-node-links response
|
|
||||||
"""
|
|
||||||
logger.debug("get node links: %s", request)
|
|
||||||
session = self.get_session(request.session_id, context)
|
|
||||||
node = self.get_node(session, request.node_id, context, NodeBase)
|
|
||||||
links = get_links(node)
|
|
||||||
return core_pb2.GetNodeLinksResponse(links=links)
|
|
||||||
|
|
||||||
def AddLink(
|
def AddLink(
|
||||||
self, request: core_pb2.AddLinkRequest, context: ServicerContext
|
self, request: core_pb2.AddLinkRequest, context: ServicerContext
|
||||||
) -> core_pb2.AddLinkResponse:
|
) -> core_pb2.AddLinkResponse:
|
||||||
|
|
|
@ -740,20 +740,22 @@ class Node:
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class Session:
|
class Session:
|
||||||
id: int
|
id: int = None
|
||||||
state: SessionState
|
state: SessionState = SessionState.DEFINITION
|
||||||
nodes: Dict[int, Node]
|
nodes: Dict[int, Node] = field(default_factory=dict)
|
||||||
links: List[Link]
|
links: List[Link] = field(default_factory=list)
|
||||||
dir: str
|
dir: str = None
|
||||||
user: str
|
user: str = None
|
||||||
default_services: Dict[str, Set[str]]
|
default_services: Dict[str, Set[str]] = field(default_factory=dict)
|
||||||
location: SessionLocation
|
location: SessionLocation = SessionLocation(
|
||||||
hooks: Dict[str, Hook]
|
x=0.0, y=0.0, z=0.0, lat=47.57917, lon=-122.13232, alt=2.0, scale=150.0
|
||||||
emane_models: List[str]
|
)
|
||||||
emane_config: Dict[str, ConfigOption]
|
hooks: Dict[str, Hook] = field(default_factory=dict)
|
||||||
metadata: Dict[str, str]
|
emane_models: List[str] = field(default_factory=list)
|
||||||
file: Path
|
emane_config: Dict[str, ConfigOption] = field(default_factory=dict)
|
||||||
options: Dict[str, ConfigOption]
|
metadata: Dict[str, str] = field(default_factory=dict)
|
||||||
|
file: Path = None
|
||||||
|
options: Dict[str, ConfigOption] = field(default_factory=dict)
|
||||||
|
|
||||||
def set_node(self, node: Node) -> None:
|
def set_node(self, node: Node) -> None:
|
||||||
self.nodes[node.id] = node
|
self.nodes[node.id] = node
|
||||||
|
|
|
@ -57,8 +57,6 @@ service CoreApi {
|
||||||
}
|
}
|
||||||
|
|
||||||
// link rpc
|
// link rpc
|
||||||
rpc GetNodeLinks (GetNodeLinksRequest) returns (GetNodeLinksResponse) {
|
|
||||||
}
|
|
||||||
rpc AddLink (AddLinkRequest) returns (AddLinkResponse) {
|
rpc AddLink (AddLinkRequest) returns (AddLinkResponse) {
|
||||||
}
|
}
|
||||||
rpc EditLink (EditLinkRequest) returns (EditLinkResponse) {
|
rpc EditLink (EditLinkRequest) returns (EditLinkResponse) {
|
||||||
|
@ -378,6 +376,7 @@ message GetNodeRequest {
|
||||||
message GetNodeResponse {
|
message GetNodeResponse {
|
||||||
Node node = 1;
|
Node node = 1;
|
||||||
repeated Interface ifaces = 2;
|
repeated Interface ifaces = 2;
|
||||||
|
repeated Link links = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
message EditNodeRequest {
|
message EditNodeRequest {
|
||||||
|
@ -438,15 +437,6 @@ message NodeCommandResponse {
|
||||||
int32 return_code = 2;
|
int32 return_code = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
message GetNodeLinksRequest {
|
|
||||||
int32 session_id = 1;
|
|
||||||
int32 node_id = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
message GetNodeLinksResponse {
|
|
||||||
repeated Link links = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
message AddLinkRequest {
|
message AddLinkRequest {
|
||||||
int32 session_id = 1;
|
int32 session_id = 1;
|
||||||
Link link = 2;
|
Link link = 2;
|
||||||
|
|
|
@ -265,19 +265,6 @@ class TestGrpc:
|
||||||
assert response.node_id is not None
|
assert response.node_id is not None
|
||||||
assert session.get_node(response.node_id, CoreNode) is not None
|
assert session.get_node(response.node_id, CoreNode) is not None
|
||||||
|
|
||||||
def test_get_node(self, grpc_server: CoreGrpcServer):
|
|
||||||
# given
|
|
||||||
client = CoreGrpcClient()
|
|
||||||
session = grpc_server.coreemu.create_session()
|
|
||||||
node = session.add_node(CoreNode)
|
|
||||||
|
|
||||||
# then
|
|
||||||
with client.context_connect():
|
|
||||||
response = client.get_node(session.id, node.id)
|
|
||||||
|
|
||||||
# then
|
|
||||||
assert response.node.id == node.id
|
|
||||||
|
|
||||||
def test_edit_node(self, grpc_server: CoreGrpcServer):
|
def test_edit_node(self, grpc_server: CoreGrpcServer):
|
||||||
# given
|
# given
|
||||||
client = CoreGrpcClient()
|
client = CoreGrpcClient()
|
||||||
|
@ -379,38 +366,6 @@ class TestGrpc:
|
||||||
assert response.result is True
|
assert response.result is True
|
||||||
assert response.session_id is not None
|
assert response.session_id is not None
|
||||||
|
|
||||||
def test_get_node_links(self, grpc_server: CoreGrpcServer, ip_prefixes: IpPrefixes):
|
|
||||||
# given
|
|
||||||
client = CoreGrpcClient()
|
|
||||||
session = grpc_server.coreemu.create_session()
|
|
||||||
switch = session.add_node(SwitchNode)
|
|
||||||
node = session.add_node(CoreNode)
|
|
||||||
iface_data = ip_prefixes.create_iface(node)
|
|
||||||
session.add_link(node.id, switch.id, iface_data)
|
|
||||||
|
|
||||||
# then
|
|
||||||
with client.context_connect():
|
|
||||||
response = client.get_node_links(session.id, switch.id)
|
|
||||||
|
|
||||||
# then
|
|
||||||
assert len(response.links) == 1
|
|
||||||
|
|
||||||
def test_get_node_links_exception(
|
|
||||||
self, grpc_server: CoreGrpcServer, ip_prefixes: IpPrefixes
|
|
||||||
):
|
|
||||||
# given
|
|
||||||
client = CoreGrpcClient()
|
|
||||||
session = grpc_server.coreemu.create_session()
|
|
||||||
switch = session.add_node(SwitchNode)
|
|
||||||
node = session.add_node(CoreNode)
|
|
||||||
iface_data = ip_prefixes.create_iface(node)
|
|
||||||
session.add_link(node.id, switch.id, iface_data)
|
|
||||||
|
|
||||||
# then
|
|
||||||
with pytest.raises(grpc.RpcError):
|
|
||||||
with client.context_connect():
|
|
||||||
client.get_node_links(session.id, 3)
|
|
||||||
|
|
||||||
def test_add_link(self, grpc_server: CoreGrpcServer, iface_helper: InterfaceHelper):
|
def test_add_link(self, grpc_server: CoreGrpcServer, iface_helper: InterfaceHelper):
|
||||||
# given
|
# given
|
||||||
client = CoreGrpcClient()
|
client = CoreGrpcClient()
|
||||||
|
|
|
@ -316,10 +316,12 @@ class TestGrpcw:
|
||||||
|
|
||||||
# then
|
# then
|
||||||
with client.context_connect():
|
with client.context_connect():
|
||||||
get_node, ifaces = client.get_node(session.id, node.id)
|
get_node, ifaces, links = client.get_node(session.id, node.id)
|
||||||
|
|
||||||
# then
|
# then
|
||||||
assert node.id == get_node.id
|
assert node.id == get_node.id
|
||||||
|
assert len(ifaces) == 0
|
||||||
|
assert len(links) == 0
|
||||||
|
|
||||||
def test_edit_node(self, grpc_server: CoreGrpcServer):
|
def test_edit_node(self, grpc_server: CoreGrpcServer):
|
||||||
# given
|
# given
|
||||||
|
@ -436,38 +438,6 @@ class TestGrpcw:
|
||||||
assert result is True
|
assert result is True
|
||||||
assert session_id is not None
|
assert session_id is not None
|
||||||
|
|
||||||
def test_get_node_links(self, grpc_server: CoreGrpcServer, ip_prefixes: IpPrefixes):
|
|
||||||
# given
|
|
||||||
client = CoreGrpcClient()
|
|
||||||
session = grpc_server.coreemu.create_session()
|
|
||||||
switch = session.add_node(SwitchNode)
|
|
||||||
node = session.add_node(CoreNode)
|
|
||||||
iface_data = ip_prefixes.create_iface(node)
|
|
||||||
session.add_link(node.id, switch.id, iface_data)
|
|
||||||
|
|
||||||
# then
|
|
||||||
with client.context_connect():
|
|
||||||
links = client.get_node_links(session.id, switch.id)
|
|
||||||
|
|
||||||
# then
|
|
||||||
assert len(links) == 1
|
|
||||||
|
|
||||||
def test_get_node_links_exception(
|
|
||||||
self, grpc_server: CoreGrpcServer, ip_prefixes: IpPrefixes
|
|
||||||
):
|
|
||||||
# given
|
|
||||||
client = CoreGrpcClient()
|
|
||||||
session = grpc_server.coreemu.create_session()
|
|
||||||
switch = session.add_node(SwitchNode)
|
|
||||||
node = session.add_node(CoreNode)
|
|
||||||
iface_data = ip_prefixes.create_iface(node)
|
|
||||||
session.add_link(node.id, switch.id, iface_data)
|
|
||||||
|
|
||||||
# then
|
|
||||||
with pytest.raises(grpc.RpcError):
|
|
||||||
with client.context_connect():
|
|
||||||
client.get_node_links(session.id, 3)
|
|
||||||
|
|
||||||
def test_add_link(self, grpc_server: CoreGrpcServer):
|
def test_add_link(self, grpc_server: CoreGrpcServer):
|
||||||
# given
|
# given
|
||||||
client = CoreGrpcClient()
|
client = CoreGrpcClient()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue