Example #1
0
        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));
        }
Example #2
0
        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);
            }
        }
Example #4
0
        /// <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));
        }
Example #5
0
        public ListVolumesResponse ListVolumes(ListVolumesRequest request)
        {
            var command = new ListVolumes(_apiKey, _secret, _baseUri, _authenticator, _builder)
            {
                Parameters = request
            };

            return((ListVolumesResponse)((ICommandExecutor)this).Execute(command));
        }
Example #6
0
 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);
     }
 }
Example #7
0
 /// <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)
                ));
 }
Example #8
0
        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);
            }
        }
Example #9
0
 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);
     }
 }
Example #10
0
        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);
        }
Example #12
0
 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);
     }
 }
Example #13
0
        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);
        }