diff --git a/src/service/requirements.in b/src/service/requirements.in index 41034109feb6edd109557676013a85bf2866ed70..61f27a20b85f7afb0165c4daf17b60be74074cf1 100644 --- a/src/service/requirements.in +++ b/src/service/requirements.in @@ -14,7 +14,7 @@ anytree==2.8.0 +geopy==2.3.0 networkx==2.6.3 pydot==1.4.2 -redis==4.1.2 -geopy==2.3.0 \ No newline at end of file +redis==4.1.2 \ No newline at end of file diff --git a/src/service/service/ServiceServiceServicerImpl.py b/src/service/service/ServiceServiceServicerImpl.py index ad44ff183a2b3da846f205d0927eb5dbf894cf8b..50886d9d51afe9649c2423870fa8c3270b03a79e 100644 --- a/src/service/service/ServiceServiceServicerImpl.py +++ b/src/service/service/ServiceServiceServicerImpl.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -import grpc, json, logging +import copy, grpc, json, logging from typing import Optional from common.method_wrappers.Decorator import MetricsPool, safe_and_metered_rpc_method from common.method_wrappers.ServiceExceptions import AlreadyExistsException, InvalidArgumentException @@ -26,7 +26,6 @@ from pathcomp.frontend.client.PathCompClient import PathCompClient from .service_handler_api.ServiceHandlerFactory import ServiceHandlerFactory from .task_scheduler.TaskScheduler import TasksScheduler from .tools.GeodesicDistance import gps_distance -import copy LOGGER = logging.getLogger(__name__) @@ -121,18 +120,16 @@ class ServiceServiceServicerImpl(ServiceServiceServicer): for config_rule in request.service_config.config_rules: service.service_config.config_rules.add().CopyFrom(config_rule) # pylint: disable=no-member - for constraint in request.service_constraints: if constraint.WhichOneof('constraint') == 'endpoint_location': - context_client = ContextClient() device_list = context_client.ListDevices(Empty()) service_location = constraint.endpoint_location.location distances = {} for device in device_list.devices: for endpoint in device.device_endpoints: - if endpoint.endpoint_location.HasField('gps_position'): - distance = gps_distance(service_location.gps_position, endpoint.endpoint_location.gps_position) - distances[distance] = endpoint.endpoint_id + if not endpoint.endpoint_location.HasField('gps_position'): continue + distance = gps_distance(service_location.gps_position, endpoint.endpoint_location.gps_position) + distances[distance] = endpoint.endpoint_id closer_endpoint_uuid = distances[min(distances)] service.service_endpoint_ids.append(closer_endpoint_uuid)