Skip to content

Commit

Permalink
Adding Allow Pattern for infra service and bug fixes. (#141)
Browse files Browse the repository at this point in the history
* add allow_patterns for infrastructure services
modify listen port from integer to string to match spec

* fix allow_patterns issue with k8s service and update usage documentation for k8s service
  • Loading branch information
nareshkakubal authored Oct 9, 2023
1 parent 9e94b45 commit a35718e
Show file tree
Hide file tree
Showing 17 changed files with 755 additions and 82 deletions.
83 changes: 79 additions & 4 deletions banyan/resource_service_db.go
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ func DbSchema() map[string]*schema.Schema {
Optional: true,
},
"client_banyanproxy_listen_port": {
Type: schema.TypeInt,
Type: schema.TypeString,
Description: "Sets the listen port of the service for the end user Banyan app",
Optional: true,
},
Expand All @@ -145,6 +145,61 @@ func DbSchema() map[string]*schema.Schema {
Optional: true,
Default: false,
},
"allow_patterns": {
Type: schema.TypeSet,
MaxItems: 1,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"cidrs": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Schema{
Type: schema.TypeString,
},
},
"hostnames": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Schema{
Type: schema.TypeString,
},
},
"ports": {
Type: schema.TypeSet,
MaxItems: 1,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"port_list": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Schema{
Type: schema.TypeInt,
},
},
"port_range": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"min": {
Type: schema.TypeInt,
Required: true,
},
"max": {
Type: schema.TypeInt,
Required: true,
},
},
},
},
},
},
},
},
},
},
"policy": {
Type: schema.TypeString,
Required: true,
Expand Down Expand Up @@ -187,10 +242,30 @@ func resourceServiceInfraDbRead(ctx context.Context, d *schema.ResourceData, m i
if err != nil {
return diag.FromErr(err)
}
if svc.CreateServiceSpec.Spec.HttpConnect {
err = d.Set("backend_domain", "")
if err != nil {
return diag.FromErr(err)
}
err = d.Set("backend_port", 0)
if err != nil {
return diag.FromErr(err)
}
}
err = d.Set("end_user_override", svc.CreateServiceSpec.Metadata.Tags.AllowUserOverride)
if err != nil {
return diag.FromErr(err)
}
allowPatterns, err := flattenAllowPatterns(svc.CreateServiceSpec.Spec.HttpConnect, svc.CreateServiceSpec.Spec.BackendAllowPatterns)
if err != nil {
return diag.FromErr(err)
}
if len(allowPatterns) > 0 {
err = d.Set("allow_patterns", allowPatterns)
if err != nil {
return diag.FromErr(err)
}
}
diagnostics = resourceServiceInfraCommonRead(svc, d, m)
return
}
Expand Down Expand Up @@ -232,10 +307,10 @@ func expandDatabaseMetatdataTags(d *schema.ResourceData) (metadatatags service.T
if d.Get("http_connect").(bool) {
banyanProxyMode = "CHAIN"
}
alp, ok := d.GetOk("client_banyanproxy_listen_port")
alp := d.Get("client_banyanproxy_listen_port")
appListenPort := ""
if ok {
appListenPort = strconv.Itoa(alp.(int))
if alp != nil {
appListenPort = alp.(string)
}
includeDomains := convertSchemaSetToStringSlice(d.Get("client_banyanproxy_allowed_domains").(*schema.Set))
if includeDomains == nil {
Expand Down
8 changes: 4 additions & 4 deletions banyan/resource_service_k8s.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ func K8sSchema() map[string]*schema.Schema {
Description: "Policy ID to be attached to this service",
},
"client_banyanproxy_listen_port": {
Type: schema.TypeInt,
Type: schema.TypeString,
Description: "Sets the listen port of the service for the end user Banyan app",
Optional: true,
},
Expand Down Expand Up @@ -220,10 +220,10 @@ func expandK8sMetatdataTags(d *schema.ResourceData) (metadatatags service.Tags)
descriptionLink := d.Get("description_link").(string)
allowUserOverride := d.Get("end_user_override").(bool)
banyanProxyMode := "CHAIN"
alp, ok := d.GetOk("client_banyanproxy_listen_port")
alp := d.Get("client_banyanproxy_listen_port")
appListenPort := ""
if ok {
appListenPort = strconv.Itoa(alp.(int))
if alp != nil {
appListenPort = alp.(string)
}
kubeClusterName := d.Get("client_kube_cluster_name").(string)
kubeCaKey := d.Get("client_kube_ca_key").(string)
Expand Down
1 change: 0 additions & 1 deletion banyan/resource_service_k8s_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ func TestSchemaServiceInfraK8s_k8s_conn(t *testing.T) {
"client_banyanproxy_listen_port": 9199,
"client_kube_cluster_name": "eks-hero",
"client_kube_ca_key": "AAAA1234",
"http_connect": true,
"backend_port": 0,
}
d := schema.TestResourceDataRaw(t, K8sSchema(), svc_k8s_conn)
Expand Down
83 changes: 79 additions & 4 deletions banyan/resource_service_rdp.go
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ func RdpSchema() map[string]*schema.Schema {
Optional: true,
},
"client_banyanproxy_listen_port": {
Type: schema.TypeInt,
Type: schema.TypeString,
Description: "Sets the listen port of the service for the end user Banyan app",
Optional: true,
},
Expand All @@ -142,6 +142,61 @@ func RdpSchema() map[string]*schema.Schema {
Optional: true,
Default: false,
},
"allow_patterns": {
Type: schema.TypeSet,
MaxItems: 1,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"cidrs": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Schema{
Type: schema.TypeString,
},
},
"hostnames": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Schema{
Type: schema.TypeString,
},
},
"ports": {
Type: schema.TypeSet,
MaxItems: 1,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"port_list": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Schema{
Type: schema.TypeInt,
},
},
"port_range": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"min": {
Type: schema.TypeInt,
Required: true,
},
"max": {
Type: schema.TypeInt,
Required: true,
},
},
},
},
},
},
},
},
},
},
"end_user_override": {
Type: schema.TypeBool,
Optional: true,
Expand Down Expand Up @@ -179,6 +234,26 @@ func resourceServiceInfraRdpRead(ctx context.Context, d *schema.ResourceData, m
if err != nil {
return diag.FromErr(err)
}
if svc.CreateServiceSpec.Spec.HttpConnect {
err = d.Set("backend_domain", "")
if err != nil {
return diag.FromErr(err)
}
err = d.Set("backend_port", 0)
if err != nil {
return diag.FromErr(err)
}
}
allowPatterns, err := flattenAllowPatterns(svc.CreateServiceSpec.Spec.HttpConnect, svc.CreateServiceSpec.Spec.BackendAllowPatterns)
if err != nil {
return diag.FromErr(err)
}
if len(allowPatterns) > 0 {
err = d.Set("allow_patterns", allowPatterns)
if err != nil {
return diag.FromErr(err)
}
}
return resourceServiceInfraCommonRead(svc, d, m)
}

Expand Down Expand Up @@ -222,10 +297,10 @@ func expandRDPMetatdataTags(d *schema.ResourceData) (metadatatags service.Tags)
banyanProxyMode = "RDPGATEWAY"
}
}
alp, ok := d.GetOk("client_banyanproxy_listen_port")
alp := d.Get("client_banyanproxy_listen_port")
appListenPort := ""
if ok {
appListenPort = strconv.Itoa(alp.(int))
if alp != nil {
appListenPort = alp.(string)
}
metadatatags = service.Tags{
Template: &template,
Expand Down
76 changes: 76 additions & 0 deletions banyan/resource_service_ssh.go
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,61 @@ func SshSchema() map[string]*schema.Schema {
Optional: true,
Default: false,
},
"allow_patterns": {
Type: schema.TypeSet,
MaxItems: 1,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"cidrs": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Schema{
Type: schema.TypeString,
},
},
"hostnames": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Schema{
Type: schema.TypeString,
},
},
"ports": {
Type: schema.TypeSet,
MaxItems: 1,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"port_list": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Schema{
Type: schema.TypeInt,
},
},
"port_range": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"min": {
Type: schema.TypeInt,
Required: true,
},
"max": {
Type: schema.TypeInt,
Required: true,
},
},
},
},
},
},
},
},
},
},
}
return s
}
Expand Down Expand Up @@ -189,6 +244,27 @@ func resourceServiceInfraSshRead(ctx context.Context, d *schema.ResourceData, m
if err != nil {
return diag.FromErr(err)
}
if svc.CreateServiceSpec.Spec.HttpConnect {
err = d.Set("backend_domain", "")
if err != nil {
return diag.FromErr(err)
}
err = d.Set("backend_port", 0)
if err != nil {
return diag.FromErr(err)
}
}
allowPatterns, err := flattenAllowPatterns(svc.CreateServiceSpec.Spec.HttpConnect, svc.CreateServiceSpec.Spec.BackendAllowPatterns)
if err != nil {
return diag.FromErr(err)
}
if len(allowPatterns) > 0 {
err = d.Set("allow_patterns", allowPatterns)
if err != nil {
return diag.FromErr(err)
}
}

diagnostics = resourceServiceInfraCommonRead(svc, d, m)
return
}
Expand Down
Loading

0 comments on commit a35718e

Please sign in to comment.