コード例 #1
0
ファイル: test_validate.py プロジェクト: rajahaidar/lmctl
 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)
コード例 #2
0
ファイル: test_build.py プロジェクト: rajahaidar/lmctl
 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)
コード例 #3
0
ファイル: test_build.py プロジェクト: rajahaidar/lmctl
 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'
             }]
         })
コード例 #4
0
 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'
     })
コード例 #5
0
ファイル: test_build.py プロジェクト: rajahaidar/lmctl
 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'))
コード例 #6
0
 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'
         })
コード例 #7
0
ファイル: test_build.py プロジェクト: rajahaidar/lmctl
 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'
         })
コード例 #8
0
ファイル: test_validate.py プロジェクト: rajahaidar/lmctl
 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))
コード例 #9
0
ファイル: test_validate.py プロジェクト: rajahaidar/lmctl
 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))
コード例 #10
0
ファイル: test_validate.py プロジェクト: rajahaidar/lmctl
 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)
コード例 #11
0
ファイル: test_validate.py プロジェクト: rajahaidar/lmctl
 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))
コード例 #12
0
ファイル: test_validate.py プロジェクト: rajahaidar/lmctl
 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))
コード例 #13
0
 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'
     })
コード例 #14
0
ファイル: test_validate.py プロジェクト: rajahaidar/lmctl
 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))
コード例 #15
0
ファイル: test_validate.py プロジェクト: rajahaidar/lmctl
 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))
コード例 #16
0
ファイル: test_validate.py プロジェクト: rajahaidar/lmctl
 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())
コード例 #17
0
ファイル: test_validate.py プロジェクト: rajahaidar/lmctl
 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))
コード例 #18
0
ファイル: test_validate.py プロジェクト: rajahaidar/lmctl
 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))
コード例 #19
0
ファイル: test_validate.py プロジェクト: rajahaidar/lmctl
 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))
コード例 #20
0
ファイル: test_validate.py プロジェクト: rajahaidar/lmctl
 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))
コード例 #21
0
ファイル: test_validate.py プロジェクト: rajahaidar/lmctl
 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))
コード例 #22
0
 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)
コード例 #23
0
ファイル: test_validate.py プロジェクト: rajahaidar/lmctl
 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))
コード例 #24
0
 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))
コード例 #25
0
 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))
コード例 #26
0
 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))
コード例 #27
0
 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))
コード例 #28
0
ファイル: test_validate.py プロジェクト: rajahaidar/lmctl
 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))
コード例 #29
0
ファイル: test_create.py プロジェクト: rajahaidar/lmctl
 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)
コード例 #30
0
 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)