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
%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><%s>' % (tag, tag)).join(
- [partition for partition in service_partitions_prefix[key]]) + \
- '%s>' % tag
- tag = 'topic'
- topics_string = \
- '<%s>' % tag + \
- ('%s><%s>' % (tag, tag)).join(
- [(topic + key) for topic in default_parameter_topics]) + \
- '%s>' % 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
%s>
-""" % (pubsubtag, partition_string, topics_string, pubsubtag)
+""" % (pubsubtag, topics_string, pubsubtag)
else:
# no policy found: allow everything!