public override void Invoke(AWSCredentials creds, RegionEndpoint region, int maxItems) { AmazonStorageGatewayConfig config = new AmazonStorageGatewayConfig(); config.RegionEndpoint = region; ConfigureClient(config); AmazonStorageGatewayClient client = new AmazonStorageGatewayClient(creds, config); ListVolumesResponse resp = new ListVolumesResponse(); do { ListVolumesRequest req = new ListVolumesRequest { Marker = resp.Marker , Limit = maxItems }; resp = client.ListVolumes(req); CheckError(resp.HttpStatusCode, "200"); foreach (var obj in resp.VolumeInfos) { AddObject(obj); } }while (!string.IsNullOrEmpty(resp.Marker)); }
protected override void ProcessRecord() { base.ProcessRecord(); ListVolumesRequest request; try { request = new ListVolumesRequest { CompartmentId = CompartmentId, AvailabilityDomain = AvailabilityDomain, Limit = Limit, Page = Page, DisplayName = DisplayName, SortBy = SortBy, SortOrder = SortOrder, VolumeGroupId = VolumeGroupId, LifecycleState = LifecycleState }; IEnumerable <ListVolumesResponse> responses = GetRequestDelegate().Invoke(request); foreach (var item in responses) { response = item; WriteOutput(response, response.Items, true); } FinishProcessing(response); } catch (Exception ex) { TerminatingErrorDuringExecution(ex); } }
private static void ListVolumes(EvsClient client) { ListVolumesRequest req = new ListVolumesRequest() { AvailabilityZone = "br-iaas-odin1a", ServiceType = "EVS", Limit = 2, Offset = 0, Name = "test" }; try { var resp = client.ListVolumes(req); Console.WriteLine(resp.Count); Console.WriteLine(resp.HttpStatusCode); } catch (RequestTimeoutException requestTimeoutException) { Console.WriteLine(requestTimeoutException.ErrorMessage); } catch (ServiceResponseException clientRequestException) { Console.WriteLine(clientRequestException.HttpStatusCode); Console.WriteLine(clientRequestException.ErrorCode); Console.WriteLine(clientRequestException.ErrorMsg); } catch (ConnectionException connectionException) { Console.WriteLine(connectionException.ErrorMessage); } }
/// <summary> /// 查询所有云硬盘详情 /// </summary> public ListVolumesResponse ListVolumes(ListVolumesRequest listVolumesRequest) { Dictionary <string, string> urlParam = new Dictionary <string, string>(); string urlPath = HttpUtils.AddUrlPath("/v2/{project_id}/cloudvolumes/detail", urlParam); SdkRequest request = HttpUtils.InitSdkRequest(urlPath, "application/json", listVolumesRequest); HttpResponseMessage response = DoHttpRequestSync("GET", request); return(JsonUtils.DeSerialize <ListVolumesResponse>(response)); }
public ListVolumesResponse ListVolumes(ListVolumesRequest request) { var command = new ListVolumes(_apiKey, _secret, _baseUri, _authenticator, _builder) { Parameters = request }; return((ListVolumesResponse)((ICommandExecutor)this).Execute(command)); }
internal void ListVolumes() { try { ListVolumesRequest request = new ListVolumesRequest(); var response = _client.ListVolumes(request); _logWriter(response.ToString()); } catch (System.Exception ex) { _logWriter("Error listing network volumes: " + ex.Message); } }
/// <summary> /// Creates a new enumerable which will iterate over the responses received from the ListVolumes operation. This enumerable /// will fetch more data from the server as needed. /// </summary> /// <param name="request">The request object containing the details to send</param> /// <param name="retryConfiguration">The configuration for retrying, may be null</param> /// <param name="cancellationToken">The cancellation token object</param> /// <returns>The enumerator, which supports a simple iteration over a collection of a specified type</returns> public IEnumerable <ListVolumesResponse> ListVolumesResponseEnumerator(ListVolumesRequest request, Common.Retry.RetryConfiguration retryConfiguration = null, CancellationToken cancellationToken = default) { return(new Common.Utils.ResponseEnumerable <ListVolumesRequest, ListVolumesResponse>( response => response.OpcNextPage, input => { if (!string.IsNullOrEmpty(input)) { request.Page = input; } return request; }, request => client.ListVolumes(request, retryConfiguration, cancellationToken) )); }
protected override void ProcessRecord() { base.ProcessRecord(); ListVolumesRequest request; try { request = new ListVolumesRequest { CompartmentId = CompartmentId, AvailabilityDomain = AvailabilityDomain, Limit = Limit, Page = Page, DisplayName = DisplayName, SortBy = SortBy, SortOrder = SortOrder, VolumeGroupId = VolumeGroupId, LifecycleState = LifecycleState }; IEnumerable <ListVolumesResponse> responses = GetRequestDelegate().Invoke(request); foreach (var item in responses) { response = item; WriteOutput(response, response.Items, true); } if (!ParameterSetName.Equals(AllPageSet) && !ParameterSetName.Equals(LimitSet) && response.OpcNextPage != null) { WriteWarning("This operation supports pagination and not all resources were returned. Re-run using the -All option to auto paginate and list all resources."); } FinishProcessing(response); } catch (Exception ex) { TerminatingErrorDuringExecution(ex); } }
internal void ListVolumes() { try { ListVolumesRequest request = new ListVolumesRequest(); var response = _client.ListVolumes(request); _logWriter(response.ToString()); } catch (System.Exception ex) { _logWriter("Error listing network volumes: " + ex.Message); } }
public static void BlockStoragesConsoleDisplay(ClientConfig config) { // create client BlockstorageClient blockstorageClient = new BlockstorageClient(config) { Region = Regions.US_ASHBURN_1 }; // get list BootVolumes IdentityClient identityClient = new IdentityClient(config) { Region = Regions.US_ASHBURN_1 }; // get ADs ListAvailabilityDomainsRequest listADsRequest = new ListAvailabilityDomainsRequest() { CompartmentId = config.TenancyId }; var ads = identityClient.ListAvailabilityDomains(listADsRequest); ads.Items.ForEach(ad => { Console.WriteLine("* List BootVolumes-------------------" + ad.Name); var listBootVolumesRequest = new ListBootVolumesRequest() { // target compartment is root compartment(tenancy) CompartmentId = config.TenancyId, AvailabilityDomain = ad.Name, Limit = 10, }; var listBV = blockstorageClient.ListBootVolumes(listBootVolumesRequest); listBV.Items.ForEach(bv => { Console.WriteLine(" |-" + bv.DisplayName); Console.WriteLine(" | id: " + bv.Id); Console.WriteLine(" | lifecycle: " + bv.LifecycleState); Console.WriteLine(" | sizeInGBs: " + bv.SizeInGBs); Console.WriteLine(" | VolumeGroupId: " + bv.VolumeGroupId); }); Console.WriteLine("* List VolumeGroups-------------------" + ad.Name); var listVolumeGroupsRequest = new ListVolumeGroupsRequest() { // target compartment is root compartment(tenancy) CompartmentId = config.TenancyId, AvailabilityDomain = ad.Name, Limit = 10, }; var listVolGroups = blockstorageClient.ListVolumeGroups(listVolumeGroupsRequest); listVolGroups.Items.ForEach(vg => { Console.WriteLine(" |-" + vg.DisplayName); Console.WriteLine(" | id: " + vg.Id); Console.WriteLine(" | lifecycle: " + vg.LifecycleState); Console.WriteLine(" | sizeInGBs: " + vg.SizeInGBs); }); }); ListCompartmentRequest listCompartmentRequest = new ListCompartmentRequest() { CompartmentId = config.TenancyId, CompartmentIdInSubtree = true, AccessLevel = ListCompartmentRequest.AccessLevels.ACCESSIBLE }; var listCom = identityClient.ListCompartment(listCompartmentRequest); Console.WriteLine("* List BootVolumeBackup-------------------"); listCom.Items.ForEach(com => { ListBootVolumeBackupsRequest listBootVolumeBackupsRequest = new ListBootVolumeBackupsRequest() { CompartmentId = com.Id, SortOrder = SortOrder.ASC }; var listBootVolumeBackup = blockstorageClient.ListBootVolumeBackups(listBootVolumeBackupsRequest); listBootVolumeBackup.Items.ForEach(bvB => { Console.WriteLine(" |-" + bvB.DisplayName); Console.WriteLine(" | id: " + bvB.Id); Console.WriteLine(" | lifecycle: " + bvB.LifecycleState); Console.WriteLine(" | type: " + bvB.Type); }); }); Console.WriteLine("* List VolumeBackup-------------------"); listCom.Items.ForEach(com => { ListVolumeBackupsRequest listVolumeBackupsRequest = new ListVolumeBackupsRequest() { CompartmentId = com.Id }; var listVolumeBackup = blockstorageClient.ListVolumeBackups(listVolumeBackupsRequest); listVolumeBackup.Items.ForEach(vB => { Console.WriteLine(" |-" + vB.DisplayName); Console.WriteLine(" | id: " + vB.Id); Console.WriteLine(" | lifecycle: " + vB.LifecycleState); Console.WriteLine(" | type: " + vB.Type); }); }); Console.WriteLine("* List Volume-------------------"); listCom.Items.ForEach(com => { ListVolumesRequest listVolumesRequest = new ListVolumesRequest() { CompartmentId = com.Id }; var listVolume = blockstorageClient.ListVolumes(listVolumesRequest); listVolume.Items.ForEach(vol => { Console.WriteLine(" |-" + vol.DisplayName); Console.WriteLine(" | id: " + vol.Id); Console.WriteLine(" | lifecycle: " + vol.LifecycleState); Console.WriteLine(" | sizeInGBs: " + vol.SizeInGBs); var getVolumeKmsKeyRequest = new GetVolumeKmsKeyRequest() { VolumeId = vol.Id }; try { var kms = blockstorageClient.GetVolumeKmsKey(getVolumeKmsKeyRequest); Console.WriteLine(" | kms: " + kms.VolumeKmsKey.KmsKeyId); } catch (WebException we) { if (we.Status.Equals(WebExceptionStatus.ProtocolError)) { var code = ((HttpWebResponse)we.Response).StatusCode; if (code != HttpStatusCode.NotFound) { throw we; } } } }); }); Console.WriteLine("* List VolumeGroupBackUp-------------------"); listCom.Items.ForEach(com => { var listVolumeGroupBackupsRequest = new ListVolumeGroupBackupsRequest() { CompartmentId = com.Id }; var listVolumeGroupB = blockstorageClient.ListVolumeGroupBackups(listVolumeGroupBackupsRequest); listVolumeGroupB.Items.ForEach(vol => { Console.WriteLine(" |-" + vol.DisplayName); Console.WriteLine(" | id: " + vol.Id); Console.WriteLine(" | lifecycle: " + vol.LifecycleState); Console.WriteLine(" | sizeInGBs: " + vol.SizeInGBs); }); }); Console.WriteLine("* List VolumeBackUpPolicy-------------------"); var listVolumeBackupPoliciesRequest = new ListVolumeBackupPoliciesRequest() { Limit = 10 }; var backupPolicies = blockstorageClient.ListVolumeBackupPolicies(listVolumeBackupPoliciesRequest); backupPolicies.Items.ForEach(policy => { Console.WriteLine(" |-" + policy.DisplayName); Console.WriteLine(" | id: " + policy.Id); Console.WriteLine(" | timeCreated: " + policy.TimeCreated); }); }
public override async Task <ListVolumesResponse> ListVolumes(ListVolumesRequest request, ServerCallContext context) { //todo request.MaxEntries, //request.StartingToken var volumeSource = _service.GetVolumesAsync(null); if (!string.IsNullOrEmpty(request.StartingToken)) { if (!int.TryParse(request.StartingToken, out var startIndex)) { throw new RpcException(new Status(StatusCode.Aborted, string.Empty), "invalid starting_token"); } volumeSource = volumeSource.Skip(startIndex); } if (request.MaxEntries > 0) { volumeSource = volumeSource.Take(request.MaxEntries); } var foundVolumes = await volumeSource .ToListAsync(context.CancellationToken); var flows = await _service.GetVolumeFlowsAsnyc(null) .ToListAsync(context.CancellationToken); var nextIndex = request.MaxEntries + foundVolumes.Count; var rsp = new ListVolumesResponse { NextToken = request.MaxEntries > 0 ? nextIndex.ToString() : string.Empty }; foreach (var foundVolume in foundVolumes) { var volumeFlows = flows.Where(n => StringComparer.OrdinalIgnoreCase.Equals(foundVolume.Path, n.Path)).ToList(); var hostNames = volumeFlows.Select(n => n.Host) .Distinct(StringComparer.OrdinalIgnoreCase) .DefaultIfEmpty(null); var errors = new List <Exception>(); HypervVolumeDetail v = null; foreach (var hostName in hostNames) { //maybe stale record after remount to other node try { v = await _service.GetVolumeAsync(foundVolume.Path, hostName, context.CancellationToken); continue; } catch (Exception ex) { errors.Add(new Exception($"Getting volume details of '{foundVolume.Name}' at host '{hostName ?? "default"}' failed.", ex)); } } if (v is null) { throw errors.Count switch { 1 => errors[0], _ => new AggregateException($"Getting volume details of '{foundVolume.Name}' failed.", errors), }; } var entry = new ListVolumesResponse.Types.Entry { Volume = new Volume { VolumeId = foundVolume.Name, CapacityBytes = (long)v.SizeBytes, //AccessibleTopology //ContentSource }, Status = new ListVolumesResponse.Types.VolumeStatus { } }; entry.Volume.VolumeContext.Add("Id", v.Id.ToString()); entry.Volume.VolumeContext.Add("Storage", v.Storage); entry.Volume.VolumeContext.Add("Path", v.Path); entry.Status.PublishedNodeIds.Add(volumeFlows.Select(n => n.VMId.ToString())); rsp.Entries.Add(entry); } return(rsp); }
internal void ListVolumes() { try { Client session = new Client(serviceUri, apiKey, secretKey); ListVolumesRequest request = new ListVolumesRequest(); ListVolumesResponse response = session.ListVolumes(request); logWriter(response.ToString()); } catch (System.Exception ex) { logWriter("Error listing network volumes: " + ex.Message); } }
public override async Task <ListVolumesResponse> ListVolumes(ListVolumesRequest request, ServerCallContext context) { _logger.LogDebug("list volumes from index {StartIndex}", request.StartingToken); //todo cache query var volumes = await _service.GetVolumesAsync(null).ToListAsync(context.CancellationToken); var startIndex = 0; if (!string.IsNullOrEmpty(request.StartingToken)) { if (!int.TryParse(request.StartingToken, out startIndex)) { throw new RpcException(new Status(StatusCode.InvalidArgument, "invalid starting_token")); } } var rsp = new ListVolumesResponse { }; if (request.MaxEntries > 0 && (volumes.Count - startIndex) > request.MaxEntries) { rsp.NextToken = (startIndex + request.MaxEntries).ToString(); } var volumeSource = volumes.AsEnumerable(); if (startIndex > 0) { volumeSource = volumeSource.Skip(startIndex); } if (request.MaxEntries > 0) { volumeSource = volumeSource.Take(request.MaxEntries); } await foreach (var r in _service.GetVolumeDetailsAsync(volumeSource, context.CancellationToken)) { var entry = new ListVolumesResponse.Types.Entry { Volume = new Volume { VolumeId = r.Info.Name //AccessibleTopology //ContentSource }, Status = new ListVolumesResponse.Types.VolumeStatus { } }; if (r.Detail is not null) { var d = r.Detail; entry.Volume.CapacityBytes = (long)(d.SizeBytes); entry.Volume.VolumeContext.Add("Id", d.Id.ToString()); entry.Volume.VolumeContext.Add("Storage", d.Storage); entry.Volume.VolumeContext.Add("Path", d.Path); entry.Status.VolumeCondition = new VolumeCondition { Abnormal = false, Message = d.Attached ? "attached" : "detached" }; } if (r.Nodes.Length > 0) { entry.Status.PublishedNodeIds.Add(r.Nodes); } if (r.Error is not null) { entry.Status.VolumeCondition = new VolumeCondition { Abnormal = true, Message = r.Error.Message }; } rsp.Entries.Add(entry); } return(rsp); }