config: prefer using $log-levels prop in 2.1
authorPhilippe Proulx <eeppeliteloop@gmail.com>
Sat, 12 Mar 2016 05:55:56 +0000 (00:55 -0500)
committerPhilippe Proulx <eeppeliteloop@gmail.com>
Thu, 17 Mar 2016 16:38:10 +0000 (12:38 -0400)
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
README.md
barectf/config.py
doc/examples/linux-fs-simple/config.yaml
doc/examples/parallella/config.yaml

index 4fe944a12bf64697d2676413146e3908503981bf..e4c9e59a09d31ad48b8e71e165611475fcaf97a6 100644 (file)
--- a/README.md
+++ b/README.md
@@ -288,7 +288,7 @@ as well as a corresponding CTF metadata file.
 | Property | Type | Description | Required? | Default value |
 |---|---|---|---|---|
 | `type-aliases` | Associative array of strings (alias names) to [type objects](#type-objects) or strings (previous alias names) | Type aliases to be used in trace, stream, and event objects | Optional | `{}` |
-| `log-levels` | Associative array of strings (log level names) to log level constant integers | Log levels to be used in event objects | Optional | `{}` |
+| `$log-levels` | Associative array of strings (log level names) to log level constant integers | Log levels to be used in event objects | Optional | `{}` |
 | `clocks` | Associative array of strings (clock names) to [clock objects](#clock-object) | Trace clocks | Optional | `{}` |
 | `env` | Associative array of strings (names) to strings or integers (values) | Trace environment variables | Optional | `{}` |
 | `trace` | [Trace object](#trace-object) | Metadata common to the whole trace | Required | N/A |
@@ -333,7 +333,7 @@ type-aliases:
     class: array
     length: 16
     element-type: byte
-log-levels:
+$log-levels:
   emerg: 0
   alert: 1
   critical: 2
@@ -585,7 +585,7 @@ A CTF event.
 | `payload-type` | [Type object](#type-objects) or string (alias name) | Type of event payload (must be a [structure type object](#structure-type-object)) | Required | N/A |
 
 Available log level names, for a given event, are defined by the
-`log-levels` property of the [metadata object](#metadata-object)
+`$log-levels` property of the [metadata object](#metadata-object)
 containing it.
 
 Each field of the event context structure type (`context-type` property)
index 080c004cba1aaac6aa68862fc157934792e60ed2..da03d13a1672b2d9d46d57623a901859b26059ac 100644 (file)
@@ -1921,13 +1921,29 @@ class _YamlConfigParser:
     def _register_log_levels(self, metadata_node):
         self._log_levels = dict()
 
-        if 'log-levels' not in metadata_node:
-            return
+        # log levels:
+        #   v2.0:  "log-levels"
+        #   v2.1+: "$log-levels"
+        log_levels_node = None
+
+        if self._version >= 200:
+            if 'log-levels' in metadata_node:
+                log_levels_prop = 'log-levels'
+                log_levels_node = metadata_node[log_levels_prop]
 
-        log_levels_node = metadata_node['log-levels']
+        if self._version >= 201:
+            if '$log-levels' in metadata_node:
+                if log_levels_node is not None:
+                    raise ConfigError('cannot specify both "log-levels" and "$log-levels" properties of metadata object: prefer "$log-levels"')
+
+                log_levels_prop = '$log-levels'
+                log_levels_node = metadata_node[log_levels_prop]
+
+        if log_levels_node is None:
+            return
 
         if not _is_assoc_array_prop(log_levels_node):
-            raise ConfigError('"log-levels" property (metadata) must be an associative array')
+            raise ConfigError('"{}" property (metadata) must be an associative array'.format(log_levels_prop))
 
         for ll_name, ll_value in log_levels_node.items():
             if ll_name in self._log_levels:
@@ -2145,14 +2161,19 @@ class _YamlConfigParser:
         if not _is_assoc_array_prop(metadata_node):
             raise ConfigError('"metadata" property (configuration) must be an associative array')
 
-        unk_prop = _get_first_unknown_prop(metadata_node, [
+        known_props = [
             'type-aliases',
             'log-levels',
             'trace',
             'env',
             'clocks',
             'streams',
-        ])
+        ]
+
+        if self._version >= 201:
+            known_props.append('$log-levels')
+
+        unk_prop = _get_first_unknown_prop(metadata_node, known_props)
 
         if unk_prop:
             add = ''
index 1d8a87c08e5865c35f28747b2c18e2344c324095..19109e74e3ce23b973bc7eae03dcc73829126032 100644 (file)
@@ -57,7 +57,7 @@ metadata:
         - READY
         - RUNNING
         - WAITING
-  log-levels:
+  $log-levels:
     EMERG: 0
     ALERT: 1
     CRIT: 2
index 13585a2c375970766a8af9382782b17814ff763a..63b706479063c855cce911ade0537e66272171e1 100644 (file)
@@ -62,7 +62,7 @@ metadata:
         - WAITING
     str:
       class: string
-  log-levels:
+  $log-levels:
     EMERG: 0
     ALERT: 1
     CRIT: 2
This page took 0.026884 seconds and 4 git commands to generate.