Skip to content

Commit

Permalink
fix json resource linting
Browse files Browse the repository at this point in the history
  • Loading branch information
jspaleta committed Dec 4, 2020
1 parent d0b8423 commit 4ebb569
Show file tree
Hide file tree
Showing 2 changed files with 223 additions and 19 deletions.
193 changes: 193 additions & 0 deletions ci-namespaces/ci-namespace/checks/check-cpu.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,193 @@
{
"type": "CheckConfig",
"api_version": "core/v2",
"metadata": {
"name": "cpu",
"namespace": "ci-namespace",
"labels": {
"sensu.io/workflow": "ci_action"
}
},
"spec": {
"check_hooks": null,
"command": "check-cpu.rb",
"env_vars": null,
"handlers": [
"pushover"
],
"high_flap_threshold": 0,
"interval": 30,
"low_flap_threshold": 0,
"output_metric_format": "nagios_perfdata",
"output_metric_handlers": null,
"proxy_entity_name": "",
"publish": true,
"round_robin": false,
"runtime_assets": [
"sensu/sensu-ruby-runtime:0.0.10",
"sensu-plugins/sensu-plugins-cpu-checks:4.1.0"
],
"stdin": false,
"subdue": null,
"subscriptions": [
"linux"
],
"timeout": 10,
"ttl": 0
}
}
{
"type": "Asset",
"api_version": "core/v2",
"metadata": {
"annotations": {
"io.sensu.bonsai.api_url": "https://bonsai.sensu.io/api/v1/assets/sensu-plugins/sensu-plugins-cpu-checks",
"io.sensu.bonsai.name": "sensu-plugins-cpu-checks",
"io.sensu.bonsai.namespace": "sensu-plugins",
"io.sensu.bonsai.tags": "ruby-runtime-2.4.4",
"io.sensu.bonsai.tier": "Community",
"io.sensu.bonsai.url": "https://bonsai.sensu.io/assets/sensu-plugins/sensu-plugins-cpu-checks",
"io.sensu.bonsai.version": "4.1.0"
},
"name": "sensu-plugins/sensu-plugins-cpu-checks:4.1.0",
"labels": {
"sensu.io/workflow": "ci_action"
}
},
"spec": {
"builds": [
{
"filters": [
"entity.system.os == 'linux'",
"entity.system.arch == 'amd64'"
],
"headers": null,
"sha512": "9dd717a7a71fa78b7647b27e9bde303ebf5b14dbf6a9aef6050d30cb6e255058b1c82d1bb9e5dfdcc2ce5ae8a0804964c807500142d09beb2cffb735d93c9797",
"url": "https://assets.bonsai.sensu.io/24e5a5d7ff0a5e63b0a6902f1224b7d4592cbdc9/sensu-plugins-cpu-checks_4.1.0_debian9_linux_amd64.tar.gz"
},
{
"filters": [
"entity.system.os == 'linux'",
"entity.system.arch == 'amd64'",
"entity.system.platform_family == 'debian'"
],
"headers": null,
"sha512": "f0435fd0f138fc1483aa7ca1c5262f336c3d758b862a2b646928f32dd4ee4785847c63d66886127819da036a7a85c4bc22f316dbdc61fc6641db90eb45559baa",
"url": "https://assets.bonsai.sensu.io/24e5a5d7ff0a5e63b0a6902f1224b7d4592cbdc9/sensu-plugins-cpu-checks_4.1.0_debian_linux_amd64.tar.gz"
},
{
"filters": [
"entity.system.os == 'linux'",
"entity.system.arch == 'amd64'",
"entity.system.platform_family == 'rhel'",
"entity.system.platform_version.split('.')[0] == '7'"
],
"headers": null,
"sha512": "8a018622018220323588a0d69ce0ee1e8c3ae72ad708108eb105006e1453a507289445eefb222da838b132106abf86910e2226d2148cc90ae64def9e7d887584",
"url": "https://assets.bonsai.sensu.io/24e5a5d7ff0a5e63b0a6902f1224b7d4592cbdc9/sensu-plugins-cpu-checks_4.1.0_centos7_linux_amd64.tar.gz"
},
{
"filters": [
"entity.system.os == 'linux'",
"entity.system.arch == 'amd64'",
"entity.system.platform_family == 'rhel'",
"entity.system.platform_version.split('.')[0] == '6'"
],
"headers": null,
"sha512": "f42be798f276d29c6076b33199f99da300f9d83d23556eba409a468d45169d2c4b58b397885ce17d78ce5a55bb867d466f3ba995b739584bd5f4957faff3c98b",
"url": "https://assets.bonsai.sensu.io/24e5a5d7ff0a5e63b0a6902f1224b7d4592cbdc9/sensu-plugins-cpu-checks_4.1.0_centos6_linux_amd64.tar.gz"
},
{
"filters": [
"entity.system.os == 'linux'",
"entity.system.arch == 'amd64'",
"entity.system.platform == 'alpine'"
],
"headers": null,
"sha512": "7a5ad2d967d2880076f11dc0ab4abec75dc5f19542a5713cb7694db8f06b186b3834a22dda897797a3dad95ca7e1a8e95cb6b0bc074e416ed6238d861f158071",
"url": "https://assets.bonsai.sensu.io/24e5a5d7ff0a5e63b0a6902f1224b7d4592cbdc9/sensu-plugins-cpu-checks_4.1.0_alpine3.8_linux_amd64.tar.gz"
},
{
"filters": [
"entity.system.os == 'linux'",
"entity.system.arch == 'amd64'",
"entity.system.platform == 'alpine'",
"entity.system.platform_version.split('.')[0] == '3'"
],
"headers": null,
"sha512": "a67676f88d88ff2a9a5e08deab462035c0d129ba37ccac5b4bddafce3d61122e8395adc04036546038c7c76a217376f9600804d531e6139cec69460c746f11f9",
"url": "https://assets.bonsai.sensu.io/24e5a5d7ff0a5e63b0a6902f1224b7d4592cbdc9/sensu-plugins-cpu-checks_4.1.0_alpine_linux_amd64.tar.gz"
}
],
"filters": null,
"headers": null
}
}
{
"type": "Asset",
"api_version": "core/v2",
"metadata": {
"annotations": {
"io.sensu.bonsai.api_url": "https://bonsai.sensu.io/api/v1/assets/sensu/sensu-ruby-runtime",
"io.sensu.bonsai.name": "sensu-ruby-runtime",
"io.sensu.bonsai.namespace": "sensu",
"io.sensu.bonsai.tags": "",
"io.sensu.bonsai.tier": "Community",
"io.sensu.bonsai.url": "https://bonsai.sensu.io/assets/sensu/sensu-ruby-runtime",
"io.sensu.bonsai.version": "0.0.10"
},
"name": "sensu/sensu-ruby-runtime:0.0.10",
"labels": {
"sensu.io/workflow": "ci_action"
}
},
"spec": {
"builds": [
{
"filters": [
"entity.system.os == 'linux'",
"entity.system.arch == 'amd64'",
"entity.system.platform_family == 'rhel'",
"parseInt(entity.system.platform_version.split('.')[0]) == 6"
],
"headers": null,
"sha512": "cbee19124b7007342ce37ff9dfd4a1dde03beb1e87e61ca2aef606a7ad3c9bd0bba4e53873c07afa5ac46b0861967a9224511b4504dadb1a5e8fb687e9495304",
"url": "https://assets.bonsai.sensu.io/5123017d3dadf2067fa90fc28275b92e9b586885/sensu-ruby-runtime_0.0.10_ruby-2.4.4_centos6_linux_amd64.tar.gz"
},
{
"filters": [
"entity.system.os == 'linux'",
"entity.system.arch == 'amd64'",
"entity.system.platform_family == 'debian'"
],
"headers": null,
"sha512": "a28952fd93fc63db1f8988c7bc40b0ad815eb9f35ef7317d6caf5d77ecfbfd824a9db54184400aa0c81c29b34cb48c7e8c6e3f17891aaf84cafa3c134266a61a",
"url": "https://assets.bonsai.sensu.io/5123017d3dadf2067fa90fc28275b92e9b586885/sensu-ruby-runtime_0.0.10_ruby-2.4.4_debian_linux_amd64.tar.gz"
},
{
"filters": [
"entity.system.os == 'linux'",
"entity.system.arch == 'amd64'",
"entity.system.platform_family == 'rhel'",
"parseInt(entity.system.platform_version.split('.')[0]) \u003e 6"
],
"headers": null,
"sha512": "338b88b568a3213fa234640da2e037d1487fc3c639bc62340f2fb71eac8af9a90566cffc768d15035406ac5c049350006d73f3a07ae15f9528e1c6a9af2944cb",
"url": "https://assets.bonsai.sensu.io/5123017d3dadf2067fa90fc28275b92e9b586885/sensu-ruby-runtime_0.0.10_ruby-2.4.4_centos_linux_amd64.tar.gz"
},
{
"filters": [
"entity.system.os == 'linux'",
"entity.system.arch == 'amd64'",
"entity.system.platform == 'alpine'",
"entity.system.platform_version.split('.')[0] == '3'"
],
"headers": null,
"sha512": "8d768d1fba545898a8d09dca603457eb0018ec6829bc5f609a1ea51a2be0c4b2d13e1aa46139ecbb04873449e4c76f463f0bdfbaf2107caf37ab1c8db87d5250",
"url": "https://assets.bonsai.sensu.io/5123017d3dadf2067fa90fc28275b92e9b586885/sensu-ruby-runtime_0.0.10_ruby-2.4.4_alpine_linux_amd64.tar.gz"
}
],
"filters": null,
"headers": null
}
}
49 changes: 30 additions & 19 deletions sensuflow.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env ash

