Skip to content

Commit

Permalink
rekor: Initialize action execute when targeted condition status is false
Browse files Browse the repository at this point in the history
  • Loading branch information
osmman committed Jul 25, 2024
1 parent 59d0219 commit 86c5b6e
Show file tree
Hide file tree
Showing 7 changed files with 41 additions and 55 deletions.
6 changes: 1 addition & 5 deletions internal/controller/rekor/actions/initialize.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,7 @@ func (i initializeAction) Name() string {
}

func (i initializeAction) CanHandle(_ context.Context, instance *rhtasv1alpha1.Rekor) bool {
c := meta.FindStatusCondition(instance.Status.Conditions, constants.Ready)
if c == nil {
return false
}
return c.Reason == constants.Initialize
return meta.IsStatusConditionFalse(instance.Status.Conditions, constants.Ready)
}

func (i initializeAction) Handle(ctx context.Context, instance *rhtasv1alpha1.Rekor) *action.Result {
Expand Down
3 changes: 1 addition & 2 deletions internal/controller/rekor/actions/redis/initialize.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,7 @@ func (i initializeAction) Name() string {
}

func (i initializeAction) CanHandle(_ context.Context, instance *rhtasv1alpha1.Rekor) bool {
c := meta.FindStatusCondition(instance.Status.Conditions, constants.Ready)
return c.Reason == constants.Initialize && !meta.IsStatusConditionTrue(instance.Status.Conditions, actions.RedisCondition)
return meta.IsStatusConditionFalse(instance.Status.Conditions, actions.RedisCondition)
}

func (i initializeAction) Handle(ctx context.Context, instance *rhtasv1alpha1.Rekor) *action.Result {
Expand Down
5 changes: 3 additions & 2 deletions internal/controller/rekor/actions/server/initialize.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,12 @@ func (i initializeAction) Name() string {
return "initialize"
}

// CanHandle check if ServerAvailable condition status is false. It is sign that some previous server action make some change.
func (i initializeAction) CanHandle(_ context.Context, instance *rhtasv1alpha1.Rekor) bool {
c := meta.FindStatusCondition(instance.Status.Conditions, constants.Ready)
return c.Reason == constants.Initialize && !meta.IsStatusConditionTrue(instance.Status.Conditions, actions.ServerCondition)
return meta.IsStatusConditionFalse(instance.Status.Conditions, actions.ServerCondition)
}

// Handle set ServerAvailable status to true if server's deployment is available.
func (i initializeAction) Handle(ctx context.Context, instance *rhtasv1alpha1.Rekor) *action.Result {
var (
ok bool
Expand Down
11 changes: 2 additions & 9 deletions internal/controller/rekor/actions/server/resolve_pub_key.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,15 +42,8 @@ func (i resolvePubKeyAction) Name() string {
}

func (i resolvePubKeyAction) CanHandle(_ context.Context, instance *rhtasv1alpha1.Rekor) bool {
c := meta.FindStatusCondition(instance.Status.Conditions, actions.ServerCondition)
if c == nil {
return false
}
if c.Reason != constants.Initialize && c.Reason != constants.Ready {
return false
}

return instance.Status.PublicKeyRef == nil
return meta.IsStatusConditionTrue(instance.Status.Conditions, actions.ServerCondition) &&
instance.Status.PublicKeyRef == nil
}

func (i resolvePubKeyAction) Handle(ctx context.Context, instance *rhtasv1alpha1.Rekor) *action.Result {
Expand Down
54 changes: 22 additions & 32 deletions internal/controller/rekor/actions/server/resolve_pub_key_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,46 +29,35 @@ var testPublicKey2 = []byte("-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZ

func TestResolvePubKey_CanHandle(t *testing.T) {
tests := []struct {
name string
serverCondition string
canHandle bool
ref *v1alpha1.SecretKeySelector
name string
status metav1.ConditionStatus
canHandle bool
ref *v1alpha1.SecretKeySelector
}{
{
name: "ref set",
serverCondition: constants.Initialize,
canHandle: false,
ref: &v1alpha1.SecretKeySelector{},
},
{
name: "no server condition",
serverCondition: "",
canHandle: false,
},
{
name: constants.Ready,
serverCondition: constants.Ready,
canHandle: true,
name: "ref set",
status: metav1.ConditionFalse,
canHandle: false,
ref: &v1alpha1.SecretKeySelector{},
},
{
name: constants.Pending,
serverCondition: constants.Pending,
canHandle: false,
name: "no server condition",
canHandle: false,
},
{
name: constants.Creating,
serverCondition: constants.Creating,
canHandle: false,
name: "ServerAvailable == True",
status: metav1.ConditionTrue,
canHandle: true,
},
{
name: constants.Initialize,
serverCondition: constants.Initialize,
canHandle: true,
name: "ServerAvailable == False",
status: metav1.ConditionFalse,
canHandle: false,
},
{
name: constants.Failure,
serverCondition: constants.Failure,
canHandle: false,
name: "ServerAvailable == Unknown",
status: metav1.ConditionUnknown,
canHandle: false,
},
}
for _, tt := range tests {
Expand All @@ -79,10 +68,10 @@ func TestResolvePubKey_CanHandle(t *testing.T) {
PublicKeyRef: tt.ref,
},
}
if tt.serverCondition != "" {
if tt.status != "" {
meta.SetStatusCondition(&instance.Status.Conditions, metav1.Condition{
Type: actions.ServerCondition,
Reason: tt.serverCondition,
Status: tt.status,
})
}

Expand Down Expand Up @@ -173,6 +162,7 @@ func TestResolvePubKey_Handle(t *testing.T) {
{
Type: actions.ServerCondition,
Reason: constants.Initialize,
Status: metav1.ConditionFalse,
},
},
},
Expand Down
4 changes: 1 addition & 3 deletions internal/controller/rekor/actions/ui/initialize.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,7 @@ func (i initializeAction) Name() string {
}

func (i initializeAction) CanHandle(ctx context.Context, instance *rhtasv1alpha1.Rekor) bool {
c := meta.FindStatusCondition(instance.Status.Conditions, constants.Ready)
return c.Reason == constants.Initialize &&
!meta.IsStatusConditionTrue(instance.Status.Conditions, actions.UICondition) &&
return meta.IsStatusConditionFalse(instance.Status.Conditions, actions.UICondition) &&
utils.IsEnabled(instance.Spec.RekorSearchUI.Enabled)
}

Expand Down
13 changes: 11 additions & 2 deletions test/e2e/support/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,16 @@ import (
v13 "k8s.io/api/batch/v1"
"log"
"os"
"path/filepath"
"reflect"
"regexp"
"strings"
"time"

"github.com/docker/docker/api/types"
docker "github.com/docker/docker/client"
"github.com/google/uuid"
"github.com/onsi/ginkgo/v2"
"github.com/onsi/ginkgo/v2/dsl/core"
. "github.com/onsi/gomega"
"github.com/securesign/operator/api/v1alpha1"
Expand All @@ -29,9 +32,15 @@ import (
const fromImage = "alpine:latest"

func CreateTestNamespace(ctx context.Context, cli client.Client) *v1.Namespace {
sp := ginkgo.CurrentSpecReport()
fn := filepath.Base(sp.LeafNodeLocation.FileName)
// Replace invalid characters with '-'
re := regexp.MustCompile("[^a-z0-9-]")
name := re.ReplaceAllString(strings.TrimSuffix(fn, filepath.Ext(fn)), "-")

ns := &v1.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "test-" + uuid.New().String(),
GenerateName: name + "-",
},
}
Expect(cli.Create(ctx, ns)).To(Succeed())
Expand All @@ -57,7 +66,7 @@ func PrepareImage(ctx context.Context) string {

Expect(dockerCli.ImageTag(ctx, fromImage, targetImageName)).To(Succeed())
var push io.ReadCloser
push, err = dockerCli.ImagePush(ctx, targetImageName, types.ImagePushOptions{RegistryAuth: types.RegistryAuthFromSpec})
push, err = dockerCli.ImagePush(ctx, targetImageName, types.ImagePushOptions{})
Expect(err).ToNot(HaveOccurred())
_, err = io.Copy(core.GinkgoWriter, push)
Expect(err).ToNot(HaveOccurred())
Expand Down

0 comments on commit 86c5b6e

Please sign in to comment.