Remove pkgbuilder help text from repomgr commands

Repomgr commands are often forwarded into the
package builder for execution.  They are run under the
user's id, and a help text is displayed as if the
'stx control enter' command had been used.  That help
text is confusing in this context.

The mechanism to run these commands failed to distinguish
'user' from 'interactive'.   This update adds that distinction.

Only an interactive session should display the help text.

Repomgr will use the non-interactive method, avoiding the
unwanted help text.

This update also adds some missing repomgr sub-commands supported
by the repo_manage.py back end, e.g. search_pkg.  It also fixes
arguement passing so that --help functions as expected on sub-commands.

NOTE: While testing, I noticed that two recently added repomgr commands,
'merge' and 'search_pkg', available within the build container, were
reflected in the external wrapper.  I've added them

Testing
stx control enter ... displays help text
stx repomgr list ... shows repo list without help text
stx repomgr search_pkg --help ...
              command is valid and help functions as expected
stx repomgr merge --help
              command is valid and help functions as expected

Story: 2008862
Task: 44683

Signed-off-by: Scott Little <scott.little@windriver.com>
Change-Id: Iad96b3f93ce15c52837ddebed16b9f67899ea27c
This commit is contained in:
Scott Little 2022-03-03 13:23:51 -05:00
parent bec164dd25
commit 8b8ea31dc3
5 changed files with 25 additions and 12 deletions

View File

@ -71,20 +71,27 @@ class KubeHelper:
else:
return False
def generatePrefixCommand(self, podname, command, enableuser):
def generatePrefixCommand(self, podname, command, enableuser, interactive=False):
'''Generate the command executed in the host'''
prefix_exec_cmd = self.config.kubectl() + ' exec -ti '
builder_exec_cmd = prefix_exec_cmd + podname
prefix_bash_cmd = ' -- bash -l -c '
prefix_bash_with_user_cmd = ' -- bash -l -c \'sudo -u ${MYUNAME} bash \
prefix_bash_with_user_cmd = ' -- bash -l -c \'sudo -u ${MYUNAME} \
BASH_ENV=/home/$MYUNAME/userenv bash --rcfile /home/$MYUNAME/userenv -c '
prefix_bash_with_interactive_user_cmd = ' -- bash -l -i -c \'sudo -u ${MYUNAME} bash \
--rcfile /home/$MYUNAME/userenv -i -c '
builder_exec_bash_cmd = builder_exec_cmd + prefix_bash_cmd
builder_exec_bash_with_user_cmd = builder_exec_cmd + \
prefix_bash_with_user_cmd
builder_exec_bash_with_interactive_user_cmd = builder_exec_cmd + \
prefix_bash_with_interactive_user_cmd
if enableuser:
cmd = builder_exec_bash_with_user_cmd + command
if interactive:
cmd = builder_exec_bash_with_interactive_user_cmd + command
else:
cmd = builder_exec_bash_with_user_cmd + command
else:
cmd = builder_exec_bash_cmd + command

View File

@ -150,7 +150,7 @@ class HandleBuildTask:
'***********************************')
sys.exit(1)
prefix_cmd = self.k8s.generatePrefixCommand(podname, '', 1)
prefix_cmd = self.k8s.generatePrefixCommand(podname, '', 1, 1)
if args.build_task == 'image':
cmd = self.buildImageCMD(args, prefix_cmd)

View File

@ -127,12 +127,14 @@ image.\t\teg: [ prepare|layer|image|download|world|${pkgname}]')
repo_subparser = subparsers.add_parser('repomgr',
help='Manage source|binary \
packages.\t\teg: [ list|download|sync|mirror|clean|remove_repo|upload_pkg|\
delete_pkg ]')
packages.\t\teg: [ list|download|sync|merge|mirror|clean|\
remove_repo|search_pkg|upload_pkg|delete_pkg ]')
repo_subparser.add_argument('repomgr_task',
help='[ list|download|sync|mirror|clean|\
remove_repo|upload_pkg|delete_pkg ]: \
help='[ list|download|sync|merge|mirror|clean|\
remove_repo|search_pkg|upload_pkg|delete_pkg ]: \
Execute the management task.\n\n')
# Pass remaining arguements into repo_manage.py for additional processing
repo_subparser.add_argument('args', nargs=argparse.REMAINDER)
repo_subparser.set_defaults(handle=self.handlerepomgr.handleCommand)
parser.add_argument('-d', '--debug',

View File

@ -16,6 +16,7 @@ import logging
from stx.k8s import KubeHelper
from stx import utils # pylint: disable=E0611
import subprocess
import sys
logger = logging.getLogger('STX-Repomgr')
utils.set_logger(logger)
@ -38,12 +39,14 @@ class HandleRepomgrTask:
logger.error('The builder container does not exist, so please \
consider to use the control module')
prefix_cmd = self.k8s.generatePrefixCommand(podname, '', 1)
cmd = prefix_cmd + '"repo_manage.py ' + args.repomgr_task + '"\''
prefix_cmd = self.k8s.generatePrefixCommand(podname, '', 1, 0)
cmd = prefix_cmd + ' '.join(['"repo_manage.py', args.repomgr_task, ' '.join(args.args), '"\''])
logger.debug('Manage the repo with the command [%s]', cmd)
try:
subprocess.check_call(cmd, shell=True)
except subprocess.CalledProcessError as exc:
raise Exception('Failed to manage the repo with the command [%s].\n \
# raise Exception('Failed to manage the repo with the command [%s].\n \
logger.error('Failed to manage the repo with the command [%s].\n \
Returncode: %s' % (cmd, exc.returncode))
sys.exit(2)

View File

@ -19,6 +19,7 @@ if [ ! -d $MY_WORKSPACE ]; then
mkdir -p $MY_WORKSPACE > /dev/null 2>&1
fi
if echo $- | grep -q i ; then
cat <<EOF
To ease checkout do:
!!!! Mandatory:
@ -47,5 +48,5 @@ To make image:
build-image [ -t std|rt ]
EOF
fi
cd ${MY_WORKSPACE}