/** * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for * license information. */ package com.microsoft.azure.management.datalake.analytics; import com.microsoft.azure.management.datalake.analytics.models.*; import com.microsoft.azure.management.datalake.store.models.DataLakeStoreAccount; import com.microsoft.azure.management.storage.SkuName; import org.junit.Assert; import org.junit.Test; import java.util.ArrayList; import java.util.HashMap; import java.util.List; public class DataLakeAnalyticsAccountOperationsTests extends DataLakeAnalyticsManagementTestBase { @Test public void canCreateGetUpdateDeleteAdlaAccount() throws Exception { String adlaAcct = generateRandomResourceName("adla",15); String storageAcct = generateRandomResourceName("wasb",15); String adlsName2 = generateRandomResourceName("adls2",15); // Create storageManagementClient.storageAccounts() .define(storageAcct) .withRegion(environmentLocation) .withExistingResourceGroup(rgName) .withSku(SkuName.STANDARD_LRS) .withGeneralPurposeAccountKind() .create(); String storageAccessKey = storageManagementClient.storageAccounts() .getByResourceGroup(rgName, storageAcct) .getKeys().get(0).value(); // create second ADLS account DataLakeStoreAccount adlsCreateParams = new DataLakeStoreAccount(); adlsCreateParams.withLocation(environmentLocation.name()); dataLakeStoreAccountManagementClient.accounts().create(rgName, adlsName2, adlsCreateParams); List<DataLakeStoreAccountInfo> adlsAccts = new ArrayList<DataLakeStoreAccountInfo>(); DataLakeStoreAccountInfo adlsInfo = new DataLakeStoreAccountInfo(); adlsInfo.withName(adlsName); adlsAccts.add(adlsInfo); DataLakeAnalyticsAccount createParams = new DataLakeAnalyticsAccount(); createParams.withLocation(environmentLocation.name()); createParams.withDataLakeStoreAccounts(adlsAccts); createParams.withDefaultDataLakeStoreAccount(adlsName); HashMap<String, String> tags = new HashMap<String, String>(); tags.put("testkey", "testvalue"); createParams.withTags(tags); DataLakeAnalyticsAccount createResponse = dataLakeAnalyticsAccountManagementClient.accounts().create(rgName, adlaAcct, createParams); Assert.assertEquals(environmentLocation.name(), createResponse.location()); Assert.assertEquals("Microsoft.DataLakeAnalytics/accounts", createResponse.type()); Assert.assertNotNull(createResponse.id()); Assert.assertTrue(createResponse.id().contains(adlaAcct)); Assert.assertEquals(1, createResponse.getTags().size()); Assert.assertEquals(1, createResponse.dataLakeStoreAccounts().size()); Assert.assertEquals(adlsName, createResponse.dataLakeStoreAccounts().get(0).name()); // update the tags DataLakeAnalyticsAccountUpdateParameters updateParams = new DataLakeAnalyticsAccountUpdateParameters(); createParams.getTags().put("testkey2", "testvalue2"); updateParams.withTags(createParams.getTags()); DataLakeAnalyticsAccount updateResponse = dataLakeAnalyticsAccountManagementClient.accounts().update(rgName, adlaAcct, updateParams); Assert.assertEquals(environmentLocation.name(), updateResponse.location()); Assert.assertEquals("Microsoft.DataLakeAnalytics/accounts", updateResponse.type()); Assert.assertNotNull(updateResponse.id()); Assert.assertTrue(updateResponse.id().contains(adlaAcct)); Assert.assertEquals(2, updateResponse.getTags().size()); Assert.assertEquals(1, updateResponse.dataLakeStoreAccounts().size()); Assert.assertEquals(adlsName, updateResponse.dataLakeStoreAccounts().get(0).name()); // get the account DataLakeAnalyticsAccount getResponse = dataLakeAnalyticsAccountManagementClient.accounts().get(rgName, adlaAcct); Assert.assertEquals(environmentLocation.name(), getResponse.location()); Assert.assertEquals("Microsoft.DataLakeAnalytics/accounts", getResponse.type()); Assert.assertNotNull(getResponse.id()); Assert.assertTrue(getResponse.id().contains(adlaAcct)); Assert.assertEquals(2, getResponse.getTags().size()); Assert.assertEquals(1, getResponse.dataLakeStoreAccounts().size()); Assert.assertEquals(adlsName, getResponse.dataLakeStoreAccounts().get(0).name()); // list all accounts and make sure there is one. List<DataLakeAnalyticsAccount> listResult = dataLakeAnalyticsAccountManagementClient.accounts().list(); DataLakeAnalyticsAccount discoveredAcct = null; for (DataLakeAnalyticsAccount acct : listResult) { if (acct.name().equals(adlaAcct)) { discoveredAcct = acct; break; } } Assert.assertNotNull(discoveredAcct); Assert.assertEquals(environmentLocation.name(), discoveredAcct.location()); Assert.assertEquals("Microsoft.DataLakeAnalytics/accounts", discoveredAcct.type()); Assert.assertNotNull(discoveredAcct.id()); Assert.assertTrue(discoveredAcct.id().contains(adlaAcct)); Assert.assertEquals(2, discoveredAcct.getTags().size()); // the properties should be empty when we do list calls Assert.assertNull(discoveredAcct.dataLakeStoreAccounts()); // list within a resource group listResult = dataLakeAnalyticsAccountManagementClient.accounts().listByResourceGroup(rgName); discoveredAcct = null; for (DataLakeAnalyticsAccount acct : listResult) { if (acct.name().equals(adlaAcct)) { discoveredAcct = acct; break; } } Assert.assertNotNull(discoveredAcct); Assert.assertEquals(environmentLocation.name(), discoveredAcct.location()); Assert.assertEquals("Microsoft.DataLakeAnalytics/accounts", discoveredAcct.type()); Assert.assertNotNull(discoveredAcct.id()); Assert.assertTrue(discoveredAcct.id().contains(adlaAcct)); Assert.assertEquals(2, discoveredAcct.getTags().size()); // the properties should be empty when we do list calls Assert.assertNull(discoveredAcct.dataLakeStoreAccounts()); // Add, list, get and remove a data lake store account AddDataLakeStoreParameters addAdlsParams = new AddDataLakeStoreParameters(); // This needs to be set and empty for now due to the front end expecting a valid json body dataLakeAnalyticsAccountManagementClient.dataLakeStoreAccounts().add(rgName, adlaAcct, adlsName2, addAdlsParams); // list ADLS accounts List<DataLakeStoreAccountInfo> adlsListResult = dataLakeAnalyticsAccountManagementClient.dataLakeStoreAccounts().listByAccount(rgName, adlaAcct); Assert.assertEquals(2, adlsListResult.size()); // get the one we just added DataLakeStoreAccountInfo adlsGetResult = dataLakeAnalyticsAccountManagementClient.dataLakeStoreAccounts().get(rgName, adlaAcct, adlsName2); Assert.assertEquals(adlsName2, adlsGetResult.name()); // Remove the data source dataLakeAnalyticsAccountManagementClient.dataLakeStoreAccounts().delete(rgName, adlaAcct, adlsName2); // list again, confirming there is only one ADLS account adlsListResult = dataLakeAnalyticsAccountManagementClient.dataLakeStoreAccounts().listByAccount(rgName, adlaAcct); Assert.assertEquals(1, adlsListResult.size()); // Add, list get and remove an azure blob account AddStorageAccountParameters addStoreParams = new AddStorageAccountParameters(); addStoreParams.withAccessKey(storageAccessKey); dataLakeAnalyticsAccountManagementClient.storageAccounts().add(rgName, adlaAcct, storageAcct, addStoreParams); // list ADLS accounts List<StorageAccountInfo> storeListResult = dataLakeAnalyticsAccountManagementClient.storageAccounts().listByAccount(rgName, adlaAcct); Assert.assertEquals(1, storeListResult.size()); // get the one we just added StorageAccountInfo storageGetResult = dataLakeAnalyticsAccountManagementClient.storageAccounts().get(rgName, adlaAcct, storageAcct); Assert.assertEquals(storageAcct, storageGetResult.name()); // Remove the data source dataLakeAnalyticsAccountManagementClient.storageAccounts().delete(rgName, adlaAcct, storageAcct); // list again, confirming there is only one ADLS account storeListResult = dataLakeAnalyticsAccountManagementClient.storageAccounts().listByAccount(rgName, adlaAcct); Assert.assertEquals(0, storeListResult.size()); // Delete the ADLA account dataLakeAnalyticsAccountManagementClient.accounts().delete(rgName, adlaAcct); // Do it again, it should not throw dataLakeAnalyticsAccountManagementClient.accounts().delete(rgName, adlaAcct); } }