Skip to content

Commit baaca82

Browse files
authored
feat(mongodb): add CreateEndpoint (scaleway#2311)
1 parent 774e7f5 commit baaca82

File tree

1 file changed

+53
-9
lines changed

1 file changed

+53
-9
lines changed

api/mongodb/v1alpha1/mongodb_sdk.go

Lines changed: 53 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -509,6 +509,15 @@ type Setting struct {
509509
FloatMax *float32 `json:"float_max"`
510510
}
511511

512+
// EndpointSpec: endpoint spec.
513+
type EndpointSpec struct {
514+
// Precisely one of Public, PrivateNetwork must be set.
515+
Public *EndpointSpecPublicDetails `json:"public,omitempty"`
516+
517+
// Precisely one of Public, PrivateNetwork must be set.
518+
PrivateNetwork *EndpointSpecPrivateNetworkDetails `json:"private_network,omitempty"`
519+
}
520+
512521
// CreateInstanceRequestVolumeDetails: create instance request volume details.
513522
type CreateInstanceRequestVolumeDetails struct {
514523
// VolumeSize: volume size.
@@ -519,15 +528,6 @@ type CreateInstanceRequestVolumeDetails struct {
519528
VolumeType VolumeType `json:"volume_type"`
520529
}
521530

522-
// EndpointSpec: endpoint spec.
523-
type EndpointSpec struct {
524-
// Precisely one of Public, PrivateNetwork must be set.
525-
Public *EndpointSpecPublicDetails `json:"public,omitempty"`
526-
527-
// Precisely one of Public, PrivateNetwork must be set.
528-
PrivateNetwork *EndpointSpecPrivateNetworkDetails `json:"private_network,omitempty"`
529-
}
530-
531531
// Instance: instance.
532532
type Instance struct {
533533
// ID: UUID of the Database Instance.
@@ -667,6 +667,18 @@ type RestoreSnapshotRequestVolumeDetails struct {
667667
VolumeType VolumeType `json:"volume_type"`
668668
}
669669

670+
// CreateEndpointRequest: create endpoint request.
671+
type CreateEndpointRequest struct {
672+
// Region: region to target. If none is passed will use default region from the config.
673+
Region scw.Region `json:"-"`
674+
675+
// InstanceID: UUID of the Database Instance.
676+
InstanceID string `json:"instance_id"`
677+
678+
// Endpoint: endpointSpec used to expose your Database Instance.
679+
Endpoint *EndpointSpec `json:"endpoint"`
680+
}
681+
670682
// CreateInstanceRequest: create instance request.
671683
type CreateInstanceRequest struct {
672684
// Region: region to target. If none is passed will use default region from the config.
@@ -1801,3 +1813,35 @@ func (s *API) DeleteEndpoint(req *DeleteEndpointRequest, opts ...scw.RequestOpti
18011813
}
18021814
return nil
18031815
}
1816+
1817+
// CreateEndpoint: Create a new endpoint for a MongoDB® Database Instance. You can add `public_network` or `private_network` specifications to the body of the request.
1818+
func (s *API) CreateEndpoint(req *CreateEndpointRequest, opts ...scw.RequestOption) (*Endpoint, error) {
1819+
var err error
1820+
1821+
if req.Region == "" {
1822+
defaultRegion, _ := s.client.GetDefaultRegion()
1823+
req.Region = defaultRegion
1824+
}
1825+
1826+
if fmt.Sprint(req.Region) == "" {
1827+
return nil, errors.New("field Region cannot be empty in request")
1828+
}
1829+
1830+
scwReq := &scw.ScalewayRequest{
1831+
Method: "POST",
1832+
Path: "/mongodb/v1alpha1/regions/" + fmt.Sprint(req.Region) + "/endpoints",
1833+
}
1834+
1835+
err = scwReq.SetBody(req)
1836+
if err != nil {
1837+
return nil, err
1838+
}
1839+
1840+
var resp Endpoint
1841+
1842+
err = s.client.Do(scwReq, &resp, opts...)
1843+
if err != nil {
1844+
return nil, err
1845+
}
1846+
return &resp, nil
1847+
}

0 commit comments

Comments
 (0)