def test_0060_enable_disable_service(self): """Test the method APIExtension.enable_extension(). This test passes if the href returned after each execution of the method matches the service href. """ logger = Environment.get_default_logger() api_extension = APIExtension(TestApiExtension._client) logger.debug('Disabling service (name:' + TestApiExtension._service_name + ', namespace:' + TestApiExtension._service1_namespace + ').') href = api_extension.enable_extension( name=TestApiExtension._service_name, namespace=TestApiExtension._service1_namespace, enabled=False) self.assertEqual(href, TestApiExtension._service1_href) logger.debug('Re-enabling service (name:' + TestApiExtension._service_name + ', namespace:' + TestApiExtension._service1_namespace + ').') href = api_extension.enable_extension( name=TestApiExtension._service_name, namespace=TestApiExtension._service1_namespace, enabled=True) self.assertEqual(href, TestApiExtension._service1_href)
def initialize_on_vcloud(self): """Check and/register the extension on vCloud. """ self.log('info', 'Checking the initialization status of extension in vCloud.') if not ( self.conf('vcloud.api_extension.namespace') and self.conf('vcloud.api_extension.exchange') and self.conf('vcloud.api_extension.routing_key') ): self.log('warning', 'Missing items in configuration to make the initialization check-up. Ignoring.') return client = login_as_system_admin() ext_manager = APIExtension(client) try: current_ext_on_vcd = ext_manager.get_extension_info( self.name, namespace=self.conf('vcloud.api_extension.namespace')) self.log('info', 'Extension is already registered on vCloud') except MissingRecordException: self.log('warning', "This extension is not (yet) declared on vCloud.") current_ext_on_vcd = None except MultipleRecordsException: self.log('error', "Multiple extensions found with same name and namespace") sys.exit(-1) # Force a fresh redeploy of the full extension (Warning: be carrefull, ID will change !) if current_ext_on_vcd and self.conf('vcloud.api_extension.force_redeploy', False): ext_manager.delete_extension( self.name, namespace=self.conf('vcloud.api_extension.namespace')) self.log('info', 'Extension is unregistered on vCloud') current_ext_on_vcd = None # Only update an existing extension (Warning: does not update the API filters/patterns!) if current_ext_on_vcd and self.conf('vcloud.api_extension.auto_update', False): current_ext_on_vcd = ext_manager.update_extension( self.name, namespace=self.conf('vcloud.api_extension.namespace'), routing_key=self.conf('vcloud.api_extension.routing_key'), exchange=self.conf('vcloud.api_extension.exchange')) self.log('info', 'Extension is updated on vCloud') # Register a new extension if not current_ext_on_vcd: ext_manager.add_extension( self.name, namespace=self.conf('vcloud.api_extension.namespace'), routing_key=self.conf('vcloud.api_extension.routing_key'), exchange=self.conf('vcloud.api_extension.exchange'), patterns=self.conf('vcloud.api_extension.api_filters')) self.log('info', 'Extension is registered on vCloud') # Ensure to enable it ext_manager.enable_extension(self.name, namespace=self.conf('vcloud.api_extension.namespace'), enabled=True) self.log('info', 'Extension is enabled on vCloud')