[PATCH 2/5] tuna: Use context-aware default path for cpuset profiles

John Kacur <[email protected]> Tue, 28 Jul 2026 13:06:04 -0400
Newsgroups org.kernel.vger.linux-rt-users
Message-ID <[email protected]>
Detect execution context to set appropriate default path for cpuset
profile files:
- Development (tuna-cmd.py or tuna-cmd): ./cpuset-profile.yaml
- Production (tuna): /etc/tuna/cpuset-profile.yaml

This allows developers to work with profile files in their git directory
while production installations use the standard /etc/tuna/ location.

Users can always override by providing an explicit path argument.

Assisted-by: Claude:claude-sonnet-4-5
Signed-off-by: John Kacur <[email protected]>
---
 tuna-cmd.py | 23 +++++++++++++++++++----
 1 file changed, 19 insertions(+), 4 deletions(-)

diff --git a/tuna-cmd.py b/tuna-cmd.py
index d2ba0238ab28..cf33af13d5d3 100755
--- a/tuna-cmd.py
+++ b/tuna-cmd.py
@@ -104,6 +104,20 @@ class HelpMessageParser(argparse.ArgumentParser):
         self.print_help()
         sys.exit(2)
 
+def get_default_cpuset_profile():
+    """Get default cpuset profile filename based on execution context.
+
+    Returns:
+        str: Default profile path
+        - './cpuset-profile.yaml' when running from dev (tuna-cmd.py or tuna-cmd)
+        - '/etc/tuna/cpuset-profile.yaml' when running from production (tuna)
+    """
+    script_name = os.path.basename(sys.argv[0])
+    if script_name in ('tuna-cmd.py', 'tuna-cmd'):
+        return 'cpuset-profile.yaml'
+    else:
+        return '/etc/tuna/cpuset-profile.yaml'
+
 def gen_parser():
 
 
@@ -324,13 +338,14 @@ def gen_parser():
 
     # cpuset save
     cpuset_save = cpuset_subparser.add_parser('save', description='Save cpuset configuration to YAML profile', help='Save cpuset configuration')
-    cpuset_save.add_argument('filename', nargs='?', default='cpuset-profile.yaml',
-                             help='Output YAML file (default: cpuset-profile.yaml)')
+    default_profile = get_default_cpuset_profile()
+    cpuset_save.add_argument('filename', nargs='?', default=default_profile,
+                             help=f'Output YAML file (default: {default_profile})')
 
     # cpuset apply
     cpuset_apply = cpuset_subparser.add_parser('apply', description='Apply cpuset configuration from YAML profile', help='Apply cpuset configuration')
-    cpuset_apply.add_argument('filename', nargs='?', default='cpuset-profile.yaml',
-                              help='Input YAML file (default: cpuset-profile.yaml)')
+    cpuset_apply.add_argument('filename', nargs='?', default=default_profile,
+                              help=f'Input YAML file (default: {default_profile})')
     cpuset_apply.add_argument('-v', '--verbose', action='store_true',
                               help='Print detailed progress messages')
 
-- 
2.55.0