blob: ec2ae70d8ec277c1301bc00a2fc6d1138254f759 [file] [log] [blame]
#!/usr/bin/env -S nu --stdin
#######################################################################################
# Copyright ETSI Contributors and Others.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#######################################################################################
use std assert
use ../../krm/patch.nu *
# --- resource keep tests ---
export def "test patch resource keep no filters" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let actual: record = $resourcelist | resource keep
let expected: record = $resourcelist
assert equal $actual $expected
}
export def "test patch resource keep by apiVersion" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let actual: record = $resourcelist | resource keep "apps/v1"
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
assert equal $actual $expected
}
export def "test patch resource keep by kind" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let actual: record = $resourcelist | resource keep '' "Deployment"
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
assert equal $actual $expected
}
export def "test patch resource keep by name" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let actual: record = $resourcelist | resource keep '' '' "example1"
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
]
}
assert equal $actual $expected
}
export def "test patch resource keep by namespace" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let actual: record = $resourcelist | resource keep '' '' '' "default"
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
]
}
assert equal $actual $expected
}
export def "test patch resource keep multiple filters" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let actual: record = $resourcelist | resource keep "apps/v1" "Deployment" '' "default"
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
]
}
assert equal $actual $expected
}
export def "test patch resource keep invalid input" []: [
nothing -> nothing
] {
let invalid_input: record = {kind: "Invalid kind"}
let error_occurred: any = try {
$invalid_input | resource keep
} catch {
|err| $err.msg
}
assert ($error_occurred | str starts-with "Error: Expected a ResourceList, but received")
}
# --- resource delete tests ---
export def "test patch resource delete no filters" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let actual: record = $resourcelist | resource delete
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: []
}
assert equal $actual $expected
}
export def "test patch resource delete by apiVersion" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let actual: record = $resourcelist | resource delete "apps/v1"
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
]
}
assert equal $actual $expected
}
export def "test patch resource delete by kind" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let actual: record = $resourcelist | resource delete '' "Deployment"
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
]
}
assert equal $actual $expected
}
export def "test patch resource delete by name" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let actual: record = $resourcelist | resource delete '' '' "example1"
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
assert equal $actual $expected
}
export def "test patch resource delete by namespace" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let actual: record = $resourcelist | resource delete '' '' '' "default"
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
assert equal $actual $expected
}
export def "test patch resource delete multiple filters" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let actual: record = $resourcelist | resource delete "apps/v1" "Deployment" '' "default"
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
assert equal $actual $expected
}
export def "test patch resource delete invalid input" []: [
nothing -> nothing
] {
let invalid_input: record = {kind: "Invalid kind"}
let error_occurred: any = try {
echo $invalid_input | resource delete
} catch {
|err| $err.msg
}
assert ($error_occurred | str starts-with "Error: Expected a ResourceList, but received")
}
# --- resource custom function tests ---
export def "test patch resource custom function no filters" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let custom_function: closure = { |k: cell-path, v: any| ($in | upsert $k $v) }
let key_path: cell-path = $.metadata.labels
let value: any = { app: "example" }
let actual: record = $resourcelist | resource custom function $custom_function $key_path $value
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", labels: { app: "example" } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default", labels: { app: "example" } } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other", labels: { app: "example" } } }
]
}
assert equal $actual $expected
}
export def "test patch resource custom function by apiVersion" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let custom_function: closure = { |k: cell-path, v: any| ($in | upsert $k $v) }
let key_path: cell-path = $.metadata.labels
let value: any = { app: "example" }
let actual: record = $resourcelist | resource custom function $custom_function $key_path $value "apps/v1"
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", labels: { app: "example" } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other", labels: { app: "example" } } }
]
}
assert equal $actual $expected
}
export def "test patch resource custom function by kind" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let custom_function: closure = { |k: cell-path, v: any| ($in | upsert $k $v) }
let key_path: cell-path = $.metadata.labels
let value: any = { app: "example" }
let actual: record = $resourcelist | resource custom function $custom_function $key_path $value '' "Deployment"
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", labels: { app: "example" } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other", labels: { app: "example" } } }
]
}
assert equal $actual $expected
}
export def "test patch resource custom function by name" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let custom_function: closure = { |k: cell-path, v: any| ($in | upsert $k $v) }
let key_path: cell-path = $.metadata.labels
let value: any = { app: "example" }
let actual: record = $resourcelist | resource custom function $custom_function $key_path $value '' '' "example1"
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", labels: { app: "example" } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
assert equal $actual $expected
}
export def "test patch resource custom function by namespace" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let custom_function: closure = { |k: cell-path, v: any| ($in | upsert $k $v) }
let key_path: cell-path = $.metadata.labels
let value: any = { app: "example" }
let actual: record = $resourcelist | resource custom function $custom_function $key_path $value '' '' '' "default"
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", labels: { app: "example" } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default", labels: { app: "example" } } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
assert equal $actual $expected
}
export def "test patch resource custom function multiple filters" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let custom_function: closure = { |k: cell-path, v: any| ($in | upsert $k $v) }
let key_path: cell-path = $.metadata.labels
let value: any = { app: "example" }
let actual: record = $resourcelist | resource custom function $custom_function $key_path $value "apps/v1" "Deployment" '' "default"
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", labels: { app: "example" } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
assert equal $actual $expected
}
export def "test patch resource custom function invalid input" []: [
nothing -> nothing
] {
let invalid_input: record = {kind: "Invalid kind"}
let error_occurred: any = try {
$invalid_input | resource custom function {|item, key_path, value| $item | update $key_path $value } $.metadata.labels { app: "example" }
} catch {
|err| $err.msg
}
assert ($error_occurred | str starts-with "Error: Expected a ResourceList, but received")
}
# --- resource upsert key tests ---
export def "test patch resource upsert key no filters" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let key_path: cell-path = $.metadata.labels
let value: any = { app: "example" }
let actual: record = $resourcelist | resource upsert key $key_path $value
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", labels: { app: "example" } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default", labels: { app: "example" } } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other", labels: { app: "example" } } }
]
}
assert equal $actual $expected
}
export def "test patch resource upsert key by apiVersion" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let key_path: cell-path = $.metadata.labels
let value: any = { app: "example" }
let actual: record = $resourcelist | resource upsert key $key_path $value "apps/v1"
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", labels: { app: "example" } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other", labels: { app: "example" } } }
]
}
assert equal $actual $expected
}
export def "test patch resource upsert key by kind" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let key_path: cell-path = $.metadata.labels
let value: any = { app: "example" }
let actual: record = $resourcelist | resource upsert key $key_path $value '' "Deployment"
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", labels: { app: "example" } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other", labels: { app: "example" } } }
]
}
assert equal $actual $expected
}
export def "test patch resource upsert key by name" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let key_path: cell-path = $.metadata.labels
let value: any = { app: "example" }
let actual: record = $resourcelist | resource upsert key $key_path $value '' '' "example1"
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", labels: { app: "example" } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
assert equal $actual $expected
}
export def "test patch resource upsert key by namespace" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let key_path: cell-path = $.metadata.labels
let value: any = { app: "example" }
let actual: record = $resourcelist | resource upsert key $key_path $value '' '' '' "default"
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", labels: { app: "example" } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default", labels: { app: "example" } } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
assert equal $actual $expected
}
export def "test patch resource upsert key multiple filters" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let key_path: cell-path = $.metadata.labels
let value: any = { app: "example" }
let actual: record = $resourcelist | resource upsert key $key_path $value "apps/v1" "Deployment" '' "default"
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", labels: { app: "example" } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
assert equal $actual $expected
}
export def "test patch resource upsert key invalid input" []: [
nothing -> nothing
] {
let invalid_input: record = {kind: "Invalid kind"}
let error_occurred: any = try {
$invalid_input | resource upsert key $.metadata.labels { app: "example" }
} catch {
|err| $err.msg
}
assert ($error_occurred | str starts-with "Error: Expected a ResourceList, but received")
}
# --- resource filename set tests ---
export def "test patch resource filename set no index" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let filename: string = "example.yaml"
let actual: record = $resourcelist | resource filename set $filename
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", annotations: { "config.kubernetes.io/path": $filename, "internal.config.kubernetes.io/path": $filename } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default", annotations: { "config.kubernetes.io/path": $filename, "internal.config.kubernetes.io/path": $filename } } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other", annotations: { "config.kubernetes.io/path": $filename, "internal.config.kubernetes.io/path": $filename } } }
]
}
assert equal $actual $expected
}
export def "test patch resource filename set with index" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let filename: string = "example.yaml"
let index: int = 0
let actual: record = $resourcelist | resource filename set --index $index $filename
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", annotations: { "config.kubernetes.io/path": $filename, "internal.config.kubernetes.io/path": $filename, "config.kubernetes.io/index": "0", "internal.config.kubernetes.io/index": "0" } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default", annotations: { "config.kubernetes.io/path": $filename, "internal.config.kubernetes.io/path": $filename, "config.kubernetes.io/index": "0", "internal.config.kubernetes.io/index": "0" } } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other", annotations: { "config.kubernetes.io/path": $filename, "internal.config.kubernetes.io/path": $filename, "config.kubernetes.io/index": "0", "internal.config.kubernetes.io/index": "0" } } }
]
}
assert equal $actual $expected
}
export def "test patch resource filename set by apiVersion" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let filename: string = "example.yaml"
let actual: record = $resourcelist | resource filename set $filename "apps/v1"
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", annotations: { "config.kubernetes.io/path": $filename, "internal.config.kubernetes.io/path": $filename } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other", annotations: { "config.kubernetes.io/path": $filename, "internal.config.kubernetes.io/path": $filename } } }
]
}
assert equal $actual $expected
}
export def "test patch resource filename set by kind" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let filename: string = "example.yaml"
let actual: record = $resourcelist | resource filename set $filename '' "Deployment"
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", annotations: { "config.kubernetes.io/path": $filename, "internal.config.kubernetes.io/path": $filename } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other", annotations: { "config.kubernetes.io/path": $filename, "internal.config.kubernetes.io/path": $filename } } }
]
}
assert equal $actual $expected
}
export def "test patch resource filename set by name" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let filename: string = "example.yaml"
let actual: record = $resourcelist | resource filename set $filename '' '' "example1"
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", annotations: { "config.kubernetes.io/path": $filename, "internal.config.kubernetes.io/path": $filename } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
assert equal $actual $expected
}
export def "test patch resource filename set by namespace" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let filename: string = "example.yaml"
let actual: record = $resourcelist | resource filename set $filename '' '' '' "default"
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", annotations: { "config.kubernetes.io/path": $filename, "internal.config.kubernetes.io/path": $filename } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default", annotations: { "config.kubernetes.io/path": $filename, "internal.config.kubernetes.io/path": $filename } } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
assert equal $actual $expected
}
export def "test patch resource filename set multiple filters" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let filename: string = "example.yaml"
let actual: record = $resourcelist | resource filename set $filename "apps/v1" "Deployment" '' "default"
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", annotations: { "config.kubernetes.io/path": $filename, "internal.config.kubernetes.io/path": $filename } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
assert equal $actual $expected
}
# TODO:
# --- list append item tests ---
export def "test patch list append item no filters" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let key_path: cell-path = $.metadata.annotations.example
let value: any = "example-value"
let actual: record = $resourcelist | list append item $key_path $value
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", annotations: { example: ["example-value"] } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default", annotations: { example: ["example-value"] } } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other", annotations: { example: ["example-value"] } } }
]
}
assert equal $actual $expected
}
export def "test patch list append item existing list" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", annotations: { example: ["initial-value"] } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default", annotations: { example: ["initial-value"] } } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other", annotations: { example: ["initial-value"] } } }
]
}
let key_path: cell-path = $.metadata.annotations.example
let value: any = "example-value"
let actual: record = $resourcelist | list append item $key_path $value
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", annotations: { example: ["initial-value", "example-value"] } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default", annotations: { example: ["initial-value", "example-value"] } } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other", annotations: { example: ["initial-value", "example-value"] } } }
]
}
assert equal $actual $expected
}
export def "test patch list append item existing non-list value" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", annotations: { example: "initial-value" } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default", annotations: { example: "initial-value" } } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other", annotations: { example: "initial-value" } } }
]
}
let key_path: cell-path = $.metadata.annotations.example
let value: any = "example-value"
let error_occurred: any = try {
$resourcelist | list append item $key_path $value
} catch {
|err| $err.msg
}
assert ($error_occurred | str starts-with "Error: Some matching keys are not lists. Non conformant:")
}
export def "test patch list append item by apiVersion" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let key_path: cell-path = $.metadata.annotations.example
let value: any = "example-value"
let actual: record = $resourcelist | list append item $key_path $value "apps/v1"
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", annotations: { example: ["example-value"] } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other", annotations: { example: ["example-value"] } } }
]
}
assert equal $actual $expected
}
export def "test patch list append item by kind" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let key_path: cell-path = $.metadata.annotations.example
let value: any = "example-value"
let actual: record = $resourcelist | list append item $key_path $value '' "Deployment"
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", annotations: { example: ["example-value"] } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other", annotations: { example: ["example-value"] } } }
]
}
assert equal $actual $expected
}
export def "test patch list append item by name" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let key_path: cell-path = $.metadata.annotations.example
let value: any = "example-value"
let actual: record = $resourcelist | list append item $key_path $value '' '' "example1"
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", annotations: { example: ["example-value"] } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
assert equal $actual $expected
}
export def "test patch list append item by namespace" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let key_path: cell-path = $.metadata.annotations.example
let value: any = "example-value"
let actual: record = $resourcelist | list append item $key_path $value '' '' '' "default"
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", annotations: { example: ["example-value"] } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default", annotations: { example: ["example-value"] } } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
assert equal $actual $expected
}
export def "test patch list append item multiple filters" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default" } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
let key_path: cell-path = $.metadata.annotations.example
let value: any = "example-value"
let actual: record = $resourcelist | list append item $key_path $value "apps/v1" 'Deployment' '' "default"
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", annotations: { example: ["example-value"] } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default" } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other" } }
]
}
assert equal $actual $expected
}
# TODO:
# --- list drop item tests ---
export def "test patch list drop item no filters" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", annotations: { example: ["value1", "value2"] } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default", annotations: { example: ["value1", "value2"] } } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other", annotations: { example: ["value1", "value2"] } } }
]
}
let key_path: cell-path = $.metadata.annotations.example
let value: any = "value1"
let actual: record = $resourcelist | list drop item $key_path $value
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", annotations: { example: ["value2"] } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default", annotations: { example: ["value2"] } } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other", annotations: { example: ["value2"] } } }
]
}
assert equal $actual $expected
}
export def "test patch list drop item existing list with multiple values" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", annotations: { example: ["value1", "value2", "value3"] } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default", annotations: { example: ["value1", "value2", "value3"] } } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other", annotations: { example: ["value1", "value2", "value3"] } } }
]
}
let key_path: cell-path = $.metadata.annotations.example
let value: any = "value2"
let actual: record = $resourcelist | list drop item $key_path $value
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", annotations: { example: ["value1", "value3"] } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default", annotations: { example: ["value1", "value3"] } } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other", annotations: { example: ["value1", "value3"] } } }
]
}
assert equal $actual $expected
}
export def "test patch list drop item existing non-list value" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", annotations: { example: "value1" } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default", annotations: { example: "value1" } } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other", annotations: { example: "value1" } } }
]
}
let key_path: cell-path = $.metadata.annotations.example
let value: any = "value1"
let error_occurred: any = try {
$resourcelist | list drop item $key_path $value
} catch {
|err| $err.msg
}
assert ($error_occurred | str starts-with "Error: Some matching keys are not lists. Non conformant:")
}
export def "test patch list drop item by apiVersion" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", annotations: { example: ["value1", "value2"] } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default", annotations: { example: ["value1", "value2"] } } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other", annotations: { example: ["value1", "value2"] } } }
]
}
let key_path: cell-path = $.metadata.annotations.example
let value: any = "value1"
let actual: record = $resourcelist | list drop item $key_path $value "apps/v1"
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", annotations: { example: ["value2"] } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default", annotations: { example: ["value1", "value2"] } } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other", annotations: { example: ["value2"] } } }
]
}
assert equal $actual $expected
}
export def "test patch list drop item by kind" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", annotations: { example: ["value1", "value2"] } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default", annotations: { example: ["value1", "value2"] } } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other", annotations: { example: ["value1", "value2"] } } }
]
}
let key_path: cell-path = $.metadata.annotations.example
let value: any = "value1"
let actual: record = $resourcelist | list drop item $key_path $value '' "Deployment"
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", annotations: { example: ["value2"] } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default", annotations: { example: ["value1", "value2"] } } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other", annotations: { example: ["value2"] } } }
]
}
assert equal $actual $expected
}
export def "test patch list drop item by name" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", annotations: { example: ["value1", "value2"] } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default", annotations: { example: ["value1", "value2"] } } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other", annotations: { example: ["value1", "value2"] } } }
]
}
let key_path: cell-path = $.metadata.annotations.example
let value: any = "value1"
let actual: record = $resourcelist | list drop item $key_path $value '' '' "example1"
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", annotations: { example: ["value2"] } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default", annotations: { example: ["value1", "value2"] } } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other", annotations: { example: ["value1", "value2"] } } }
]
}
assert equal $actual $expected
}
export def "test patch list drop item by namespace" []: [
nothing -> nothing
] {
let resourcelist: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", annotations: { example: ["value1", "value2"] } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default", annotations: { example: ["value1", "value2"] } } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other", annotations: { example: ["value1", "value2"] } } }
]
}
let key_path: cell-path = $.metadata.annotations.example
let value: any = "value1"
let actual: record = $resourcelist | list drop item $key_path $value '' '' '' "default"
let expected: record = {
apiVersion: "config.kubernetes.io/v1"
kind: "ResourceList"
items: [
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example1", namespace: "default", annotations: { example: ["value2"] } } }
{ apiVersion: "v1", kind: "Pod", metadata: { name: "example2", namespace: "default", annotations: { example: ["value2"] } } }
{ apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "example3", namespace: "other", annotations: { example: ["value1", "value2"] } } }
]
}
assert equal $actual $expected
}