:original_name: cce_02_0086.html .. _cce_02_0086: Patch Request Method Operation Example ====================================== This section provides examples of **Merge Patch** and **Strategic Merge Patch** method operations. Operation Example ----------------- By way of example, **Merge Patch** and **Strategic Merge Patch** method operations are performed at the time of creating a ReplicationController resource object. **Sample request** .. code-block:: { "apiVersion": "v1", "kind": "ReplicationController", "metadata": { "name": "frontend-controller" }, "spec": { "replicas": 2, "selector": { "app": "nginx" }, "template": { "metadata": { "labels": { "app": "nginx" } }, "spec": { "containers": [ { "name": "redis", "image": "redis:latest", "ports": [ { "containerPort": 80 } ] } ] } } } } **Sample response** .. code-block:: { "kind": "ReplicationController", "apiVersion": "v1", "metadata": { "name": "frontend-controller", "namespace": "default", "selfLink": "/api/v1/namespaces/default/replicationcontrollers/nginx-controller", "uid": "549b2234-5d46-11e6-aeb9-286ed488fafe", "resourceVersion": "4110", "generation": 1, "creationTimestamp": "2016-08-08T08:58:52Z", "labels": { "app": "nginx" } }, "spec": { "replicas": 2, "selector": { "app": "nginx" }, "template": { "metadata": { "creationTimestamp": null, "labels": { "app": "nginx" } }, "spec": { "containers": [ { "name": "redis", "image": "redis:latest", "ports": [ { "containerPort": 80, "protocol": "TCP" } ], "resources": {}, "terminationMessagePath": "/dev/termination-log", "imagePullPolicy": "Always" } ], "restartPolicy": "Always", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "securityContext": {} } } }, "status": { "replicas": 0 } } - If you use **Merge Patch** to add a container to the **template** field of a specified ReplicationController, the list of existing containers is then replaced by the newly added container. **Merge Patch request** .. code-block:: { "spec": { "template": { "spec": { "containers": [ { "name": "hello-world", "image": "busybox:latest" } ] } } } } **Merge Patch response** .. code-block:: { "kind": "ReplicationController", "apiVersion": "v1", "metadata": { "name": "frontend-controller", "namespace": "default", "selfLink": "/api/v1/namespaces/default/replicationcontrollers/nginx-controller", "uid": "549b2234-5d46-11e6-aeb9-286ed488fafe", "resourceVersion": "4159", "generation": 2, "creationTimestamp": "2016-08-08T08:58:52Z", "labels": { "app": "nginx" } }, "spec": { "replicas": 2, "selector": { "app": "nginx" }, "template": { "metadata": { "creationTimestamp": null, "labels": { "app": "nginx" } }, "spec": { "containers": [ { "name": "hello-world", "image": "busybox:latest", "resources": {}, "terminationMessagePath": "/dev/termination-log", "imagePullPolicy": "Always" } ], "restartPolicy": "Always", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "securityContext": {} } } }, "status": { "replicas": 2, "fullyLabeledReplicas": 2, "observedGeneration": 1 } } The **containers** are replaced by the newly added container. - If you use **Strategic Merge Patch** to add metadata to a resource object, the new metadata then determines which list should b merged and which should not. **Strategic Merge Patch request** .. code-block:: { "spec": { "template": { "spec": { "containers": [ { "name": "hello-world", "image": "busybox:latest" } ] } } } }' **Strategic Merge Patch response** .. code-block:: { "kind": "ReplicationController", "apiVersion": "v1", "metadata": { "name": "frontend-controller", "namespace": "default", "selfLink": "/api/v1/namespaces/default/replicationcontrollers/nginx-controller", "uid": "f2e048bb-5d46-11e6-aeb9-286ed488fafe", "resourceVersion": "4250", "generation": 2, "creationTimestamp": "2016-08-08T09:03:18Z", "labels": { "app": "nginx" } }, "spec": { "replicas": 2, "selector": { "app": "nginx" }, "template": { "metadata": { "creationTimestamp": null, "labels": { "app": "nginx" } }, "spec": { "containers": [ { "name": "redis", "image": "redis:latest", "ports": [ { "containerPort": 80, "protocol": "TCP" } ], "resources": {}, "terminationMessagePath": "/dev/termination-log", "imagePullPolicy": "Always" }, { "name": "hello-world", "image": "busybox:latest", "resources": {}, "terminationMessagePath": "/dev/termination-log", "imagePullPolicy": "Always" } ], "restartPolicy": "Always", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "securityContext": {} } } }, "status": { "replicas": 2, "fullyLabeledReplicas": 2, "observedGeneration": 1 } } The **containers** merge with the new content according to the value of the **name** field.