public override void Invoke(AWSCredentials creds, RegionEndpoint region, int maxItems) { AmazonCloudDirectoryConfig config = new AmazonCloudDirectoryConfig(); config.RegionEndpoint = region; ConfigureClient(config); AmazonCloudDirectoryClient client = new AmazonCloudDirectoryClient(creds, config); ListDirectoriesResponse resp = new ListDirectoriesResponse(); do { ListDirectoriesRequest req = new ListDirectoriesRequest { NextToken = resp.NextToken , MaxResults = maxItems }; resp = client.ListDirectories(req); CheckError(resp.HttpStatusCode, "200"); foreach (var obj in resp.Directories) { AddObject(obj); } }while (!string.IsNullOrEmpty(resp.NextToken)); }
public static async Task <Person> Create(AmazonCloudDirectoryClient c, string schemaARN, string directoryARN, string facetName, string itemName) { var facets = await c.ListFacetNamesAsync(new ListFacetNamesRequest() { SchemaArn = schemaARN }); Console.WriteLine("facets:" + JsonConvert.SerializeObject(facets)); var lpp = await c.ListObjectParentPathsAsync(new ListObjectParentPathsRequest() { DirectoryArn = directoryARN, ObjectReference = new ObjectReference() { Selector = "/" } }); Console.WriteLine("parent paths:" + JsonConvert.SerializeObject(lpp)); var cor = new CreateObjectRequest(); cor.DirectoryArn = directoryARN; var p = new Person() { username = "******", website = "test website" }; var oal = CloudDirectoryJsonHelpers.Serialise(p, facetName, schemaARN); cor.ObjectAttributeList = oal; cor.ParentReference = new ObjectReference() { Selector = "/" }; // [^\/\[\]\(\):\{\}#@!?\s\\;]+) cor.LinkName = itemName; cor.SchemaFacets = new List <SchemaFacet>() { new SchemaFacet() { FacetName = facetName, SchemaArn = schemaARN } }; await c.CreateObjectAsync(cor); return(p); }
public static async Task CreateBatch(AmazonCloudDirectoryClient c, string schemaARN, string directoryARN, string facetName) { var tasks = Enumerable.Range(0, 10) .ToList() .Select(s => CreateBatchAux(c, schemaARN, directoryARN, facetName)).ToArray(); Task.WaitAll(tasks); }
public void Test() { var cdc = new AmazonCloudDirectoryConfig() { RegionEndpoint = RegionEndpoint.APSoutheast2 }; AmazonCloudDirectoryClient c = new AmazonCloudDirectoryClient(cred, cdc); //Enumerable.Range(0, 10000) // .ToList().AsParallel() // .ForAll(s => // { // try // { // CloudDirectoryAPI.Delete(c, directoryARN, ItemName + s.ToString()).Wait(); // } // catch (Exception e) // { // } // }); Console.WriteLine("starting 10k write test"); Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); CloudDirectoryAPI.CreateBatch(c, schemaARN, directoryARN, facetName).Wait(); stopwatch.Stop(); Console.WriteLine($"write 10k in {stopwatch.Elapsed.TotalMilliseconds} MS"); CloudDirectoryAPI.Delete(c, directoryARN, ItemName).Wait(); var p1 = CloudDirectoryAPI.Create(c, schemaARN, directoryARN, facetName, ItemName).Result; stopwatch = new Stopwatch(); stopwatch.Start(); var p2 = CloudDirectoryAPI.Read(c, schemaARN, directoryARN, facetName, ItemName).Result; stopwatch.Stop(); Console.WriteLine($"read 1 in {stopwatch.Elapsed.TotalMilliseconds} MS"); stopwatch = new Stopwatch(); stopwatch.Start(); p2 = CloudDirectoryAPI.Read(c, schemaARN, directoryARN, facetName, ItemName).Result; stopwatch.Stop(); Console.WriteLine($"read 2 in {stopwatch.Elapsed.TotalMilliseconds} MS"); Assert.AreEqual(p1.username, p2.username); Assert.AreEqual(p1.website, p2.website); }
protected IAmazonCloudDirectory CreateClient(AWSCredentials credentials, RegionEndpoint region) { var config = new AmazonCloudDirectoryConfig { RegionEndpoint = region }; Amazon.PowerShell.Utils.Common.PopulateConfig(this, config); this.CustomizeClientConfig(config); var client = new AmazonCloudDirectoryClient(credentials, config); client.BeforeRequestEvent += RequestEventHandler; client.AfterResponseEvent += ResponseEventHandler; return(client); }
public static async Task Delete(AmazonCloudDirectoryClient c, string directoryARN, string itemName) { //cant delete without detatching from node var det = new DetachObjectRequest() { DirectoryArn = directoryARN, LinkName = itemName, ParentReference = new ObjectReference() { Selector = "/" } }; string refd = null; try { var detr = c.DetachObjectAsync(det).Result; refd = detr.DetachedObjectIdentifier; } //first run catch (Exception e) { } //already deleted? if (refd == null) { return; } var dor = new DeleteObjectRequest() { DirectoryArn = directoryARN, ObjectReference = new ObjectReference() { //absolute ref to the detached item Selector = "$" + refd } }; try { await c.DeleteObjectAsync(dor); } //first run catch (Exception e) { } }
private static async Task CreateBatchAux(AmazonCloudDirectoryClient c, string schemaARN, string directoryARN, string facetName) { var oal = CloudDirectoryJsonHelpers.Serialise( new Person() { username = "******", website = "test batch website" }, facetName, schemaARN); var createbatch = new ConcurrentBag <BatchWriteOperation>(); Enumerable.Range(0, 10) .ToList() .ForEach(s => { var r = new Random((int)DateTime.UtcNow.Ticks); createbatch.Add(new BatchWriteOperation() { CreateObject = new BatchCreateObject() { SchemaFacet = new List <SchemaFacet>() { new SchemaFacet() { FacetName = facetName, SchemaArn = schemaARN } }, ObjectAttributeList = oal, BatchReferenceName = "brn" + r.Next(), LinkName = "batchitems" + r.Next().ToString(), ParentReference = new ObjectReference() { Selector = "/" } } }); }); await c.BatchWriteAsync(new BatchWriteRequest() { Operations = createbatch.ToList(), DirectoryArn = directoryARN }); }
public static async Task <Person> Read(AmazonCloudDirectoryClient c, string schemaARN, string directoryARN, string facetName, string itemName) { var brr = new BatchReadRequest() { ConsistencyLevel = ConsistencyLevel.SERIALIZABLE, DirectoryArn = directoryARN, Operations = new List <BatchReadOperation>() { new BatchReadOperation() { ListObjectAttributes = new BatchListObjectAttributes() { FacetFilter = new SchemaFacet() { SchemaArn = schemaARN, FacetName = facetName }, ObjectReference = new ObjectReference { Selector = "/" + itemName } } } } }; try { Stopwatch s = new Stopwatch(); s.Start(); var res = await c.BatchReadAsync(brr); s.Stop(); var user = CloudDirectoryJsonHelpers.Deserialise <Person>(res.Responses[0].SuccessfulResponse.ListObjectAttributes); return(user); } catch (Exception e) { Console.WriteLine(e); throw; } }