github.com/IBM-Cloud/bluemix-go@v0.0.0-20240423071914-9e96525baef4/api/container/containerv1/subnets.go (about) 1 package containerv1 2 3 import ( 4 "fmt" 5 6 "github.com/IBM-Cloud/bluemix-go/client" 7 ) 8 9 //Subnet ... 10 type Subnet struct { 11 ID string `json:"id"` 12 Type string `json:"type"` 13 VlanID string `json:"vlan_id"` 14 IPAddresses []string `json:"ip_addresses"` 15 Properties SubnetProperties `json:"properties"` 16 } 17 18 //SubnetProperties ... 19 type SubnetProperties struct { 20 CIDR string `json:"cidr"` 21 NetworkIdentifier string `json:"network_identifier"` 22 Note string `json:"note"` 23 SubnetType string `json:"subnet_type"` 24 DisplayLabel string `json:"display_label"` 25 Gateway string `json:"gateway"` 26 } 27 28 type UserSubnet struct { 29 CIDR string `json:"cidr" binding:"required" description:"The CIDR of the subnet that will be bound to the cluster. Eg.format: 12.34.56.78/90"` 30 VLANID string `json:"vlan_id" binding:"required" description:"The private VLAN where the CIDR exists'"` 31 } 32 33 //Subnets interface 34 type Subnets interface { 35 AddSubnet(clusterName string, subnetID string, target ClusterTargetHeader) error 36 List(target ClusterTargetHeader, opts ...string) ([]Subnet, error) 37 AddClusterUserSubnet(clusterID string, userSubnet UserSubnet, target ClusterTargetHeader) error 38 ListClusterUserSubnets(clusterID string, target ClusterTargetHeader) ([]Vlan, error) 39 DeleteClusterUserSubnet(clusterID string, subnetID string, vlanID string, target ClusterTargetHeader) error 40 } 41 42 type subnet struct { 43 client *client.Client 44 } 45 46 func newSubnetAPI(c *client.Client) Subnets { 47 return &subnet{ 48 client: c, 49 } 50 } 51 52 //GetSubnets ... 53 func (r *subnet) List(target ClusterTargetHeader, opts ...string) ([]Subnet, error) { 54 subnets := []Subnet{} 55 rawURL := "/v1/subnets" 56 if len(opts) > 0 { 57 rawURL = fmt.Sprintf("/v1/subnets?location=%s", opts[0]) 58 } 59 _, err := r.client.Get(rawURL, &subnets, target.ToMap()) 60 if err != nil { 61 return nil, err 62 } 63 64 return subnets, err 65 } 66 67 //AddSubnetToCluster ... 68 func (r *subnet) AddSubnet(name string, subnetID string, target ClusterTargetHeader) error { 69 rawURL := fmt.Sprintf("/v1/clusters/%s/subnets/%s", name, subnetID) 70 _, err := r.client.Put(rawURL, nil, nil, target.ToMap()) 71 return err 72 } 73 74 //AddClusterUserSubnet ... 75 func (r *subnet) AddClusterUserSubnet(clusterID string, userSubnet UserSubnet, target ClusterTargetHeader) error { 76 rawURL := fmt.Sprintf("/v1/clusters/%s/usersubnets", clusterID) 77 _, err := r.client.Post(rawURL, nil, nil, target.ToMap()) 78 return err 79 } 80 81 //DeleteClusterUserSubnet ... 82 func (r *subnet) DeleteClusterUserSubnet(clusterID string, subnetID string, vlanID string, target ClusterTargetHeader) error { 83 rawURL := fmt.Sprintf("/v1/clusters/%s/usersubnets/%s/vlans/%s", clusterID, subnetID, vlanID) 84 _, err := r.client.Delete(rawURL, target.ToMap()) 85 return err 86 } 87 88 //GetClusterUserSubnet ... 89 func (r *subnet) ListClusterUserSubnets(clusterID string, target ClusterTargetHeader) ([]Vlan, error) { 90 vlans := []Vlan{} 91 rawURL := fmt.Sprintf("/v1/clusters/%s/usersubnets", clusterID) 92 _, err := r.client.Get(rawURL, &vlans, target.ToMap()) 93 if err != nil { 94 return nil, err 95 } 96 97 return vlans, err 98 }