//Check that create a VDB call will return a response. public void FilterEnvironmentsByNameTest() { // Create and valiate a session ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; // Trust all certificates System.Net.ServicePointManager.ServerCertificateValidationCallback = ((sender, certificate, chain, sslPolicyErrors) => true); // Get a cookie + Authenticate Session.CreateSession(System.Environment.GetEnvironmentVariable("DELPHIX_USER"), System.Environment.GetEnvironmentVariable("DELPHIX_PASSWORD"), System.Environment.GetEnvironmentVariable("DELPHIX_URL")); string cookie = Session.jSessionId.Value; //Create helpers EnvironmentService envService = new EnvironmentService(); DelphixDatabase vdb = new DelphixDatabase(); List <DelphixEnvironment> allDbs = new List <DelphixEnvironment>(); allDbs = envService.GetEnvironments(); DelphixEnvironment aVdb = envService.GetEnvironmentsByName("ctt24co1", allDbs).First(); allDbs.Clear(); allDbs.Add(aVdb); }
/* * Provision a VDB * https://{{yourDelphixEnvironment}}/api/#database * Input Type: ProvisionParameters * Response Example: * { * "type": "OKResult", * "status": "OK", * "result": "MSSQL_DB_CONTAINER-82", * "job": "JOB-600", * "action": "ACTION-1620" * } */ public DelphixResponse ProvisionVdb(DelphixEnvironment sourceEnv, //Go through these and see what I can simplify.. ie: Shouldn't be passing sourceDbRef as a string and also the DelphixDb of the sourceDb DelphixSourceConfig sourceSourceConfig, DelphixRepository destinationRepo, DelphixTimeFlow snapshot, string sourceDbRef, DelphixDatabase sourceDb, string groupRefString, string displayDbName, bool wait = false ) { //dbName = sourceDb.name.Substring(sourceDb.name.LastIndexOf('-') + 1).Trim(); dynamic container = new JObject(); container.name = displayDbName; //Fix this container.type = "MSSqlDatabaseContainer"; container.group = groupRefString.ToString(); dynamic source = new JObject(); source.type = "MSSqlVirtualSource"; source.config = sourceSourceConfig.reference.ToString(); source.allowAutoVDBRestartOnHostReboot = true; dynamic sourceConfig = new JObject(); sourceConfig.type = "MSSqlSIConfig"; sourceConfig.databaseName = sourceDb.name.Substring(sourceDb.name.LastIndexOf('-') + 1).Trim(); //Fix this sourceConfig.repository = destinationRepo.reference.ToString(); dynamic timeflowPointParameters = new JObject(); timeflowPointParameters.type = "TimeflowPointSemantic"; timeflowPointParameters.location = "LATEST_SNAPSHOT"; timeflowPointParameters.container = sourceDbRef; //timeflowPointParameters.timeflow = snapshot.reference; dynamic ProvisionParameters = new JObject(); ProvisionParameters.container = container; ProvisionParameters.source = source; ProvisionParameters.sourceConfig = sourceConfig; ProvisionParameters.timeflowPointParameters = timeflowPointParameters; ProvisionParameters.type = "MSSqlProvisionParameters"; ProvisionParameters = JsonConvert.SerializeObject(ProvisionParameters); var request = new RestRequest("resources/json/delphix/database/provision", Method.POST); request.RequestFormat = DataFormat.Json; request.AddBody(ProvisionParameters); request.AddHeader("content-header", "application/json"); request.AddCookie(Session.jSessionId.Name, Session.jSessionId.Value); logger.Info(request.ToString()); try { var result = Session.delphixClient.Post(request); string dbs = result.Content; Console.WriteLine(ProvisionParameters); var response = JsonConvert.DeserializeObject <ProvisionVdbResponse>(dbs); if (response.status.Equals("OK")) { var deserializedDbs = response.job; logger.Info(deserializedDbs.ToString()); //If we want to wait until the Job is completed... if (wait) { JobService jobHelper = new JobService(); DelphixJob completedJob = jobHelper.GetJobByRefAndWait(deserializedDbs); jobHelper.Dispose(); //return completedJob.parentActionState; return(response); } return(response); } else { var err = JsonConvert.DeserializeObject <DelphixResponseError>(result.Content); //This means there was an error actually creating a job to provision a Vdb. Check Request Body + if Delphix was reachable. Console.WriteLine("The status returned from the ProvisionVDBs call was NOT OK"); logger.Error("There was an error creating a Job for the ProvisionVDB call. The response status was: " + response.status + "Request Body:"); logger.Info(ProvisionParameters.ToString()); logger.Error(err.error.details); //return response.status; return(response); } } catch (Exception ex) { logger.Error(ex); throw ex; } }