def execute(self): """Create cloud region. Use settings values: - CLOUD_REGION_CLOUD_OWNER, - CLOUD_REGION_ID, - CLOUD_REGION_TYPE, - CLOUD_REGION_VERSION, - CLOUD_OWNER_DEFINED_TYPE, - COMPLEX_PHYSICAL_LOCATION_ID. """ super().execute() self._logger.info("*Check if cloud region exists *") try: CloudRegion.get_by_id( cloud_owner=settings.CLOUD_REGION_CLOUD_OWNER, cloud_region_id=settings.CLOUD_REGION_ID, ) except ResourceNotFound: CloudRegion.create( cloud_owner=settings.CLOUD_REGION_CLOUD_OWNER, cloud_region_id=settings.CLOUD_REGION_ID, orchestration_disabled=False, in_maint=False, cloud_type=settings.CLOUD_REGION_TYPE, cloud_region_version=settings.CLOUD_REGION_VERSION, owner_defined_type=settings.CLOUD_OWNER_DEFINED_TYPE, complex_name=settings.COMPLEX_PHYSICAL_LOCATION_ID )
def test_unregister_from_multicloud(mock_unregister): """Test register to multicloud""" cloud_region = CloudRegion(cloud_owner="test_cloud_owner", cloud_region_id="test_cloud_region", orchestration_disabled=True, in_maint=False) cloud_region.unregister_from_multicloud() mock_unregister.assert_called_once()
def test_tenants_info_wrong_cloud_name(mock_send, mock_cloud_regions): """Test get Tenant from A&AI.""" mock_cloud_regions.return_value = CLOUD_REGIONS_ITERATOR mock_send.return_value = TENANT cloud_name = "Wrong_cloud_name" with pytest.raises(Exception) as excinfo: CloudRegion.get_by_id("DT", cloud_name) assert "not found" in str(excinfo.value)
def test_add_relationship(mock_send): """Test add_relationship method.""" cloud_region = CloudRegion(cloud_owner="tester", cloud_region_id="test", orchestration_disabled=True, in_maint=False) cloud_region.add_relationship( Relationship(related_to="test", related_link="test", relationship_data={}))
def test_delete_cloud_region(mock_send_message): cloud_region = CloudRegion(cloud_owner="test_cloud_owner", cloud_region_id="test_cloud_region", orchestration_disabled=True, in_maint=False) cloud_region.delete() mock_send_message.assert_called_once() method, descritption, url = mock_send_message.call_args[0] assert method == "DELETE" assert descritption == f"Delete cloud region test_cloud_region" assert url == cloud_region.url
def test_get_availability_zone_from_name(mock_send_message_json): """Test get Availability Zone by name""" cloud_region = CloudRegion(cloud_owner="test_cloud_owner", cloud_region_id="test_cloud_region", orchestration_disabled=True, in_maint=False) mock_send_message_json.return_value = AVAILABILITY_ZONE availability_zone = cloud_region.get_availability_zone_by_name( "OPNFV LaaS") assert availability_zone.name == "OPNFV LaaS" assert availability_zone.hypervisor_type == "1234" assert availability_zone.resource_version == "version1.0"
def test_add_tenant_to_cloud(mock_send_message): """Test Cloud Region class method""" cloud_region = CloudRegion(cloud_owner="test_cloud_owner", cloud_region_id="test_cloud_region", orchestration_disabled=True, in_maint=False) cloud_region.add_tenant(tenant_id="123456", tenant_name="test_tenant") mock_send_message.assert_called_once() method, description, url = mock_send_message.call_args[0] assert method == "PUT" assert description == "add tenant to cloud region" assert url == f"{cloud_region.url}/tenants/tenant/123456"
def test_add_availability_zone(mock_send_message): """Test Cloud Region class method""" cloud_region = CloudRegion(cloud_owner="test_cloud_owner", cloud_region_id="test_cloud_region", orchestration_disabled=True, in_maint=False) cloud_region.add_availability_zone(availability_zone_name="test_zone", availability_zone_hypervisor_type="1234") mock_send_message.assert_called_once() method, description, url = mock_send_message.call_args[0] assert method == "PUT" assert description == "Add availability zone to cloud region" assert url == f"{cloud_region.url}/availability-zones/availability-zone/test_zone"
def test_add_esr_system_info(mock_send_message): """Test Cloud Region class method""" cloud_region = CloudRegion(cloud_owner="test_cloud_owner", cloud_region_id="test_cloud_region", orchestration_disabled=True, in_maint=False) cloud_region.add_esr_system_info(esr_system_info_id="123456", user_name="test_user", password="******", system_type="test_type") mock_send_message.assert_called_once() method, description, url = mock_send_message.call_args[0] assert method == "PUT" assert description == "Add external system info to cloud region" assert url == f"{cloud_region.url}/esr-system-info-list/esr-system-info/123456"
def test_link_service_subscription_to_cloud_region_and_tenant(): requests.get(f"{Customer.base_url}/reset") customer = Customer.create(global_customer_id="test_global_customer_id", subscriber_name="test_subscriber_name", subscriber_type="test_subscriber_type") customer.subscribe_service("service_type") service_subscription = customer.get_service_subscription_by_service_type( "service_type") assert len(list(service_subscription.relationships)) == 0 with pytest.raises(ParameterError): service_subscription.cloud_region with pytest.raises(ParameterError): service_subscription.tenant cloud_region = CloudRegion.create("test_owner", "test_cloud_region", orchestration_disabled=True, in_maint=False) cloud_region.add_tenant(tenant_id="test_tenant_name", tenant_name="test_tenant_name", tenant_context="test_tenant_context") tenant = cloud_region.get_tenant(tenant_id="test_tenant_name") service_subscription.link_to_cloud_region_and_tenant( cloud_region=cloud_region, tenant=tenant) assert service_subscription.cloud_region assert service_subscription.tenant
def execute(self): """Connect service subsription to cloud region and tenant. Use settings values: - GLOBAL_CUSTOMER_ID, - SERVICE_NAME, - CLOUD_REGION_CLOUD_OWNER, - CLOUD_REGION_ID. """ super().execute() customer: Customer = Customer.get_by_global_customer_id( settings.GLOBAL_CUSTOMER_ID) service_subscription: ServiceSubscription = customer.get_service_subscription_by_service_type( settings.SERVICE_NAME) cloud_region: CloudRegion = CloudRegion.get_by_id( cloud_owner=settings.CLOUD_REGION_CLOUD_OWNER, cloud_region_id=settings.CLOUD_REGION_ID, ) # retrieve tenant # for which we are sure that an availability zone has been created tenant: Tenant = cloud_region.get_tenant(settings.TENANT_ID) service_subscription.link_to_cloud_region_and_tenant( cloud_region=cloud_region, tenant=tenant)
def test_cloud_regions_esr_system_infos(mock_send): """Test cloud region esr system info""" mock_send.return_value = ESR_SYSTEM_INFO cloud_region = CloudRegion(cloud_owner="tester", cloud_region_id="test", orchestration_disabled=True, in_maint=False) esr_system_info = next(cloud_region.esr_system_infos) assert isinstance(esr_system_info, EsrSystemInfo) assert esr_system_info.esr_system_info_id == "c2d5e75d-56fd-47bc-af31-95607b26fa93" assert esr_system_info.user_name == "test-devel" assert esr_system_info.password == "test-devel" assert esr_system_info.system_type == "openstack" assert esr_system_info.resource_version == "1586436352654" assert esr_system_info.system_name is None assert esr_system_info.esr_type is None assert esr_system_info.vendor is None assert esr_system_info.version is None assert esr_system_info.service_url == "http://keystone:5000/v3" assert esr_system_info.protocol is None assert esr_system_info.ssl_cacert is None assert esr_system_info.ssl_insecure is None assert esr_system_info.ip_address is None assert esr_system_info.port is None assert esr_system_info.cloud_domain == "Default" assert esr_system_info.default_tenant is None assert esr_system_info.passive is None assert esr_system_info.remote_path is None assert esr_system_info.system_status is None assert esr_system_info.openstack_region_id is None
def test_cloud_region_get_all(): requests.get(f"{CloudRegion.base_url}/reset") cloud_regions = list(CloudRegion.get_all()) assert len(cloud_regions) == 0 with pytest.raises(ResourceNotFound): CloudRegion.get_by_id("test_owner", "test_cloud_region") cloud_region: CloudRegion = CloudRegion.create("test_owner", "test_cloud_region", orchestration_disabled=True, in_maint=False) cloud_regions = list(CloudRegion.get_all()) assert len(cloud_regions) == 1 cloud_region = cloud_regions[0] assert cloud_region.cloud_owner == "test_owner" assert cloud_region.cloud_region_id == "test_cloud_region"
def test_a_la_carte_vl_instantiation(): requests.get(f"{ServiceInstantiation.base_url}/reset") requests.get(f"{Customer.base_url}/reset") requests.post(f"{ServiceInstantiation.base_url}/set_aai_mock", json={"AAI_MOCK": settings.AAI_URL}) customer = Customer.create(global_customer_id="test_global_customer_id", subscriber_name="test_subscriber_name", subscriber_type="test_subscriber_type") service = Service("test_service") service.unique_uuid = str(uuid4()) service.identifier = str(uuid4()) service.name = str(uuid4()) customer.subscribe_service("service_type") service_subscription = customer.get_service_subscription_by_service_type( "service_type") cloud_region = CloudRegion.create("test_owner", "test_cloud_region", orchestration_disabled=True, in_maint=False) cloud_region.add_tenant(tenant_id="test_tenant_name", tenant_name="test_tenant_name", tenant_context="test_tenant_context") tenant = cloud_region.get_tenant(tenant_id="test_tenant_name") service_subscription.link_to_cloud_region_and_tenant( cloud_region=cloud_region, tenant=tenant) owning_entity = "test_owning_entity" project = "test_project" # Service instantiation service._distributed = True assert len(list(service_subscription.service_instances)) == 0 service_instantiation_request = ServiceInstantiation.instantiate_ala_carte( service, cloud_region, tenant, customer, owning_entity, project, service_subscription) assert service_instantiation_request.status == ServiceInstantiation.StatusEnum.IN_PROGRESS service_instantiation_request.wait_for_finish() assert service_instantiation_request.status == ServiceInstantiation.StatusEnum.COMPLETED assert len(list(service_subscription.service_instances)) == 1 # Network instantiation service_instance = next(service_subscription.service_instances) assert len(list(service_instance.network_instances)) == 0 owning_entity = "test_owning_entity" project = "test_project" network = MagicMock() line_of_business = "test_line_of_business" platform = "test_platform" with pytest.raises(AttributeError): service_instance.network(network, line_of_business, platform) service_instance.orchestration_status = "Active" with patch.object(ServiceInstance, "sdc_service", return_value=service): network_instantiation_request = service_instance.add_network( network, line_of_business, platform) assert network_instantiation_request.status == VnfInstantiation.StatusEnum.IN_PROGRESS network_instantiation_request.wait_for_finish() assert network_instantiation_request.status == VnfInstantiation.StatusEnum.COMPLETED assert len(list(service_instance.network_instances)) == 1
def test_cloud_region_link_to_complex(mock_add_rel): """Test Cloud Region linking with Complex. Test Relationship object creation """ cloud_region = CloudRegion(cloud_owner="test_cloud_owner", cloud_region_id="test_cloud_region", orchestration_disabled=True, in_maint=False) cmplx = Complex(name="test_complex_name", physical_location_id="test_location_id", resource_version="1234") cloud_region.link_to_complex(cmplx) mock_add_rel.assert_called_once() relationship = mock_add_rel.call_args[0][0] assert relationship.related_to == "complex" assert relationship.related_link == (f"aai/v13/cloud-infrastructure/complexes/" f"complex/test_location_id") assert len(relationship.relationship_data) == 2
def test_availability_zones(mock_send_message_json): """Test Cloud Region property""" cloud_region = CloudRegion(cloud_owner="test_cloud_owner", cloud_region_id="test_cloud_region", orchestration_disabled=True, in_maint=False) mock_send_message_json.return_value = AVAILABILITY_ZONES cloud_zones = cloud_region.availability_zones zone1 = next(cloud_zones) assert zone1.name == "OPNFV LaaS" assert zone1.hypervisor_type == "1234"
def test_cloud_region_tenants(): cloud_region: CloudRegion = CloudRegion.create("test_owner", "test_cloud_region", orchestration_disabled=True, in_maint=False) assert len(list(cloud_region.tenants)) == 0 cloud_region.add_tenant(tenant_id="test_tenant_id", tenant_name="test_tenant_name", tenant_context="test_tenant_context") assert len(list(cloud_region.tenants)) == 1 tenant = cloud_region.get_tenant(tenant_id="test_tenant_id")
def test_cloud_region_complex_property( mock_complex_get_by_physical_location_id, mock_send): """Test cloud region complex property.""" mock_send.return_value = {} cloud_region = CloudRegion(cloud_owner="tester", cloud_region_id="test", orchestration_disabled=True, in_maint=False) assert cloud_region.complex is None mock_send.return_value = CLOUD_REGION_RELATIONSHIP assert cloud_region.complex is not None assert mock_complex_get_by_physical_location_id.called_once_with( "integration_test_complex")
def test_link_cloud_region_to_complex(): requests.get(f"{Complex.base_url}/reset") cmplx: Complex = Complex.create( name="test_complex", physical_location_id="test_physical_location_id") cloud_region: CloudRegion = CloudRegion.create("test_owner", "test_cloud_region", orchestration_disabled=True, in_maint=False) assert len(list(cloud_region.relationships)) == 0 cloud_region.link_to_complex(cmplx) assert len(list(cloud_region.relationships)) == 1
def test_cloud_regions_relationship(mock_send): """Test cloud region relationship property.""" mock_send.return_value = CLOUD_REGION_RELATIONSHIP cloud_region = CloudRegion(cloud_owner="tester", cloud_region_id="test", orchestration_disabled=True, in_maint=False) relationship = next(cloud_region.relationships) assert isinstance(relationship, Relationship) assert relationship.relationship_label == "org.onap.relationships.inventory.LocatedIn" assert relationship.related_link == \ "/aai/v16/cloud-infrastructure/complexes/complex/integration_test_complex" assert relationship.related_to == "complex" assert relationship.relationship_data[0][ "relationship-key"] == "complex.physical-location-id" assert relationship.relationship_data[0][ "relationship-value"] == "integration_test_complex"
def execute(self): """Instantiate service. Use settings values: - SERVICE_NAME, - GLOBAL_CUSTOMER_ID, - CLOUD_REGION_CLOUD_OWNER, - CLOUD_REGION_ID, - TENANT_ID, - OWNING_ENTITY, - PROJECT, - SERVICE_INSTANCE_NAME. """ super().execute() service = Service(settings.SERVICE_NAME) customer: Customer = Customer.get_by_global_customer_id(settings.GLOBAL_CUSTOMER_ID) cloud_region: CloudRegion = CloudRegion.get_by_id( cloud_owner=settings.CLOUD_REGION_CLOUD_OWNER, cloud_region_id=settings.CLOUD_REGION_ID, ) tenant: Tenant = cloud_region.get_tenant(settings.TENANT_ID) try: owning_entity = AaiOwningEntity.get_by_owning_entity_name( settings.OWNING_ENTITY) except ResourceNotFound: self._logger.info("Owning entity not found, create it") owning_entity = AaiOwningEntity.create(settings.OWNING_ENTITY) vid_project = Project.create(settings.PROJECT) service_instantiation = ServiceInstantiation.instantiate_so_ala_carte( service, cloud_region, tenant, customer, owning_entity, vid_project, service_instance_name=settings.SERVICE_INSTANCE_NAME ) try: service_instantiation.wait_for_finish(settings.ORCHESTRATION_REQUEST_TIMEOUT) except TimeoutError: self._logger.error("Service instantiation %s timed out", self.service_instance_name) raise onap_test_exceptions.ServiceInstantiateException if service_instantiation.failed: self._logger.error("Service instantiation %s failed", self.service_instance_name) raise onap_test_exceptions.ServiceInstantiateException
def test_tenants_info(mock_send, mock_cloud_regions): """Test get Tenant from A&AI.""" mock_cloud_regions.return_value = CLOUD_REGIONS_ITERATOR mock_send.return_value = TENANT cloud_name = "RegionOne" cloud_region = CloudRegion.get_by_id("DT", cloud_name) res = list(cloud_region.tenants) assert len(res) == 1 assert isinstance(res[0], Tenant) tenant = res[0] assert tenant.tenant_id == "4bdc6f0f2539430f9428c852ba606808" assert tenant.name == "onap-dublin-daily-vnfs" assert tenant.context is None assert tenant.resource_version == "1562591004273" assert tenant.url == ( f"{tenant.base_url}{tenant.api_version}/cloud-infrastructure/cloud-regions/cloud-region/" f"OPNFV/RegionOne/tenants/tenant/4bdc6f0f2539430f9428c852ba606808?" f"resource-version=1562591004273")
def execute(self): """Link cloud region to complex. Use settings values: - COMPLEX_PHYSICAL_LOCATION_ID, - CLOUD_REGION_CLOUD_OWNER, - CLOUD_REGION_ID. """ super().execute() cmplx = Complex( physical_location_id=settings.COMPLEX_PHYSICAL_LOCATION_ID, name=settings.COMPLEX_PHYSICAL_LOCATION_ID ) cloud_region = CloudRegion.get_by_id( cloud_owner=settings.CLOUD_REGION_CLOUD_OWNER, cloud_region_id=settings.CLOUD_REGION_ID, ) cloud_region.link_to_complex(cmplx)
def execute(self) -> None: """Instantiate Vf module. Use settings values: - GLOBAL_CUSTOMER_ID. Raises: Exception: Vf module instantiation failed """ super().execute() customer: Customer = Customer.get_by_global_customer_id( settings.GLOBAL_CUSTOMER_ID) service_subscription: ServiceSubscription = customer.get_service_subscription_by_service_type( self.service_name) self._service_instance: ServiceInstance = service_subscription.get_service_instance_by_name( self.service_instance_name) cloud_region: CloudRegion = CloudRegion.get_by_id( cloud_owner=settings.CLOUD_REGION_CLOUD_OWNER, cloud_region_id=settings.CLOUD_REGION_ID, ) tenant: Tenant = cloud_region.get_tenant(settings.TENANT_ID) for vnf_instance in self._service_instance.vnf_instances: # possible to have several moduels for 1 VNF for vf_module in vnf_instance.vnf.vf_modules: vf_module_instantiation = vnf_instance.add_vf_module( vf_module, cloud_region, tenant, self._service_instance_name, vnf_parameters=self.get_vnf_parameters( vnf_instance.vnf.name)) try: vf_module_instantiation.wait_for_finish( settings.ORCHESTRATION_REQUEST_TIMEOUT) if vf_module_instantiation.failed: self._logger.error("VfModule instantiation %s failed", vf_module.name) raise onap_test_exceptions.VfModuleInstantiateException except TimeoutError: self._logger.error("VfModule instantiation %s timed out", vf_module.name) raise onap_test_exceptions.VfModuleInstantiateException
def test_service_subscription_link_cloud_region_and_tenant(mock_add_rel): """Test service subscription linking with cloud region and tenant. Test Relationship object creation """ service_subscription = ServiceSubscription(customer=None, service_type="test_service_type", resource_version="test_resource_version") cloud_region = CloudRegion(cloud_owner="test_cloud_owner", cloud_region_id="test_cloud_region", orchestration_disabled=True, in_maint=False) tenant = Tenant(cloud_region=cloud_region, tenant_id="test_tenant_id", tenant_name="test_tenant_name") service_subscription.link_to_cloud_region_and_tenant(cloud_region, tenant) mock_add_rel.assert_called_once() relationship = mock_add_rel.call_args[0][0] assert relationship.related_to == "tenant" assert relationship.related_link == tenant.url assert len(relationship.relationship_data) == 3
def execute(self): """Instantiate vnf. Use settings values: - GLOBAL_CUSTOMER_ID, - LINE_OF_BUSINESS. Raises: Exception: VNF instantiation failed """ super().execute() service: Service = Service(self.service_name) customer: Customer = Customer.get_by_global_customer_id( settings.GLOBAL_CUSTOMER_ID) service_subscription: ServiceSubscription = customer.get_service_subscription_by_service_type( self.service_name) self._service_instance: ServiceInstance = service_subscription.get_service_instance_by_name( self.service_instance_name) line_of_business: LineOfBusiness = LineOfBusiness( settings.LINE_OF_BUSINESS) platform: Platform = Platform(settings.PLATFORM) cloud_region: CloudRegion = CloudRegion.get_by_id( cloud_owner=settings.CLOUD_REGION_CLOUD_OWNER, cloud_region_id=settings.CLOUD_REGION_ID, ) tenant: Tenant = cloud_region.get_tenant(settings.TENANT_ID) for idx, vnf in enumerate(service.vnfs): vnf_instantiation = self._service_instance.add_vnf( vnf, line_of_business, platform, cloud_region, tenant, f"{self.service_instance_name}_vnf_{idx}") try: vnf_instantiation.wait_for_finish( settings.ORCHESTRATION_REQUEST_TIMEOUT) if vnf_instantiation.failed: self._logger.error("VNF instantiation %s failed", vnf.name) raise onap_test_exceptions.VnfInstantiateException except TimeoutError: self._logger.error("VNF instantiation %s timed out", vnf.name) raise onap_test_exceptions.VnfInstantiateException
def test_cloud_region_creation(mock_send): """Test cloud region creation""" cloud_region = CloudRegion.create(cloud_owner="test_owner", cloud_region_id="test_cloud_region", orchestration_disabled=False, in_maint=True, owner_defined_type="Test", cloud_zone="Test zone", sriov_automation="Test", upgrade_cycle="Test") assert cloud_region.cloud_owner == "test_owner" assert cloud_region.cloud_region_id == "test_cloud_region" assert cloud_region.orchestration_disabled == False assert cloud_region.in_maint == True assert cloud_region.cloud_type == "" assert cloud_region.owner_defined_type == "Test" assert cloud_region.cloud_region_version == "" assert cloud_region.identity_url == "" assert cloud_region.cloud_zone == "Test zone" assert cloud_region.complex_name == "" assert cloud_region.sriov_automation == "Test" assert cloud_region.cloud_extra_info == "" assert cloud_region.upgrade_cycle == "Test"
def test_cloud_regions(mock_send): """Test get cloud regions from A&AI.""" mock_send.return_value = CLOUD_REGION assert len(list(CloudRegion.get_all())) == 1 cloud_region = next(CloudRegion.get_all()) assert cloud_region.cloud_owner == "OPNFV" assert cloud_region.cloud_type == "openstack" assert cloud_region.complex_name == "Cruguil" cloud_region = next(CloudRegion.get_all()) assert cloud_region.cloud_owner == "OPNFV" assert cloud_region.cloud_type == "openstack" assert cloud_region.complex_name == "Cruguil" mock_send.return_value = {} cloud_regions = list(CloudRegion.get_all()) assert len(cloud_regions) == 0 with pytest.raises(StopIteration): cloud_region = next(CloudRegion.get_all()) mock_send.return_value = CLOUD_REGIONS cloud_regions = list(CloudRegion.get_all()) assert len(cloud_regions) == 1
'password': '******', 'system-type': 'openstack', 'cloud-domain': 'Default', 'resource-version': '1586436352654' }] } CLOUD_REGIONS_ITERATOR = (cloud_region for cloud_region in [ CloudRegion( cloud_owner="OPNFV", cloud_region_id="RegionOne", cloud_type="openstack", owner_defined_type="N/A", cloud_region_version="pike", identity_url=None, cloud_zone="OPNFV LaaS", complex_name="Cruguil", sriov_automation=None, cloud_extra_info=None, upgrade_cycle=None, orchestration_disabled=False, in_maint=False, resource_version=None, ) ]) # pylint: enable=C0301 def test_init(): """Test the initialization.""" element = AaiElement() assert isinstance(element, OnapService)
logger.info("******** Check Service Subscription *******") service_subscription = None for service_sub in customer.service_subscriptions: logger.debug("Service subscription %s is found", service_sub.service_type) if service_sub.service_type == Config.SERVICENAME: logger.info("Service %s subscribed", Config.SERVICENAME) service_subscription = service_sub break if not service_subscription: logger.info("******** Subscribe Service *******") customer.subscribe_service(service) logger.info("******** Get Tenant *******") cloud_region = CloudRegion(cloud_owner=Config.CLOUD_OWNER, cloud_region_id=Config.CLOUD_REGION, orchestration_disabled=True, in_maint=False) tenant = None for found_tenant in cloud_region.tenants: logger.debug("Tenant %s found in %s_%s", found_tenant.name, cloud_region.cloud_owner, cloud_region.cloud_region_id) if found_tenant.name == Config.TENANT_NAME: logger.info("Found my Tenant %s", found_tenant.name) tenant = found_tenant break if not tenant: logger.error("tenant %s not found", Config.TENANT_NAME) exit(1) logger.info("******** Connect Service to Tenant *******")