From 752f7fe7d6674624417a4f97a10e6acc7a3abe90 Mon Sep 17 00:00:00 2001
From: Pawel Wieczorek
Date: Mon, 30 Sep 2019 14:39:32 +0200
Subject: k8s: Resolve Docker response formatting issue
Checker collects information on cluster by Docker queries:
$ docker ps ARGS... # Casablanca
$ docker inspect ARGS... # Dublin
Arrays of values are then filtered from those. They include:
* opening bracket ('['),
* closing bracket (']'),
* new line.
Additional characters affect check results if last flag (including
"]\n") requires specific value.
Issue-ID: SECCOM-235
Change-Id: I6838342b7e2ecdc44a47ffe02286266003e0b4d3
Signed-off-by: Pawel Wieczorek
---
test/security/k8s/src/check/rancher/rancher.go | 9 +++++++++
test/security/k8s/src/check/raw/raw.go | 9 +++++++++
2 files changed, 18 insertions(+)
(limited to 'test/security/k8s/src/check')
diff --git a/test/security/k8s/src/check/rancher/rancher.go b/test/security/k8s/src/check/rancher/rancher.go
index 842fd3ff6..b5e382221 100644
--- a/test/security/k8s/src/check/rancher/rancher.go
+++ b/test/security/k8s/src/check/rancher/rancher.go
@@ -58,6 +58,7 @@ func getProcessParams(process check.Command, service check.Service) ([]string, e
return []string{}, err
}
+ cmd = trimOutput(cmd) // TODO: improve `docker ps` query format.
if len(cmd) > 0 {
i := bytes.Index(cmd, []byte(process.String()))
if i == -1 {
@@ -99,6 +100,14 @@ func getPsCmdOutput(host string, service check.Service) ([]byte, error) {
return out, nil
}
+// trimOutput removes trailing new line and brackets from output.
+func trimOutput(b []byte) []byte {
+ b = bytes.TrimSpace(b)
+ b = bytes.TrimPrefix(b, []byte("["))
+ b = bytes.TrimSuffix(b, []byte("]"))
+ return b
+}
+
// btos converts slice of bytes to slice of strings split by white space characters.
func btos(in []byte) []string {
var out []string
diff --git a/test/security/k8s/src/check/raw/raw.go b/test/security/k8s/src/check/raw/raw.go
index 04a6fa554..555115950 100644
--- a/test/security/k8s/src/check/raw/raw.go
+++ b/test/security/k8s/src/check/raw/raw.go
@@ -59,6 +59,7 @@ func getProcessParams(process check.Command) ([]string, error) {
return []string{}, err
}
+ cmd = trimOutput(cmd) // TODO: improve `docker inspect` query format.
if len(cmd) > 0 {
i := bytes.Index(cmd, []byte(process.String()))
if i == -1 {
@@ -158,6 +159,14 @@ func runCommand(cmd string, conn *ssh.Client) ([]byte, error) {
return out, nil
}
+// trimOutput removes trailing new line and brackets from output.
+func trimOutput(b []byte) []byte {
+ b = bytes.TrimSpace(b)
+ b = bytes.TrimPrefix(b, []byte("["))
+ b = bytes.TrimSuffix(b, []byte("]"))
+ return b
+}
+
// btos converts slice of bytes to slice of strings split by white space characters.
func btos(in []byte) []string {
var out []string
--
cgit 1.2.3-korg