Пример #1
0
        /// <summary>
        /// Instantiates a new instance.
        /// </summary>
        /// <param name="apiKey">The API key to use to communicate with the Vultr
        /// API.</param>
        /// <param name="apiURL">The optional Vultr API URL to use. Set this if you want
        /// to override the default endpoint (e.g. for testing).</param>
        /// <exception cref="ArgumentNullException">If <paramref name="apiKey"/> is null
        /// or empty.</exception>
        public VultrClient(string apiKey, string apiURL = VultrApiURL)
        {
            if (string.IsNullOrEmpty(apiKey))
            {
                throw new ArgumentNullException("apiKey", "apiKey must not be null");
            }

            Account         = new AccountClient(apiKey, apiURL);
            Application     = new ApplicationClient(apiKey, apiURL);
            Auth            = new AuthClient(apiKey, apiURL);
            Backup          = new BackupClient(apiKey, apiURL);
            Block           = new BlockClient(apiKey, apiURL);
            DNS             = new DNSClient(apiKey, apiURL);
            Firewall        = new FirewallClient(apiKey, apiURL);
            ISOImage        = new ISOImageClient(apiKey, apiURL);
            Network         = new NetworkClient(apiKey, apiURL);
            OperatingSystem = new OperatingSystemClient(apiKey, apiURL);
            Plan            = new PlanClient(apiKey, apiURL);
            Region          = new RegionClient(apiKey, apiURL);
            ReservedIP      = new ReservedIPClient(apiKey, apiURL);
            Server          = new ServerClient(apiKey, apiURL);
            Snapshot        = new SnapshotClient(apiKey, apiURL);
            SSHKey          = new SSHKeyClient(apiKey, apiURL);
            StartupScript   = new StartupScriptClient(apiKey, apiURL);
            User            = new UserClient(apiKey, apiURL);
        }
 /// <summary>Snippet for GetIngressRule</summary>
 /// <remarks>
 /// This snippet has been automatically generated for illustrative purposes only.
 /// It may require modifications to work in your environment.
 /// </remarks>
 public void GetIngressRuleRequestObject()
 {
     // Create client
     FirewallClient firewallClient = FirewallClient.Create();
     // Initialize request argument(s)
     GetIngressRuleRequest request = new GetIngressRuleRequest {
         Name = "",
     };
     // Make the request
     FirewallRule response = firewallClient.GetIngressRule(request);
 }
Пример #3
0
        /// <summary>Snippet for DeleteIngressRule</summary>
        /// <remarks>
        /// This snippet has been automatically generated for illustrative purposes only.
        /// It may require modifications to work in your environment.
        /// </remarks>
        public void DeleteIngressRuleRequestObject()
        {
            // Create client
            FirewallClient firewallClient = FirewallClient.Create();
            // Initialize request argument(s)
            DeleteIngressRuleRequest request = new DeleteIngressRuleRequest {
                Name = "",
            };

            // Make the request
            firewallClient.DeleteIngressRule(request);
        }
        /// <summary>Snippet for GetIngressRuleAsync</summary>
        /// <remarks>
        /// This snippet has been automatically generated for illustrative purposes only.
        /// It may require modifications to work in your environment.
        /// </remarks>
        public async Task GetIngressRuleRequestObjectAsync()
        {
            // Create client
            FirewallClient firewallClient = await FirewallClient.CreateAsync();

            // Initialize request argument(s)
            GetIngressRuleRequest request = new GetIngressRuleRequest {
                Name = "",
            };
            // Make the request
            FirewallRule response = await firewallClient.GetIngressRuleAsync(request);
        }
Пример #5
0
 /// <summary>Snippet for CreateIngressRule</summary>
 /// <remarks>
 /// This snippet has been automatically generated for illustrative purposes only.
 /// It may require modifications to work in your environment.
 /// </remarks>
 public void CreateIngressRuleRequestObject()
 {
     // Create client
     FirewallClient firewallClient = FirewallClient.Create();
     // Initialize request argument(s)
     CreateIngressRuleRequest request = new CreateIngressRuleRequest
     {
         Parent = "",
         Rule   = new FirewallRule(),
     };
     // Make the request
     FirewallRule response = firewallClient.CreateIngressRule(request);
 }
 /// <summary>Snippet for BatchUpdateIngressRules</summary>
 /// <remarks>
 /// This snippet has been automatically generated for illustrative purposes only.
 /// It may require modifications to work in your environment.
 /// </remarks>
 public void BatchUpdateIngressRulesRequestObject()
 {
     // Create client
     FirewallClient firewallClient = FirewallClient.Create();
     // Initialize request argument(s)
     BatchUpdateIngressRulesRequest request = new BatchUpdateIngressRulesRequest
     {
         Name         = "",
         IngressRules = { new FirewallRule(), },
     };
     // Make the request
     BatchUpdateIngressRulesResponse response = firewallClient.BatchUpdateIngressRules(request);
 }
