public void WhenGivenExistingSiteMigrateData() { var newSiteOptions = MockEnvironment.TableauSignInOptions("https://tableau-dev.traffk.com/#/site/TestMasterTenant").Object; var tableauAdminCredentials = ConfigurationHelpers.CreateOptions(TableauAdminCredentials); var httpClientOptions = ConfigurationHelpers.CreateOptions(HttpClientOptions); var httpClientFactory = new HttpClientFactory(httpClientOptions); var testAdminService = new TableauAdminService(newSiteOptions, tableauAdminCredentials, httpClientFactory, Logger) as ITableauAdminService; var dbUserName = "******"; var dbPassword = "******"; var testNewServerAddress = "traffkrdb-dev.database.windows.net/"; var testDbName = "TraffkHip2"; string path = Path.GetTempPath(); path = path + @"TableauIntegrationTestFiles"; var dataMigrationRequest = new TableauDataMigrationRequest("ExistingTestTenant", testNewServerAddress, testDbName, dbUserName, dbPassword, path); testAdminService.MigrateDataset(dataMigrationRequest); DirectoryInfo di = new DirectoryInfo(path); foreach (FileInfo file in di.GetFiles()) { file.Delete(); } foreach (DirectoryInfo dir in di.GetDirectories()) { dir.Delete(true); } }
SiteInfo ITableauAdminService.CreateTableauTenant(CreateTableauTenantRequest request) { var masterRestService = this as ITableauAdminService; //Create the site var newSite = CreateSite(request.TenantName); //Migrate the data var migrateDataRequest = new TableauDataMigrationRequest(request); masterRestService.MigrateDataset(migrateDataRequest); return(newSite); }
void ITableauAdminService.MigrateDataset(TableauDataMigrationRequest request) { base.Options.UpdateForTenant(request.DestTableauTenantId); var destinationSiteSignInOptions = ConfigurationHelpers.CreateOptions(Options); var adminCredentialOptions = ConfigurationHelpers.CreateOptions(TableauAdminCredentials); var destinationAdminService = new TableauAdminService(destinationSiteSignInOptions, adminCredentialOptions, HttpClientFactory, Logger); var destinationSiteInfo = destinationAdminService.GetSiteInfo(); var sourceAdminService = this; //not normal convention, but using this to make it clearer to future devs //Download datasources from master site var dataSources = sourceAdminService.DownloadDatasourceList(); sourceAdminService.DownloadDatasourceFiles(dataSources, request.TempFilePath); foreach (var datasource in Directory.GetFiles(request.TempFilePath + @"\Default")) { TableauFileEditor.UpdateDatasourceDatabaseName(datasource, request.DestDbName, request.TempFilePath); } //Upload datasources to new site var uploadedDataSources = destinationAdminService.UploadDatasourceFiles("Default", request.DestDbUsername, request.DestDbPassword, true, request.TempFilePath); //Download workbooks from master site var workbooksToDownload = sourceAdminService.DownloadWorkbookList(); sourceAdminService.DownloadWorkbookFiles(workbooksToDownload, request.TempFilePath, false); foreach (var workbook in Directory.GetFiles(request.TempFilePath)) { TableauFileEditor.UpdateWorkbookFileSiteReferences(workbook, destinationSiteInfo); } //Upload workbooks to new site destinationAdminService.UploadWorkbooks("Default", request.DestDbUsername, request.DestDbPassword, true, request.TempFilePath); }
void ITenantJobs.MigrateTableauDataset(TableauDataMigrationRequest request) { TableauAdminService.MigrateDataset(request); }