diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b0e70b2b..5b5ae2211 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ - sks: add `--kubelet-max-pods` flag to `nodepool add`/`update` commands (#904) - sks: add a `generate-karpenter-manifests` (short: `km`) command to generate the Karpenter manifests relevant to a cluster - Add "all" protocol to security groups +- vpc: Add support for configuring ip forwarding on instance ### Bug fixes - iam: include policies in role show output (#903) diff --git a/cmd/compute/instance/instance_create.go b/cmd/compute/instance/instance_create.go index 6eed12eb8..d04721b97 100644 --- a/cmd/compute/instance/instance_create.go +++ b/cmd/compute/instance/instance_create.go @@ -40,6 +40,7 @@ type instanceCreateCmd struct { DeployTarget string `cli-usage:"instance Deploy Target NAME|ID"` DiskSize int64 `cli-usage:"instance disk size"` TPM bool `cli-flag:"tpm" cli-usage:"enable TPM on instance"` + IpForwarding bool `cli-flag:"ip-forwarding" cli-usage:"enable ip forwarding on instance"` SecureBoot bool `cli-flag:"secureboot" cli-usage:"enable Secure boot on instance"` InstanceType string `cli-usage:"instance type (format: [FAMILY.]SIZE)"` Labels map[string]string `cli-flag:"label" cli-usage:"instance label (format: key=value)"` @@ -131,6 +132,7 @@ func (c *instanceCreateCmd) CmdRun(cmd *cobra.Command, _ []string) error { //nol DiskSize: diskSize, PublicIPAssignment: publicIPAssignment, TpmEnabled: &c.TPM, + IPForwarding: &c.IpForwarding, SecurebootEnabled: &c.SecureBoot, Labels: c.Labels, Name: c.Name, diff --git a/cmd/compute/instance/instance_show.go b/cmd/compute/instance/instance_show.go index b5f0340e7..35a9caa95 100644 --- a/cmd/compute/instance/instance_show.go +++ b/cmd/compute/instance/instance_show.go @@ -39,6 +39,7 @@ type InstanceShowOutput struct { Labels map[string]string `json:"labels"` SecureBoot bool `json:"secureboot"` Tpm bool `json:"tpm"` + IpForwarding bool `json:"ip_forwarding"` ReverseDNS v3.DomainName `json:"reverse_dns" outputLabel:"Reverse DNS"` AppConsistentSnapshot bool `json:"application_consistent_snapshot_enabled" outputLabel:"Application-Consistent Snapshot enabled"` } @@ -136,6 +137,7 @@ func (c *instanceShowCmd) CmdRun(cmd *cobra.Command, _ []string) error { SecurityGroups: make([]string, 0), SecureBoot: *instance.SecurebootEnabled, Tpm: *instance.TpmEnabled, + IpForwarding: *instance.IPForwarding, State: instance.State, Zone: c.Zone, } diff --git a/go.mod b/go.mod index 3944db225..13d3085e7 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/s3 v1.105.0 github.com/aws/smithy-go v1.27.3 github.com/dustin/go-humanize v1.0.1 - github.com/exoscale/egoscale/v3 v3.1.47 + github.com/exoscale/egoscale/v3 v3.1.50 github.com/exoscale/openapi-cli-generator v1.2.0 github.com/fatih/camelcase v1.0.0 github.com/hashicorp/go-multierror v1.1.1 diff --git a/go.sum b/go.sum index 10f4688cd..4deba4243 100644 --- a/go.sum +++ b/go.sum @@ -175,8 +175,8 @@ github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go. github.com/envoyproxy/go-control-plane v0.10.1/go.mod h1:AY7fTTXNdv/aJ2O5jwpxAPOWUZ7hQAEvzN5Pf27BkQQ= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v0.6.2/go.mod h1:2t7qjJNvHPx8IjnBOzl9E9/baC+qXE/TeeyBRzgJDws= -github.com/exoscale/egoscale/v3 v3.1.47 h1:nJmtXGWWJ2DLqCizM2LqjJnykJH976Bt+kQ9ynCD/Q4= -github.com/exoscale/egoscale/v3 v3.1.47/go.mod h1:DUTgeubl5msPAo3SKFed04AxNhyTNOrCTJHZDRYLR10= +github.com/exoscale/egoscale/v3 v3.1.50 h1:1noLE9TUpPZeDXoCk4DQcq/msg9DZYciwy9ICsJxSkQ= +github.com/exoscale/egoscale/v3 v3.1.50/go.mod h1:DUTgeubl5msPAo3SKFed04AxNhyTNOrCTJHZDRYLR10= github.com/exoscale/openapi-cli-generator v1.2.0 h1:xgTff1bInBP+JZCauD7Jq9GNBFoKK31Cnv5FIAcxtrk= github.com/exoscale/openapi-cli-generator v1.2.0/go.mod h1:TZBnbT7f3hJ5ImyUphJwRM+X5xF/zCQZ6o8a42gQeTs= github.com/fatih/camelcase v1.0.0 h1:hxNvNX/xYBp0ovncs8WyWZrOrpBNub/JfaMvbURyft8= diff --git a/vendor/github.com/exoscale/egoscale/v3/errors.go b/vendor/github.com/exoscale/egoscale/v3/errors.go index 394b55346..2c813e17b 100644 --- a/vendor/github.com/exoscale/egoscale/v3/errors.go +++ b/vendor/github.com/exoscale/egoscale/v3/errors.go @@ -118,7 +118,9 @@ type APIErrorEntry struct { Location string } -func (e *APIError) Error() string { return e.sentinel.Error() } +func (e *APIError) Error() string { + return fmt.Sprintf("%s: %s", e.sentinel.Error(), e.Message) +} func (e *APIError) Unwrap() error { return e.sentinel } func handleHTTPErrorResp(resp *http.Response) error { diff --git a/vendor/github.com/exoscale/egoscale/v3/operations.go b/vendor/github.com/exoscale/egoscale/v3/operations.go index d880a9ef8..c784f43f2 100644 --- a/vendor/github.com/exoscale/egoscale/v3/operations.go +++ b/vendor/github.com/exoscale/egoscale/v3/operations.go @@ -11468,7 +11468,7 @@ func (c Client) DetachInstanceFromElasticIP(ctx context.Context, id UUID, req De return bodyresp, nil } -// [BETA] Returns environmental impact reports for an organization +// [DEPRECATED] use get-impact-report endpoint func (c Client) GetEnvImpact(ctx context.Context, period string) (*EnvImpactReport, error) { path := fmt.Sprintf("/env-impact/%v", period) @@ -11520,8 +11520,9 @@ type GetImpactEstimateResponse struct { } type GetImpactEstimateRequest struct { + // Product-specific configuration details Metadata map[string]any `json:"metadata,omitempty"` - // Product SKU, e.g. compute:ch-gva-2:instance:standard:medium; can also include wildcards, e.g. compute:*:instance:standard:* for all standard instances in all zones + // Product SKU, e.g. compute:ch-gva-2:instance:standard:medium; can also include wildcards, e.g. compute:\*:instance:standard:\* for all standard instances in all zones Sku string `json:"sku" validate:"required"` } @@ -12415,6 +12416,8 @@ type CreateInstanceRequest struct { DiskSize int64 `json:"disk-size" validate:"required,gte=10,lte=51200"` // Instance type reference InstanceType *InstanceType `json:"instance-type" validate:"required"` + // VPC ip forwarding + IPForwarding *bool `json:"ip-forwarding,omitempty"` // Enable IPv6. DEPRECATED: use `public-ip-assignments`. Ipv6Enabled *bool `json:"ipv6-enabled,omitempty"` Labels Labels `json:"labels,omitempty"` @@ -14859,7 +14862,16 @@ func (c Client) ListLoadBalancers(ctx context.Context) (*ListLoadBalancersRespon return bodyresp, nil } +type CreateLoadBalancerRequestAddressfamily string + +const ( + CreateLoadBalancerRequestAddressfamilyInet4 CreateLoadBalancerRequestAddressfamily = "inet4" + CreateLoadBalancerRequestAddressfamilyInet6 CreateLoadBalancerRequestAddressfamily = "inet6" +) + type CreateLoadBalancerRequest struct { + // Load Balancer address family (default: :inet4) + Addressfamily CreateLoadBalancerRequestAddressfamily `json:"addressfamily,omitempty"` // Load Balancer description Description string `json:"description,omitempty" validate:"omitempty,lte=255"` Labels Labels `json:"labels,omitempty"` diff --git a/vendor/github.com/exoscale/egoscale/v3/schemas.go b/vendor/github.com/exoscale/egoscale/v3/schemas.go index dee9db208..d0a360fc6 100644 --- a/vendor/github.com/exoscale/egoscale/v3/schemas.go +++ b/vendor/github.com/exoscale/egoscale/v3/schemas.go @@ -2987,6 +2987,8 @@ type Instance struct { ID UUID `json:"id,omitempty"` // Compute instance type InstanceType *InstanceType `json:"instance-type,omitempty"` + // VPC ip forwarding + IPForwarding *bool `json:"ip-forwarding,omitempty"` // Instance IPv6 address Ipv6Address string `json:"ipv6-address,omitempty"` Labels Labels `json:"labels,omitempty"` @@ -4694,6 +4696,13 @@ type LiveBalance struct { Currency string `json:"currency,omitempty"` } +type LoadBalancerAddressfamily string + +const ( + LoadBalancerAddressfamilyInet4 LoadBalancerAddressfamily = "inet4" + LoadBalancerAddressfamilyInet6 LoadBalancerAddressfamily = "inet6" +) + type LoadBalancerState string const ( @@ -4707,6 +4716,8 @@ const ( // Load Balancer type LoadBalancer struct { + // Load Balancer address family + Addressfamily LoadBalancerAddressfamily `json:"addressfamily,omitempty"` // Load Balancer creation date CreatedAT time.Time `json:"created-at,omitempty"` // Load Balancer description diff --git a/vendor/github.com/exoscale/egoscale/v3/version.go b/vendor/github.com/exoscale/egoscale/v3/version.go index e7d39d5e7..8fdd6425f 100644 --- a/vendor/github.com/exoscale/egoscale/v3/version.go +++ b/vendor/github.com/exoscale/egoscale/v3/version.go @@ -1,4 +1,4 @@ package v3 // Version represents the current egoscale v3 version. -const Version = "v3.1.47" +const Version = "v3.1.50" diff --git a/vendor/modules.txt b/vendor/modules.txt index acc04e932..2fda40b22 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -202,7 +202,7 @@ github.com/dlclark/regexp2/syntax # github.com/dustin/go-humanize v1.0.1 ## explicit; go 1.16 github.com/dustin/go-humanize -# github.com/exoscale/egoscale/v3 v3.1.47 +# github.com/exoscale/egoscale/v3 v3.1.50 ## explicit; go 1.25 github.com/exoscale/egoscale/v3 github.com/exoscale/egoscale/v3/credentials