Skip to content
This repository was archived by the owner on Jan 3, 2023. It is now read-only.

Commit cbf2b16

Browse files
committed
implement network
1 parent b6c6b7f commit cbf2b16

File tree

5 files changed

+1103
-0
lines changed

5 files changed

+1103
-0
lines changed

Network.go

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
package main
2+
3+
import (
4+
"context"
5+
"google.golang.org/grpc"
6+
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
7+
ppool "github.com/onokatio/terraform-provider-n0stack/n0proto.go/pool/v0"
8+
)
9+
10+
func resource_n0stack_network() *schema.Resource {
11+
return &schema.Resource{
12+
Create: resource_n0stack_network_create,
13+
Read: resource_n0stack_network_read,
14+
Update: resource_n0stack_network_update,
15+
Delete: resource_n0stack_network_delete,
16+
17+
Schema: map[string]*schema.Schema{
18+
"name": {
19+
Type: schema.TypeString,
20+
Required: true,
21+
},
22+
"ipv4_cidr": {
23+
Type: schema.TypeString,
24+
Required: true,
25+
},
26+
"ipv6_cidr": {
27+
Type: schema.TypeString,
28+
Optional: true,
29+
},
30+
"annotations": {
31+
Type: schema.TypeMap,
32+
Required: true,
33+
Elem: schema.TypeString,
34+
},
35+
"labels": {
36+
Type: schema.TypeMap,
37+
Optional: true,
38+
Elem: schema.TypeString,
39+
},
40+
},
41+
}
42+
}
43+
44+
func resource_n0stack_network_create(d *schema.ResourceData, meta interface{}) error {
45+
config := meta.(Config)
46+
conn, err := grpc.Dial(config.endpoint, grpc.WithInsecure())
47+
if err != nil {
48+
return err
49+
}
50+
defer conn.Close()
51+
52+
client := ppool.NewNetworkServiceClient(conn)
53+
54+
request := ppool.ApplyNetworkRequest{
55+
Name: d.Get("name").(string),
56+
Ipv4Cidr: d.Get("ipv4_cidr").(string),
57+
Ipv6Cidr: d.Get("ipv6_cidr").(string),
58+
Annotations: interfaceMap2stringMap(d.Get("annotations").(map[string]interface{})),
59+
Labels: interfaceMap2stringMap(d.Get("labels").(map[string]interface{})),
60+
}
61+
_, err = client.ApplyNetwork(context.Background(), &request)
62+
if err != nil {
63+
return err
64+
}
65+
66+
d.SetId(d.Get("name").(string))
67+
68+
return resource_n0stack_network_read(d, meta)
69+
}
70+
71+
func resource_n0stack_network_read(d *schema.ResourceData, meta interface{}) error {
72+
config := meta.(Config)
73+
conn, err := grpc.Dial(config.endpoint, grpc.WithInsecure())
74+
if err != nil {
75+
return err
76+
}
77+
defer conn.Close()
78+
79+
client := ppool.NewNetworkServiceClient(conn)
80+
81+
request := ppool.GetNetworkRequest{
82+
Name: d.Get("name").(string) ,
83+
}
84+
res, err := client.GetNetwork(context.Background(), &request)
85+
if err != nil {
86+
return err
87+
}
88+
89+
d.Set("name",res.Name)
90+
d.Set("ipv4_cidr",res.Ipv4Cidr)
91+
d.Set("ipv6_cidr",res.Ipv6Cidr)
92+
d.Set("annotations", res.Annotations)
93+
d.Set("labels", res.Labels)
94+
return nil
95+
}
96+
97+
func resource_n0stack_network_update(d *schema.ResourceData, meta interface{}) error {
98+
return nil
99+
}
100+
101+
func resource_n0stack_network_delete(d *schema.ResourceData, meta interface{}) error {
102+
config := meta.(Config)
103+
conn, err := grpc.Dial(config.endpoint, grpc.WithInsecure())
104+
if err != nil {
105+
return err
106+
}
107+
defer conn.Close()
108+
109+
client := ppool.NewNetworkServiceClient(conn)
110+
111+
request := ppool.DeleteNetworkRequest{
112+
Name: d.Get("name").(string) ,
113+
}
114+
_, err = client.DeleteNetwork(context.Background(), &request)
115+
if err != nil {
116+
return err
117+
}
118+
119+
return resource_n0stack_network_read(d, meta)
120+
}

n0proto.go/budget/v0/network_interface.pb.go

Lines changed: 119 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)