summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKubeEdge Bot <48982446+kubeedge-bot@users.noreply.github.com>2023-07-27 11:11:50 +0800
committerGitHub <noreply@github.com>2023-07-27 11:11:50 +0800
commit2aa241e6065419b8cbba316a54a395b03602593b (patch)
treedfdc8b14e42112869bfcf2a5265d820dd718b4fe
parentMerge pull request #4877 from Shelley-BaoYue/automated-cherry-pick-of-#4612-u... (diff)
parentupdate pod db when patch successfully (diff)
downloadkubeedge-2aa241e6065419b8cbba316a54a395b03602593b.tar.gz
Merge pull request #4890 from Shelley-BaoYue/automated-cherry-pick-of-#4696-upstream-release-1.14
Automated cherry pick of #4696: update pod db when patch successfully
-rw-r--r--edge/pkg/metamanager/client/pod.go29
1 files changed, 27 insertions, 2 deletions
diff --git a/edge/pkg/metamanager/client/pod.go b/edge/pkg/metamanager/client/pod.go
index f0b3806eb..e522baba0 100644
--- a/edge/pkg/metamanager/client/pod.go
+++ b/edge/pkg/metamanager/client/pod.go
@@ -4,11 +4,13 @@ import (
"encoding/json"
"fmt"
"reflect"
+ "strings"
corev1 "k8s.io/api/core/v1"
apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime/schema"
+ "k8s.io/klog/v2"
"github.com/kubeedge/beehive/pkg/core/model"
"github.com/kubeedge/kubeedge/common/constants"
@@ -110,7 +112,7 @@ func (c *pods) Patch(name string, patchBytes []byte) (*corev1.Pod, error) {
return nil, fmt.Errorf("parse message to pod failed, err: %v", err)
}
- return handlePodResp(content)
+ return handlePodResp(resource, content)
}
func handlePodFromMetaDB(name string, content []byte) (*corev1.Pod, error) {
@@ -139,7 +141,7 @@ func handlePodFromMetaDB(name string, content []byte) (*corev1.Pod, error) {
return pod, nil
}
-func handlePodResp(content []byte) (*corev1.Pod, error) {
+func handlePodResp(resource string, content []byte) (*corev1.Pod, error) {
var podResp PodResp
err := json.Unmarshal(content, &podResp)
if err != nil {
@@ -147,6 +149,9 @@ func handlePodResp(content []byte) (*corev1.Pod, error) {
}
if reflect.DeepEqual(podResp.Err, apierrors.StatusError{}) {
+ if err = updatePodDB(resource, podResp.Object); err != nil {
+ return nil, fmt.Errorf("update pod meta failed, err: %v", err)
+ }
return podResp.Object, nil
}
return podResp.Object, &podResp.Err
@@ -165,3 +170,23 @@ func handleMqttMeta() (*corev1.Pod, error) {
}
return &pod, nil
}
+
+// updatePodDB update pod meta when patch pod successful
+func updatePodDB(resource string, pod *corev1.Pod) error {
+ pod.APIVersion = "v1"
+ pod.Kind = "Pod"
+ podContent, err := json.Marshal(pod)
+ if err != nil {
+ klog.Errorf("unmarshal resp pod failed, err: %v", err)
+ return err
+ }
+
+ podKey := strings.Replace(resource,
+ constants.ResourceSep+model.ResourceTypePodPatch+constants.ResourceSep,
+ constants.ResourceSep+model.ResourceTypePod+constants.ResourceSep, 1)
+ meta := &dao.Meta{
+ Key: podKey,
+ Type: model.ResourceTypePod,
+ Value: string(podContent)}
+ return dao.InsertOrUpdate(meta)
+}