Skip to content

Commit

Permalink
Allow importing members
Browse files Browse the repository at this point in the history
re #17 and #29

I'm not sure how to add a test for `import`ing yet.
The cool tf harness doesn't support `import`.

The terraform file I used for testing.

```
terraform {
  required_providers {
    zerotier = {
      source  = "zerotier/zerotier"
    }
  }
}
resource "zerotier_member" "bob" {}
```

`terraform import zerotier_member.bob 8286ac0e4786b2aa-1122334455` The member needs to already exist

`terraform state show zerotier_member.bob`

implementation borrowed from bltavares  branch
  • Loading branch information
laduke committed Oct 14, 2022
1 parent bd6efa5 commit 0c357c7
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 1 deletion.
8 changes: 8 additions & 0 deletions docs/resources/member.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,3 +46,11 @@ resource "zerotier_member" "alice" {
- **no_auto_assign_ips** (Boolean) Exempt this member from the IP auto assignment pool on a Network



## Import

Members can be imported using their Network ID and Node ID, for example:

```
$ terraform import zerotier_network.network "8056c2e21c1930be-1122334455"
```
19 changes: 18 additions & 1 deletion pkg/zerotier/resource_member.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package zerotier

import (
"context"
"strings"

"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
Expand All @@ -16,6 +17,9 @@ func resourceMember() *schema.Resource {
UpdateContext: resourceMemberUpdate,
DeleteContext: resourceMemberDelete,
Schema: MemberSchema,
Importer: &schema.ResourceImporter{
State: schema.ImportStatePassthrough,
},
}
}

Expand All @@ -26,7 +30,9 @@ func resourceMember() *schema.Resource {
func resourceMemberRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
c := m.(*ztcentral.Client)

member, err := c.GetMember(ctx, d.Get("network_id").(string), d.Get("member_id").(string))
nwid, nodeId := resourceNetworkAndNodeIdentifiers(d)

member, err := c.GetMember(ctx, nwid, nodeId)
if err != nil {
return diag.FromErr(err)
}
Expand Down Expand Up @@ -75,3 +81,14 @@ func resourceMemberDelete(ctx context.Context, d *schema.ResourceData, m interfa
d.SetId("")
return nil
}

func resourceNetworkAndNodeIdentifiers(d *schema.ResourceData) (string, string) {
nwid := d.Get("network_id").(string)
nodeID := d.Get("member_id").(string)

if nwid == "" && nodeID == "" {
parts := strings.Split(d.Id(), "-")
nwid, nodeID = parts[0], parts[1]
}
return nwid, nodeID
}

0 comments on commit 0c357c7

Please sign in to comment.