Change-Id: I21964c4b8819444dd0aebdda117a11ba96f92038
Issue-ID: INT-1627
Signed-off-by: Bartek Grzybowski <b.grzybowski@partner.samsung.com>
import argparse
import ipaddress
from sys import exit
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
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)
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')
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_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
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
'''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)}')
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),
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 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}")
# Run the 3GPP measurements file generator
self._run_cmd(f'./ROP_file_creator.sh {i} &', f"{self.sim_dirname_pattern}{i}")
return parser.parse_args(['bootstrap', '--count', str(SIM_INSTANCES),
'--urlves', URLVES, '--ipfileserver', IPFILESERVER,
'--typefileserver', TYPEFILESERVER, '--ipstart',
return parser.parse_args(['bootstrap', '--count', str(SIM_INSTANCES),
'--urlves', URLVES, '--ipfileserver', IPFILESERVER,
'--typefileserver', TYPEFILESERVER, '--ipstart',
+ IPSTART, '--user', FILESERVER_USER, '--password',
+ FILESERVER_PASSWORD])
@pytest.fixture(scope="module")
def args_start(parser):
@pytest.fixture(scope="module")
def args_start(parser):
ports:
- "${PORTSFTP}:22"
volumes:
ports:
- "${PORTSFTP}:22"
volumes:
- - ./files/onap/:/home/onap/
+ - ./files/onap/:/home/${FILESERV_USER}/
- ./fix-sftp-perms.sh:/etc/sftp.d/fix-sftp-perms.sh
restart: on-failure
- ./fix-sftp-perms.sh:/etc/sftp.d/fix-sftp-perms.sh
restart: on-failure
- command: onap:pano:1001
+ command: ${FILESERV_USER}:${FILESERV_PASS}:1001
ftpes-server-vsftpd-${I}:
container_name: ftpes-server-vsftpd-${I}
ftpes-server-vsftpd-${I}:
container_name: ftpes-server-vsftpd-${I}
- "${PORTFTPS}:21"
- "${FTPS_PASV_MIN}-${FTPS_PASV_MAX}:${FTPS_PASV_MIN}-${FTPS_PASV_MAX}"
environment:
- "${PORTFTPS}:21"
- "${FTPS_PASV_MIN}-${FTPS_PASV_MAX}:${FTPS_PASV_MIN}-${FTPS_PASV_MAX}"
environment:
- FTP_USER: onap
- FTP_PASSWORD: pano
+ FTP_USER: ${FILESERV_USER}
+ FTP_PASSWORD: ${FILESERV_PASS}
PASV_ADDRESS: localhost
PASV_MIN_PORT: ${FTPS_PASV_MIN}
PASV_MAX_PORT: ${FTPS_PASV_MAX}
PASV_ADDRESS: localhost
PASV_MIN_PORT: ${FTPS_PASV_MIN}
PASV_MAX_PORT: ${FTPS_PASV_MAX}
--- /dev/null
+#!/bin/bash
+chmod o+w /home/${FILESERV_USER}
+++ /dev/null
-#!/bin/bash
-chmod o+w /home/onap
from test_settings import SIM_INSTANCES
@pytest.mark.parametrize(('expect_string, cli_opts'), [
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']),
['bootstrap']),
("bootstrap: error: argument --typefileserver: invalid choice: 'dummy' (choose from 'sftp', 'ftps')",
['bootstrap', '--typefileserver', 'dummy']),
yml = load(f, Loader=SafeLoader)
assert URLVES == yml['urlves']
assert TYPEFILESERVER == yml['typefileserver']
yml = load(f, Loader=SafeLoader)
assert URLVES == yml['urlves']
assert TYPEFILESERVER == yml['typefileserver']
- assert f'sftp://onap:pano@{IPFILESERVER}:{start_port + 1}' in yml['urlsftp']
- assert f'ftps://onap:pano@{IPFILESERVER}:{start_port + 2}' in yml['urlftps']
+ assert f'sftp://{FILESERVER_USER}:{FILESERVER_PASSWORD}@{IPFILESERVER}:{start_port + 1}' in yml['urlsftp']
+ assert f'ftps://{FILESERVER_USER}:{FILESERVER_PASSWORD}@{IPFILESERVER}:{start_port + 2}' in yml['urlftps']
assert str(ip_address(IPSTART) + ip_offset + instance_ip_offset) == yml['ippnfsim']
start_port += 2
print(yml['ippnfsim'])
assert str(ip_address(IPSTART) + ip_offset + instance_ip_offset) == yml['ippnfsim']
start_port += 2
print(yml['ippnfsim'])
URLVES = 'http://127.0.0.1:10000/eventListener/v7'
IPFILESERVER = '127.0.0.1'
TYPEFILESERVER = 'sftp'
URLVES = 'http://127.0.0.1:10000/eventListener/v7'
IPFILESERVER = '127.0.0.1'
TYPEFILESERVER = 'sftp'
+FILESERVER_USER = 'testuser'
+FILESERVER_PASSWORD = 'testpassword'
IPSTART = '10.11.0.1'
INSTANCE_CONFIG = 'config/config.yml'
PNF_SIM_CONTAINER_NAME = 'pnf-simulator-'
IPSTART = '10.11.0.1'
INSTANCE_CONFIG = 'config/config.yml'
PNF_SIM_CONTAINER_NAME = 'pnf-simulator-'