mirror of
https://github.com/opentofu/opentofu.git
synced 2024-12-27 09:21:14 -06:00
1fd0f803e4
This PR changes manta from being a legacy remote state client to a new backend type. This also includes creating a simple lock within manta This PR also unifies the way the triton client is configured (the schema) and also uses the same env vars to set the backend up It is important to note that if the remote state path does not exist, then the backend will create that path. This means the user doesn't need to fall into a chicken and egg situation of creating the directory in advance before interacting with it
47 lines
1.1 KiB
Go
47 lines
1.1 KiB
Go
package storage
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"net/http"
|
|
|
|
"github.com/hashicorp/errwrap"
|
|
"github.com/joyent/triton-go/client"
|
|
)
|
|
|
|
type SnapLinksClient struct {
|
|
client *client.Client
|
|
}
|
|
|
|
// PutSnapLinkInput represents parameters to a PutSnapLink operation.
|
|
type PutSnapLinkInput struct {
|
|
LinkPath string
|
|
SourcePath string
|
|
}
|
|
|
|
// PutSnapLink creates a SnapLink to an object.
|
|
func (s *SnapLinksClient) Put(ctx context.Context, input *PutSnapLinkInput) error {
|
|
linkPath := fmt.Sprintf("/%s%s", s.client.AccountName, input.LinkPath)
|
|
sourcePath := fmt.Sprintf("/%s%s", s.client.AccountName, input.SourcePath)
|
|
headers := &http.Header{}
|
|
headers.Set("Content-Type", "application/json; type=link")
|
|
headers.Set("location", sourcePath)
|
|
headers.Set("Accept", "~1.0")
|
|
headers.Set("Accept-Version", "application/json, */*")
|
|
|
|
reqInput := client.RequestInput{
|
|
Method: http.MethodPut,
|
|
Path: linkPath,
|
|
Headers: headers,
|
|
}
|
|
respBody, _, err := s.client.ExecuteRequestStorage(ctx, reqInput)
|
|
if respBody != nil {
|
|
defer respBody.Close()
|
|
}
|
|
if err != nil {
|
|
return errwrap.Wrapf("Error executing PutSnapLink request: {{err}}", err)
|
|
}
|
|
|
|
return nil
|
|
}
|