def do_main(args): logger.setup(args['--log-level'].upper(), noisy_modules=['googleapiclient', 'oauth2client']) config_path = args['--config-path'] if args['create']: config = dcos_launch.config.get_validated_config_from_path(config_path) info_path = args['--info-path'] if os.path.exists(info_path): raise dcos_launch.util.LauncherError( 'InputConflict', '{} already exists! Delete this or specify a ' 'different cluster info path with the -i option'.format( info_path)) write_json(info_path, dcos_launch.get_launcher(config).create()) return 0 try: info = load_json(args['--info-path']) except FileNotFoundError as ex: raise dcos_launch.util.LauncherError('MissingInfoJSON', None) from ex launcher = dcos_launch.get_launcher(info) if args['wait']: launcher.wait() print('Cluster is ready!') return 0 if args['describe']: print(json_prettyprint(launcher.describe())) return 0 if args['pytest']: var_list = list() if args['--env'] is not None: if '=' in args['--env']: # User is attempting to do an assigment with the option raise dcos_launch.util.LauncherError( 'OptionError', "The '--env' option can only pass through environment variables " "from the current environment. Set variables according to the shell being used." ) var_list = args['--env'].split(',') missing = [v for v in var_list if v not in os.environ] if len(missing) > 0: raise dcos_launch.util.LauncherError( 'MissingInput', 'Environment variable arguments have been indicated ' 'but not set: {}'.format(repr(missing))) env_dict = {e: os.environ[e] for e in var_list} return launcher.test(args['<pytest_extras>'], env_dict) if args['delete']: launcher.delete() return 0
import logging import os import api_session_fixture import pytest from dcos_test_utils import logger from test_dcos_diagnostics import (_get_bundle_list, check_json, wait_for_diagnostics_job, wait_for_diagnostics_list) logger.setup(os.getenv('TEST_LOG_LEVEL', 'INFO')) log = logging.getLogger(__name__) def pytest_configure(config): config.addinivalue_line('markers', 'first: run test before all not marked first') config.addinivalue_line('markers', 'last: run test after all not marked last') def pytest_collection_modifyitems(session, config, items): """Reorders test using order mark """ new_items = [] last_items = [] for item in items: if hasattr(item.obj, 'first'): new_items.insert(0, item) elif hasattr(item.obj, 'last'): last_items.append(item) else:
import os import pytest from dcos_test_utils import dcos_api, enterprise, logger logger.setup(os.getenv('LOG_LEVEL', 'DEBUG')) @pytest.fixture(scope='session') def dcos_api_session_factory(): is_enterprise = os.getenv('DCOS_ENTERPRISE', 'false').lower() == 'true' if is_enterprise: return enterprise.EnterpriseApiSession else: return dcos_api.DcosApiSession @pytest.fixture(scope='session') def dcos_api_session(dcos_api_session_factory): api = dcos_api_session_factory.create() api.wait_for_dcos() return api
import os import api_session_fixture import pytest from dcos_test_utils import logger logger.setup(os.getenv('TEST_LOG_LEVEL', 'INFO')) def pytest_configure(config): config.addinivalue_line('markers', 'first: run test before all not marked first') config.addinivalue_line('markers', 'last: run test after all not marked last') def pytest_collection_modifyitems(session, config, items): """Reorders test using order mark """ new_items = [] last_items = [] for item in items: if hasattr(item.obj, 'first'): new_items.insert(0, item) elif hasattr(item.obj, 'last'): last_items.append(item) else: new_items.append(item) items[:] = new_items + last_items @pytest.fixture(autouse=True) def clean_marathon_state(dcos_api_session):
""".format(idx=i, size=200) script += """ sudo systemctl restart dcos-mesos-slave.service """ cluster_info_path = os.getenv('CLUSTER_INFO_PATH', 'cluster_info.json') if not os.path.exists(cluster_info_path): raise Exception('No cluster info to work with!') cluster_info_json = json.load(open(cluster_info_path)) launcher = dcos_launch.get_launcher(cluster_info_json) description = launcher.describe() ssh = launcher.get_ssh_client() with ssh.tunnel(description['masters'][0]['public_ip']) as t: t.copy_file(helpers.session_tempfile(ssh.key), 'ssh_key') t.copy_file(helpers.session_tempfile(script), 'volume_script.sh') t.command(['chmod', '600', 'ssh_key']) ssh_command = ['ssh', '-i', 'ssh_key'] + ssh_client.SHARED_SSH_OPTS scp_command = ['scp', '-i', 'ssh_key'] + ssh_client.SHARED_SSH_OPTS for private_agent in description['private_agents']: target = '{}@{}'.format(ssh.user, private_agent['private_ip']) t.command(scp_command + ['volume_script.sh', target + ':~/volume_script.sh']) t.command(ssh_command + [target, 'bash', 'volume_script.sh']) # nasty hack until we add a better post-flight time.sleep(60) if __name__ == '__main__': logger.setup(os.getenv('LOG_LEVEL', 'DEBUG')) mount_volumes()
echo 'Restarting agent...' systemctl restart dcos-mesos-slave.service""" cluster_info_path = os.getenv("CLUSTER_INFO_PATH", "cluster_info.json") if not os.path.exists(cluster_info_path): raise Exception("No cluster info to work with!") cluster_info_json = json.load(open(cluster_info_path)) launcher = dcos_launch.get_launcher(cluster_info_json) description = launcher.describe() ssh = launcher.get_ssh_client() with ssh.tunnel(description["masters"][0]["public_ip"]) as t: t.copy_file(helpers.session_tempfile(ssh.key), "ssh_key") t.copy_file(helpers.session_tempfile(volume_script), "volume_script.sh") t.command(["chmod", "600", "ssh_key"]) ssh_command = ["ssh", "-i", "ssh_key"] + ssh_client.SHARED_SSH_OPTS scp_command = ["scp", "-i", "ssh_key"] + ssh_client.SHARED_SSH_OPTS for private_agent in description["private_agents"]: target = "{}@{}".format(ssh.user, private_agent["private_ip"]) t.command(scp_command + ["volume_script.sh", target + ":~/volume_script.sh"]) t.command(ssh_command + [target, "sudo", "bash", "volume_script.sh"]) # nasty hack until we add a better post-flight time.sleep(60) if __name__ == "__main__": logger.setup(os.getenv("LOG_LEVEL", "DEBUG")) mount_volumes()