###
# shell script to implement sensuflow
Expand Down Expand Up @@ -125,28 +125,39 @@ function lint_resource_metadata {
if [[ $VERBOSE ]]; then echo "linting resource metadata in $resource_dir"; fi
yaml_files=$(find $resource_dir -name "*.y?ml")
for file in $yaml_files; do
if [[ $required_label ]]; then
items=($(yq read -d '*' $file 'metadata.name'))
labels=($(yq read -d '*' $file "metadata.labels(${required_label}"))
if [ ${#items[@]} -ne ${#labels[@]} ] ; then die "resource in $file may be missing label $MATCHING_LABEL" ; fi
fi
result=$(yq read -d '*' $file 'metadata.namespace')
for line in $result; do
if [[ $allowed_namespace ]]; then
if [ $line -ne $allowed_namespace ]; then die "resource in $file has metadata.namespace defined as $line" ; fi
else
if [[ $required_label ]]; then
items=$(yq read -d '*' $file 'metadata.name'| wc -l)
labels=$(yq read -d '*' $file "metadata.labels(${required_label}" | wc -l)
if [ $items -ne $labels ] ; then die "resource in $file may be missing label $MATCHING_LABEL" ; fi
fi
result=$(yq read -d '*' $file 'metadata.namespace')
for line in $result; do
if [[ $allowed_namespace ]]; then
if [ $line != $allowed_namespace ]; then die "resource in $file has metadata.namespace defined as $line" ; fi
else
if [[ $line ]]; then die "resource in $file has metadata.namespace defined as $line" ; fi
fi
done

fi
done
done
json_files=$(find $resource_dir -name "*.json")
for file in $json_files ; do
result=$(jq $file 'metadata.namespace')
for line in $result; do
if [[ $line ]]; then die "json resource $file has .metadata.namespace defined" ; fi
done
done
if [[ $required_label ]]; then
items=$(jq '.metadata.name' $file| wc -l)
labels=$(jq ".metadata.labels[\"${required_label}\"]" $file | wc -l)
if [ $items -ne $labels ] ; then die "resource in $file may be missing label $MATCHING_LABEL" ; fi
fi
result=$(jq '.metadata.namespace' $file)
for line in $result; do
if [ $line != 'null' ]; then
if [[ $allowed_namespace ]]; then
if [ $line != \"$allowed_namespace\" ]; then die "Error resource in $file has metadata.namespace defined as $line instead of \"$allowed_namespace\"" ; fi
else
if [[ $line ]]; then die "resource in $file has metadata.namespace defined as $line" ; fi
fi
fi
done
done

}

# Main
Expand Down

0 comments on commit 4ebb569

Please sign in to comment.