self.config.service_chain,
self.config.service_chain_count,
self.config.flow_count,
- self.config.frame_sizes)
+ self.config.frame_sizes,
+ self.config.user_id,
+ self.config.group_id)
def _update_config(self, opts):
"""Recalculate the running config based on the base config and opts.
parser.add_argument('--user-info', dest='user_info',
action='store',
metavar='<data>',
- help='Custom data to be included as is in the json report config branch - '
- + ' example, pay attention! no space: '
- + '--user-info=\'{"status":"explore","description":'
- + '{"target":"lab","ok":true,"version":2020}}\'')
+ help='Custom data to be included as is '
+ 'in the json report config branch - '
+ ' example, pay attention! no space: '
+ '--user-info=\'{"status":"explore","description":'
+ '{"target":"lab","ok":true,"version":2020}}\' - '
+ 'this option may be repeated; given data will be merged.')
parser.add_argument('--vlan-tagging', dest='vlan_tagging',
type=bool_arg,
action='store',
default=None,
help='Override the NFVbench \'intf_speed\' '
- + 'parameter (e.g. 10Gbps, auto, 16.72Gbps)')
+ 'parameter (e.g. 10Gbps, auto, 16.72Gbps)')
parser.add_argument('--cores', dest='cores',
type=int_arg,
default=False,
help='Disable latency measurements (no streams)')
+ parser.add_argument('--user-id', dest='user_id',
+ type=int_arg,
+ metavar='<uid>',
+ action='store',
+ default=None,
+ help='Change json/log files ownership with this user (int)')
+
+ parser.add_argument('--group-id', dest='group_id',
+ type=int_arg,
+ metavar='<gid>',
+ action='store',
+ default=None,
+ help='Change json/log files ownership with this group (int)')
+
+ parser.add_argument('--show-trex-log', dest='show_trex_log',
+ default=None,
+ action='store_true',
+ help='Show the current TRex local server log file contents'
+ ' => diagnostic/help in case of configuration problems')
+
parser.add_argument('--debug-mask', dest='debug_mask',
type=int_arg,
metavar='<mask>',
action='store',
- default='0x00000000',
+ default=None,
help='General purpose register (debugging flags), '
- + 'the hexadecimal notation (0x...) is accepted.'
- + 'Designed for development needs.')
+ 'the hexadecimal notation (0x...) is accepted.'
+ 'Designed for development needs (default: 0).')
opts, unknown_opts = parser.parse_known_args()
return opts, unknown_opts
log.setup()
# load default config file
config, default_cfg = load_default_config()
+ # possibly override the default user_id & group_id values
+ if 'USER_ID' in os.environ:
+ config.user_id = int(os.environ['USER_ID'])
+ if 'GROUP_ID' in os.environ:
+ config.group_id = int(os.environ['GROUP_ID'])
+
# create factory for platform specific classes
try:
factory_module = importlib.import_module(config['factory_module'])
print((default_cfg.decode("utf-8")))
sys.exit(0)
+ # dump the contents of the trex log file
+ if opts.show_trex_log:
+ try:
+ print(open('/tmp/trex.log').read(), end="")
+ except FileNotFoundError:
+ print("No TRex log file found!")
+ sys.exit(0)
+
config.name = ''
if opts.config:
# do not check extra_specs in flavor as it can contain any key/value pairs
# add file log if requested
if config.log_file:
log.add_file_logger(config.log_file)
+ # possibly change file ownership
+ uid = config.user_id
+ gid = config.group_id
+ if gid is None:
+ gid = uid
+ if uid is not None:
+ os.chown(config.log_file, uid, gid)
openstack_spec = config_plugin.get_openstack_spec() if config.openrc_file \
else None