Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 12 additions & 12 deletions internal/provider/file/deploy.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ func (p *Service) Deploy(
) (*DeployResult, error) {
content, err := p.objStore.GetBytes(ctx, req.ObjectName)
if err != nil {
return nil, fmt.Errorf("failed to get object %q: %w", req.ObjectName, err)
return nil, fmt.Errorf("file deploy: get object %q: %w", req.ObjectName, err)
}

// When ContentType is not explicitly set, resolve it from the object's
Expand All @@ -69,7 +69,7 @@ func (p *Service) Deploy(
if contentType == "template" {
content, err = p.renderTemplate(content, req.Vars)
if err != nil {
return nil, fmt.Errorf("failed to render template: %w", err)
return nil, fmt.Errorf("file deploy: render template: %w", err)
}
}

Expand Down Expand Up @@ -117,11 +117,11 @@ func (p *Service) Deploy(

dir := p.fs.Dir(req.Path)
if err := p.fs.MkdirAll(dir, 0o755); err != nil {
return nil, fmt.Errorf("failed to create directory %q: %w", dir, err)
return nil, fmt.Errorf("file deploy: create directory %q: %w", dir, err)
}

if err := fsutil.WriteFileAtomic(p.fs, req.Path, content, mode); err != nil {
return nil, fmt.Errorf("failed to write file %q: %w", req.Path, err)
return nil, fmt.Errorf("file deploy: write file %q: %w", req.Path, err)
}

if _, err := p.enforceOwnership(ctx, req); err != nil {
Expand Down Expand Up @@ -170,12 +170,12 @@ func (p *Service) applyPermissions(

info, err := p.fs.Stat(req.Path)
if err != nil {
return false, fmt.Errorf("failed to stat file %q: %w", req.Path, err)
return false, fmt.Errorf("file deploy: stat file %q: %w", req.Path, err)
}

if info.Mode().Perm() != want.Perm() {
if err := p.fs.Chmod(req.Path, want); err != nil {
return false, fmt.Errorf("failed to set mode on %q: %w", req.Path, err)
return false, fmt.Errorf("file deploy: set mode on %q: %w", req.Path, err)
}

changed = true
Expand All @@ -202,17 +202,17 @@ func (p *Service) enforceOwnership(

wantUID, err := resolveID(req.Owner, lookupUID)
if err != nil {
return false, fmt.Errorf("failed to resolve owner for %q: %w", req.Path, err)
return false, fmt.Errorf("file deploy: resolve owner for %q: %w", req.Path, err)
}

wantGID, err := resolveID(req.Group, lookupGID)
if err != nil {
return false, fmt.Errorf("failed to resolve group for %q: %w", req.Path, err)
return false, fmt.Errorf("file deploy: resolve group for %q: %w", req.Path, err)
}

matches, err := ownershipMatches(req.Path, wantUID, wantGID)
if err != nil {
return false, fmt.Errorf("failed to read ownership of %q: %w", req.Path, err)
return false, fmt.Errorf("file deploy: read ownership of %q: %w", req.Path, err)
}

if matches {
Expand All @@ -232,7 +232,7 @@ func (p *Service) enforceOwnership(
[]string{spec, req.Path},
); err != nil {
return false, fmt.Errorf(
"failed to set ownership %q on %q: %w",
"file deploy: set ownership %q on %q: %w",
spec,
req.Path,
err,
Expand Down Expand Up @@ -264,11 +264,11 @@ func (p *Service) putState(

stateBytes, err := marshalJSON(state)
if err != nil {
return fmt.Errorf("failed to marshal file state: %w", err)
return fmt.Errorf("file deploy: marshal file state: %w", err)
}

if _, err := p.stateKV.Put(ctx, stateKey, stateBytes); err != nil {
return fmt.Errorf("failed to update file state: %w", err)
return fmt.Errorf("file deploy: update file state: %w", err)
}

return nil
Expand Down
26 changes: 13 additions & 13 deletions internal/provider/file/deploy_public_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ func (suite *DeployPublicTestSuite) TestDeploy() {
ContentType: "raw",
},
wantErr: true,
wantErrMsg: "failed to marshal file state",
wantErrMsg: "file deploy: marshal file state",
},
{
name: "when deploy succeeds (new file)",
Expand Down Expand Up @@ -247,7 +247,7 @@ func (suite *DeployPublicTestSuite) TestDeploy() {
ContentType: "raw",
},
wantErr: true,
wantErrMsg: "failed to get object",
wantErrMsg: "file deploy: get object",
},
{
name: "when content type is template",
Expand Down Expand Up @@ -391,7 +391,7 @@ func (suite *DeployPublicTestSuite) TestDeploy() {
ContentType: "raw",
},
wantErr: true,
wantErrMsg: "failed to write file",
wantErrMsg: "file deploy: write file",
},
{
name: "when mkdir fails",
Expand Down Expand Up @@ -425,7 +425,7 @@ func (suite *DeployPublicTestSuite) TestDeploy() {
ContentType: "raw",
},
wantErr: true,
wantErrMsg: "failed to create directory",
wantErrMsg: "file deploy: create directory",
},
{
name: "when state KV put fails",
Expand All @@ -449,7 +449,7 @@ func (suite *DeployPublicTestSuite) TestDeploy() {
ContentType: "raw",
},
wantErr: true,
wantErrMsg: "failed to update file state",
wantErrMsg: "file deploy: update file state",
},
{
name: "when the mode cannot be parsed on a file already correct",
Expand Down Expand Up @@ -681,7 +681,7 @@ func (suite *DeployPublicTestSuite) TestDeploy() {
ContentType: "raw",
},
wantErr: true,
wantErrMsg: "failed to resolve owner",
wantErrMsg: "file deploy: resolve owner",
},
{
name: "when the host does not know the requested group",
Expand Down Expand Up @@ -712,7 +712,7 @@ func (suite *DeployPublicTestSuite) TestDeploy() {
ContentType: "raw",
},
wantErr: true,
wantErrMsg: "failed to resolve group",
wantErrMsg: "file deploy: resolve group",
},
{
name: "when the file ownership cannot be read at all",
Expand Down Expand Up @@ -743,7 +743,7 @@ func (suite *DeployPublicTestSuite) TestDeploy() {
ContentType: "raw",
},
wantErr: true,
wantErrMsg: "failed to read ownership",
wantErrMsg: "file deploy: read ownership",
},
{
name: "when the platform cannot report ownership it is applied anyway",
Expand Down Expand Up @@ -888,7 +888,7 @@ func (suite *DeployPublicTestSuite) TestDeploy() {
ContentType: "raw",
},
wantErr: true,
wantErrMsg: "failed to set ownership",
wantErrMsg: "file deploy: set ownership",
},
{
name: "when the file cannot be stat'd while enforcing the mode",
Expand Down Expand Up @@ -929,7 +929,7 @@ func (suite *DeployPublicTestSuite) TestDeploy() {
ContentType: "raw",
},
wantErr: true,
wantErrMsg: "failed to stat file",
wantErrMsg: "file deploy: stat file",
},
{
name: "when the mode cannot be applied",
Expand Down Expand Up @@ -969,7 +969,7 @@ func (suite *DeployPublicTestSuite) TestDeploy() {
ContentType: "raw",
},
wantErr: true,
wantErrMsg: "failed to set mode",
wantErrMsg: "file deploy: set mode",
},
{
name: "when chown fails on a file whose content is already correct",
Expand Down Expand Up @@ -1005,7 +1005,7 @@ func (suite *DeployPublicTestSuite) TestDeploy() {
ContentType: "raw",
},
wantErr: true,
wantErrMsg: "failed to set ownership",
wantErrMsg: "file deploy: set ownership",
},
{
name: "when recording a permission change fails",
Expand Down Expand Up @@ -1033,7 +1033,7 @@ func (suite *DeployPublicTestSuite) TestDeploy() {
ContentType: "raw",
},
wantErr: true,
wantErrMsg: "failed to update file state",
wantErrMsg: "file deploy: update file state",
},
}

Expand Down
2 changes: 1 addition & 1 deletion internal/provider/file/status.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ func (p *Service) Status(

var state job.FileState
if err := json.Unmarshal(entry.Value(), &state); err != nil {
return nil, fmt.Errorf("failed to parse file state: %w", err)
return nil, fmt.Errorf("file status: parse file state: %w", err)
}

data, err := p.fs.ReadFile(req.Path)
Expand Down
2 changes: 1 addition & 1 deletion internal/provider/file/status_public_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ func (suite *StatusPublicTestSuite) TestStatus() {
},
validateFunc: func(got *file.StatusResult, err error) {
suite.Error(err)
suite.ErrorContains(err, "failed to parse file state")
suite.ErrorContains(err, "file status: parse file state")
suite.Nil(got)
},
},
Expand Down
4 changes: 2 additions & 2 deletions internal/provider/file/template.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ func (p *Service) renderTemplate(
) ([]byte, error) {
tmpl, err := template.New("file").Option("missingkey=error").Parse(string(rawTemplate))
if err != nil {
return nil, fmt.Errorf("failed to parse template: %w", err)
return nil, fmt.Errorf("file template: parse template: %w", err)
}

ctx := TemplateContext{
Expand All @@ -55,7 +55,7 @@ func (p *Service) renderTemplate(

var buf bytes.Buffer
if err := tmpl.Execute(&buf, ctx); err != nil {
return nil, fmt.Errorf("failed to execute template: %w", err)
return nil, fmt.Errorf("file template: execute template: %w", err)
}

return buf.Bytes(), nil
Expand Down
6 changes: 3 additions & 3 deletions internal/provider/file/template_public_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ func (suite *TemplatePublicTestSuite) TestDeployTemplate() {
wantErr: true,
validateFunc: func(got *file.DeployResult, err error, _ avfs.VFS) {
suite.Error(err)
suite.ErrorContains(err, "failed to render template")
suite.ErrorContains(err, "file deploy: render template")
suite.Nil(got)
},
},
Expand All @@ -177,7 +177,7 @@ func (suite *TemplatePublicTestSuite) TestDeployTemplate() {
wantErr: true,
validateFunc: func(got *file.DeployResult, err error, _ avfs.VFS) {
suite.Error(err)
suite.ErrorContains(err, "failed to render template")
suite.ErrorContains(err, "file deploy: render template")
suite.Nil(got)
},
},
Expand All @@ -189,7 +189,7 @@ func (suite *TemplatePublicTestSuite) TestDeployTemplate() {
wantErr: true,
validateFunc: func(got *file.DeployResult, err error, _ avfs.VFS) {
suite.Error(err)
suite.ErrorContains(err, "failed to render template")
suite.ErrorContains(err, "file deploy: render template")
suite.Nil(got)
},
},
Expand Down
2 changes: 1 addition & 1 deletion internal/provider/file/undeploy.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ func (p *Service) Undeploy(
}

if err := p.fs.Remove(req.Path); err != nil {
return nil, fmt.Errorf("failed to remove file %q: %w", req.Path, err)
return nil, fmt.Errorf("file undeploy: remove file %q: %w", req.Path, err)
}

stateKey := BuildStateKey(p.hostname, req.Path)
Expand Down
2 changes: 1 addition & 1 deletion internal/provider/file/undeploy_public_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ func (suite *UndeployPublicTestSuite) TestUndeploy() {
},
req: file.UndeployRequest{Path: "/etc/cron.d/locked"},
wantErr: true,
wantErrMsg: "failed to remove file",
wantErrMsg: "file undeploy: remove file",
useFailFs: true,
},
{
Expand Down
Loading