def test_validate_allow_autocorrect_moves_infrastructure_templates_to_lifecycle( self): project_sim = self.simlab.simulate_brent_with_infrastructure_templates( ) project = Project(project_sim.path) find_yaml_path = os.path.join(project_sim.path, BRENT_DEFINITIONS_DIR, BRENT_INFRASTRUCTURE_DIR, 'find.yaml') with open(find_yaml_path, 'r') as f: find_yaml_content = f.read() heat_yaml_path = os.path.join(project_sim.path, BRENT_DEFINITIONS_DIR, BRENT_INFRASTRUCTURE_DIR, 'openstack.yaml') with open(heat_yaml_path, 'r') as f: heat_yaml_content = f.read() kube_yaml_path = os.path.join(project_sim.path, BRENT_DEFINITIONS_DIR, BRENT_INFRASTRUCTURE_DIR, 'kube.yaml') with open(kube_yaml_path, 'r') as f: kube_yaml_content = f.read() validate_options = ValidateOptions() validate_options.allow_autocorrect = True result = project.validate(validate_options) self.assertFalse(result.has_errors()) self.assertFalse(result.has_warnings()) project = Project(project_sim.path) tester = self.assert_project(project) inf_manifest_path = os.path.join(project_sim.path, BRENT_DEFINITIONS_DIR, BRENT_INFRASTRUCTURE_DIR, BRENT_INFRASTRUCTURE_MANIFEST_FILE) tester.assert_has_no_file(find_yaml_path) tester.assert_has_no_file(heat_yaml_path) tester.assert_has_no_file(kube_yaml_path) tester.assert_has_file( os.path.join(project_sim.path, BRENT_LIFECYCLE_DIR, BRENT_OPENSTACK_DIR, BRENT_OPENSTACK_HEAT_YAML_FILE), heat_yaml_content) tester.assert_has_file( os.path.join(project_sim.path, BRENT_LIFECYCLE_DIR, BRENT_OPENSTACK_DIR, BRENT_OPENSTACK_DISCOVER_YAML_FILE), find_yaml_content) tester.assert_has_file( os.path.join(project_sim.path, BRENT_LIFECYCLE_DIR, BRENT_KUBERNETES_DIR, 'kube.yaml'), kube_yaml_content) lm_dir = os.path.join(BRENT_DEFINITIONS_DIR, BRENT_DESCRIPTOR_DIR) descriptor_path = os.path.join(lm_dir, BRENT_DESCRIPTOR_YML_FILE) tester.assert_has_file(descriptor_path, EXPECTED_AUTOCORRECT_INFRASTRUCTURE_DESCRIPTOR)
def test_unresolvable_references(self): project_sim = self.simlab.simulate_assembly_with_unresolvable_references( ) project = Project(project_sim.path) build_options = BuildOptions() result = project.build(build_options) pkg = result.pkg self.assertIsNotNone(pkg) self.assertIsInstance(pkg, pkgs.Pkg) package_base_name = os.path.basename(pkg.path) self.assertEqual(package_base_name, 'with_unresolvable_references-1.0.tgz') with self.assert_package(pkg) as pkg_tester: pkg_tester.assert_has_descriptor_file( os.path.join(ASSEMBLY_DESCRIPTOR_DIR, ASSEMBLY_DESCRIPTOR_YML_FILE), UNRESOLVABLE_DESCRIPTOR) pkg_tester.assert_has_file( os.path.join(ASSEMBLY_BEHAVIOUR_DIR, ASSEMBLY_CONFIGURATIONS_DIR, 'bad_path.json'), UNRESOLVABLE_CONFIGURATION_BAD_PATH) pkg_tester.assert_has_file( os.path.join(ASSEMBLY_BEHAVIOUR_DIR, ASSEMBLY_CONFIGURATIONS_DIR, 'not_found.json'), UNRESOLVABLE_CONFIGURATION_NOT_FOUND)
def test_build(self): project_sim = self.simlab.simulate_assembly_contains_assembly_basic() project = Project(project_sim.path) build_options = BuildOptions() result = project.build(build_options) self.assertIsInstance(result, BuildResult) self.assertFalse(result.validation_result.has_warnings()) pkg = result.pkg self.assertIsNotNone(pkg) self.assertIsInstance(pkg, pkgs.Pkg) package_base_name = os.path.basename(pkg.path) self.assertEqual(package_base_name, 'contains_basic-1.0.tgz') with self.assert_package(pkg) as pkg_tester: pkg_tester.assert_has_descriptor_file( os.path.join(PROJECT_CONTAINS_DIR, project_lab.SUBPROJECT_NAME_ASSEMBLY_BASIC, ASSEMBLY_DESCRIPTOR_DIR, ASSEMBLY_DESCRIPTOR_YML_FILE), SUB_BASIC_ASSEMBLY_DESCRIPTOR_YAML) pkg_tester.assert_has_meta({ 'schema': '2.0', 'name': 'contains_basic', 'version': '1.0', 'type': 'Assembly', 'contains': [{ 'name': 'sub_basic', 'type': 'Assembly', 'directory': 'sub_basic' }] })
def test_create_with_template(self): request = CreateAssemblyProjectRequest() request.name = 'Test' request.target_location = self.tmp_dir request.version = '9.9' request.params['template'] = 'yes' creator = ProjectCreator(request, CreateOptions()) creator.create() project = Project(self.tmp_dir) tester = self.assert_project(project) tester.assert_has_file( os.path.join(ASSEMBLY_DESCRIPTOR_DIR, ASSEMBLY_DESCRIPTOR_YML_FILE), 'description: descriptor for Test') tester.assert_has_file( os.path.join(ASSEMBLY_DESCRIPTOR_DIR, ASSEMBLY_DESCRIPTOR_TEMPLATE_YML_FILE), TEMPLATE_CONTENT) tester.assert_has_directory(os.path.join(ASSEMBLY_BEHAVIOUR_DIR)) tester.assert_has_directory( os.path.join(ASSEMBLY_BEHAVIOUR_DIR, ASSEMBLY_CONFIGURATIONS_DIR)) tester.assert_has_directory( os.path.join(ASSEMBLY_BEHAVIOUR_DIR, ASSEMBLY_RUNTIME_DIR)) tester.assert_has_directory( os.path.join(ASSEMBLY_BEHAVIOUR_DIR, ASSEMBLY_TESTS_DIR)) tester.assert_has_config({ 'schema': '2.0', 'name': 'Test', 'version': '9.9', 'type': 'Assembly', 'packaging': 'tgz' })
def test_build_empty_infrastructure(self): project_sim = self.simlab.simulate_brent_2dot1_with_empty_infrastructure( ) project = Project(project_sim.path) build_options = BuildOptions() result = project.build(build_options) self.assertIsInstance(result, BuildResult) self.assertFalse(result.validation_result.has_warnings()) pkg = result.pkg self.assertIsNotNone(pkg) self.assertIsInstance(pkg, pkgs.Pkg) package_base_name = os.path.basename(pkg.path) self.assertEqual(package_base_name, 'with-empty-infrastructure-1.0.tgz') with self.assert_package(pkg) as pkg_tester: pkg_tester.assert_has_file_path('with-empty-infrastructure.zip') with self.assert_zip( pkg_tester.get_file_path( 'with-empty-infrastructure.zip')) as zip_tester: zip_tester.assert_has_directory(BRENT_DEFINITIONS_DIR) inf_path = os.path.join(BRENT_DEFINITIONS_DIR, BRENT_INFRASTRUCTURE_DIR) zip_tester.assert_has_directory(inf_path) zip_tester.assert_has_no_file( os.path.join(inf_path, '.gitkeep'))
def test_build_behaviour(self): project_sim = self.simlab.simulate_type_with_behaviour() project = Project(project_sim.path) build_options = BuildOptions() result = project.build(build_options) self.assertFalse(result.validation_result.has_warnings()) pkg = result.pkg with self.assert_package(pkg) as pkg_tester: pkg_tester.assert_has_descriptor_file( os.path.join(TYPE_DESCRIPTOR_DIR, TYPE_DESCRIPTOR_YML_FILE), WITH_BEHAVIOUR_DESCRIPTOR_YAML) pkg_tester.assert_has_directory(ASSEMBLY_BEHAVIOUR_DIR) pkg_tester.assert_has_directory( os.path.join(ASSEMBLY_BEHAVIOUR_DIR, ASSEMBLY_CONFIGURATIONS_DIR)) pkg_tester.assert_has_file( os.path.join(ASSEMBLY_BEHAVIOUR_DIR, ASSEMBLY_CONFIGURATIONS_DIR, 'simple.json'), WITH_BEHAVIOUR_SIMPLE_CONFIGURATION_JSON) pkg_tester.assert_has_directory( os.path.join(ASSEMBLY_BEHAVIOUR_DIR, ASSEMBLY_TESTS_DIR)) pkg_tester.assert_has_file( os.path.join(ASSEMBLY_BEHAVIOUR_DIR, ASSEMBLY_TESTS_DIR, 'test.json'), WITH_BEHAVIOUR_TEST_JSON) pkg_tester.assert_has_meta({ 'schema': '2.0', 'name': 'with_behaviour', 'version': '1.0', 'type': 'Type' })
def test_build_with_template(self): project_sim = self.simlab.simulate_assembly_with_template() project = Project(project_sim.path) build_options = BuildOptions() result = project.build(build_options) self.assertIsInstance(result, BuildResult) self.assertFalse(result.validation_result.has_warnings()) pkg = result.pkg self.assertIsNotNone(pkg) self.assertIsInstance(pkg, pkgs.Pkg) package_base_name = os.path.basename(pkg.path) self.assertEqual(package_base_name, 'with_template-1.0.tgz') with self.assert_package(pkg) as pkg_tester: pkg_tester.assert_has_descriptor_file( os.path.join(ASSEMBLY_DESCRIPTOR_DIR, ASSEMBLY_DESCRIPTOR_YML_FILE), WITH_TEMPLATE_ASSEMBLY_DESCRIPTOR_YAML) pkg_tester.assert_has_descriptor_file( os.path.join(ASSEMBLY_DESCRIPTOR_DIR, ASSEMBLY_DESCRIPTOR_TEMPLATE_YML_FILE), WITH_TEMPLATE_ASSEMBLY_TEMPLATE_DESCRIPTOR_YAML) pkg_tester.assert_has_meta({ 'schema': '2.0', 'name': 'with_template', 'version': '1.0', 'type': 'Assembly' })
def test_validate_assembly_subproject_with_non_json_test(self): project_sim = self.simlab.simulate_assembly_contains_invalid_assembly_non_json_test() project = Project(project_sim.path) validate_options = ValidateOptions() result = project.validate(validate_options) test_path = os.path.join(project_sim.path, PROJECT_CONTAINS_DIR, project_lab.SUBPROJECT_NAME_INVALID_ASSEMBLY_NON_JSON_TEST, ASSEMBLY_BEHAVIOUR_DIR, ASSEMBLY_TESTS_DIR, 'notjson.xml') self.assert_validation_errors(result, 'Test [{0}]: is not a json file (with a .json extension)'.format(test_path))
def test_validate_assembly_without_descriptor_file(self): project_sim = self.simlab.simulate_invalid_assembly_no_descriptor() project = Project(project_sim.path) validate_options = ValidateOptions() result = project.validate(validate_options) descriptor_path = os.path.join(project_sim.path, ASSEMBLY_DESCRIPTOR_DIR, ASSEMBLY_DESCRIPTOR_YML_FILE) self.assert_validation_errors(result, 'No descriptor found at: {0}'.format(descriptor_path))
def test_validate_allow_autocorrect_adds_selector_to_driver_entries_in_descriptor( self): project_sim = self.simlab.simulate_brent_with_missing_driver_selector() project = Project(project_sim.path) validate_options = ValidateOptions() validate_options.allow_autocorrect = True result = project.validate(validate_options) self.assertFalse(result.has_errors()) self.assertFalse(result.has_warnings()) project = Project(project_sim.path) tester = self.assert_project(project) lm_dir = os.path.join(BRENT_DEFINITIONS_DIR, BRENT_DESCRIPTOR_DIR) descriptor_path = os.path.join(lm_dir, BRENT_DESCRIPTOR_YML_FILE) tester.assert_has_file( descriptor_path, EXPECTED_AUTOCORRECT_WITH_MISSING_DRIVER_SELECTORS_DESCRIPTOR)
def test_validate_assembly_with_non_json_test(self): project_sim = self.simlab.simulate_invalid_assembly_non_json_test() project = Project(project_sim.path) validate_options = ValidateOptions() result = project.validate(validate_options) test_path = os.path.join(project_sim.path, ASSEMBLY_BEHAVIOUR_DIR, ASSEMBLY_TESTS_DIR, 'notjson.xml') self.assert_validation_errors(result, 'Test [{0}]: is not a json file (with a .json extension)'.format(test_path))
def test_validate_assembly_with_invalid_json_test(self): project_sim = self.simlab.simulate_invalid_assembly_invalid_json_test() project = Project(project_sim.path) validate_options = ValidateOptions() result = project.validate(validate_options) test_path = os.path.join(project_sim.path, ASSEMBLY_BEHAVIOUR_DIR, ASSEMBLY_TESTS_DIR, 'notvalid.json') self.assert_validation_errors(result, 'Test [{0}]: does not contain valid JSON: Expecting value: line 1 column 1 (char 0)'.format(test_path))
def test_create(self): request = CreateResourceProjectRequest() request.name = 'Test' request.target_location = self.tmp_dir request.resource_manager = 'ansiblerm' request.version = '9.9' creator = ProjectCreator(request, CreateOptions()) creator.create() project = Project(self.tmp_dir) tester = self.assert_project(project) tester.assert_has_file(os.path.join(ARM_DESCRIPTOR_DIR, 'Test.yml'), 'description: descriptor for Test') tester.assert_has_directory(ARM_LIFECYCLE_DIR) tester.assert_has_file( os.path.join(ARM_METAINF_DIR, ARM_MANIFEST_FILE), 'resource-manager: ansible') tester.assert_has_directory(ARM_TEST_DIR) tester.assert_has_config({ 'schema': '2.0', 'name': 'Test', 'version': '9.9', 'type': 'Resource', 'packaging': 'tgz', 'resource-manager': 'ansiblerm' })
def test_validate_assembly_subproject_without_descriptor_file(self): project_sim = self.simlab.simulate_assembly_contains_invalid_assembly_no_descriptor() project = Project(project_sim.path) validate_options = ValidateOptions() result = project.validate(validate_options) descriptor_path = os.path.join(project_sim.path, PROJECT_CONTAINS_DIR, project_lab.SUBPROJECT_NAME_INVALID_ASSEMBLY_NO_DESCRIPTOR, ASSEMBLY_DESCRIPTOR_DIR, ASSEMBLY_DESCRIPTOR_YML_FILE) self.assert_validation_errors(result, 'No descriptor found at: {0}'.format(descriptor_path))
def test_validate_assembly_subproject_with_non_json_runtime(self): project_sim = self.simlab.simulate_assembly_contains_invalid_assembly_non_json_runtime() project = Project(project_sim.path) build_options = BuildOptions() with self.assertRaises(BuildValidationError) as context: project.build(build_options) runtime_path = os.path.join(project_sim.path, PROJECT_CONTAINS_DIR, project_lab.SUBPROJECT_NAME_INVALID_ASSEMBLY_NON_JSON_RUNTIME, ASSEMBLY_BEHAVIOUR_DIR, ASSEMBLY_RUNTIME_DIR, 'notjson.xml') self.assert_validation_errors(context.exception.validation_result, 'Runtime [{0}]: is not a json file (with a .json extension)'.format(runtime_path))
def test_validate_assembly(self): project_sim = self.simlab.simulate_assembly_basic() project = Project(project_sim.path) validate_options = ValidateOptions() result = project.validate(validate_options) self.assertIsInstance(result, ValidationResult) self.assertFalse(result.has_errors()) self.assertFalse(result.has_warnings())
def test_validate_assembly_subproject_without_descriptor_file(self): project_sim = self.simlab.simulate_assembly_contains_invalid_assembly_no_descriptor() project = Project(project_sim.path) build_options = BuildOptions() with self.assertRaises(BuildValidationError) as context: project.build(build_options) descriptor_path = os.path.join(project_sim.path, PROJECT_CONTAINS_DIR, project_lab.SUBPROJECT_NAME_INVALID_ASSEMBLY_NO_DESCRIPTOR, ASSEMBLY_DESCRIPTOR_DIR, ASSEMBLY_DESCRIPTOR_YML_FILE) self.assert_validation_errors(context.exception.validation_result, 'No descriptor found at: {0}'.format(descriptor_path))
def test_build_validate_assembly_with_invalid_json_runtime(self): project_sim = self.simlab.simulate_invalid_assembly_invalid_json_runtime() project = Project(project_sim.path) build_options = BuildOptions() with self.assertRaises(BuildValidationError) as context: project.build(build_options) runtime_path = os.path.join(project_sim.path, ASSEMBLY_BEHAVIOUR_DIR, ASSEMBLY_RUNTIME_DIR, 'notvalid.json') self.assert_validation_errors(context.exception.validation_result, 'Runtime [{0}]: does not contain valid JSON: Expecting value: line 1 column 1 (char 0)'.format(runtime_path))
def test_validate_assembly_subproject_with_invalid_json_test(self): project_sim = self.simlab.simulate_assembly_contains_invalid_assembly_invalid_json_test() project = Project(project_sim.path) build_options = BuildOptions() with self.assertRaises(BuildValidationError) as context: project.build(build_options) test_path = os.path.join(project_sim.path, PROJECT_CONTAINS_DIR, project_lab.SUBPROJECT_NAME_INVALID_ASSEMBLY_INVALID_JSON_TEST, ASSEMBLY_BEHAVIOUR_DIR, ASSEMBLY_TESTS_DIR, 'notvalid.json') self.assert_validation_errors(context.exception.validation_result, 'Test [{0}]: does not contain valid JSON: Expecting value: line 1 column 1 (char 0)'.format(test_path))
def test_build_validate_assembly_with_non_json_test(self): project_sim = self.simlab.simulate_invalid_assembly_non_json_test() project = Project(project_sim.path) build_options = BuildOptions() with self.assertRaises(BuildValidationError) as context: project.build(build_options) test_path = os.path.join(project_sim.path, ASSEMBLY_BEHAVIOUR_DIR, ASSEMBLY_TESTS_DIR, 'notjson.xml') self.assert_validation_errors(context.exception.validation_result, 'Test [{0}]: is not a json file (with a .json extension)'.format(test_path))
def test_validate_assembly_subproject_with_invalid_json_runtime(self): project_sim = self.simlab.simulate_assembly_contains_invalid_assembly_invalid_json_runtime() project = Project(project_sim.path) validate_options = ValidateOptions() result = project.validate(validate_options) runtime_path = os.path.join(project_sim.path, PROJECT_CONTAINS_DIR, project_lab.SUBPROJECT_NAME_INVALID_ASSEMBLY_INVALID_JSON_RUNTIME, ASSEMBLY_BEHAVIOUR_DIR, ASSEMBLY_RUNTIME_DIR, 'notvalid.json') self.assert_validation_errors(result, 'Runtime [{0}]: does not contain valid JSON: Expecting value: line 1 column 1 (char 0)'.format(runtime_path))
def test_build(self): project_sim = self.simlab.simulate_brent_basic() project = Project(project_sim.path) build_options = BuildOptions() result = project.build(build_options) self.assertIsInstance(result, BuildResult) self.assertFalse(result.validation_result.has_warnings()) pkg = result.pkg self.assertIsNotNone(pkg) self.assertIsInstance(pkg, pkgs.Pkg) package_base_name = os.path.basename(pkg.path) self.assertEqual(package_base_name, 'basic-1.0.tgz') with self.assert_package(pkg) as pkg_tester: pkg_tester.assert_has_file_path('basic.zip') pkg_tester.assert_has_file(BRENT_DESCRIPTOR_YML_FILE, BASIC_DESCRIPTOR_YAML) pkg_tester.assert_has_meta({ 'schema': '2.0', 'name': 'basic', 'version': '1.0', 'type': 'Resource', 'resource-manager': 'brent' }) with self.assert_zip( pkg_tester.get_file_path('basic.zip')) as zip_tester: zip_tester.assert_has_directory(BRENT_DEFINITIONS_DIR) lm_path = os.path.join(BRENT_DEFINITIONS_DIR, BRENT_DESCRIPTOR_DIR) zip_tester.assert_has_file( os.path.join(lm_path, BRENT_DESCRIPTOR_YML_FILE), BASIC_DESCRIPTOR_YAML) zip_tester.assert_has_directory(BRENT_LIFECYCLE_DIR) openstack_dir = os.path.join(BRENT_LIFECYCLE_DIR, BRENT_OPENSTACK_DIR) zip_tester.assert_has_directory(openstack_dir) openstack_tosca_path = os.path.join( openstack_dir, BRENT_OPENSTACK_TOSCA_YAML_FILE) zip_tester.assert_has_file(openstack_tosca_path, BASIC_INFRASTRUCTURE_TOSCA) ansible_dir = os.path.join(BRENT_LIFECYCLE_DIR, BRENT_LIFECYCLE_ANSIBLE_DIR) zip_tester.assert_has_directory(ansible_dir) ansible_scripts_dir = os.path.join( ansible_dir, BRENT_LIFECYCLE_ANSIBLE_SCRIPTS_DIR) zip_tester.assert_has_directory(ansible_scripts_dir) zip_tester.assert_has_file( os.path.join(ansible_scripts_dir, 'Install.yaml'), BASIC_INSTALL_PLAYBOOK) ansible_config_dir = os.path.join( ansible_dir, BRENT_LIFECYCLE_ANSIBLE_CONFIG_DIR) zip_tester.assert_has_directory(ansible_config_dir) zip_tester.assert_has_file( os.path.join(ansible_config_dir, 'inventory'), BASIC_INVENTORY) zip_tester.assert_has_file( os.path.join(ansible_config_dir, 'host_vars', 'example-host.yml'), BASIC_EXAMPLE_HOST_YAML)
def test_validate_resource_without_lifecycle(self): project_sim = self.simlab.simulate_invalid_brent_2dot1_no_lifecycle() project = Project(project_sim.path) validate_options = ValidateOptions() result = project.validate(validate_options) lifecycle_path = os.path.join(project_sim.path, BRENT_LIFECYCLE_DIR) self.assert_validation_errors( result, 'No Lifecycle directory found at: {0}'.format(lifecycle_path))
def test_validate_resource_without_manifest(self): project_sim = self.simlab.simulate_invalid_arm_no_manifest() project = Project(project_sim.path) validate_options = ValidateOptions() result = project.validate(validate_options) manifest_path = os.path.join(project_sim.path, ARM_METAINF_DIR, ARM_MANIFEST_FILE) self.assert_validation_errors( result, 'No manifest found at: {0}'.format(manifest_path))
def test_create_sol003(self): request = CreateResourceProjectRequest() request.name = 'Test' request.version = '9.9' request.target_location = self.tmp_dir request.resource_manager = 'brent2.1' request.params['lifecycle'] = 'sol003' creator = ProjectCreator(request, CreateOptions()) creator.create() project = Project(self.tmp_dir) tester = self.assert_project(project) tester.assert_has_config({ 'schema': '2.0', 'name': 'Test', 'version': '9.9', 'type': 'Resource', 'packaging': 'tgz', 'resource-manager': 'brent2.1' }) tester.assert_has_directory(os.path.join(BRENT_DEFINITIONS_DIR)) inf_dir = os.path.join(BRENT_DEFINITIONS_DIR, BRENT_INFRASTRUCTURE_DIR) tester.assert_has_directory(inf_dir) tester.assert_has_file(os.path.join(inf_dir, 'example.yaml'), EXPECTED_OPENSTACK_EXAMPLE_TOSCA) lm_dir = os.path.join(BRENT_DEFINITIONS_DIR, BRENT_DESCRIPTOR_DIR) tester.assert_has_directory(lm_dir) descriptor_path = os.path.join(lm_dir, BRENT_DESCRIPTOR_YML_FILE) tester.assert_has_file( descriptor_path, EXPECTED_OS_AND_SOL003_DESCRIPTOR.format('Test')) tester.assert_has_directory(os.path.join(BRENT_LIFECYCLE_DIR)) sol003_dir = os.path.join(BRENT_LIFECYCLE_DIR, BRENT_SOL003_DIR) tester.assert_has_directory(sol003_dir) sol003_scripts_dir = os.path.join(sol003_dir, BRENT_SOL003_SCRIPTS_DIR) tester.assert_has_directory(sol003_scripts_dir) tester.assert_has_file_path( os.path.join(sol003_scripts_dir, BRENT_SOL003_CREATE_VNF_REQUEST_FILE)) tester.assert_has_file_path( os.path.join(sol003_scripts_dir, BRENT_SOL003_HEAL_VNF_REQUEST_FILE)) tester.assert_has_file_path( os.path.join(sol003_scripts_dir, BRENT_SOL003_INSTANTIATE_VNF_REQUEST_FILE)) tester.assert_has_file_path( os.path.join(sol003_scripts_dir, BRENT_SOL003_OPERATE_VNF_REQUEST_START_FILE)) tester.assert_has_file_path( os.path.join(sol003_scripts_dir, BRENT_SOL003_OPERATE_VNF_REQUEST_STOP_FILE)) tester.assert_has_file_path( os.path.join(sol003_scripts_dir, BRENT_SOL003_SCALE_VNF_REQUEST_FILE)) tester.assert_has_file_path( os.path.join(sol003_scripts_dir, BRENT_SOL003_TERMINATE_VNF_REQUEST_FILE)) tester.assert_has_file_path( os.path.join(sol003_scripts_dir, BRENT_SOL003_VNF_INSTANCE_FILE))
def test_validate_resource_without_descriptor(self): project_sim = self.simlab.simulate_invalid_arm_no_descriptor() project = Project(project_sim.path) validate_options = ValidateOptions() result = project.validate(validate_options) descriptor_path = os.path.join(project_sim.path, ARM_DESCRIPTOR_DIR, 'invalid_no_descriptor.yml') self.assert_validation_errors( result, 'No descriptor found at: {0}'.format(descriptor_path))
def test_init_missing_projectfile(self): project_sim = self.simlab.simulate_assembly_basic() project_file_path = os.path.join(project_sim.path, PROJECT_FILE_YML) os.remove(project_file_path) with self.assertRaises(InvalidProjectError) as context: Project(project_sim.path) self.assertEqual( str(context.exception), 'Could not find project file at path: {0}'.format( project_file_path))
def test_validate_resource_without_definitions(self): project_sim = self.simlab.simulate_invalid_brent_2dot1_no_definitions() project = Project(project_sim.path) validate_options = ValidateOptions() result = project.validate(validate_options) descriptor_path = os.path.join(project_sim.path, BRENT_DEFINITIONS_DIR, BRENT_DESCRIPTOR_DIR, BRENT_DESCRIPTOR_YML_FILE) self.assert_validation_errors( result, 'No descriptor found at: {0}'.format(descriptor_path))
def test_create_defaults(self): request = CreateResourceProjectRequest() request.name = 'Test' request.version = '9.9' request.target_location = self.tmp_dir request.resource_manager = 'brent' creator = ProjectCreator(request, CreateOptions()) creator.create() project = Project(self.tmp_dir) tester = self.assert_project(project) tester.assert_has_config({ 'schema': '2.0', 'name': 'Test', 'version': '9.9', 'packaging': 'tgz', 'type': 'Resource', 'resource-manager': 'brent' }) tester.assert_has_directory(BRENT_DEFINITIONS_DIR) lm_dir = os.path.join(BRENT_DEFINITIONS_DIR, BRENT_DESCRIPTOR_DIR) tester.assert_has_directory(lm_dir) descriptor_path = os.path.join(lm_dir, BRENT_DESCRIPTOR_YML_FILE) tester.assert_has_file( descriptor_path, EXPECTED_OS_AND_ANSIBLE_DESCRIPTOR.format('Test')) tester.assert_has_directory(os.path.join(BRENT_LIFECYCLE_DIR)) openstack_dir = os.path.join(BRENT_LIFECYCLE_DIR, BRENT_OPENSTACK_DIR) tester.assert_has_directory(openstack_dir) openstack_heat_path = os.path.join(openstack_dir, BRENT_OPENSTACK_HEAT_YAML_FILE) tester.assert_has_file(openstack_heat_path, EXPECTED_OPENSTACK_EXAMPLE_HEAT) ansible_dir = os.path.join(BRENT_LIFECYCLE_DIR, BRENT_LIFECYCLE_ANSIBLE_DIR) tester.assert_has_directory(ansible_dir) ansible_scripts_dir = os.path.join( ansible_dir, BRENT_LIFECYCLE_ANSIBLE_SCRIPTS_DIR) tester.assert_has_directory(ansible_scripts_dir) tester.assert_has_file( os.path.join(ansible_scripts_dir, 'Install.yaml'), EXPECTED_ANSIBLE_INSTALL_SCRIPT) ansible_config_dir = os.path.join(ansible_dir, BRENT_LIFECYCLE_ANSIBLE_CONFIG_DIR) tester.assert_has_directory(ansible_config_dir) tester.assert_has_file( os.path.join(ansible_config_dir, BRENT_LIFECYCLE_ANSIBLE_INVENTORY_FILE), EXPECTED_ANSIBLE_INVENTORY) ansible_hostvars_dir = os.path.join( ansible_config_dir, BRENT_LIFECYCLE_ANSIBLE_CONFIG_HOSTVARS_DIR_NAME) tester.assert_has_directory(ansible_hostvars_dir) tester.assert_has_file( os.path.join(ansible_hostvars_dir, 'example-host.yml'), EXPECTED_ANSIBLE_HOST_VARS)
def test_init_resource(self): resource_project_sim = self.simlab.simulate_arm_basic() resource_project = Project(resource_project_sim.path) self.assertTrue(isinstance(resource_project.tree, ProjectTree)) self.assertTrue(isinstance(resource_project.config, RootProjectConfig)) self.assertTrue( isinstance(resource_project.source_handler, ResourceSourceHandler)) self.assertEqual(resource_project.source_handler.root_path, resource_project.tree.root_path) self.assertEqual(resource_project.source_handler.source_config, resource_project.config)