Files
scylladb/dist/common/scripts/scylla_cpuset_setup
Takuya ASADA 781dec5852 dist/docker: run the container as non-root user
Since it is requirement for Red Hat OpenShift Certification, we need to
run the container as non-root user.

Related scylladb/scylla-pkg#4858

Signed-off-by: Takuya ASADA <syuu@scylladb.com>
2025-03-05 23:39:56 +09:00

47 lines
1.4 KiB
Python
Executable File

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright 2018-present ScyllaDB
#
#
# SPDX-License-Identifier: LicenseRef-ScyllaDB-Source-Available-1.0
import os
import sys
import argparse
from scylla_util import *
if __name__ == '__main__':
if not is_container() and os.getuid() > 0:
print('Requires root permission.')
sys.exit(1)
parser = argparse.ArgumentParser(description='Configure cpuset configuration for Scylla.')
parser.add_argument('--cpuset',
help='CPUs to use (in cpuset(7) format; default: all))')
parser.add_argument('--smp',
help='number of threads (default: one per CPU)')
args = parser.parse_args()
if not args.cpuset and not args.smp:
parser.print_help()
sys.exit(1)
cpuset = smp = None
try:
cfg = sysconfig_parser('/etc/scylla.d/cpuset.conf')
line = cfg.get('CPUSET')
cpuset_args = parser.parse_args(line.split())
cpuset = cpuset_args.cpuset
smp = cpuset_args.smp
except:
pass
if cpuset != args.cpuset or smp != args.smp:
if os.path.exists('/etc/scylla.d/perftune.yaml'):
os.remove('/etc/scylla.d/perftune.yaml')
cfg.set('CPUSET', '{cpuset}{smp}'.format( \
cpuset='--cpuset {} '.format(args.cpuset) if args.cpuset else '', \
smp='--smp {} '.format(args.smp) if args.smp else '' \
))
cfg.commit()