Loading run_tests_locally.sh +3 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,9 @@ export INFLUXDB_DATABASE=$(kubectl --namespace $K8S_NAMESPACE get secrets influx # First destroy old coverage file rm -f $COVERAGEFILE # Useful flags for pytest: #-o log_cli=true -o log_file=device.log -o log_file_level=DEBUG coverage run --rcfile=$RCFILE --append -m pytest --log-level=INFO --verbose \ common/orm/tests/test_unitary.py \ common/message_broker/tests/test_unitary.py \ Loading src/device/service/DeviceServiceServicerImpl.py +26 −24 Original line number Diff line number Diff line Loading @@ -401,30 +401,32 @@ class DeviceServiceServicerImpl(DeviceServiceServicer): # requests. #self.monitoring_loops.remove(device_uuid) running_config_rules = [ (config_rule[0], json.dumps(config_rule[1], sort_keys=True)) for config_rule in driver.GetConfig() ] context_config_rules = { config_rule[1]: config_rule[2] for config_rule in get_config_rules(self.database, device_uuid, 'running') } # each in context, not in running => delete in context # each in running, not in context => add to context # each in context and in running, context.value != running.value => update in context running_config_rules_actions : List[Tuple[ORM_ConfigActionEnum, str, str]] = [] for config_rule_key,config_rule_value in running_config_rules: running_config_rules_actions.append((ORM_ConfigActionEnum.SET, config_rule_key, config_rule_value)) context_config_rules.pop(config_rule_key, None) for context_rule_key,context_rule_value in context_config_rules.items(): running_config_rules_actions.append((ORM_ConfigActionEnum.DELETE, context_rule_key, context_rule_value)) #msg = '[MonitorDeviceKpi] running_config_rules_action[{:d}]: {:s}' #for i,running_config_rules_action in enumerate(running_config_rules_actions): # LOGGER.info(msg.format(i, str(running_config_rules_action))) update_config(self.database, device_uuid, 'running', running_config_rules_actions) # Subscriptions are not stored as classical driver config. # TODO: consider adding it somehow in the configuration. # Warning: GetConfig might be very slow in OpenConfig devices #running_config_rules = [ # (config_rule[0], json.dumps(config_rule[1], sort_keys=True)) # for config_rule in driver.GetConfig() #] #context_config_rules = { # config_rule[1]: config_rule[2] # for config_rule in get_config_rules(self.database, device_uuid, 'running') #} ## each in context, not in running => delete in context ## each in running, not in context => add to context ## each in context and in running, context.value != running.value => update in context #running_config_rules_actions : List[Tuple[ORM_ConfigActionEnum, str, str]] = [] #for config_rule_key,config_rule_value in running_config_rules: # running_config_rules_actions.append((ORM_ConfigActionEnum.SET, config_rule_key, config_rule_value)) # context_config_rules.pop(config_rule_key, None) #for context_rule_key,context_rule_value in context_config_rules.items(): # running_config_rules_actions.append((ORM_ConfigActionEnum.DELETE, context_rule_key, context_rule_value)) ##msg = '[MonitorDeviceKpi] running_config_rules_action[{:d}]: {:s}' ##for i,running_config_rules_action in enumerate(running_config_rules_actions): ## LOGGER.info(msg.format(i, str(running_config_rules_action))) #update_config(self.database, device_uuid, 'running', running_config_rules_actions) sync_device_to_context(db_device, self.context_client) return Empty() src/device/service/driver_api/_Driver.py +0 −11 Original line number Diff line number Diff line Loading @@ -57,17 +57,6 @@ class _Driver: """ raise NotImplementedError() #def GetResource(self, endpoint_uuid : str) -> Optional[str]: # """ Retrieve the endpoint path for subscriptions. # Parameters: # endpoint_uuid : str # Target endpoint UUID # Returns: # resource_path : Optional[str] # The path of the endpoint, or None if it is not found. # """ # raise NotImplementedError() def SetConfig(self, resources : List[Tuple[str, Any]]) -> List[Union[bool, Exception]]: """ Create/Update configuration for a list of resources. Parameters: Loading src/device/service/drivers/emulated/EmulatedDriver.py +3 −2 Original line number Diff line number Diff line Loading @@ -113,6 +113,7 @@ class EmulatedDriver(_Driver): self.__lock = threading.Lock() self.__initial = TreeNode('.') self.__running = TreeNode('.') self.__subscriptions = TreeNode('.') endpoints = settings.get('endpoints', []) endpoint_resources = [] Loading Loading @@ -286,7 +287,7 @@ class EmulatedDriver(_Driver): end_date=end_date, timezone=pytz.utc) subscription_path = resource_path + ['{:.3f}:{:.3f}'.format(sampling_duration, sampling_interval)] set_subnode_value(resolver, self.__running, subscription_path, job) set_subnode_value(resolver, self.__subscriptions, subscription_path, job) results.append(True) return results Loading @@ -312,7 +313,7 @@ class EmulatedDriver(_Driver): continue subscription_path = resource_path + ['{:.3f}:{:.3f}'.format(sampling_duration, sampling_interval)] subscription_node = get_subnode(resolver, self.__running, subscription_path) subscription_node = get_subnode(resolver, self.__subscriptions, subscription_path) # if not found, resource_node is None if subscription_node is None: Loading src/device/service/drivers/openconfig/OpenConfigDriver.py +179 −120 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
run_tests_locally.sh +3 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,9 @@ export INFLUXDB_DATABASE=$(kubectl --namespace $K8S_NAMESPACE get secrets influx # First destroy old coverage file rm -f $COVERAGEFILE # Useful flags for pytest: #-o log_cli=true -o log_file=device.log -o log_file_level=DEBUG coverage run --rcfile=$RCFILE --append -m pytest --log-level=INFO --verbose \ common/orm/tests/test_unitary.py \ common/message_broker/tests/test_unitary.py \ Loading
src/device/service/DeviceServiceServicerImpl.py +26 −24 Original line number Diff line number Diff line Loading @@ -401,30 +401,32 @@ class DeviceServiceServicerImpl(DeviceServiceServicer): # requests. #self.monitoring_loops.remove(device_uuid) running_config_rules = [ (config_rule[0], json.dumps(config_rule[1], sort_keys=True)) for config_rule in driver.GetConfig() ] context_config_rules = { config_rule[1]: config_rule[2] for config_rule in get_config_rules(self.database, device_uuid, 'running') } # each in context, not in running => delete in context # each in running, not in context => add to context # each in context and in running, context.value != running.value => update in context running_config_rules_actions : List[Tuple[ORM_ConfigActionEnum, str, str]] = [] for config_rule_key,config_rule_value in running_config_rules: running_config_rules_actions.append((ORM_ConfigActionEnum.SET, config_rule_key, config_rule_value)) context_config_rules.pop(config_rule_key, None) for context_rule_key,context_rule_value in context_config_rules.items(): running_config_rules_actions.append((ORM_ConfigActionEnum.DELETE, context_rule_key, context_rule_value)) #msg = '[MonitorDeviceKpi] running_config_rules_action[{:d}]: {:s}' #for i,running_config_rules_action in enumerate(running_config_rules_actions): # LOGGER.info(msg.format(i, str(running_config_rules_action))) update_config(self.database, device_uuid, 'running', running_config_rules_actions) # Subscriptions are not stored as classical driver config. # TODO: consider adding it somehow in the configuration. # Warning: GetConfig might be very slow in OpenConfig devices #running_config_rules = [ # (config_rule[0], json.dumps(config_rule[1], sort_keys=True)) # for config_rule in driver.GetConfig() #] #context_config_rules = { # config_rule[1]: config_rule[2] # for config_rule in get_config_rules(self.database, device_uuid, 'running') #} ## each in context, not in running => delete in context ## each in running, not in context => add to context ## each in context and in running, context.value != running.value => update in context #running_config_rules_actions : List[Tuple[ORM_ConfigActionEnum, str, str]] = [] #for config_rule_key,config_rule_value in running_config_rules: # running_config_rules_actions.append((ORM_ConfigActionEnum.SET, config_rule_key, config_rule_value)) # context_config_rules.pop(config_rule_key, None) #for context_rule_key,context_rule_value in context_config_rules.items(): # running_config_rules_actions.append((ORM_ConfigActionEnum.DELETE, context_rule_key, context_rule_value)) ##msg = '[MonitorDeviceKpi] running_config_rules_action[{:d}]: {:s}' ##for i,running_config_rules_action in enumerate(running_config_rules_actions): ## LOGGER.info(msg.format(i, str(running_config_rules_action))) #update_config(self.database, device_uuid, 'running', running_config_rules_actions) sync_device_to_context(db_device, self.context_client) return Empty()
src/device/service/driver_api/_Driver.py +0 −11 Original line number Diff line number Diff line Loading @@ -57,17 +57,6 @@ class _Driver: """ raise NotImplementedError() #def GetResource(self, endpoint_uuid : str) -> Optional[str]: # """ Retrieve the endpoint path for subscriptions. # Parameters: # endpoint_uuid : str # Target endpoint UUID # Returns: # resource_path : Optional[str] # The path of the endpoint, or None if it is not found. # """ # raise NotImplementedError() def SetConfig(self, resources : List[Tuple[str, Any]]) -> List[Union[bool, Exception]]: """ Create/Update configuration for a list of resources. Parameters: Loading
src/device/service/drivers/emulated/EmulatedDriver.py +3 −2 Original line number Diff line number Diff line Loading @@ -113,6 +113,7 @@ class EmulatedDriver(_Driver): self.__lock = threading.Lock() self.__initial = TreeNode('.') self.__running = TreeNode('.') self.__subscriptions = TreeNode('.') endpoints = settings.get('endpoints', []) endpoint_resources = [] Loading Loading @@ -286,7 +287,7 @@ class EmulatedDriver(_Driver): end_date=end_date, timezone=pytz.utc) subscription_path = resource_path + ['{:.3f}:{:.3f}'.format(sampling_duration, sampling_interval)] set_subnode_value(resolver, self.__running, subscription_path, job) set_subnode_value(resolver, self.__subscriptions, subscription_path, job) results.append(True) return results Loading @@ -312,7 +313,7 @@ class EmulatedDriver(_Driver): continue subscription_path = resource_path + ['{:.3f}:{:.3f}'.format(sampling_duration, sampling_interval)] subscription_node = get_subnode(resolver, self.__running, subscription_path) subscription_node = get_subnode(resolver, self.__subscriptions, subscription_path) # if not found, resource_node is None if subscription_node is None: Loading
src/device/service/drivers/openconfig/OpenConfigDriver.py +179 −120 File changed.Preview size limit exceeded, changes collapsed. Show changes