diff options
| author | KubeEdge Bot <48982446+kubeedge-bot@users.noreply.github.com> | 2023-07-27 11:11:50 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-07-27 11:11:50 +0800 |
| commit | 2aa241e6065419b8cbba316a54a395b03602593b (patch) | |
| tree | dfdc8b14e42112869bfcf2a5265d820dd718b4fe | |
| parent | Merge pull request #4877 from Shelley-BaoYue/automated-cherry-pick-of-#4612-u... (diff) | |
| parent | update pod db when patch successfully (diff) | |
| download | kubeedge-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.go | 29 |
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) +} |