Пример #7
0
        /// <summary>Snippet for CreateIngressRuleAsync</summary>
        /// <remarks>
        /// This snippet has been automatically generated for illustrative purposes only.
        /// It may require modifications to work in your environment.
        /// </remarks>
        public async Task CreateIngressRuleRequestObjectAsync()
        {
            // Create client
            FirewallClient firewallClient = await FirewallClient.CreateAsync();

            // Initialize request argument(s)
            CreateIngressRuleRequest request = new CreateIngressRuleRequest
            {
                Parent = "",
                Rule   = new FirewallRule(),
            };
            // Make the request
            FirewallRule response = await firewallClient.CreateIngressRuleAsync(request);
        }
Пример #8
0
 /// <summary>Snippet for UpdateIngressRule</summary>
 /// <remarks>
 /// This snippet has been automatically generated for illustrative purposes only.
 /// It may require modifications to work in your environment.
 /// </remarks>
 public void UpdateIngressRuleRequestObject()
 {
     // Create client
     FirewallClient firewallClient = FirewallClient.Create();
     // Initialize request argument(s)
     UpdateIngressRuleRequest request = new UpdateIngressRuleRequest
     {
         Name       = "",
         Rule       = new FirewallRule(),
         UpdateMask = new FieldMask(),
     };
     // Make the request
     FirewallRule response = firewallClient.UpdateIngressRule(request);
 }
        /// <summary>Snippet for BatchUpdateIngressRulesAsync</summary>
        /// <remarks>
        /// This snippet has been automatically generated for illustrative purposes only.
        /// It may require modifications to work in your environment.
        /// </remarks>
        public async Task BatchUpdateIngressRulesRequestObjectAsync()
        {
            // Create client
            FirewallClient firewallClient = await FirewallClient.CreateAsync();

            // Initialize request argument(s)
            BatchUpdateIngressRulesRequest request = new BatchUpdateIngressRulesRequest
            {
                Name         = "",
                IngressRules = { new FirewallRule(), },
            };
            // Make the request
            BatchUpdateIngressRulesResponse response = await firewallClient.BatchUpdateIngressRulesAsync(request);
        }
Пример #10
0
        /// <summary>Snippet for ListIngressRulesAsync</summary>
        public async Task ListIngressRulesRequestObjectAsync()
        {
            // Snippet: ListIngressRulesAsync(ListIngressRulesRequest, CallSettings)
            // Create client
            FirewallClient firewallClient = await FirewallClient.CreateAsync();

            // Initialize request argument(s)
            ListIngressRulesRequest request = new ListIngressRulesRequest
            {
                Parent          = "",
                MatchingAddress = "",
            };
            // Make the request
            PagedAsyncEnumerable <ListIngressRulesResponse, FirewallRule> response = firewallClient.ListIngressRulesAsync(request);

            // Iterate over all response items, lazily performing RPCs as required
            await response.ForEachAsync((FirewallRule item) =>
            {
                // Do something with each item
                Console.WriteLine(item);
            });

            // Or iterate over pages (of server-defined size), performing one RPC per page
            await response.AsRawResponses().ForEachAsync((ListIngressRulesResponse page) =>
            {
                // Do something with each page of items
                Console.WriteLine("A page of results:");
                foreach (FirewallRule item in page)
                {
                    // Do something with each item
                    Console.WriteLine(item);
                }
            });

            // Or retrieve a single page of known size (unless it's the final page), performing as many RPCs as required
            int pageSize = 10;
            Page <FirewallRule> singlePage = await response.ReadPageAsync(pageSize);

            // Do something with the page of items
            Console.WriteLine($"A page of {pageSize} results (unless it's the final page):");
            foreach (FirewallRule item in singlePage)
            {
                // Do something with each item
                Console.WriteLine(item);
            }
            // Store the pageToken, for when the next page is required.
            string nextPageToken = singlePage.NextPageToken;
            // End snippet
        }
        /// <summary>Snippet for UpdateIngressRuleAsync</summary>
        /// <remarks>
        /// This snippet has been automatically generated for illustrative purposes only.
        /// It may require modifications to work in your environment.
        /// </remarks>
        public async Task UpdateIngressRuleRequestObjectAsync()
        {
            // Create client
            FirewallClient firewallClient = await FirewallClient.CreateAsync();

            // Initialize request argument(s)
            UpdateIngressRuleRequest request = new UpdateIngressRuleRequest
            {
                Name       = "",
                Rule       = new FirewallRule(),
                UpdateMask = new FieldMask(),
            };
            // Make the request
            FirewallRule response = await firewallClient.UpdateIngressRuleAsync(request);
        }
