diff --git a/support/batch.go b/support/batch.go index 2cb2d54..d4d1d0d 100644 --- a/support/batch.go +++ b/support/batch.go @@ -20,6 +20,7 @@ import ( "github.com/onsi/gomega" batchv1 "k8s.io/api/batch/v1" + corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -35,3 +36,20 @@ func GetJob(t Test, namespace, name string) *batchv1.Job { t.T().Helper() return Job(t, namespace, name)(t) } + +func JobConditionCompleted(job *batchv1.Job) corev1.ConditionStatus { + return JobCondition(job, batchv1.JobComplete) +} + +func JobConditionFailed(job *batchv1.Job) corev1.ConditionStatus { + return JobCondition(job, batchv1.JobFailed) +} + +func JobCondition(job *batchv1.Job, conditionType batchv1.JobConditionType) corev1.ConditionStatus { + for _, condition := range job.Status.Conditions { + if condition.Type == conditionType { + return condition.Status + } + } + return corev1.ConditionUnknown +} diff --git a/support/core.go b/support/core.go index 2e30bd8..4387e6c 100644 --- a/support/core.go +++ b/support/core.go @@ -53,6 +53,52 @@ func CreateConfigMap(t Test, namespace string, content map[string][]byte) *corev return configMap } +func CreateSecret(t Test, namespace string, content map[string]string) *corev1.Secret { + t.T().Helper() + + secret := &corev1.Secret{ + TypeMeta: metav1.TypeMeta{ + APIVersion: corev1.SchemeGroupVersion.String(), + Kind: "Secret", + }, + ObjectMeta: metav1.ObjectMeta{ + GenerateName: "secret-", + Namespace: namespace, + }, + StringData: content, + Immutable: Ptr(true), + } + + secret, err := t.Client().Core().CoreV1().Secrets(namespace).Create(t.Ctx(), secret, metav1.CreateOptions{}) + t.Expect(err).NotTo(gomega.HaveOccurred()) + t.T().Logf("Created Secret %s/%s successfully", secret.Namespace, secret.Name) + + return secret +} + +func CreateSecretBinary(t Test, namespace string, content map[string][]byte) *corev1.Secret { + t.T().Helper() + + secret := &corev1.Secret{ + TypeMeta: metav1.TypeMeta{ + APIVersion: corev1.SchemeGroupVersion.String(), + Kind: "Secret", + }, + ObjectMeta: metav1.ObjectMeta{ + GenerateName: "secret-", + Namespace: namespace, + }, + Data: content, + Immutable: Ptr(true), + } + + secret, err := t.Client().Core().CoreV1().Secrets(namespace).Create(t.Ctx(), secret, metav1.CreateOptions{}) + t.Expect(err).NotTo(gomega.HaveOccurred()) + t.T().Logf("Created binary Secret %s/%s successfully", secret.Namespace, secret.Name) + + return secret +} + func Raw(t Test, obj runtime.Object) runtime.RawExtension { t.T().Helper() data, err := json.Marshal(obj)