From d4d9674520c5a9d652e2e02898cd8ccc2101d8c1 Mon Sep 17 00:00:00 2001 From: ArthurHlt Date: Wed, 12 Jun 2019 18:29:32 +0200 Subject: [PATCH 1/2] add data source security group --- data_source_security_group.go | 47 +++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 data_source_security_group.go diff --git a/data_source_security_group.go b/data_source_security_group.go new file mode 100644 index 0000000..e2de8aa --- /dev/null +++ b/data_source_security_group.go @@ -0,0 +1,47 @@ +package main + +import ( + "fmt" + "github.com/hashicorp/terraform/helper/schema" + "github.com/sky-uk/gonsx" + "github.com/sky-uk/gonsx/api/securitygroup" +) + +func dataSourceSecurityGroup() *schema.Resource { + + return &schema.Resource{ + + Read: dataSourceSecurityGroupRead, + + Schema: map[string]*schema.Schema{ + + "name": &schema.Schema{ + Type: schema.TypeString, + Required: true, + }, + "scopeid": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Default: "globalroot-0", + }, + }, + } +} + +func dataSourceSecurityGroupRead(d *schema.ResourceData, meta interface{}) error { + nsxclient := meta.(*gonsx.NSXClient) + getAllAPI := securitygroup.NewGetAll(d.Get("scopeid").(string)) + + err := nsxclient.Do(getAllAPI) + if err != nil { + return err + } + name := d.Get("name").(string) + for _, secGroup := range getAllAPI.GetResponse().SecurityGroups { + if secGroup.Name == name { + d.SetId(secGroup.ObjectID) + return nil + } + } + return fmt.Errorf("Security group %s not found", name) +} From d846cd4bcf55ca64d99af5e77126115e57aacffc Mon Sep 17 00:00:00 2001 From: ArthurHlt Date: Wed, 12 Jun 2019 18:31:51 +0200 Subject: [PATCH 2/2] add data source security group --- provider.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/provider.go b/provider.go index 07047ec..aa4ad30 100644 --- a/provider.go +++ b/provider.go @@ -53,6 +53,10 @@ func Provider() terraform.ResourceProvider { "nsx_firewall_exclusion": resourceFirewallExclusion(), }, + DataSourcesMap: map[string]*schema.Resource{ + "nsx_security_group": dataSourceSecurityGroup(), + }, + ConfigureFunc: providerConfigure, } }