import argparse
import ipaddress
from sys import exit
-from os import chdir, getcwd, path, popen, kill, getuid, stat, mkdir, getlogin
+from os import chdir, getcwd, path, popen, kill, getuid, stat, mkdir, getlogin, chmod
from shutil import copytree, rmtree, move
from json import loads, dumps
from yaml import load, SafeLoader, dump
type=validate_ip, metavar='IP', required=True)
parser_bootstrap.add_argument('--typefileserver', help='Type of the file server (SFTP/FTPS) to be included in the VES event',
type=str, choices=['sftp', 'ftps'], required=True)
+ parser_bootstrap.add_argument('--user', help='File server username', type=str, metavar='USERNAME', required=True)
+ parser_bootstrap.add_argument('--password', help='File server password', type=str, metavar='PASSWORD', required=True)
parser_bootstrap.add_argument('--ipstart', help='IP address range beginning', type=validate_ip, metavar='IP', required=True)
# Start command parser
parser_start = subparsers.add_parser('start', help='Start instances')
sim_compose_template = 'docker-compose-template.yml'
sim_vsftpd_template = 'config/vsftpd_ssl-TEMPLATE.conf'
sim_vsftpd_config = 'config/vsftpd_ssl.conf'
+ sim_sftp_script = 'fix-sftp-perms.sh'
+ sim_sftp_script_template = 'fix-sftp-perms-template.sh'
sim_config = 'config/config.yml'
sim_msg_config = 'config/config.json'
sim_port = 5000
'''Writes a yaml formatted configuration file for Java simulator app'''
yml = {}
yml['urlves'] = self.args.urlves
- yml['urlsftp'] = f'sftp://onap:pano@{self.args.ipfileserver}:{port_sftp}'
- yml['urlftps'] = f'ftps://onap:pano@{self.args.ipfileserver}:{port_ftps}'
+ yml['urlsftp'] = f'sftp://{self.args.user}:{self.args.password}@{self.args.ipfileserver}:{port_sftp}'
+ yml['urlftps'] = f'ftps://{self.args.user}:{self.args.password}@{self.args.ipfileserver}:{port_ftps}'
yml['ippnfsim'] = pnf_sim_ip
yml['typefileserver'] = self.args.typefileserver
self.logger.debug(f'Generated simulator config:\n{dump(yml)}')
IPFTPS = ip['ftps'], IPSFTP = ip['sftp'],
FTPS_PASV_MIN = str(ftps_pasv_port_start),
FTPS_PASV_MAX = str(ftps_pasv_port_end),
- TIMEZONE = tzname[daylight])
+ TIMEZONE = tzname[daylight],
+ FILESERV_USER = self.args.user,
+ FILESERV_PASS = self.args.password)
# generate vsftpd config file for the simulator instance
self._generate_config_file(self.sim_vsftpd_template, self.sim_vsftpd_config,
I = i, USER = getlogin(),
FTPS_PASV_MIN = str(ftps_pasv_port_start),
FTPS_PASV_MAX = str(ftps_pasv_port_end),
IPFILESERVER = str(self.args.ipfileserver))
+ # generate sftp permission fix script
+ self._generate_config_file(self.sim_sftp_script_template, self.sim_sftp_script,
+ I = i, FILESERV_USER = self.args.user)
+ chmod(f'{self.sim_dirname_pattern}{i}/{self.sim_sftp_script}', 0o755)
# Run the 3GPP measurements file generator
self._run_cmd(f'./ROP_file_creator.sh {i} &', f"{self.sim_dirname_pattern}{i}")
from test_settings import SIM_INSTANCES
@pytest.mark.parametrize(('expect_string, cli_opts'), [
- ("bootstrap: error: the following arguments are required: --urlves, --ipfileserver, --typefileserver, --ipstart",
+ ("bootstrap: error: the following arguments are required: --urlves, --ipfileserver, --typefileserver, " +\
+ "--user, --password, --ipstart",
['bootstrap']),
("bootstrap: error: argument --typefileserver: invalid choice: 'dummy' (choose from 'sftp', 'ftps')",
['bootstrap', '--typefileserver', 'dummy']),