def test_kubernetes_mysql_e2e(self): self.kwargs.update({ 'subscription': get_subscription_id(self.cli_ctx), 'source_resource_group': 'servicelinker-test-linux-group', 'target_resource_group': 'servicelinker-test-linux-group', 'cluster': 'servicelinker-mysql-cluster', 'server': 'servicelinker-mysql', 'database': 'mysqlDB' }) # prepare password user = '******' password = self.cmd('keyvault secret show --vault-name cupertino-kv-test -n TestDbPassword')\ .get_output_in_json().get('value') # prepare params name = 'testconn' source_id = SOURCE_RESOURCES.get( RESOURCE.KubernetesCluster).format(**self.kwargs) target_id = TARGET_RESOURCES.get(RESOURCE.Mysql).format(**self.kwargs) # create connection, test clientType=None self.cmd( 'aks connection create mysql --connection {} --source-id {} --target-id {} ' '--secret name={} secret={} --client-type none'.format( name, source_id, target_id, user, password)) # list connection connections = self.cmd( 'aks connection list --source-id {}'.format(source_id), checks=[ self.check('length(@)', 1), self.check('[0].authInfo.authType', 'secret'), self.check('[0].clientType', 'none') ]).get_output_in_json() connection_id = connections[0].get('id') # update connection self.cmd('aks connection update mysql --id {} --client-type dotnet ' '--secret name={} secret={}'.format(connection_id, user, password), checks=[self.check('clientType', 'dotnet')]) # list configuration self.cmd( 'aks connection list-configuration --id {}'.format(connection_id)) # validate connection self.cmd('aks connection validate --id {}'.format(connection_id)) # show connection self.cmd('aks connection show --id {}'.format(connection_id)) # delete connection self.cmd('aks connection delete --id {} --yes'.format(connection_id))
def test_kubernetes_keyvault_e2e(self): self.kwargs.update({ 'subscription': get_subscription_id(self.cli_ctx), 'source_resource_group': 'servicelinker-test-linux-group', 'target_resource_group': 'servicelinker-test-linux-group', 'cluster': 'servicelinker-keyvault-cluster', 'vault': 'servicelinker-test-kv' }) # prepare params name = 'testconn' source_id = SOURCE_RESOURCES.get( RESOURCE.KubernetesCluster).format(**self.kwargs) target_id = TARGET_RESOURCES.get( RESOURCE.KeyVault).format(**self.kwargs) # create connection, test csi feature self.cmd( 'aks connection create keyvault --connection {} --source-id {} --target-id {} ' '--client-type python --enable-csi'.format(name, source_id, target_id)) # list connection connections = self.cmd( 'aks connection list --source-id {}'.format(source_id), checks=[ self.check('length(@)', 1), self.check('[0].authInfo.authType', 'userAssignedIdentity'), self.check('[0].clientType', 'python'), self.check('[0].targetService.resourceProperties.type', 'KeyVault'), self.check( '[0].targetService.resourceProperties.connectAsKubernetesCsiDriver', True) ]).get_output_in_json() connection_id = connections[0].get('id') # update connection self.cmd( 'aks connection update keyvault --id {} --client-type dotnet --enable-csi' .format(connection_id), checks=[self.check('clientType', 'dotnet')]) # list configuration self.cmd( 'aks connection list-configuration --id {}'.format(connection_id)) # validate connection self.cmd('aks connection validate --id {}'.format(connection_id)) # show connection self.cmd('aks connection show --id {}'.format(connection_id)) # delete connection self.cmd('aks connection delete --id {} --yes'.format(connection_id))
def test_springcloud_postgres_e2e(self): self.kwargs.update({ 'subscription': get_subscription_id(self.cli_ctx), 'source_resource_group': 'servicelinker-test-linux-group', 'target_resource_group': 'servicelinker-test-linux-group', 'spring': 'servicelinker-springcloud', 'app': 'postgresql', 'deployment': 'default', 'server': 'servicelinker-postgresql', 'database': 'postgres' }) # prepare password user = '******' password = self.cmd('keyvault secret show --vault-name cupertino-kv-test -n TestDbPassword')\ .get_output_in_json().get('value') # prepare params name = 'testconn' source_id = SOURCE_RESOURCES.get( RESOURCE.SpringCloud).format(**self.kwargs) target_id = TARGET_RESOURCES.get( RESOURCE.Postgres).format(**self.kwargs) # create connection self.cmd( 'spring-cloud connection create postgres --connection {} --source-id {} --target-id {} ' '--secret name={} secret={} --client-type java'.format( name, source_id, target_id, user, password)) # list connection connections = self.cmd( 'spring-cloud connection list --source-id {}'.format(source_id), checks=[ self.check('length(@)', 1), self.check('[0].authInfo.authType', 'secret'), self.check('[0].clientType', 'java') ]).get_output_in_json() connection_id = connections[0].get('id') # list configuration self.cmd('spring-cloud connection list-configuration --id {}'.format( connection_id)) # validate connection self.cmd( 'spring-cloud connection validate --id {}'.format(connection_id)) # show connection self.cmd('spring-cloud connection show --id {}'.format(connection_id)) # delete connection self.cmd('spring-cloud connection delete --id {} --yes'.format( connection_id))
def test_webapp_confluentkafka_keyvault_ref(self): self.kwargs.update({ 'subscription': get_subscription_id(self.cli_ctx), 'source_resource_group': 'servicelinker-test-linux-group', 'target_resource_group': 'servicelinker-test-linux-group', 'site': 'servicelinker-kafka-ref-app', 'vault': 'servicelinker-kv-ref', }) # prepare params name = 'testconn' source_id = SOURCE_RESOURCES.get(RESOURCE.WebApp).format(**self.kwargs) keyvault_id = TARGET_RESOURCES.get( RESOURCE.KeyVault).format(**self.kwargs) # create connection self.cmd( 'webapp connection create confluent-cloud --connection {} --source-id {} ' '--bootstrap-server xxx.eastus.azure.confluent.cloud:9092 --kafka-key Name --kafka-secret Secret ' '--schema-registry https://xxx.eastus.azure.confluent.cloud --schema-key Name --schema-secret Secret ' '--client-type python --vault-id {}'.format( name, source_id, keyvault_id)) id = f'{source_id}/providers/Microsoft.ServiceLinker/linkers/{name}' self.cmd('webapp connection list --source-id {}'.format(source_id), checks=[ self.check('length(@)', 3), ]) self.cmd('webapp connection show --id {}'.format(id), checks=[ self.check('secretStore.keyVaultId', keyvault_id), ]) self.cmd('webapp connection show --id {}_schema'.format(id), checks=[ self.check('secretStore.keyVaultId', keyvault_id), ]) # update connection self.cmd( 'webapp connection update confluent-cloud --connection {} --source-id {} ' '--kafka-secret Secret'.format(name, source_id)) self.cmd('webapp connection show --id {}'.format(id), checks=[ self.check('secretStore.keyVaultId', keyvault_id), ]) for conn in self.cmd('webapp connection list --source-id {}'.format( source_id)).get_output_in_json(): self.cmd('webapp connection delete --id {} --yes'.format( conn.get('id')))
def test_springcloud_cosmosgremlin_e2e(self): self.kwargs.update({ 'subscription': get_subscription_id(self.cli_ctx), 'source_resource_group': 'servicelinker-test-linux-group', 'target_resource_group': 'servicelinker-test-win-group', 'spring': 'servicelinker-springcloud', 'app': 'cosmosgremlin', 'deployment': 'default', 'account': 'servicelinker-gremlin-cosmos', 'database': 'coreDB', 'graph': 'MyItem' }) # prepare params name = 'testconn' source_id = SOURCE_RESOURCES.get( RESOURCE.SpringCloud).format(**self.kwargs) target_id = TARGET_RESOURCES.get( RESOURCE.CosmosGremlin).format(**self.kwargs) # create connection self.cmd( 'spring-cloud connection create cosmos-gremlin --connection {} --source-id {} --target-id {} ' '--system-identity --client-type java'.format( name, source_id, target_id)) # list connection connections = self.cmd( 'spring-cloud connection list --source-id {}'.format(source_id), checks=[ self.check('length(@)', 1), self.check('[0].authInfo.authType', 'systemAssignedIdentity'), self.check('[0].clientType', 'java') ]).get_output_in_json() connection_id = connections[0].get('id') # list configuration self.cmd('spring-cloud connection list-configuration --id {}'.format( connection_id)) # validate connection self.cmd( 'spring-cloud connection validate --id {}'.format(connection_id)) # show connection self.cmd('spring-cloud connection show --id {}'.format(connection_id)) # delete connection self.cmd('spring-cloud connection delete --id {} --yes'.format( connection_id))
def test_webapp_mysqlflexible_e2e(self): self.kwargs.update({ 'subscription': get_subscription_id(self.cli_ctx), 'source_resource_group': 'servicelinker-test-linux-group', 'target_resource_group': 'servicelinker-test-linux-group', 'site': 'servicelinker-flexiblemysql-app2', 'server': 'servicelinker-flexible-mysql2', 'database': 'mysqlDB' }) # prepare password user = '******' password = self.cmd('keyvault secret show --vault-name cupertino-kv-test -n TestDbPassword')\ .get_output_in_json().get('value') # prepare params name = 'testconn' source_id = SOURCE_RESOURCES.get(RESOURCE.WebApp).format(**self.kwargs) target_id = TARGET_RESOURCES.get( RESOURCE.MysqlFlexible).format(**self.kwargs) # create connection self.cmd( 'webapp connection create mysql-flexible --connection {} --source-id {} --target-id {} ' '--secret name={} secret={} --client-type python'.format( name, source_id, target_id, user, password)) # list connection connections = self.cmd( 'webapp connection list --source-id {}'.format(source_id), checks=[ self.check('length(@)', 1), self.check('[0].authInfo.authType', 'secret'), self.check('[0].clientType', 'python') ]).get_output_in_json() connection_id = connections[0].get('id') # list configuration self.cmd('webapp connection list-configuration --id {}'.format( connection_id)) # validate connection self.cmd('webapp connection validate --id {}'.format(connection_id)) # show connection self.cmd('webapp connection show --id {}'.format(connection_id)) # delete connection self.cmd( 'webapp connection delete --id {} --yes'.format(connection_id))
def test_kubernetes_servicebus_e2e(self): self.kwargs.update({ 'subscription': get_subscription_id(self.cli_ctx), 'source_resource_group': 'servicelinker-test-linux-group', 'target_resource_group': 'servicelinker-test-linux-group', 'cluster': 'servicelinker-servicebus-cluster', 'namespace': 'servicelinkertestservicebus' }) # prepare params name = 'testconn' source_id = SOURCE_RESOURCES.get( RESOURCE.KubernetesCluster).format(**self.kwargs) target_id = TARGET_RESOURCES.get( RESOURCE.ServiceBus).format(**self.kwargs) # create connection self.cmd( 'aks connection create servicebus --connection {} --source-id {} --target-id {} ' '--secret --client-type python'.format(name, source_id, target_id)) # list connection connections = self.cmd( 'aks connection list --source-id {}'.format(source_id), checks=[ self.check('length(@)', 1), self.check('[0].authInfo.authType', 'secret'), self.check('[0].clientType', 'python') ]).get_output_in_json() connection_id = connections[0].get('id') # update connection self.cmd( 'aks connection update servicebus --id {} --client-type dotnet'. format(connection_id), checks=[self.check('clientType', 'dotnet')]) # list configuration self.cmd( 'aks connection list-configuration --id {}'.format(connection_id)) # validate connection self.cmd('aks connection validate --id {}'.format(connection_id)) # show connection self.cmd('aks connection show --id {}'.format(connection_id)) # delete connection self.cmd('aks connection delete --id {} --yes'.format(connection_id))
def test_kubernetes_confluentkafka_e2e(self): self.kwargs.update({ 'subscription': get_subscription_id(self.cli_ctx), 'source_resource_group': 'servicelinker-test-linux-group', 'target_resource_group': 'servicelinker-test-linux-group', 'cluster': 'servicelinker-kafka-cluster', }) # prepare params name = 'testconn' source_id = SOURCE_RESOURCES.get( RESOURCE.KubernetesCluster).format(**self.kwargs) # create connection self.cmd( 'aks connection create confluent-cloud --connection {} --source-id {} ' '--bootstrap-server xxx.eastus.azure.confluent.cloud:9092 --kafka-key Name --kafka-secret Secret ' '--schema-registry https://xxx.eastus.azure.confluent.cloud --schema-key Name --schema-secret Secret ' '--client-type python'.format(name, source_id)) # list connection connections = self.cmd( 'aks connection list --source-id {}'.format(source_id), checks=[ self.check('length(@)', 2), self.check('[0].clientType', 'python') ]).get_output_in_json() connection_id = connections[0].get('id') # update connection self.cmd( 'aks connection update confluent-cloud --connection {} ' '--source-id {} --client-type dotnet --kafka-secret Secret'.format( name, source_id), checks=[self.check('clientType', 'dotnet')]) # list configuration self.cmd( 'aks connection list-configuration --id {}'.format(connection_id)) # validate connection self.cmd('aks connection validate --id {}'.format(connection_id)) # show connection self.cmd('aks connection show --id {}'.format(connection_id)) # delete connection self.cmd('aks connection delete --id {} --yes'.format(connection_id))
def test_springcloud_redisenterprise_e2e(self): self.kwargs.update({ 'subscription': get_subscription_id(self.cli_ctx), 'source_resource_group': 'servicelinker-test-linux-group', 'target_resource_group': 'servicelinker-test-linux-group', 'spring': 'servicelinker-springcloud', 'app': 'redisenterprise', 'deployment': 'default', 'server': 'servicelinker-redis-enterprise', 'database': 'default' }) # prepare params name = 'testconn' source_id = SOURCE_RESOURCES.get( RESOURCE.SpringCloud).format(**self.kwargs) target_id = TARGET_RESOURCES.get( RESOURCE.RedisEnterprise).format(**self.kwargs) # create connection self.cmd( 'spring-cloud connection create redis-enterprise --connection {} --source-id {} --target-id {} ' '--secret --client-type java'.format(name, source_id, target_id)) # list connection connections = self.cmd( 'spring-cloud connection list --source-id {}'.format(source_id), checks=[ self.check('length(@)', 1), self.check('[0].authInfo.authType', 'secret'), self.check('[0].clientType', 'java') ]).get_output_in_json() connection_id = connections[0].get('id') # list configuration self.cmd('spring-cloud connection list-configuration --id {}'.format( connection_id)) # validate connection self.cmd( 'spring-cloud connection validate --id {}'.format(connection_id)) # show connection self.cmd('spring-cloud connection show --id {}'.format(connection_id)) # delete connection self.cmd('spring-cloud connection delete --id {} --yes'.format( connection_id))
def test_webapp_storageblob_keyvault_ref(self): self.kwargs.update({ 'subscription': get_subscription_id(self.cli_ctx), 'source_resource_group': 'servicelinker-test-linux-group', 'target_resource_group': 'servicelinker-test-linux-group', 'site': 'servicelinker-storageblob-ref-app', 'account': 'servicelinkerstorage', 'vault': 'servicelinker-kv-ref', }) # prepare params name = 'testconn' source_id = SOURCE_RESOURCES.get(RESOURCE.WebApp).format(**self.kwargs) target_id = TARGET_RESOURCES.get( RESOURCE.StorageBlob).format(**self.kwargs) keyvault_id = TARGET_RESOURCES.get( RESOURCE.KeyVault).format(**self.kwargs) # create connection id = self.cmd( 'webapp connection create storage-blob --connection {} --source-id {} --target-id {} ' '--secret --client-type python --vault-id {}'.format( name, source_id, target_id, keyvault_id)).get_output_in_json().get('id') self.cmd('webapp connection list --source-id {}'.format(source_id), checks=[ self.check('length(@)', 2), ]) self.cmd('webapp connection show --id {}'.format(id), checks=[ self.check('secretStore.keyVaultId', keyvault_id), ]) # update connection self.cmd('webapp connection update storage-blob --id {} ' '--secret'.format(id)) self.cmd('webapp connection show --id {}'.format(id), checks=[ self.check('secretStore.keyVaultId', keyvault_id), ]) for conn in self.cmd('webapp connection list --source-id {}'.format( source_id)).get_output_in_json(): self.cmd('webapp connection delete --id {} --yes'.format( conn.get('id')))
def test_springcloud_storageblob_keyvault_ref(self): self.kwargs.update({ 'subscription': get_subscription_id(self.cli_ctx), 'source_resource_group': 'servicelinker-test-linux-group', 'target_resource_group': 'servicelinker-test-linux-group', 'spring': 'servicelinker-springcloud', 'app': 'storageblob', 'deployment': 'default', 'account': 'servicelinkerteststorage', 'vault': 'servicelinker-kv-ref', }) # prepare params name = 'testconn' source_id = SOURCE_RESOURCES.get( RESOURCE.SpringCloud).format(**self.kwargs) target_id = TARGET_RESOURCES.get( RESOURCE.StorageBlob).format(**self.kwargs) keyvault_id = TARGET_RESOURCES.get( RESOURCE.KeyVault).format(**self.kwargs) # create connection id = self.cmd( 'spring-cloud connection create storage-blob --connection {} --source-id {} --target-id {} ' '--secret --client-type java --vault-id {}'.format( name, source_id, target_id, keyvault_id)).get_output_in_json().get('id') self.cmd( 'spring-cloud connection list --source-id {}'.format(source_id), checks=[ self.check('length(@)', 2), ]) self.cmd('spring-cloud connection show --id {}'.format(id), checks=[ self.check('secretStore.keyVaultId', keyvault_id), ]) # update connection self.cmd('spring-cloud connection update storage-blob --id {} ' '--secret'.format(id)) self.cmd('spring-cloud connection show --id {}'.format(id), checks=[ self.check('secretStore.keyVaultId', keyvault_id), ])
def test_springcloud_confluentkafka_e2e(self): self.kwargs.update({ 'subscription': get_subscription_id(self.cli_ctx), 'source_resource_group': 'servicelinker-test-linux-group', 'target_resource_group': 'servicelinker-test-linux-group', 'spring': 'servicelinker-springcloud', 'app': 'kafka', 'deployment': 'default', }) # prepare params name = 'testconn' source_id = SOURCE_RESOURCES.get( RESOURCE.SpringCloud).format(**self.kwargs) # create connection self.cmd( 'spring-cloud connection create confluent-cloud --connection {} --source-id {} ' '--bootstrap-server xxx.eastus.azure.confluent.cloud:9092 --kafka-key Name --kafka-secret Secret ' '--schema-registry https://xxx.eastus.azure.confluent.cloud --schema-key Name --schema-secret Secret ' '--client-type java'.format(name, source_id)) # list connection connections = self.cmd( 'spring-cloud connection list --source-id {}'.format(source_id), checks=[ self.check('length(@)', 2), self.check('[0].clientType', 'java') ]).get_output_in_json() connection_id = connections[0].get('id') # list configuration self.cmd('spring-cloud connection list-configuration --id {}'.format( connection_id)) # validate connection self.cmd( 'spring-cloud connection validate --id {}'.format(connection_id)) # show connection self.cmd('spring-cloud connection show --id {}'.format(connection_id)) # delete connection self.cmd('spring-cloud connection delete --id {} --yes'.format( connection_id))
def test_webapp_cosmostable_e2e(self): self.kwargs.update({ 'subscription': get_subscription_id(self.cli_ctx), 'source_resource_group': 'servicelinker-test-win-group', 'target_resource_group': 'servicelinker-test-win-group', 'site': 'servicelinker-table-cosmos-asp-app2', 'account': 'servicelinker-table-cosmos2', 'table': 'MyItem' }) # prepare params name = 'testconn' source_id = SOURCE_RESOURCES.get(RESOURCE.WebApp).format(**self.kwargs) target_id = TARGET_RESOURCES.get( RESOURCE.CosmosTable).format(**self.kwargs) # create connection self.cmd( 'webapp connection create cosmos-table --connection {} --source-id {} --target-id {} ' '--system-identity --client-type python'.format( name, source_id, target_id)) # list connection connections = self.cmd( 'webapp connection list --source-id {}'.format(source_id), checks=[ self.check('length(@)', 1), self.check('[0].authInfo.authType', 'systemAssignedIdentity'), self.check('[0].clientType', 'python') ]).get_output_in_json() connection_id = connections[0].get('id') # list configuration self.cmd('webapp connection list-configuration --id {}'.format( connection_id)) # validate connection self.cmd('webapp connection validate --id {}'.format(connection_id)) # show connection self.cmd('webapp connection show --id {}'.format(connection_id)) # delete connection self.cmd( 'webapp connection delete --id {} --yes'.format(connection_id))
def test_containerapp_storageblob_e2e(self): self.kwargs.update({ 'subscription': get_subscription_id(self.cli_ctx), 'source_resource_group': 'servicelinker-test-linux-group', 'target_resource_group': 'servicelinker-test-linux-group', 'app': 'servicelinker-storage-aca', 'account': 'servicelinkerstorage' }) # prepare params name = 'testconn' source_id = SOURCE_RESOURCES.get(RESOURCE.ContainerApp).format(**self.kwargs) target_id = TARGET_RESOURCES.get(RESOURCE.StorageBlob).format(**self.kwargs) # create connection self.cmd('containerapp connection create storage-blob --connection {} --source-id {} --target-id {} ' '--system-identity --client-type python -c {}'.format(name, source_id, target_id, self.default_container_name)) # list connection connections = self.cmd( 'containerapp connection list --source-id {}'.format(source_id), checks = [ self.check('length(@)', 1), self.check('[0].authInfo.authType', 'systemAssignedIdentity'), self.check('[0].clientType', 'python') ] ).get_output_in_json() connection_id = connections[0].get('id') # update connection self.cmd('containerapp connection update storage-blob --id {} --client-type dotnet'.format(connection_id), checks = [ self.check('clientType', 'dotnet') ]) # list configuration self.cmd('containerapp connection list-configuration --id {}'.format(connection_id)) # validate connection self.cmd('containerapp connection validate --id {}'.format(connection_id)) # show connection self.cmd('containerapp connection show --id {}'.format(connection_id)) # delete connection self.cmd('containerapp connection delete --id {} --yes'.format(connection_id))
def test_webapp_storagequeue_e2e(self): self.kwargs.update({ 'subscription': get_subscription_id(self.cli_ctx), 'source_resource_group': 'servicelinker-test-linux-group', 'target_resource_group': 'servicelinker-test-linux-group', 'site': 'servicelinker-storagequeue-app2', 'account': 'servicelinkerstorage2' }) # prepare params name = 'testconn' source_id = SOURCE_RESOURCES.get(RESOURCE.WebApp).format(**self.kwargs) target_id = TARGET_RESOURCES.get( RESOURCE.StorageQueue).format(**self.kwargs) # create connection self.cmd( 'webapp connection create storage-queue --connection {} --source-id {} --target-id {} ' '--secret --client-type python'.format(name, source_id, target_id)) # list connection connections = self.cmd( 'webapp connection list --source-id {}'.format(source_id), checks=[ self.check('length(@)', 1), self.check('[0].authInfo.authType', 'secret'), self.check('[0].clientType', 'python') ]).get_output_in_json() connection_id = connections[0].get('id') # list configuration self.cmd('webapp connection list-configuration --id {}'.format( connection_id)) # validate connection self.cmd('webapp connection validate --id {}'.format(connection_id)) # show connection self.cmd('webapp connection show --id {}'.format(connection_id)) # delete connection self.cmd( 'webapp connection delete --id {} --yes'.format(connection_id))
def test_springcloud_mysql_e2e_kvsecret(self): self.kwargs.update({ 'subscription': get_subscription_id(self.cli_ctx), 'source_resource_group': 'servicelinker-test-linux-group', 'target_resource_group': 'servicelinker-test-linux-group', 'spring': 'servicelinker-springcloud', 'app': 'mysql', 'deployment': 'default', 'server': 'servicelinker-mysql', 'database': 'mysqlDB' }) # prepare password user = '******' keyvaultUri = "https://cupertino-kv-test.vault.azure.net/secrets/TestDbPassword" # prepare params name = 'testconn' source_id = SOURCE_RESOURCES.get( RESOURCE.SpringCloud).format(**self.kwargs) target_id = TARGET_RESOURCES.get(RESOURCE.Mysql).format(**self.kwargs) # create connection self.cmd( 'spring-cloud connection create mysql --connection {} --source-id {} --target-id {} ' '--secret name={} secret-uri={} --client-type java'.format( name, source_id, target_id, user, keyvaultUri)) # list connection connections = self.cmd( 'spring-cloud connection list --source-id {}'.format(source_id), checks=[ self.check('length(@)', 1), self.check('[0].authInfo.authType', 'secret'), self.check('[0].clientType', 'java') ]).get_output_in_json() connection_id = connections[0].get('id') # delete connection self.cmd('spring-cloud connection delete --id {} --yes'.format( connection_id))