Skip to content

Commit

Permalink
[#2175] Exception when retrieving logs with Service Mesh
Browse files Browse the repository at this point in the history
  • Loading branch information
ryanemerson committed Feb 10, 2025
1 parent 3ff1aab commit f594fac
Show file tree
Hide file tree
Showing 7 changed files with 41 additions and 33 deletions.
5 changes: 3 additions & 2 deletions controllers/batch_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import (
)

const (
BatchContainer = "batch"
BatchFilename = "batch"
BatchVolumeName = "batch-volume"
BatchVolumeRoot = "/etc/batch"
Expand Down Expand Up @@ -181,7 +182,7 @@ func (r *batchRequest) execute() (reconcile.Result, error) {
},
Spec: corev1.PodSpec{
Containers: []corev1.Container{{
Name: batch.Name,
Name: BatchContainer,
Image: infinispan.ImageName(),
Command: []string{"/opt/infinispan/bin/cli.sh", cliArgs},
VolumeMounts: []corev1.VolumeMount{
Expand Down Expand Up @@ -255,7 +256,7 @@ func (r *batchRequest) waitToComplete() (reconcile.Result, error) {
if err != nil {
reason = err.Error()
} else {
reason, err = r.kubernetes.Logs(podName, batch.Namespace, false, r.ctx)
reason, err = r.kubernetes.Logs(BatchContainer, podName, batch.Namespace, false, r.ctx)
if err != nil {
reason = fmt.Errorf("unable to retrive logs for batch %s: %w", batch.Name, err).Error()
}
Expand Down
5 changes: 4 additions & 1 deletion pkg/kubernetes/kubernetes.go
Original file line number Diff line number Diff line change
Expand Up @@ -344,8 +344,11 @@ func (k Kubernetes) ResourcesListByField(namespace, fieldName, fieldValue string
return err
}

func (k Kubernetes) Logs(pod, namespace string, previous bool, ctx context.Context) (logs string, err error) {
func (k Kubernetes) Logs(container, pod, namespace string, previous bool, ctx context.Context) (logs string, err error) {
req := k.RestClient.Get().Namespace(namespace).Resource("pods").Name(pod).SubResource("log")
if container != "" {
req.Param("container", container)
}
if previous {
req.Param("previous", "true")
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"github.com/infinispan/infinispan-operator/pkg/infinispan/version"
kube "github.com/infinispan/infinispan-operator/pkg/kubernetes"
pipeline "github.com/infinispan/infinispan-operator/pkg/reconcile/pipeline/infinispan"
"github.com/infinispan/infinispan-operator/pkg/reconcile/pipeline/infinispan/handler/provision"
appsv1 "k8s.io/api/apps/v1"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
Expand Down Expand Up @@ -193,7 +194,7 @@ func XSiteViewCondition(i *ispnv1.Infinispan, ctx pipeline.Context) {
if crossSiteViewCondition.Status == metav1.ConditionTrue {
podName := podList.Items[0].Name
k8s := ctx.Kubernetes()
logs, err := k8s.Logs(podName, i.Namespace, false, ctx.Ctx())
logs, err := k8s.Logs(provision.InfinispanContainer, podName, i.Namespace, false, ctx.Ctx())
if err != nil {
ctx.Log().Error(err, fmt.Sprintf("Unable to retrive logs for i pod %s", podName))
}
Expand Down
3 changes: 2 additions & 1 deletion test/e2e/cache/cache_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import (
"github.com/infinispan/infinispan-operator/controllers/constants"
"github.com/infinispan/infinispan-operator/pkg/kubernetes"
"github.com/infinispan/infinispan-operator/pkg/mime"
"github.com/infinispan/infinispan-operator/pkg/reconcile/pipeline/infinispan/handler/provision"
tutils "github.com/infinispan/infinispan-operator/test/e2e/utils"
testifyAssert "github.com/stretchr/testify/assert"
"gopkg.in/yaml.v3"
Expand Down Expand Up @@ -113,7 +114,7 @@ func assertConfigListenerHasNoErrorsOrRestarts(t *testing.T, i *v1.Infinispan) {

pod := podList.Items[0]
testifyAssert.Equal(t, int32(0), pod.Status.ContainerStatuses[0].RestartCount)
logs, err := k8s.Logs(pod.Name, tutils.Namespace, false, ctx)
logs, err := k8s.Logs(provision.InfinispanListenerContainer, pod.Name, tutils.Namespace, false, ctx)
tutils.ExpectNoError(err)
testifyAssert.NotContains(t, logs, "ERROR", "Error(s) exist in ConfigListener logs")
}
Expand Down
6 changes: 3 additions & 3 deletions test/e2e/upgrade/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ func ignoreRestoreError(csv string, operand *version.Operand, ispn *ispnv1.Infin
for _, pod := range podList.Items {
for _, c := range pod.Status.ContainerStatuses {
if c.Name == provision.InfinispanContainer && c.RestartCount > 0 {
logs, err := testKube.Kubernetes.Logs(pod.Name, pod.Namespace, true, ctx)
logs, err := testKube.Kubernetes.Logs(provision.InfinispanContainer, pod.Name, pod.Namespace, true, ctx)
tutils.ExpectNoError(err)

if r.MatchString(logs) {
Expand All @@ -183,7 +183,7 @@ func ignoreRestoreError(csv string, operand *version.Operand, ispn *ispnv1.Infin
}

if strings.Contains(restore.Status.Reason, "EOF") {
logs, err := testKube.Kubernetes.Logs(restore.Name, restore.Namespace, false, ctx)
logs, err := testKube.Kubernetes.Logs(provision.InfinispanContainer, restore.Name, restore.Namespace, false, ctx)
tutils.ExpectNoError(err)

if operand.UpstreamVersion.LT(semver.Version{Major: 14, Minor: 0, Patch: 18}) {
Expand All @@ -207,7 +207,7 @@ func ignoreRestoreError(csv string, operand *version.Operand, ispn *ispnv1.Infin
}

if strings.Contains(restore.Status.Reason, "unable to retrieve Restore with name") {
logs, err := testKube.Kubernetes.Logs(restore.Name, restore.Namespace, false, ctx)
logs, err := testKube.Kubernetes.Logs(provision.InfinispanContainer, restore.Name, restore.Namespace, false, ctx)
tutils.ExpectNoError(err)

// Ignore https://github.com/infinispan/infinispan/issues/13571
Expand Down
34 changes: 18 additions & 16 deletions test/e2e/utils/kubernetes.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,13 @@ import (

ispnv1 "github.com/infinispan/infinispan-operator/api/v1"
ispnv2 "github.com/infinispan/infinispan-operator/api/v2alpha1"
"github.com/infinispan/infinispan-operator/controllers"
consts "github.com/infinispan/infinispan-operator/controllers/constants"
"github.com/infinispan/infinispan-operator/launcher/operator"
ispnClient "github.com/infinispan/infinispan-operator/pkg/infinispan/client"
"github.com/infinispan/infinispan-operator/pkg/infinispan/version"
kube "github.com/infinispan/infinispan-operator/pkg/kubernetes"
"github.com/infinispan/infinispan-operator/pkg/reconcile/pipeline/infinispan/handler/provision"
routev1 "github.com/openshift/api/route/v1"
"go.uber.org/zap/zapcore"
"gopkg.in/yaml.v2"
Expand Down Expand Up @@ -175,20 +177,20 @@ func (k TestKubernetes) CleanNamespaceAndLogWithPanic(t *testing.T, namespace st
err = os.MkdirAll(eventDir, os.ModePerm)
LogError(err)

k.WriteAllResourcesToFile(eventDir, namespace, "Event", &corev1.EventList{}, map[string]string{})
k.WriteAllResourcesToFile(dir, namespace, "Pod", &corev1.PodList{}, map[string]string{"app.kubernetes.io/name": "infinispan-operator"})
k.WriteAllResourcesToFile(dir, namespace, "Pod", &corev1.PodList{}, map[string]string{"app": "infinispan-pod"})
k.WriteAllResourcesToFile(dir, namespace, "Pod", &corev1.PodList{}, map[string]string{"app": "infinispan-batch-pod"})
k.WriteAllResourcesToFile(dir, namespace, "Pod", &corev1.PodList{}, map[string]string{"app": "infinispan-zero-pod"})
k.WriteAllResourcesToFile(dir, namespace, "Pod", &corev1.PodList{}, map[string]string{"app": "infinispan-router-pod"})
k.WriteAllResourcesToFile(dir, namespace, "Pod", &corev1.PodList{}, map[string]string{"app": "infinispan-config-listener-pod"})
k.WriteAllResourcesToFile(dir, namespace, "ConfigMap", &corev1.ConfigMapList{}, map[string]string{})
k.WriteAllResourcesToFile(dir, namespace, "StatefulSet", &appsv1.StatefulSetList{}, map[string]string{})
k.WriteAllResourcesToFile(dir, namespace, "Infinispan", &ispnv1.InfinispanList{}, map[string]string{})
k.WriteAllResourcesToFile(dir, namespace, "Backup", &ispnv2.BackupList{}, map[string]string{})
k.WriteAllResourcesToFile(dir, namespace, "Restore", &ispnv2.RestoreList{}, map[string]string{})
k.WriteAllResourcesToFile(dir, namespace, "Batch", &ispnv2.BatchList{}, map[string]string{})
k.WriteAllResourcesToFile(dir, namespace, "Cache", &ispnv2.CacheList{}, map[string]string{})
k.WriteAllResourcesToFile(eventDir, "", namespace, "Event", &corev1.EventList{}, map[string]string{})
k.WriteAllResourcesToFile(dir, "manager", namespace, "Pod", &corev1.PodList{}, map[string]string{"app.kubernetes.io/name": "infinispan-operator"})
k.WriteAllResourcesToFile(dir, provision.InfinispanContainer, namespace, "Pod", &corev1.PodList{}, map[string]string{"app": "infinispan-pod"})
k.WriteAllResourcesToFile(dir, controllers.BatchContainer, namespace, "Pod", &corev1.PodList{}, map[string]string{"app": "infinispan-batch-pod"})
k.WriteAllResourcesToFile(dir, provision.InfinispanContainer, namespace, "Pod", &corev1.PodList{}, map[string]string{"app": "infinispan-zero-pod"})
k.WriteAllResourcesToFile(dir, provision.GossipRouterContainer, namespace, "Pod", &corev1.PodList{}, map[string]string{"app": "infinispan-router-pod"})
k.WriteAllResourcesToFile(dir, provision.InfinispanListenerContainer, namespace, "Pod", &corev1.PodList{}, map[string]string{"app": "infinispan-config-listener-pod"})
k.WriteAllResourcesToFile(dir, "", namespace, "ConfigMap", &corev1.ConfigMapList{}, map[string]string{})
k.WriteAllResourcesToFile(dir, "", namespace, "StatefulSet", &appsv1.StatefulSetList{}, map[string]string{})
k.WriteAllResourcesToFile(dir, "", namespace, "Infinispan", &ispnv1.InfinispanList{}, map[string]string{})
k.WriteAllResourcesToFile(dir, "", namespace, "Backup", &ispnv2.BackupList{}, map[string]string{})
k.WriteAllResourcesToFile(dir, "", namespace, "Restore", &ispnv2.RestoreList{}, map[string]string{})
k.WriteAllResourcesToFile(dir, "", namespace, "Batch", &ispnv2.BatchList{}, map[string]string{})
k.WriteAllResourcesToFile(dir, "", namespace, "Cache", &ispnv2.CacheList{}, map[string]string{})
k.WriteAllMetricsToFile(dir, namespace)
}

Expand Down Expand Up @@ -223,7 +225,7 @@ func (k TestKubernetes) CleanNamespaceAndLogWithPanic(t *testing.T, namespace st
}
}

func (k TestKubernetes) WriteAllResourcesToFile(dir, namespace, suffix string, list runtime.Object, set labels.Set) {
func (k TestKubernetes) WriteAllResourcesToFile(dir, container, namespace, suffix string, list runtime.Object, set labels.Set) {
err := k.Kubernetes.ResourcesList(namespace, set, list, context.TODO())
LogError(err)

Expand All @@ -238,7 +240,7 @@ func (k TestKubernetes) WriteAllResourcesToFile(dir, namespace, suffix string, l
if strings.Contains(reflect.TypeOf(list).String(), "PodList") {

writeLog := func(previous bool) {
log, err := k.Kubernetes.Logs(item.GetName(), namespace, previous, context.TODO())
log, err := k.Kubernetes.Logs(container, item.GetName(), namespace, previous, context.TODO())
if previous && k8serrors.IsNotFound(err) {
return
}
Expand Down
18 changes: 9 additions & 9 deletions test/e2e/utils/olm.go
Original file line number Diff line number Diff line change
Expand Up @@ -141,19 +141,19 @@ func (k TestKubernetes) CleanupOLMTest(t *testing.T, testIdentifier, subName, su
LogError(err)
}

k.WriteAllResourcesToFile(dir, subNamespace, "OperatorGroup", &coreosv1.OperatorGroupList{}, map[string]string{})
k.WriteAllResourcesToFile(dir, subNamespace, "Subscription", &coreos.SubscriptionList{}, map[string]string{})
k.WriteAllResourcesToFile(dir, subNamespace, "InstallPlan", &coreos.InstallPlanList{}, map[string]string{})
k.WriteAllResourcesToFile(dir, subNamespace, "ClusterServiceVersion", &coreos.ClusterServiceVersionList{}, map[string]string{})
k.WriteAllResourcesToFile(dir, subNamespace, "Deployment", &appsv1.DeploymentList{}, map[string]string{})
k.WriteAllResourcesToFile(dir, "", subNamespace, "OperatorGroup", &coreosv1.OperatorGroupList{}, map[string]string{})
k.WriteAllResourcesToFile(dir, "", subNamespace, "Subscription", &coreos.SubscriptionList{}, map[string]string{})
k.WriteAllResourcesToFile(dir, "", subNamespace, "InstallPlan", &coreos.InstallPlanList{}, map[string]string{})
k.WriteAllResourcesToFile(dir, "", subNamespace, "ClusterServiceVersion", &coreos.ClusterServiceVersionList{}, map[string]string{})
k.WriteAllResourcesToFile(dir, "", subNamespace, "Deployment", &appsv1.DeploymentList{}, map[string]string{})
// Print 2.1.x Operator pod logs
k.WriteAllResourcesToFile(dir, subNamespace, "Pod", &corev1.PodList{}, map[string]string{"name": "infinispan-operator"})
k.WriteAllResourcesToFile(dir, "manager", subNamespace, "Pod", &corev1.PodList{}, map[string]string{"name": "infinispan-operator"})
// Print latest Operator logs
k.WriteAllResourcesToFile(dir, subNamespace, "Pod", &corev1.PodList{}, map[string]string{"app.kubernetes.io/name": "infinispan-operator"})
k.WriteAllResourcesToFile(dir, "manager", subNamespace, "Pod", &corev1.PodList{}, map[string]string{"app.kubernetes.io/name": "infinispan-operator"})
// OLM Operator Logs
olmNamespace := k.OLMNamespace()
k.WriteAllResourcesToFile(dir, olmNamespace, "Pod", &corev1.PodList{}, map[string]string{"app": "olm-operator"})
k.WriteAllResourcesToFile(dir, olmNamespace, "Pod", &corev1.PodList{}, map[string]string{"app": "catalog-operator"})
k.WriteAllResourcesToFile(dir, "olm-operator", olmNamespace, "Pod", &corev1.PodList{}, map[string]string{"app": "olm-operator"})
k.WriteAllResourcesToFile(dir, "catalog-operator", olmNamespace, "Pod", &corev1.PodList{}, map[string]string{"app": "catalog-operator"})
}

// Cleanup OLM resources
Expand Down

0 comments on commit f594fac

Please sign in to comment.