Пример #12
0
        /// <summary>Snippet for DeleteIngressRuleAsync</summary>
        public async Task DeleteIngressRuleRequestObjectAsync()
        {
            // Snippet: DeleteIngressRuleAsync(DeleteIngressRuleRequest, CallSettings)
            // Additional: DeleteIngressRuleAsync(DeleteIngressRuleRequest, CancellationToken)
            // Create client
            FirewallClient firewallClient = await FirewallClient.CreateAsync();

            // Initialize request argument(s)
            DeleteIngressRuleRequest request = new DeleteIngressRuleRequest {
                Name = "",
            };
            // Make the request
            await firewallClient.DeleteIngressRuleAsync(request);

            // End snippet
        }
Пример #13
0
        /// <summary>
        /// Gets the ID of an existing firewall.
        /// </summary>
        /// <param name="client">The FirewallClient to use to obtain the firewall
        /// ID.</param>
        /// <param name="name">The name of the firewall to obtain the ID for.</param>
        /// <returns>The firewall ID if it exists. Returns an empty string if no firewall
        /// exists with the given <paramref name="name"/>.</returns>
        public static string GetExistingFirewall(this FirewallClient client, string name)
        {
            var existingFirewalls = client.GetFirewallGroups();

            bool Predicate(KeyValuePair <string, FirewallGroup> existingFirewall) =>
            existingFirewall.Value.description == name;

            if (existingFirewalls.FirewallGroups == null ||
                !existingFirewalls.FirewallGroups.Exists(Predicate))
            {
                return("");
            }

            var(existingFirewallGroupId, _) =
                existingFirewalls.FirewallGroups.Single(Predicate);
            return(existingFirewallGroupId);
        }
        /// <summary>Snippet for ListIngressRules</summary>
        /// <remarks>
        /// This snippet has been automatically generated for illustrative purposes only.
        /// It may require modifications to work in your environment.
        /// </remarks>
        public void ListIngressRulesRequestObject()
        {
            // Create client
            FirewallClient firewallClient = FirewallClient.Create();
            // Initialize request argument(s)
            ListIngressRulesRequest request = new ListIngressRulesRequest
            {
                Parent          = "",
                MatchingAddress = "",
            };
            // Make the request
            PagedEnumerable <ListIngressRulesResponse, FirewallRule> response = firewallClient.ListIngressRules(request);

            // Iterate over all response items, lazily performing RPCs as required
            foreach (FirewallRule item in response)
            {
                // Do something with each item
                Console.WriteLine(item);
            }

            // Or iterate over pages (of server-defined size), performing one RPC per page
            foreach (ListIngressRulesResponse page in response.AsRawResponses())
            {
                // Do something with each page of items
                Console.WriteLine("A page of results:");
                foreach (FirewallRule item in page)
                {
                    // Do something with each item
                    Console.WriteLine(item);
                }
            }

            // Or retrieve a single page of known size (unless it's the final page), performing as many RPCs as required
            int pageSize = 10;
            Page <FirewallRule> singlePage = response.ReadPage(pageSize);

            // Do something with the page of items
            Console.WriteLine($"A page of {pageSize} results (unless it's the final page):");
            foreach (FirewallRule item in singlePage)
            {
                // Do something with each item
                Console.WriteLine(item);
            }
            // Store the pageToken, for when the next page is required.
            string nextPageToken = singlePage.NextPageToken;
        }
