Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
ee33395b
Unverified
Commit
ee33395b
authored
Jan 29, 2019
by
Kubernetes Prow Robot
Committed by
GitHub
Jan 29, 2019
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #73443 from caesarxuchao/update-json-patch
Pick up latest json-patch patches
parents
be339177
404c057b
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
90 additions
and
23 deletions
+90
-23
Godeps.json
Godeps/Godeps.json
+2
-2
Godeps.json
...ing/src/k8s.io/apiextensions-apiserver/Godeps/Godeps.json
+1
-1
Godeps.json
staging/src/k8s.io/apimachinery/Godeps/Godeps.json
+1
-1
Godeps.json
staging/src/k8s.io/apiserver/Godeps/Godeps.json
+1
-1
Godeps.json
staging/src/k8s.io/cli-runtime/Godeps/Godeps.json
+1
-1
Godeps.json
staging/src/k8s.io/client-go/Godeps/Godeps.json
+1
-1
Godeps.json
staging/src/k8s.io/csi-api/Godeps/Godeps.json
+1
-1
Godeps.json
staging/src/k8s.io/kube-aggregator/Godeps/Godeps.json
+1
-1
Godeps.json
staging/src/k8s.io/metrics/Godeps/Godeps.json
+1
-1
Godeps.json
staging/src/k8s.io/node-api/Godeps/Godeps.json
+1
-1
Godeps.json
staging/src/k8s.io/sample-apiserver/Godeps/Godeps.json
+1
-1
Godeps.json
staging/src/k8s.io/sample-cli-plugin/Godeps/Godeps.json
+1
-1
Godeps.json
staging/src/k8s.io/sample-controller/Godeps/Godeps.json
+1
-1
README.md
vendor/github.com/evanphx/json-patch/README.md
+17
-0
patch.go
vendor/github.com/evanphx/json-patch/patch.go
+59
-9
No files found.
Godeps/Godeps.json
View file @
ee33395b
...
@@ -1555,8 +1555,8 @@
...
@@ -1555,8 +1555,8 @@
},
},
{
{
"ImportPath"
:
"github.com/evanphx/json-patch"
,
"ImportPath"
:
"github.com/evanphx/json-patch"
,
"Comment"
:
"v4.
0.0-3-g36442dbdb58521
"
,
"Comment"
:
"v4.
1.0-11-gd4020504c68b6b
"
,
"Rev"
:
"
36442dbdb585210f8d5a1b45e67aa323c197d5c4
"
"Rev"
:
"
d4020504c68b6bfa818032bedfb48e33e9638506
"
},
},
{
{
"ImportPath"
:
"github.com/exponent-io/jsonpath"
,
"ImportPath"
:
"github.com/exponent-io/jsonpath"
,
...
...
staging/src/k8s.io/apiextensions-apiserver/Godeps/Godeps.json
View file @
ee33395b
...
@@ -372,7 +372,7 @@
...
@@ -372,7 +372,7 @@
},
},
{
{
"ImportPath"
:
"github.com/evanphx/json-patch"
,
"ImportPath"
:
"github.com/evanphx/json-patch"
,
"Rev"
:
"
36442dbdb585210f8d5a1b45e67aa323c197d5c4
"
"Rev"
:
"
d4020504c68b6bfa818032bedfb48e33e9638506
"
},
},
{
{
"ImportPath"
:
"github.com/ghodss/yaml"
,
"ImportPath"
:
"github.com/ghodss/yaml"
,
...
...
staging/src/k8s.io/apimachinery/Godeps/Godeps.json
View file @
ee33395b
...
@@ -24,7 +24,7 @@
...
@@ -24,7 +24,7 @@
},
},
{
{
"ImportPath"
:
"github.com/evanphx/json-patch"
,
"ImportPath"
:
"github.com/evanphx/json-patch"
,
"Rev"
:
"
36442dbdb585210f8d5a1b45e67aa323c197d5c4
"
"Rev"
:
"
d4020504c68b6bfa818032bedfb48e33e9638506
"
},
},
{
{
"ImportPath"
:
"github.com/gogo/protobuf/proto"
,
"ImportPath"
:
"github.com/gogo/protobuf/proto"
,
...
...
staging/src/k8s.io/apiserver/Godeps/Godeps.json
View file @
ee33395b
...
@@ -372,7 +372,7 @@
...
@@ -372,7 +372,7 @@
},
},
{
{
"ImportPath"
:
"github.com/evanphx/json-patch"
,
"ImportPath"
:
"github.com/evanphx/json-patch"
,
"Rev"
:
"
36442dbdb585210f8d5a1b45e67aa323c197d5c4
"
"Rev"
:
"
d4020504c68b6bfa818032bedfb48e33e9638506
"
},
},
{
{
"ImportPath"
:
"github.com/ghodss/yaml"
,
"ImportPath"
:
"github.com/ghodss/yaml"
,
...
...
staging/src/k8s.io/cli-runtime/Godeps/Godeps.json
View file @
ee33395b
...
@@ -12,7 +12,7 @@
...
@@ -12,7 +12,7 @@
},
},
{
{
"ImportPath"
:
"github.com/evanphx/json-patch"
,
"ImportPath"
:
"github.com/evanphx/json-patch"
,
"Rev"
:
"
36442dbdb585210f8d5a1b45e67aa323c197d5c4
"
"Rev"
:
"
d4020504c68b6bfa818032bedfb48e33e9638506
"
},
},
{
{
"ImportPath"
:
"github.com/gogo/protobuf/proto"
,
"ImportPath"
:
"github.com/gogo/protobuf/proto"
,
...
...
staging/src/k8s.io/client-go/Godeps/Godeps.json
View file @
ee33395b
...
@@ -56,7 +56,7 @@
...
@@ -56,7 +56,7 @@
},
},
{
{
"ImportPath"
:
"github.com/evanphx/json-patch"
,
"ImportPath"
:
"github.com/evanphx/json-patch"
,
"Rev"
:
"
36442dbdb585210f8d5a1b45e67aa323c197d5c4
"
"Rev"
:
"
d4020504c68b6bfa818032bedfb48e33e9638506
"
},
},
{
{
"ImportPath"
:
"github.com/gogo/protobuf/proto"
,
"ImportPath"
:
"github.com/gogo/protobuf/proto"
,
...
...
staging/src/k8s.io/csi-api/Godeps/Godeps.json
View file @
ee33395b
...
@@ -12,7 +12,7 @@
...
@@ -12,7 +12,7 @@
},
},
{
{
"ImportPath"
:
"github.com/evanphx/json-patch"
,
"ImportPath"
:
"github.com/evanphx/json-patch"
,
"Rev"
:
"
36442dbdb585210f8d5a1b45e67aa323c197d5c4
"
"Rev"
:
"
d4020504c68b6bfa818032bedfb48e33e9638506
"
},
},
{
{
"ImportPath"
:
"github.com/gogo/protobuf/proto"
,
"ImportPath"
:
"github.com/gogo/protobuf/proto"
,
...
...
staging/src/k8s.io/kube-aggregator/Godeps/Godeps.json
View file @
ee33395b
...
@@ -96,7 +96,7 @@
...
@@ -96,7 +96,7 @@
},
},
{
{
"ImportPath"
:
"github.com/evanphx/json-patch"
,
"ImportPath"
:
"github.com/evanphx/json-patch"
,
"Rev"
:
"
36442dbdb585210f8d5a1b45e67aa323c197d5c4
"
"Rev"
:
"
d4020504c68b6bfa818032bedfb48e33e9638506
"
},
},
{
{
"ImportPath"
:
"github.com/go-openapi/jsonpointer"
,
"ImportPath"
:
"github.com/go-openapi/jsonpointer"
,
...
...
staging/src/k8s.io/metrics/Godeps/Godeps.json
View file @
ee33395b
...
@@ -12,7 +12,7 @@
...
@@ -12,7 +12,7 @@
},
},
{
{
"ImportPath"
:
"github.com/evanphx/json-patch"
,
"ImportPath"
:
"github.com/evanphx/json-patch"
,
"Rev"
:
"
36442dbdb585210f8d5a1b45e67aa323c197d5c4
"
"Rev"
:
"
d4020504c68b6bfa818032bedfb48e33e9638506
"
},
},
{
{
"ImportPath"
:
"github.com/gogo/protobuf/proto"
,
"ImportPath"
:
"github.com/gogo/protobuf/proto"
,
...
...
staging/src/k8s.io/node-api/Godeps/Godeps.json
View file @
ee33395b
...
@@ -12,7 +12,7 @@
...
@@ -12,7 +12,7 @@
},
},
{
{
"ImportPath"
:
"github.com/evanphx/json-patch"
,
"ImportPath"
:
"github.com/evanphx/json-patch"
,
"Rev"
:
"
36442dbdb585210f8d5a1b45e67aa323c197d5c4
"
"Rev"
:
"
d4020504c68b6bfa818032bedfb48e33e9638506
"
},
},
{
{
"ImportPath"
:
"github.com/gogo/protobuf/proto"
,
"ImportPath"
:
"github.com/gogo/protobuf/proto"
,
...
...
staging/src/k8s.io/sample-apiserver/Godeps/Godeps.json
View file @
ee33395b
...
@@ -88,7 +88,7 @@
...
@@ -88,7 +88,7 @@
},
},
{
{
"ImportPath"
:
"github.com/evanphx/json-patch"
,
"ImportPath"
:
"github.com/evanphx/json-patch"
,
"Rev"
:
"
36442dbdb585210f8d5a1b45e67aa323c197d5c4
"
"Rev"
:
"
d4020504c68b6bfa818032bedfb48e33e9638506
"
},
},
{
{
"ImportPath"
:
"github.com/go-openapi/jsonpointer"
,
"ImportPath"
:
"github.com/go-openapi/jsonpointer"
,
...
...
staging/src/k8s.io/sample-cli-plugin/Godeps/Godeps.json
View file @
ee33395b
...
@@ -12,7 +12,7 @@
...
@@ -12,7 +12,7 @@
},
},
{
{
"ImportPath"
:
"github.com/evanphx/json-patch"
,
"ImportPath"
:
"github.com/evanphx/json-patch"
,
"Rev"
:
"
36442dbdb585210f8d5a1b45e67aa323c197d5c4
"
"Rev"
:
"
d4020504c68b6bfa818032bedfb48e33e9638506
"
},
},
{
{
"ImportPath"
:
"github.com/gogo/protobuf/proto"
,
"ImportPath"
:
"github.com/gogo/protobuf/proto"
,
...
...
staging/src/k8s.io/sample-controller/Godeps/Godeps.json
View file @
ee33395b
...
@@ -12,7 +12,7 @@
...
@@ -12,7 +12,7 @@
},
},
{
{
"ImportPath"
:
"github.com/evanphx/json-patch"
,
"ImportPath"
:
"github.com/evanphx/json-patch"
,
"Rev"
:
"
36442dbdb585210f8d5a1b45e67aa323c197d5c4
"
"Rev"
:
"
d4020504c68b6bfa818032bedfb48e33e9638506
"
},
},
{
{
"ImportPath"
:
"github.com/gogo/protobuf/proto"
,
"ImportPath"
:
"github.com/gogo/protobuf/proto"
,
...
...
vendor/github.com/evanphx/json-patch/README.md
View file @
ee33395b
...
@@ -25,6 +25,23 @@ go get -u github.com/evanphx/json-patch
...
@@ -25,6 +25,23 @@ go get -u github.com/evanphx/json-patch
*
[
Comparing JSON documents
](
#comparing-json-documents
)
*
[
Comparing JSON documents
](
#comparing-json-documents
)
*
[
Combine merge patches
](
#combine-merge-patches
)
*
[
Combine merge patches
](
#combine-merge-patches
)
# Configuration
*
There is a global configuration variable
`jsonpatch.SupportNegativeIndices`
.
This defaults to
`true`
and enables the non-standard practice of allowing
negative indices to mean indices starting at the end of an array. This
functionality can be disabled by setting
`jsonpatch.SupportNegativeIndices =
false`
.
*
There is a global configuration variable
`jsonpatch.ArraySizeLimit`
, which
limits the length of any array the patched object can have. It defaults to 0,
which means there is no limit.
*
There is a global configuration variable
`jsonpatch.ArraySizeAdditionLimit`
,
which limits the increase of array length caused by each operation. It
defaults to 0, which means there is no limit.
## Create and apply a merge patch
## Create and apply a merge patch
Given both an original JSON document and a modified JSON document, you can create
Given both an original JSON document and a modified JSON document, you can create
a
[
Merge Patch
](
https://tools.ietf.org/html/rfc7396
)
document.
a
[
Merge Patch
](
https://tools.ietf.org/html/rfc7396
)
document.
...
...
vendor/github.com/evanphx/json-patch/patch.go
View file @
ee33395b
...
@@ -14,6 +14,10 @@ const (
...
@@ -14,6 +14,10 @@ const (
eAry
eAry
)
)
var
SupportNegativeIndices
bool
=
true
var
ArraySizeLimit
int
=
0
var
ArraySizeAdditionLimit
int
=
0
type
lazyNode
struct
{
type
lazyNode
struct
{
raw
*
json
.
RawMessage
raw
*
json
.
RawMessage
doc
partialDoc
doc
partialDoc
...
@@ -61,6 +65,19 @@ func (n *lazyNode) UnmarshalJSON(data []byte) error {
...
@@ -61,6 +65,19 @@ func (n *lazyNode) UnmarshalJSON(data []byte) error {
return
nil
return
nil
}
}
func
deepCopy
(
src
*
lazyNode
)
(
*
lazyNode
,
error
)
{
if
src
==
nil
{
return
nil
,
nil
}
a
,
err
:=
src
.
MarshalJSON
()
if
err
!=
nil
{
return
nil
,
err
}
ra
:=
make
(
json
.
RawMessage
,
len
(
a
))
copy
(
ra
,
a
)
return
newLazyNode
(
&
ra
),
nil
}
func
(
n
*
lazyNode
)
intoDoc
()
(
*
partialDoc
,
error
)
{
func
(
n
*
lazyNode
)
intoDoc
()
(
*
partialDoc
,
error
)
{
if
n
.
which
==
eDoc
{
if
n
.
which
==
eDoc
{
return
&
n
.
doc
,
nil
return
&
n
.
doc
,
nil
...
@@ -354,10 +371,19 @@ func (d *partialArray) set(key string, val *lazyNode) error {
...
@@ -354,10 +371,19 @@ func (d *partialArray) set(key string, val *lazyNode) error {
}
}
sz
:=
len
(
*
d
)
sz
:=
len
(
*
d
)
if
diff
:=
idx
+
1
-
sz
;
ArraySizeAdditionLimit
>
0
&&
diff
>
ArraySizeAdditionLimit
{
return
fmt
.
Errorf
(
"Unable to increase the array size by %d, the limit is %d"
,
diff
,
ArraySizeAdditionLimit
)
}
if
idx
+
1
>
sz
{
if
idx
+
1
>
sz
{
sz
=
idx
+
1
sz
=
idx
+
1
}
}
if
ArraySizeLimit
>
0
&&
sz
>
ArraySizeLimit
{
return
fmt
.
Errorf
(
"Unable to create array of size %d, limit is %d"
,
sz
,
ArraySizeLimit
)
}
ary
:=
make
([]
*
lazyNode
,
sz
)
ary
:=
make
([]
*
lazyNode
,
sz
)
cur
:=
*
d
cur
:=
*
d
...
@@ -385,17 +411,29 @@ func (d *partialArray) add(key string, val *lazyNode) error {
...
@@ -385,17 +411,29 @@ func (d *partialArray) add(key string, val *lazyNode) error {
return
err
return
err
}
}
ary
:=
make
([]
*
lazyNode
,
len
(
*
d
)
+
1
)
sz
:=
len
(
*
d
)
+
1
if
ArraySizeLimit
>
0
&&
sz
>
ArraySizeLimit
{
return
fmt
.
Errorf
(
"Unable to create array of size %d, limit is %d"
,
sz
,
ArraySizeLimit
)
}
ary
:=
make
([]
*
lazyNode
,
sz
)
cur
:=
*
d
cur
:=
*
d
if
idx
<
-
len
(
ary
)
||
idx
>=
len
(
ary
)
{
if
idx
>=
len
(
ary
)
{
return
fmt
.
Errorf
(
"Unable to access invalid index: %d"
,
idx
)
return
fmt
.
Errorf
(
"Unable to access invalid index: %d"
,
idx
)
}
}
if
idx
<
0
{
if
SupportNegativeIndices
{
idx
+=
len
(
ary
)
if
idx
<
-
len
(
ary
)
{
return
fmt
.
Errorf
(
"Unable to access invalid index: %d"
,
idx
)
}
if
idx
<
0
{
idx
+=
len
(
ary
)
}
}
}
copy
(
ary
[
0
:
idx
],
cur
[
0
:
idx
])
copy
(
ary
[
0
:
idx
],
cur
[
0
:
idx
])
ary
[
idx
]
=
val
ary
[
idx
]
=
val
copy
(
ary
[
idx
+
1
:
],
cur
[
idx
:
])
copy
(
ary
[
idx
+
1
:
],
cur
[
idx
:
])
...
@@ -426,11 +464,18 @@ func (d *partialArray) remove(key string) error {
...
@@ -426,11 +464,18 @@ func (d *partialArray) remove(key string) error {
cur
:=
*
d
cur
:=
*
d
if
idx
<
-
len
(
cur
)
||
idx
>=
len
(
cur
)
{
if
idx
>=
len
(
cur
)
{
return
fmt
.
Errorf
(
"Unable to
remove
invalid index: %d"
,
idx
)
return
fmt
.
Errorf
(
"Unable to
access
invalid index: %d"
,
idx
)
}
}
if
idx
<
0
{
idx
+=
len
(
cur
)
if
SupportNegativeIndices
{
if
idx
<
-
len
(
cur
)
{
return
fmt
.
Errorf
(
"Unable to access invalid index: %d"
,
idx
)
}
if
idx
<
0
{
idx
+=
len
(
cur
)
}
}
}
ary
:=
make
([]
*
lazyNode
,
len
(
cur
)
-
1
)
ary
:=
make
([]
*
lazyNode
,
len
(
cur
)
-
1
)
...
@@ -567,7 +612,12 @@ func (p Patch) copy(doc *container, op operation) error {
...
@@ -567,7 +612,12 @@ func (p Patch) copy(doc *container, op operation) error {
return
fmt
.
Errorf
(
"jsonpatch copy operation does not apply: doc is missing destination path: %s"
,
path
)
return
fmt
.
Errorf
(
"jsonpatch copy operation does not apply: doc is missing destination path: %s"
,
path
)
}
}
return
con
.
set
(
key
,
val
)
valCopy
,
err
:=
deepCopy
(
val
)
if
err
!=
nil
{
return
err
}
return
con
.
add
(
key
,
valCopy
)
}
}
// Equal indicates if 2 JSON documents have the same structural equality.
// Equal indicates if 2 JSON documents have the same structural equality.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment