public async Task <Result <DgraphInstance> > AddDgraphInstanceAndWait(DgraphInstanceInput instance) { var addResult = await AddDgraphInstance(instance); if (addResult.IsFailed) { return(addResult); } // FIXME: need backoff policy and cancelation in here for (int i = 1; i < 4; i++) { Thread.Sleep(TimeSpan.FromSeconds(30 * i)); var getResult = await GetDgraphInstance(addResult.Value.Id); if (getResult.IsSuccess && getResult.Value != null) { return(getResult); } } var fail = Results.Fail <DgraphInstance>("Instance doesn't seem to be up yet"); fail.WithSuccess(new Success("Successesfully added instance").WithMetadata("Id", addResult.Value.Id)); return(fail); }
public async Task <Result> ProvisionDgraph() { if (!ConnectionConfig.Endpoint.Equals("localhost")) { var envResult = await GSioClient.QueryEnvironment("Test"); if (envResult.IsFailed) { return(envResult.ToResult()); } var env = envResult.Value.FirstOrDefault(); if (env == null) { return(Results.Fail("Environment not found")); } var dgInput = new DgraphInstanceInput() { Replicas = 1, Shards = 1, StorageGB = 2, Env = new EnvironmentReference { Id = env.Id } }; var dgresult = await GSioClient.AddDgraphInstanceAndWait(dgInput); if (dgresult.IsFailed) { return(dgresult.ToResult()); } GSioDgraph = dgresult.Value; await CheckVersion(); } return(Results.Ok()); }
public async Task <Result <DgraphInstance> > AddDgraphInstance(DgraphInstanceInput instance) { return(await ExecuteRequest <DgraphInstance, DgraphInstanceInput>("addDgraphInstance", instance)); }