diff --git a/sros2/api/__init__.py b/sros2/api/__init__.py index 3ce91485..d05b54ae 100644 --- a/sros2/api/__init__.py +++ b/sros2/api/__init__.py @@ -334,20 +334,17 @@ def create_permission_file(path, name, domain_id, permissions_dict): permission_str += """\ <%s> - %s + %s -""" % (tag, 'rt', topic_name, tag) +""" % (tag, 'rt/' + topic_name, tag) # TODO(mikaelarguedas) remove this hardcoded handling for default parameter topics - # TODO(mikaelarguedas) remove the need for empty partition - # (required for Connext at startup), - # see https://github.com/ros2/sros2/issues/32#issuecomment-367388140 - service_partitions_prefix = { - 'Request': ['', 'rq/%s' % name], - 'Reply': ['', 'rr/%s' % name], + service_topic_prefixes = { + 'Request': 'rq/%s/' % name, + 'Reply': 'rr/%s/' % name, } default_parameter_topics = [ 'get_parameters', @@ -356,33 +353,26 @@ def create_permission_file(path, name, domain_id, permissions_dict): 'list_parameters', 'describe_parameters', ] - for key in service_partitions_prefix.keys(): - if key == 'Request': + for topic_suffix, topic_prefix in service_topic_prefixes.items(): + if topic_suffix == 'Request': pubsubtag = 'publish' else: pubsubtag = 'subscribe' - tag = 'partition' - partition_string = \ - '<%s>' % tag + \ - ('<%s>' % (tag, tag)).join( - [partition for partition in service_partitions_prefix[key]]) + \ - '' % tag - tag = 'topic' - topics_string = \ - '<%s>' % tag + \ - ('<%s>' % (tag, tag)).join( - [(topic + key) for topic in default_parameter_topics]) + \ - '' % tag - permission_str += """\ + service_topics = [ + (topic_prefix + topic + topic_suffix) for topic in default_parameter_topics] + topics_string = '' + for service_topic in service_topics: + topics_string += """ + %s""" % (service_topic) + permission_str += """ <%s> - %s + - - %s + %s -""" % (pubsubtag, partition_string, topics_string, pubsubtag) +""" % (pubsubtag, topics_string, pubsubtag) else: # no policy found: allow everything!