Skip to content

Commit 4b6fcfb

Browse files
authored
feat(secret_manager): display restore methods (scaleway#2479)
1 parent 00f4e08 commit 4b6fcfb

File tree

1 file changed

+94
-0
lines changed

1 file changed

+94
-0
lines changed

api/secret/v1beta1/secret_sdk.go

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -984,6 +984,24 @@ type ProtectSecretRequest struct {
984984
SecretID string `json:"-"`
985985
}
986986

987+
// RestoreSecretRequest: restore secret request.
988+
type RestoreSecretRequest struct {
989+
// Region: region to target. If none is passed will use default region from the config.
990+
Region scw.Region `json:"-"`
991+
992+
SecretID string `json:"-"`
993+
}
994+
995+
// RestoreSecretVersionRequest: restore secret version request.
996+
type RestoreSecretVersionRequest struct {
997+
// Region: region to target. If none is passed will use default region from the config.
998+
Region scw.Region `json:"-"`
999+
1000+
SecretID string `json:"-"`
1001+
1002+
Revision string `json:"-"`
1003+
}
1004+
9871005
// SSHKey: ssh key.
9881006
type SSHKey struct {
9891007
// SSHPrivateKey: the private SSH key.
@@ -1814,3 +1832,79 @@ func (s *API) ListSecretTypes(req *ListSecretTypesRequest, opts ...scw.RequestOp
18141832
}
18151833
return &resp, nil
18161834
}
1835+
1836+
// RestoreSecretVersion: Restore a secret's version specified by the `region`, `secret_id` and `revision` parameters.
1837+
func (s *API) RestoreSecretVersion(req *RestoreSecretVersionRequest, opts ...scw.RequestOption) (*SecretVersion, error) {
1838+
var err error
1839+
1840+
if req.Region == "" {
1841+
defaultRegion, _ := s.client.GetDefaultRegion()
1842+
req.Region = defaultRegion
1843+
}
1844+
1845+
if fmt.Sprint(req.Region) == "" {
1846+
return nil, errors.New("field Region cannot be empty in request")
1847+
}
1848+
1849+
if fmt.Sprint(req.SecretID) == "" {
1850+
return nil, errors.New("field SecretID cannot be empty in request")
1851+
}
1852+
1853+
if fmt.Sprint(req.Revision) == "" {
1854+
return nil, errors.New("field Revision cannot be empty in request")
1855+
}
1856+
1857+
scwReq := &scw.ScalewayRequest{
1858+
Method: "POST",
1859+
Path: "/secret-manager/v1beta1/regions/" + fmt.Sprint(req.Region) + "/secrets/" + fmt.Sprint(req.SecretID) + "/versions/" + fmt.Sprint(req.Revision) + "/restore",
1860+
}
1861+
1862+
err = scwReq.SetBody(req)
1863+
if err != nil {
1864+
return nil, err
1865+
}
1866+
1867+
var resp SecretVersion
1868+
1869+
err = s.client.Do(scwReq, &resp, opts...)
1870+
if err != nil {
1871+
return nil, err
1872+
}
1873+
return &resp, nil
1874+
}
1875+
1876+
// RestoreSecret: Restore a secret and all its versions scheduled for deletion specified by the `region` and `secret_id` parameters.
1877+
func (s *API) RestoreSecret(req *RestoreSecretRequest, opts ...scw.RequestOption) (*Secret, error) {
1878+
var err error
1879+
1880+
if req.Region == "" {
1881+
defaultRegion, _ := s.client.GetDefaultRegion()
1882+
req.Region = defaultRegion
1883+
}
1884+
1885+
if fmt.Sprint(req.Region) == "" {
1886+
return nil, errors.New("field Region cannot be empty in request")
1887+
}
1888+
1889+
if fmt.Sprint(req.SecretID) == "" {
1890+
return nil, errors.New("field SecretID cannot be empty in request")
1891+
}
1892+
1893+
scwReq := &scw.ScalewayRequest{
1894+
Method: "POST",
1895+
Path: "/secret-manager/v1beta1/regions/" + fmt.Sprint(req.Region) + "/secrets/" + fmt.Sprint(req.SecretID) + "/restore",
1896+
}
1897+
1898+
err = scwReq.SetBody(req)
1899+
if err != nil {
1900+
return nil, err
1901+
}
1902+
1903+
var resp Secret
1904+
1905+
err = s.client.Do(scwReq, &resp, opts...)
1906+
if err != nil {
1907+
return nil, err
1908+
}
1909+
return &resp, nil
1910+
}

0 commit comments

Comments
 (0)