def resource_setup(cls): if not CONF.application_catalog.deployment_tests or \ not CONF.application_catalog.linux_image: msg = "Application Catalog Scenario Deployment Tests will be " \ "skipped." raise cls.skipException(msg) super(TestMuranoDeployment, cls).resource_setup() cls.abs_archive_path = [None] * 3 cls.packages = [None] * 3 application_name = utils.generate_name('Apache') cls.abs_archive_path[0], dir_with_archive, archive_name = \ utils.prepare_package( application_name, app='io.murano.apps.test.ApacheHttpServerCustom', manifest_required=False) if CONF.application_catalog.glare_backend: cls.client = cls.artifacts_client else: cls.client = cls.application_catalog_client cls.packages[0] = cls.client.upload_package(application_name, archive_name, dir_with_archive, { "categories": ["Web"], "tags": ["test"] }) application_name = utils.generate_name('Lighttpd') cls.abs_archive_path[1], dir_with_archive, archive_name = \ utils.prepare_package( application_name, app='io.murano.apps.test.Lighttpd', manifest_required=False) cls.packages[1] = cls.client.upload_package(application_name, archive_name, dir_with_archive, { "categories": ["Web"], "tags": ["test"] }) application_name = utils.generate_name('UpdateExecutor') cls.abs_archive_path[2], dir_with_archive, archive_name = \ utils.prepare_package( application_name, app='io.murano.apps.test.UpdateExecutor', manifest_required=False) cls.packages[2] = cls.client.upload_package(application_name, archive_name, dir_with_archive, { "categories": ["Web"], "tags": ["test"] })
def test_double_provision_to_the_same_space(self): application_name = utils.generate_name('cfapi') abs_archive_path, dir_with_archive, archive_name = \ utils.prepare_package(application_name) self.addCleanup(os.remove, abs_archive_path) package = self.application_catalog_client.upload_package( application_name, archive_name, dir_with_archive, { "categories": [], "tags": [], 'is_public': True }) self.addCleanup(self.application_catalog_client.delete_package, package['id']) app_list = self.service_broker_client.get_applications_list() app = self.service_broker_client.get_application( application_name, app_list) post_json = {} instance_id = utils.generate_uuid() space_id = utils.generate_uuid() service = self.service_broker_client.provision(instance_id, app['id'], app['plans'][0]['id'], space_id, post_json) self.wait_for_result(instance_id, 30) self.addCleanup(self.perform_deprovision, instance_id) self.assertIsInstance(json.loads(service), dict) application_name = utils.generate_name('cfapi') abs_archive_path, dir_with_archive, archive_name = \ utils.prepare_package(application_name) self.addCleanup(os.remove, abs_archive_path) package = self.application_catalog_client.upload_package( application_name, archive_name, dir_with_archive, { "categories": [], "tags": [], 'is_public': True }) self.addCleanup(self.application_catalog_client.delete_package, package['id']) app_list = self.service_broker_client.get_applications_list() app = self.service_broker_client.get_application( application_name, app_list) post_json = {} instance_id = utils.generate_uuid() service = self.service_broker_client.provision(instance_id, app['id'], app['plans'][0]['id'], space_id, post_json) self.wait_for_result(instance_id, 30) self.addCleanup(self.perform_deprovision, instance_id) self.assertIsInstance(json.loads(service), dict)
def test_publicize_package_as_non_admin_user(self): # Given a package that isn't public application_name = utils.generate_name('test_publicize_package_' 'as_non_admin_user') abs_archive_path, dir_with_archive, archive_name = \ utils.prepare_package(application_name) self.addCleanup(os.remove, abs_archive_path) package = self.application_catalog_client.upload_package( application_name, archive_name, dir_with_archive, {"categories": [], "tags": [], 'is_public': False}) self.addCleanup(self.application_catalog_client.delete_package, package['id']) # When package is publicized, then the method throws an exception post_body = [ { "op": "replace", "path": "/is_public", "value": True } ] self.assertRaises(exceptions.Forbidden, self.application_catalog_client.update_package, package['id'], post_body)
def test_provision_with_incorrect_input(self): """Test provision with restricted items in object model Test will fail on deprovision, if parameters from '?' section will passed through service-broker. """ application_name = utils.generate_name('cfapi') abs_archive_path, dir_with_archive, archive_name = \ utils.prepare_package(application_name) self.addCleanup(os.remove, abs_archive_path) package = self.application_catalog_client.upload_package( application_name, archive_name, dir_with_archive, {"categories": [], "tags": [], 'is_public': True}) self.addCleanup(self.application_catalog_client.delete_package, package['id']) app_list = self.service_broker_client.get_applications_list() app = self.service_broker_client.get_application(application_name, app_list) # NOTE(freerunner): The '?' section should be cutted off during # provision action. post_json = { '?': { 'type': 'io.murano.apps.{0}'.format(application_name), 'id': utils.generate_uuid() } } instance_id = utils.generate_uuid() space_id = utils.generate_uuid() service = self.service_broker_client.provision( instance_id, app['id'], app['plans'][0]['id'], space_id, post_json) self.wait_for_result(instance_id, 30) self.addCleanup(self.perform_deprovision, instance_id) self.assertIsInstance(json.loads(service), dict)
def test_binding_instance(self): application_name = utils.generate_name('cfapi') abs_archive_path, dir_with_archive, archive_name = \ utils.prepare_package(application_name) self.addCleanup(os.remove, abs_archive_path) package = self.application_catalog_client.upload_package( application_name, archive_name, dir_with_archive, {"categories": [], "tags": [], 'is_public': True}) self.addCleanup(self.application_catalog_client.delete_package, package['id']) app_list = self.service_broker_client.get_applications_list() app = self.service_broker_client.get_application(application_name, app_list) post_json = {} instance_id = utils.generate_uuid() space_id = utils.generate_uuid() service = self.service_broker_client.provision( instance_id, app['id'], app['plans'][0]['id'], space_id, post_json) self.wait_for_result(instance_id, 30) self.addCleanup(self.perform_deprovision, instance_id) self.assertIsInstance(json.loads(service), dict) binding = self.service_broker_client.create_binding(instance_id) self.assertIsInstance(binding, dict) self.assertEqual({'uri': 'localhost'}, binding)
def test_publicize_package(self): # Given a package that isn't public application_name = utils.generate_name('test_publicize_package') abs_archive_path, dir_with_archive, archive_name = \ utils.prepare_package(application_name) self.addCleanup(os.remove, abs_archive_path) package = self.application_catalog_client.upload_package( application_name, archive_name, dir_with_archive, { "categories": [], "tags": [], 'is_public': False }) self.addCleanup(self.application_catalog_client.delete_package, package['id']) fetched_package = self.application_catalog_client.get_package( package['id']) self.assertFalse(fetched_package['is_public']) # When package is publicized post_body = [{"op": "replace", "path": "/is_public", "value": True}] self.application_catalog_client.update_package(package['id'], post_body) # Then package becomes public fetched_package = self.application_catalog_client.get_package( package['id']) self.assertTrue(fetched_package['is_public'])
def resource_setup(cls): super(TestRepository, cls).resource_setup() application_name = utils.generate_name('test_repository_class') cls.abs_archive_path, dir_with_archive, archive_name = \ utils.prepare_package(application_name) cls.package = cls.application_catalog_client.upload_package( application_name, archive_name, dir_with_archive, {"categories": [], "tags": [], 'is_public': False})
def resource_setup(cls): super(TestCategories, cls).resource_setup() application_name = utils.generate_name(cls.__name__) cls.abs_archive_path, dir_with_archive, archive_name = \ utils.prepare_package(application_name) cls.package = cls.application_catalog_client.upload_package( application_name, archive_name, dir_with_archive, {"categories": [], "tags": [], 'is_public': False}) name = utils.generate_name(cls.__name__) cls.category = cls.application_catalog_client.create_category(name)
def resource_setup(cls): super(TestRepositoryNegativeForbidden, cls).resource_setup() application_name = utils.generate_name('package_test_upload') cls.abs_archive_path, dir_with_archive, archive_name = \ utils.prepare_package(application_name) cls.package = cls.application_catalog_client.upload_package( application_name, archive_name, dir_with_archive, {"categories": [], "tags": [], 'is_public': False}) cls.alt_client = cls.get_client_with_isolated_creds( type_of_creds='alt')
def resource_setup(cls): super(TestRepository, cls).resource_setup() application_name = utils.generate_name('test_repository_class') cls.abs_archive_path, dir_with_archive, archive_name = \ utils.prepare_package(application_name) cls.package = cls.application_catalog_client.upload_package( application_name, archive_name, dir_with_archive, { "categories": [], "tags": [], 'is_public': False })
def upload_package(cls, application_name, version=None, require=None): abs_archive_path, dir_with_archive, archive_name = \ utils.prepare_package(application_name, version=version, add_class_name=True, require=require) package = cls.artifacts_client.upload_package(application_name, archive_name, dir_with_archive, { "categories": [], "tags": [], 'is_public': False }) return package, abs_archive_path
def test_upload_and_delete_package(self): application_name = utils.generate_name('package_test_upload') abs_archive_path, dir_with_archive, archive_name = \ utils.prepare_package(application_name) self.addCleanup(os.remove, abs_archive_path) package = self.application_catalog_client.upload_package( application_name, archive_name, dir_with_archive, {"categories": [], "tags": [], 'is_public': False}) package_list = self.application_catalog_client.get_list_packages() self.assertIn(package['id'], {pkg['id'] for pkg in package_list}) self.application_catalog_client.delete_package(package['id']) package_list = self.application_catalog_client.get_list_packages() self.assertNotIn(package['id'], {pkg['id'] for pkg in package_list})
def resource_setup(cls): super(TestCategories, cls).resource_setup() application_name = utils.generate_name(cls.__name__) cls.abs_archive_path, dir_with_archive, archive_name = \ utils.prepare_package(application_name) cls.package = cls.application_catalog_client.upload_package( application_name, archive_name, dir_with_archive, { "categories": [], "tags": [], 'is_public': False }) name = utils.generate_name(cls.__name__) cls.category = cls.application_catalog_client.create_category(name)
def resource_setup(cls): if CONF.application_catalog.glare_backend: msg = ("Murano using GLARE backend. " "Repository tests will be skipped.") raise cls.skipException(msg) super(TestRepository, cls).resource_setup() application_name = utils.generate_name('test_repository_class') cls.abs_archive_path, dir_with_archive, archive_name = \ utils.prepare_package(application_name) cls.package = cls.application_catalog_client.upload_package( application_name, archive_name, dir_with_archive, {"categories": [], "tags": [], 'is_public': False})
def resource_setup(cls): super(TestStaticActionsNegative, cls).resource_setup() application_name = utils.generate_name('test_repository_class') cls.abs_archive_path, dir_with_archive, archive_name = \ utils.prepare_package(application_name, add_class_name=True) if CONF.application_catalog.glare_backend: client = cls.artifacts_client else: client = cls.application_catalog_client cls.package = client.upload_package( application_name, archive_name, dir_with_archive, {"categories": [], "tags": [], 'is_public': False})
def resource_setup(cls): super(TestStaticActions, cls).resource_setup() application_name = utils.generate_name('test_repository_class') cls.abs_archive_path, dir_with_archive, archive_name = \ utils.prepare_package(application_name, add_class_name=True) if CONF.application_catalog.glare_backend: client = cls.artifacts_client else: client = cls.application_catalog_client cls.package = client.upload_package( application_name, archive_name, dir_with_archive, {"categories": [], "tags": [], 'is_public': False})
def test_upload_and_delete_package(self): application_name = utils.generate_name('package_test_upload') abs_archive_path, dir_with_archive, archive_name = \ utils.prepare_package(application_name) self.addCleanup(os.remove, abs_archive_path) packages_list = self.application_catalog_client.get_list_packages() package = self.application_catalog_client.upload_package( application_name, archive_name, dir_with_archive, {"categories": [], "tags": [], 'is_public': False}) updated_packages_list = self.application_catalog_client.\ get_list_packages() self.assertEqual(len(packages_list) + 1, len(updated_packages_list)) self.application_catalog_client.delete_package(package['id']) updated_packages_list = self.application_catalog_client.\ get_list_packages() self.assertEqual(len(packages_list), len(updated_packages_list))
def resource_setup(cls): super(TestSecurityGroups, cls).resource_setup() cls.linux = CONF.application_catalog.linux_image application_name = utils.generate_name('VM') cls.abs_archive_path, dir_with_archive, archive_name = \ utils.prepare_package( application_name, app='io.murano.apps.test.VM', manifest_required=False) if CONF.application_catalog.glare_backend: cls.client = cls.artifacts_client else: cls.client = cls.application_catalog_client cls.package = cls.client.upload_package( application_name, archive_name, dir_with_archive, {"categories": ["Web"], "tags": ["test"]})
def resource_setup(cls): if CONF.application_catalog.glare_backend: msg = ("Murano using GLARE backend. " "Repository tests will be skipped.") raise cls.skipException(msg) super(TestRepositoryNegativeForbidden, cls).resource_setup() application_name = utils.generate_name('package_test_upload') cls.abs_archive_path, dir_with_archive, archive_name = \ utils.prepare_package(application_name) cls.package = cls.application_catalog_client.upload_package( application_name, archive_name, dir_with_archive, {"categories": [], "tags": [], 'is_public': False}) cls.alt_client = cls.get_client_with_isolated_creds( type_of_creds='alt')
def resource_setup(cls): if not CONF.application_catalog.cinder_volume_tests: msg = "Cinder volumes attachment tests will be skipped." raise cls.skipException(msg) super(TestCinderVolumeIsolatedAdmin, cls).resource_setup() application_name = utils.generate_name('VM') cls.abs_archive_path, dir_with_archive, archive_name = \ utils.prepare_package( application_name, app='io.murano.apps.test.VM', manifest_required=False) if CONF.application_catalog.glare_backend: cls.client = cls.artifacts_client else: cls.client = cls.application_catalog_client cls.package = cls.client.upload_package( application_name, archive_name, dir_with_archive, {"categories": ["Web"], "tags": ["test"]}) cls.volume = cls.create_volume(size='1')