Skip to content

Commit 89c83fe

Browse files
committed
feat: Add network functionality.
1 parent f642fdb commit 89c83fe

File tree

2 files changed

+101
-0
lines changed

2 files changed

+101
-0
lines changed

network.go

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
package paperspace
2+
3+
import (
4+
"fmt"
5+
"time"
6+
)
7+
8+
type Network struct {
9+
ID string `json:"id"`
10+
Name string `json:"name"`
11+
Network string `json:"network"`
12+
Netmask string `json:"netmask"`
13+
TeamID string `json:"teamId"`
14+
IsManaged bool `json:"isManaged"`
15+
DtCreated time.Time `json:"dtCreated"`
16+
DtDeleted time.Time `json:"dtDeleted"`
17+
}
18+
19+
type NetworkCreateParams struct {
20+
RequestParams
21+
22+
Name string `json:"name"`
23+
Region string `json:"region"`
24+
}
25+
26+
type networkCreateParamsInternal struct {
27+
RequestParams
28+
29+
Name string `json:"name"`
30+
RegionID int `json:"regionId"`
31+
}
32+
33+
type NetworkDeleteParams struct {
34+
RequestParams
35+
}
36+
37+
type NetworkGetParams struct {
38+
RequestParams
39+
}
40+
41+
type NetworkListParams struct {
42+
RequestParams
43+
ID string `json:"id,omitempty"`
44+
Name string `json:"name,omitempty"`
45+
Region string `json:"region,omitempty"`
46+
Network string `json:"network,omitempty"`
47+
Netmask string `json:"netmask,omitempty"`
48+
TeamID string `json:"teamId,omitempty"`
49+
}
50+
51+
func (c Client) CreateNetwork(params NetworkCreateParams) (Network, error) {
52+
regionID, ok := RegionMap[params.Region]
53+
if !ok {
54+
return Network{}, fmt.Errorf("no region found for %s", params.Region)
55+
}
56+
57+
intParams := networkCreateParamsInternal{Name: params.Name, RegionID: regionID, RequestParams: params.RequestParams}
58+
59+
network := Network{}
60+
url := fmt.Sprintf("/networks")
61+
_, err := c.Request("POST", url, intParams, &network, params.RequestParams)
62+
63+
return network, err
64+
}
65+
66+
func (c Client) GetNetwork(id string, params NetworkGetParams) (Network, error) {
67+
networks, err := c.GetNetworks(NetworkListParams{ID: id, RequestParams: params.RequestParams})
68+
if err != nil {
69+
return Network{}, err
70+
}
71+
if len(networks) == 0 {
72+
return Network{}, fmt.Errorf("no network found for ID %s", id)
73+
}
74+
if len(networks) > 1 {
75+
return Network{}, fmt.Errorf("found more than one network for ID %s", id)
76+
}
77+
return networks[0], nil
78+
}
79+
80+
func (c Client) GetNetworks(params NetworkListParams) ([]Network, error) {
81+
var networks []Network
82+
83+
url := fmt.Sprintf("/networks")
84+
_, err := c.Request("GET", url, params, &networks, params.RequestParams)
85+
86+
return networks, err
87+
}
88+
89+
func (c Client) DeleteNetwork(id string, params NetworkDeleteParams) error {
90+
url := fmt.Sprintf("/networks/%s", id)
91+
_, err := c.Request("DELETE", url, nil, nil, params.RequestParams)
92+
93+
return err
94+
}

region.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package paperspace
2+
3+
var RegionMap = map[string]int{
4+
"East Coast (NY2)": 1,
5+
"West Coast (CA1)": 2,
6+
"Europe (AMS1)": 3,
7+
}

0 commit comments

Comments
 (0)