def test_nonenforced_group_role_service_role_legacy_role_set(): # Create group without enforced roles. sdk_marathon.create_group(group_id=ENFORCED_ROLE, options={"enforceRole": False}) options = { "service": { "name": SERVICE_NAME, "role": ENFORCED_ROLE, "enable_role_migration": True } } # Install and get the current service state to verify roles have applied. service_roles, current_task_roles = _install_and_fetch_service_roles( options) assert LEGACY_ROLE not in current_task_roles.values() assert ENFORCED_ROLE in current_task_roles.values() assert service_roles["framework-roles"] is not None assert service_roles["framework-role"] is None assert len(service_roles["framework-roles"]) == 2 assert LEGACY_ROLE in service_roles["framework-roles"] assert ENFORCED_ROLE in service_roles["framework-roles"]
def configure_package(configure_security): try: sdk_install.uninstall(config.PACKAGE_NAME, SERVICE_NAME) sdk_marathon.delete_group(group_id=ENFORCED_ROLE) # create group with enforced-roles sdk_marathon.create_group(group_id=ENFORCED_ROLE, options={"enforceRole": False}) yield # let the test session execute finally: sdk_install.uninstall(config.PACKAGE_NAME, SERVICE_NAME) sdk_marathon.delete_group(group_id=ENFORCED_ROLE)
def create_group(group, enforce_group): log.info("Creating group '{}' with enforceGroup='{}'".format( group, enforce_group)) try: sdk_marathon.delete_group(group) sdk_marathon.create_group(group, options={"enforceRole": enforce_group}) yield finally: sdk_marathon.delete_group(group)
def test_nonenforced_group_role_defaults(options): # Create group without enforced roles. sdk_marathon.create_group(group_id=ENFORCED_ROLE, options={"enforceRole": False}) # Install and get the current service state to verify roles have applied. service_roles, current_task_roles = _install_and_fetch_service_roles(options) assert LEGACY_ROLE in current_task_roles.values() assert ENFORCED_ROLE not in current_task_roles.values() assert service_roles["framework-roles"] is None assert service_roles["framework-role"] == LEGACY_ROLE
def test_scaling_load( master_count, job_count, single_use: bool, run_delay, cpu_quota, memory_quota, work_duration, mom, external_volume: bool, scenario, min_index, max_index, batch_size, enforce_quota_guarantee, enforce_quota_limit, create_framework: bool, create_jobs: bool, containerizer, mesos_agent_label, service_user, agent_user, ) -> None: """Launch a load test scenario. This does not verify the results of the test, but does ensure the instances and jobs were created. The installation is run in threads, but the job creation and launch is then done serially after all Jenkins instances have completed installation. Args: master_count: Number of Jenkins masters or instances job_count: Number of Jobs on each Jenkins master single_use: Mesos Single-Use Agent on (true) or off (false) run_delay: Jobs should run every X minute(s) cpu_quota: CPU quota (0.0 to disable) work_duration: Time, in seconds, for generated jobs to sleep mom: Marathon on Marathon instance name external_volume: External volume on rexray (true) or local volume (false) min_index: minimum index to begin jenkins suffixes at max_index: maximum index to end jenkins suffixes at batch_size: batch size to deploy jenkins instances in """ security_mode = sdk_dcos.get_security_mode() if mom and cpu_quota != 0.0 and memory_quota != 0.0: with shakedown.marathon_on_marathon(mom): _setup_quota(SHARED_ROLE, cpu_quota, memory_quota) # create marathon client if mom: _configure_admin_router(mom, SHARED_ROLE) with shakedown.marathon_on_marathon(mom): marathon_client = shakedown.marathon.create_client() else: marathon_client = shakedown.marathon.create_client() sdk_marathon.create_group(group_id=SHARED_ROLE, options={"enforceRole": True}) # figure out the range of masters we want to create if min_index == -1 or max_index == -1: min_index = 0 max_index = master_count - 1 masters = [ "jenkins/jenkins{}".format(index) for index in range(min_index, max_index) ] successful_deployments = set(masters) # create service accounts in parallel sdk_security.install_enterprise_cli() security_mode = sdk_dcos.get_security_mode() if create_framework: log.info("\n\nCreating service accounts for: [{}]\n\n".format( successful_deployments)) service_account_creation_failures = _create_service_accounts_stage( masters, min_index, max_index, batch_size, security_mode, service_user, agent_user) log.info("\n\nService account failures: [{}]\n\n".format( service_account_creation_failures)) successful_deployments -= service_account_creation_failures log.info("\n\nCreating jenkins frameworks for: [{}]\n\n".format( successful_deployments)) install_jenkins_failures = _install_jenkins_stage( [x for x in successful_deployments], min_index, max_index, batch_size, security_mode, marathon_client, external_volume, mom, containerizer, service_user, agent_user, ) log.info("\n\nJenkins framework creation failures: [{}]\n\n".format( install_jenkins_failures)) successful_deployments -= install_jenkins_failures if create_jobs: log.info("\n\nCreating jenkins jobs for: [{}]\n\n".format( successful_deployments)) job_creation_failures = _create_jobs_stage( [x for x in successful_deployments], min_index, max_index, batch_size, security_mode, marathon_client, external_volume, mom, job_count, single_use, run_delay, work_duration, scenario, mesos_agent_label, ) successful_deployments -= job_creation_failures log.info("\n\nAll masters to deploy: [{}]\n\n".format(",".join(masters))) log.info("\n\nSuccessful Jenkins deployments: [{}]\n\n".format( successful_deployments)) log.info("\n\nFailed Jenkins deployments: [{}]\n\n".format( set(masters) - successful_deployments)) log.info("Timings: {}".format(json.dumps(TIMINGS)))