Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add default client port #379

Merged
merged 1 commit into from
Apr 21, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@ module github.com/hashicorp/terraform-provider-boundary
go 1.20

require (
github.com/hashicorp/boundary v0.10.1-0.20230315181017-3dc1e2108a38
github.com/hashicorp/boundary/api v0.0.34-0.20230315181017-3dc1e2108a38
github.com/hashicorp/boundary/sdk v0.0.30-0.20230315181017-3dc1e2108a38
github.com/hashicorp/boundary v0.10.1-0.20230421143835-bc47a60f2f43
github.com/hashicorp/boundary/api v0.0.36
github.com/hashicorp/boundary/sdk v0.0.32
github.com/hashicorp/cap v0.2.0
github.com/hashicorp/go-cty v1.4.1-0.20200723130312-85980079f637
github.com/hashicorp/go-kms-wrapping/v2 v2.0.9-0.20230315135303-7bedb33a2280
github.com/hashicorp/go-kms-wrapping/v2 v2.0.9-0.20230316234854-f5e78cca83a8
github.com/hashicorp/go-secure-stdlib/configutil/v2 v2.0.7
github.com/hashicorp/go-secure-stdlib/parseutil v0.1.7
github.com/hashicorp/go-secure-stdlib/pluginutil/v2 v2.0.3
Expand Down Expand Up @@ -98,7 +98,7 @@ require (
github.com/hashicorp/hcl v1.0.0 // indirect
github.com/hashicorp/hcl/v2 v2.16.2 // indirect
github.com/hashicorp/logutils v1.0.0 // indirect
github.com/hashicorp/nodeenrollment v0.1.18 // indirect
github.com/hashicorp/nodeenrollment v0.2.0 // indirect
github.com/hashicorp/terraform-exec v0.18.1 // indirect
github.com/hashicorp/terraform-json v0.16.0 // indirect
github.com/hashicorp/terraform-plugin-go v0.14.3 // indirect
Expand Down Expand Up @@ -183,7 +183,7 @@ require (
google.golang.org/appengine v1.6.7 // indirect
google.golang.org/genproto v0.0.0-20230303212802-e74f57abe488 // indirect
google.golang.org/grpc v1.53.0 // indirect
google.golang.org/protobuf v1.29.1 // indirect
google.golang.org/protobuf v1.30.0 // indirect
gopkg.in/square/go-jose.v2 v2.6.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
Expand Down
24 changes: 12 additions & 12 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -646,12 +646,12 @@ github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFb
github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.2 h1:BqHID5W5qnMkug0Z8UmL8tN0gAy4jQ+B4WFt8cCgluU=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.2/go.mod h1:ZbS3MZTZq/apAfAEHGoB5HbsQQstoqP92SjAqtQ9zeg=
github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMWxXQ9wFIaZeTI9F+hmhFiGpFmhOHzyShyFUhRm0H4=
github.com/hashicorp/boundary v0.10.1-0.20230315181017-3dc1e2108a38 h1:XBWpyXOSZrlI3/tQo3CH8B3Ix+ETuGahLbzkFODD9S8=
github.com/hashicorp/boundary v0.10.1-0.20230315181017-3dc1e2108a38/go.mod h1:8d1zdSFY2q0wCNFFOOoNaMzpxvD9/XEwlX7XFBzw+G4=
github.com/hashicorp/boundary/api v0.0.34-0.20230315181017-3dc1e2108a38 h1:6UOZUZ/OuDumUmE+25yr2aUPfggahGNhsVVpgxvkz+I=
github.com/hashicorp/boundary/api v0.0.34-0.20230315181017-3dc1e2108a38/go.mod h1:vvX0DoPuyA2HCq3juZb1/IwJrLuQJQMG1bZaQ7fvRMY=
github.com/hashicorp/boundary/sdk v0.0.30-0.20230315181017-3dc1e2108a38 h1:qQ1GgvluiAKaL7P2TcQs2dcebr+DO9t/4ytSaB+D12E=
github.com/hashicorp/boundary/sdk v0.0.30-0.20230315181017-3dc1e2108a38/go.mod h1:6SNSerq1eWX35xsC2NE3VLmFzMjsllCbaVXE7dsueaI=
github.com/hashicorp/boundary v0.10.1-0.20230421143835-bc47a60f2f43 h1:XUNkijJirW56aXanofon5bfPx+Gn51ljTfjgW+VgrPA=
github.com/hashicorp/boundary v0.10.1-0.20230421143835-bc47a60f2f43/go.mod h1:Hc5N/3M/ISpEBeIaP/4pLB7C/HWADjLim63/6ZgGOgY=
github.com/hashicorp/boundary/api v0.0.36 h1:Xi/QFJcovRgEgPKiFSamfgMS+dPxpY/yYxy0JqQNo44=
github.com/hashicorp/boundary/api v0.0.36/go.mod h1:vvX0DoPuyA2HCq3juZb1/IwJrLuQJQMG1bZaQ7fvRMY=
github.com/hashicorp/boundary/sdk v0.0.32 h1:YY6WUbphq47BUotl75fwPpdG8CqoyblNVD4Mmh9X1lY=
github.com/hashicorp/boundary/sdk v0.0.32/go.mod h1:6SNSerq1eWX35xsC2NE3VLmFzMjsllCbaVXE7dsueaI=
github.com/hashicorp/cap v0.2.0 h1:Cgr1iDczX17y0PNF5VG+bWTtDiimYL8F18izMPbWNy4=
github.com/hashicorp/cap v0.2.0/go.mod h1:zb3VvIFA0lM2lbmO69NjowV9dJzJnZS89TaM9blXPJA=
github.com/hashicorp/cap/ldap v0.0.0-20230123181313-9c0fb924b0d9 h1:hTJWCzuFRrGnPjPWbb+fxBQD50MKswdQnwpTH4A7YDE=
Expand Down Expand Up @@ -694,8 +694,8 @@ github.com/hashicorp/go-kms-wrapping/extras/kms/v2 v2.0.0-20221122211539-47c8930
github.com/hashicorp/go-kms-wrapping/extras/kms/v2 v2.0.0-20221122211539-47c893099f13/go.mod h1:qbLdiZhFd182vRSOlhBV/OarUcJVTOF2WklPwHs8mYQ=
github.com/hashicorp/go-kms-wrapping/plugin/v2 v2.0.4-0.20230228185604-529de2006180 h1:IiTnT/t7PXQjGGm9PW9IfvSohCG+pY2hsttdMsgNm9g=
github.com/hashicorp/go-kms-wrapping/plugin/v2 v2.0.4-0.20230228185604-529de2006180/go.mod h1:RZme+h7iDhMMn77JTAhE+AWlIbMXK6QOeHhBnW3ncU0=
github.com/hashicorp/go-kms-wrapping/v2 v2.0.9-0.20230315135303-7bedb33a2280 h1:z6DejONsrp3SxXZQ9znFX0g7zf903zndM1NAvr27Sl8=
github.com/hashicorp/go-kms-wrapping/v2 v2.0.9-0.20230315135303-7bedb33a2280/go.mod h1:VuJDBrF0EOt8JswgdKlvQbRpKu7KBKzmv6++A2vPW7c=
github.com/hashicorp/go-kms-wrapping/v2 v2.0.9-0.20230316234854-f5e78cca83a8 h1:b/3WzceN7enh5hq4ixIm+OLMXRCfhUwyfbAwGcD1x2I=
github.com/hashicorp/go-kms-wrapping/v2 v2.0.9-0.20230316234854-f5e78cca83a8/go.mod h1:VuJDBrF0EOt8JswgdKlvQbRpKu7KBKzmv6++A2vPW7c=
github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I=
github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=
github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA=
Expand Down Expand Up @@ -761,8 +761,8 @@ github.com/hashicorp/hcl/v2 v2.16.2 h1:mpkHZh/Tv+xet3sy3F9Ld4FyI2tUpWe9x3XtPx9f1
github.com/hashicorp/hcl/v2 v2.16.2/go.mod h1:JRmR89jycNkrrqnMmvPDMd56n1rQJ2Q6KocSLCMCXng=
github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y=
github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=
github.com/hashicorp/nodeenrollment v0.1.18 h1:fqFMZ5e2cWupeQDxKledF9DGHsk9GoJl7K2Wrdiys6k=
github.com/hashicorp/nodeenrollment v0.1.18/go.mod h1:N5gYsm8mWiDfIw/j+1IQ6NBO1cWCmhPpvQ9GB1QUnsU=
github.com/hashicorp/nodeenrollment v0.2.0 h1:79FbU+2MZaHgFxirQM1G9rU71FxCfXQ2hinEIR/xTco=
github.com/hashicorp/nodeenrollment v0.2.0/go.mod h1:Do2FvaFHgnnMaqhdSTBX+TkQP0ep8VVQ0rOr+ZjUbJU=
github.com/hashicorp/terraform-exec v0.18.1 h1:LAbfDvNQU1l0NOQlTuudjczVhHj061fNX5H8XZxHlH4=
github.com/hashicorp/terraform-exec v0.18.1/go.mod h1:58wg4IeuAJ6LVsLUeD2DWZZoc/bYi6dzhLHzxM41980=
github.com/hashicorp/terraform-json v0.16.0 h1:UKkeWRWb23do5LNAFlh/K3N0ymn1qTOO8c+85Albo3s=
Expand Down Expand Up @@ -1944,8 +1944,8 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.29.1 h1:7QBf+IK2gx70Ap/hDsOmam3GE0v9HicjfEdAxE62UoM=
google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng=
google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod h1:cuepJuh7vyXfUyUwEgHQXw849cJrilpS5NeIjOWESAw=
Expand Down
69 changes: 65 additions & 4 deletions internal/provider/resource_target.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ package provider
import (
"context"
"encoding/json"
"math"
"net/http"

"github.com/hashicorp/boundary/api"
Expand All @@ -19,6 +20,7 @@ const (
targetBrokeredCredentialSourceIdsKey = "brokered_credential_source_ids"
targetInjectedAppCredentialSourceIdsKey = "injected_application_credential_source_ids"
targetDefaultPortKey = "default_port"
targetDefaultClientPortKey = "default_client_port"
targetSessionMaxSecondsKey = "session_max_seconds"
targetSessionConnectionLimitKey = "session_connection_limit"
targetWorkerFilterKey = "worker_filter"
Expand Down Expand Up @@ -75,6 +77,11 @@ func resourceTarget() *schema.Resource {
Type: schema.TypeInt,
Optional: true,
},
targetDefaultClientPortKey: {
Description: "The default client port for this target.",
Type: schema.TypeInt,
Optional: true,
},
targetHostSourceIdsKey: {
Description: "A list of host source ID's. Cannot be used alongside address.",
Type: schema.TypeSet,
Expand Down Expand Up @@ -175,12 +182,18 @@ func setFromTargetResponseMap(d *schema.ResourceData, raw map[string]interface{}
case targetTypeTcp, targetTypeSsh:
if attrsVal, ok := raw["attributes"]; ok {
attrs := attrsVal.(map[string]interface{})
if defPort, ok := attrs["default_port"].(json.Number); ok {
if defPort, ok := attrs[targetDefaultPortKey].(json.Number); ok {
defPortInt, _ := defPort.Int64()
if err := d.Set(targetDefaultPortKey, int(defPortInt)); err != nil {
return err
}
}
if defCliPort, ok := attrs[targetDefaultClientPortKey].(json.Number); ok {
defCliPortInt, _ := defCliPort.Int64()
if err := d.Set(targetDefaultClientPortKey, int(defCliPortInt)); err != nil {
return err
}
}
}
}

Expand Down Expand Up @@ -226,7 +239,7 @@ func resourceTargetCreate(ctx context.Context, d *schema.ResourceData, meta inte
defaultPortVal, ok := d.GetOk(targetDefaultPortKey)
if ok {
defaultPortInt := defaultPortVal.(int)
if defaultPortInt < 0 || defaultPortInt > 65535 {
if defaultPortInt <= 0 || defaultPortInt > math.MaxUint16 {
return diag.Errorf(`"default_port" must be a valid tcp port`)
}
switch typeStr {
Expand All @@ -237,6 +250,20 @@ func resourceTargetCreate(ctx context.Context, d *schema.ResourceData, meta inte
}
}

defaultClientPortVal, ok := d.GetOk(targetDefaultClientPortKey)
if ok {
defaultClientPortInt := defaultClientPortVal.(int)
if defaultClientPortInt <= 0 || defaultClientPortInt > math.MaxUint16 {
return diag.Errorf(`"default_client_port" must be a valid tcp port`)
}
switch typeStr {
case targetTypeTcp:
opts = append(opts, targets.WithTcpTargetDefaultClientPort(uint32(defaultClientPortInt)))
case targetTypeSsh:
opts = append(opts, targets.WithSshTargetDefaultClientPort(uint32(defaultClientPortInt)))
}
}

sessionMaxSecondsVal, ok := d.GetOk(targetSessionMaxSecondsKey)
if ok {
sessionMaxSecondsInt := sessionMaxSecondsVal.(int)
Expand Down Expand Up @@ -424,7 +451,7 @@ func resourceTargetUpdate(ctx context.Context, d *schema.ResourceData, meta inte
defaultPortVal, ok := d.GetOk(targetDefaultPortKey)
if ok {
defaultPortInt := defaultPortVal.(int)
if defaultPortInt < 0 || defaultPortInt > 65535 {
if defaultPortInt <= 0 || defaultPortInt > math.MaxUint16 {
return diag.Errorf(`"default_port" must be a valid tcp port`)
}
defaultPort = &defaultPortInt
Expand All @@ -436,7 +463,7 @@ func resourceTargetUpdate(ctx context.Context, d *schema.ResourceData, meta inte
defaultPortVal, ok := d.GetOk(targetDefaultPortKey)
if ok {
defaultPortInt := defaultPortVal.(int)
if defaultPortInt < 0 || defaultPortInt > 65535 {
if defaultPortInt <= 0 || defaultPortInt > math.MaxUint16 {
return diag.Errorf(`"default_port" must be a valid tcp port`)
}
defaultPort = &defaultPortInt
Expand All @@ -445,6 +472,35 @@ func resourceTargetUpdate(ctx context.Context, d *schema.ResourceData, meta inte
}
}

var defaultClientPort *int
if d.HasChange(targetDefaultClientPortKey) {
switch typeStr {
case targetTypeTcp:
opts = append(opts, targets.DefaultTcpTargetDefaultClientPort())
defaultClientPortVal, ok := d.GetOk(targetDefaultClientPortKey)
if ok {
defaultClientPortInt := defaultClientPortVal.(int)
if defaultClientPortInt <= 0 || defaultClientPortInt > math.MaxUint16 {
return diag.Errorf(`"default_client_port" must be a valid tcp port`)
}
defaultClientPort = &defaultClientPortInt
opts = append(opts, targets.WithTcpTargetDefaultClientPort(uint32(defaultClientPortInt)))
}

case targetTypeSsh:
opts = append(opts, targets.DefaultSshTargetDefaultClientPort())
defaultClientPortVal, ok := d.GetOk(targetDefaultClientPortKey)
if ok {
defaultClientPortInt := defaultClientPortVal.(int)
if defaultClientPortInt <= 0 || defaultClientPortInt > math.MaxUint16 {
return diag.Errorf(`"default_client_port" must be a valid tcp port`)
}
defaultClientPort = &defaultClientPortInt
opts = append(opts, targets.WithSshTargetDefaultClientPort(uint32(defaultClientPortInt)))
}
}
}

var sessionMaxSeconds *int
if d.HasChange(targetSessionMaxSecondsKey) {
opts = append(opts, targets.DefaultSessionMaxSeconds())
Expand Down Expand Up @@ -540,6 +596,11 @@ func resourceTargetUpdate(ctx context.Context, d *schema.ResourceData, meta inte
return diag.FromErr(err)
}
}
if d.HasChange(targetDefaultClientPortKey) {
if err := d.Set(targetDefaultClientPortKey, defaultClientPort); err != nil {
return diag.FromErr(err)
}
}
if d.HasChange(targetSessionMaxSecondsKey) {
if err := d.Set(targetSessionMaxSecondsKey, sessionMaxSeconds); err != nil {
return diag.FromErr(err)
Expand Down
Loading