Skip to content

Commit

Permalink
store: log when a resource becomes enabled or disabled (#5220)
Browse files Browse the repository at this point in the history
  • Loading branch information
landism committed Nov 25, 2021
1 parent cd387bc commit fd433bd
Show file tree
Hide file tree
Showing 2 changed files with 81 additions and 2 deletions.
29 changes: 27 additions & 2 deletions internal/store/uiresources/reducers.go
Original file line number Diff line number Diff line change
@@ -1,14 +1,39 @@
package uiresources

import (
"fmt"

"github.com/tilt-dev/tilt/internal/store"
"github.com/tilt-dev/tilt/pkg/logger"
"github.com/tilt-dev/tilt/pkg/model"
"github.com/tilt-dev/tilt/pkg/model/logstore"
)

func HandleUIResourceUpsertAction(state *store.EngineState, action UIResourceUpsertAction) {
n := action.UIResource.Name
state.UIResources[n] = action.UIResource
if action.UIResource != nil && action.UIResource.Status.DisableStatus.DisabledCount > 0 {
old := state.UIResources[n]
uir := action.UIResource
if old != nil {
oldCount := old.Status.DisableStatus.DisabledCount
newCount := uir.Status.DisableStatus.DisabledCount

verb := ""
if oldCount == 0 && newCount > 0 {
verb = "disabled"
} else if oldCount > 0 && newCount == 0 {
verb = "enabled"
}

if verb != "" {
message := fmt.Sprintf("Resource %q %s. To enable/disable it, use the Tilt Web UI.\n", n, verb)
a := store.NewLogAction(model.ManifestName(n), logstore.SpanID(fmt.Sprintf("disabletoggle-%s", n)), logger.InfoLvl, nil, []byte(message))
state.LogStore.Append(a, state.Secrets)
}
}

state.UIResources[n] = uir

if uir != nil && uir.Status.DisableStatus.DisabledCount > 0 {
state.RemoveFromTriggerQueue(model.ManifestName(n))
}
}
Expand Down
54 changes: 54 additions & 0 deletions internal/store/uiresources/reducers_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package uiresources

import (
"strings"
"testing"

"github.com/stretchr/testify/require"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"

"github.com/tilt-dev/tilt/internal/store"
"github.com/tilt-dev/tilt/pkg/apis/core/v1alpha1"
)

func resourceWithDisableCount(count int) *v1alpha1.UIResource {
return &v1alpha1.UIResource{
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
Status: v1alpha1.UIResourceStatus{
DisableStatus: v1alpha1.DisableResourceStatus{DisabledCount: int32(count)},
},
}
}

func TestLogging(t *testing.T) {
for _, tc := range []struct {
name string
old, new *v1alpha1.UIResource
expectedLog string
}{
{"enable", resourceWithDisableCount(1), resourceWithDisableCount(0), "Resource \"foo\" enabled."},
{"disable", resourceWithDisableCount(0), resourceWithDisableCount(1), "Resource \"foo\" disabled."},
{"old nil", nil, resourceWithDisableCount(0), ""},
{"enabled, no change", resourceWithDisableCount(0), resourceWithDisableCount(0), ""},
{"disabled, no change", resourceWithDisableCount(1), resourceWithDisableCount(1), ""},
} {
t.Run(tc.name, func(t *testing.T) {
state := store.NewState()
state.UIResources["foo"] = tc.old

action := UIResourceUpsertAction{UIResource: tc.new}

HandleUIResourceUpsertAction(state, action)

log := state.LogStore.ManifestLog("foo")
if tc.expectedLog == "" {
require.Equal(t, "", log)
} else {
lines := strings.Split(log, "\n")
require.Equal(t, 2, len(lines))
require.Contains(t, lines[0], tc.expectedLog)
require.Equal(t, "", lines[1])
}
})
}
}

0 comments on commit fd433bd

Please sign in to comment.