public override OperationResult Deprovision(AddonDeprovisionRequest request) { string connectionData = request.ConnectionData; // changing to overloaded constructor - 5/22/14 var deprovisionResult = new ProvisionAddOnResult(connectionData); AddonManifest manifest = request.Manifest; string devOptions = request.DeveloperOptions; try { AmazonS3Client client; var conInfo = ConnectionInfo.Parse(connectionData); var developerOptions = S3DeveloperOptions.Parse(devOptions); // heh, need to know which bucket to remove... developerOptions.BucketName = conInfo.BucketName; var establishClientResult = EstablishClient(manifest, developerOptions, out client); if (!establishClientResult.IsSuccess) { deprovisionResult.EndUserMessage = establishClientResult.EndUserMessage; return(deprovisionResult); } var response = client.DeleteBucket(new DeleteBucketRequest { BucketName = developerOptions.BucketName }); // 5/22/14 fixing amazon aws deprecation if (response.HttpStatusCode.Equals(HttpStatusCode.OK)) { var verificationResponse = client.ListBuckets(new ListBucketsRequest()); // 5/22/14 fixing amazaon aws deprecration if (verificationResponse.Buckets.All(x => x.BucketName != conInfo.BucketName)) { deprovisionResult.IsSuccess = true; deprovisionResult.EndUserMessage = "Successfully deleted bucket: " + conInfo.BucketName; } } else { // error occurred during deletion deprovisionResult.EndUserMessage = "Error during deprovision. Check S3 to ensure bucket was deleted."; } } catch (Exception e) { deprovisionResult.EndUserMessage = e.Message + e.StackTrace; } return(deprovisionResult); }
private static OperationResult ParseDevOptions(string developerOptions, out S3DeveloperOptions devOptions) { devOptions = null; var result = new OperationResult { IsSuccess = false }; var progress = ""; try { progress += "Parsing developer options...\n"; devOptions = S3DeveloperOptions.Parse(developerOptions); } catch (ArgumentException e) { result.EndUserMessage = e.Message; return(result); } result.IsSuccess = true; result.EndUserMessage = progress; return(result); }
// Provision RDS Instance // Input: AddonDeprovisionRequest request // Output: ProvisionAddOnResult public override ProvisionAddOnResult Provision(AddonProvisionRequest request) { var provisionResult = new ProvisionAddOnResult("") { IsSuccess = false }; var manifest = request.Manifest; var developerOptions = request.DeveloperOptions; try { AmazonS3Client client; S3DeveloperOptions devOptions; var parseOptionsResult = ParseDevOptions(developerOptions, out devOptions); if (!parseOptionsResult.IsSuccess) { provisionResult.EndUserMessage = parseOptionsResult.EndUserMessage; return(provisionResult); } var establishClientResult = EstablishClient(manifest, S3DeveloperOptions.Parse(developerOptions), out client); if (!establishClientResult.IsSuccess) { provisionResult.EndUserMessage = establishClientResult.EndUserMessage; return(provisionResult); } var response = client.PutBucket(new PutBucketRequest { BucketName = devOptions.BucketName, BucketRegion = S3Region.US }); if (response.HttpStatusCode != HttpStatusCode.OK) { provisionResult.EndUserMessage = response.HttpStatusCode.ToString(); return(provisionResult); } var verificationResponse = client.ListBuckets(new ListBucketsRequest()); var bucket = verificationResponse.Buckets.Find(m => m.BucketName.Equals(devOptions.BucketName)); if (bucket == null) { provisionResult.EndUserMessage = "We aren't getting the bucket filtered here correctly."; return(provisionResult); } provisionResult.ConnectionData = "BucketName=" + devOptions.BucketName; } catch (Exception e) { Console.WriteLine(e.StackTrace); Log.Error(e.Message + "\n" + e.StackTrace); provisionResult.EndUserMessage = e.Message + "\n" + e.StackTrace; } provisionResult.IsSuccess = true; return(provisionResult); }