Пример #15
0
        /// <summary>Snippet for CreateIngressRuleAsync</summary>
        public async Task CreateIngressRuleRequestObjectAsync()
        {
            // Snippet: CreateIngressRuleAsync(CreateIngressRuleRequest, CallSettings)
            // Additional: CreateIngressRuleAsync(CreateIngressRuleRequest, CancellationToken)
            // Create client
            FirewallClient firewallClient = await FirewallClient.CreateAsync();

            // Initialize request argument(s)
            CreateIngressRuleRequest request = new CreateIngressRuleRequest
            {
                Parent = "",
                Rule   = new FirewallRule(),
            };
            // Make the request
            FirewallRule response = await firewallClient.CreateIngressRuleAsync(request);

            // End snippet
        }
Пример #16
0
        /// <summary>Snippet for BatchUpdateIngressRulesAsync</summary>
        public async Task BatchUpdateIngressRulesRequestObjectAsync()
        {
            // Snippet: BatchUpdateIngressRulesAsync(BatchUpdateIngressRulesRequest, CallSettings)
            // Additional: BatchUpdateIngressRulesAsync(BatchUpdateIngressRulesRequest, CancellationToken)
            // Create client
            FirewallClient firewallClient = await FirewallClient.CreateAsync();

            // Initialize request argument(s)
            BatchUpdateIngressRulesRequest request = new BatchUpdateIngressRulesRequest
            {
                Name         = "",
                IngressRules = { new FirewallRule(), },
            };
            // Make the request
            BatchUpdateIngressRulesResponse response = await firewallClient.BatchUpdateIngressRulesAsync(request);

            // End snippet
        }
Пример #17
0
        /// <summary>
        /// Gets the collection of existing rules for a firewall.
        /// </summary>
        /// <param name="client">The FirewallClient to use to obtain the firewall
        /// rules for.</param>
        /// <param name="firewallGroupId">The ID of the firewall to obtain the rules
        /// for.</param>
        /// <returns>The collection of firewall rules.</returns>
        public static IReadOnlyDictionary <string, FirewallRule> GetExistingRules(
            this FirewallClient client, string firewallGroupId)
        {
            var existingRules =
                client.GetFirewallRules(
                    firewallGroupId, "in", "v4")
                .FirewallRules;

            foreach (var(firewallId, firewallRule) in
                     client.GetFirewallRules(
                         firewallGroupId, "in", "v6")
                     .FirewallRules)
            {
                existingRules[firewallId] = firewallRule;
            }

            return(existingRules);
        }
Пример #18
0
        /// <summary>Snippet for UpdateIngressRuleAsync</summary>
        public async Task UpdateIngressRuleRequestObjectAsync()
        {
            // Snippet: UpdateIngressRuleAsync(UpdateIngressRuleRequest, CallSettings)
            // Additional: UpdateIngressRuleAsync(UpdateIngressRuleRequest, CancellationToken)
            // Create client
            FirewallClient firewallClient = await FirewallClient.CreateAsync();

            // Initialize request argument(s)
            UpdateIngressRuleRequest request = new UpdateIngressRuleRequest
            {
                Name       = "",
                Rule       = new FirewallRule(),
                UpdateMask = new FieldMask(),
            };
            // Make the request
            FirewallRule response = await firewallClient.UpdateIngressRuleAsync(request);

            // End snippet
        }
Пример #19
0
        /// <summary>
        /// Deletes an existing firewall rule.
        /// </summary>
        /// <param name="client">The FirewallClient to use to delete the firewall
        /// rule.</param>
        /// <param name="firewallName">The name of the firewall the rule belongs
        /// to.</param>
        /// <param name="firewallGroupId">The ID of the firewall the rule belongs
        /// to.</param>
        /// <param name="rule">The rule to delete.</param>
        /// <param name="dryrun">Whether or not this is a dryrun. If set to true then
        /// provision commands will not be sent to the platform and instead messaging
        /// will be outputted describing what would be done.</param>
        public static void DeleteRule(
            this FirewallClient client,
            string firewallName,
            string firewallGroupId,
            FirewallRule rule,
            bool dryrun)
        {
            Console.WriteLine("Deleting existing firewall rule for {0}", firewallName);
            ConsoleX.WriteLine("port", rule.port);
            ConsoleX.WriteLine("port", rule.rulenumber);
            ConsoleX.WriteLine("port", rule.subnet);
            ConsoleX.WriteLine("port", rule.subnet_size);
            ConsoleX.WriteLine("protocol", rule.protocol);
            ConsoleX.WriteLine("source", rule.source);

            if (!dryrun)
            {
                client.DeleteFirewallRule(firewallGroupId, rule.rulenumber);
            }

            Console.WriteLine("--");
        }