Compare commits
26 Commits
export_fun
...
random-fix
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
75ce6caa2b | ||
|
|
d05b119a68 | ||
|
|
ed26e692c9 | ||
|
|
5909c728ab | ||
|
|
d77654e763 | ||
|
|
73c3ac1d58 | ||
|
|
083203128c | ||
|
|
ccc2997745 | ||
|
|
1f5ee3d487 | ||
|
|
87ace81dee | ||
|
|
2618e72a46 | ||
|
|
1aac550f66 | ||
|
|
bacaea1b92 | ||
|
|
acfa1f16a1 | ||
|
|
8b68a4d305 | ||
|
|
114d0a13c8 | ||
|
|
c733d2821e | ||
|
|
69306605a3 | ||
|
|
67ec3105f0 | ||
|
|
e69149ec64 | ||
|
|
cedb7f8fca | ||
|
|
fee81b25a6 | ||
|
|
b5eea11050 | ||
|
|
dbf6f6debc | ||
|
|
002b0faaa1 | ||
|
|
a676d10ed0 |
@@ -37,6 +37,9 @@ func pfDnsCheckCmd(q *qliksense.Qliksense) *cobra.Command {
|
|||||||
fmt.Printf("Preflight DNS check FAILED\n")
|
fmt.Printf("Preflight DNS check FAILED\n")
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
if namespace == "" {
|
||||||
|
namespace = "default"
|
||||||
|
}
|
||||||
if err = qp.CheckDns(namespace, kubeConfigContents); err != nil {
|
if err = qp.CheckDns(namespace, kubeConfigContents); err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
fmt.Print("Preflight DNS check FAILED\n")
|
fmt.Print("Preflight DNS check FAILED\n")
|
||||||
@@ -94,6 +97,9 @@ func pfAllChecksCmd(q *qliksense.Qliksense) *cobra.Command {
|
|||||||
fmt.Printf("Running preflight check suite has FAILED...\n")
|
fmt.Printf("Running preflight check suite has FAILED...\n")
|
||||||
log.Fatal()
|
log.Fatal()
|
||||||
}
|
}
|
||||||
|
if namespace == "" {
|
||||||
|
namespace = "default"
|
||||||
|
}
|
||||||
qp.RunAllPreflightChecks(namespace, kubeConfigContents, mongodbUrl)
|
qp.RunAllPreflightChecks(namespace, kubeConfigContents, mongodbUrl)
|
||||||
return nil
|
return nil
|
||||||
|
|
||||||
@@ -121,6 +127,9 @@ func pfDeploymentCheckCmd(q *qliksense.Qliksense) *cobra.Command {
|
|||||||
fmt.Printf("Preflight deployment check FAILED\n")
|
fmt.Printf("Preflight deployment check FAILED\n")
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
if namespace == "" {
|
||||||
|
namespace = "default"
|
||||||
|
}
|
||||||
if err = qp.CheckDeployment(namespace, kubeConfigContents); err != nil {
|
if err = qp.CheckDeployment(namespace, kubeConfigContents); err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
fmt.Print("Preflight deploy check FAILED\n")
|
fmt.Print("Preflight deploy check FAILED\n")
|
||||||
@@ -149,6 +158,9 @@ func pfServiceCheckCmd(q *qliksense.Qliksense) *cobra.Command {
|
|||||||
fmt.Printf("Preflight service check FAILED\n")
|
fmt.Printf("Preflight service check FAILED\n")
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
if namespace == "" {
|
||||||
|
namespace = "default"
|
||||||
|
}
|
||||||
if err = qp.CheckService(namespace, kubeConfigContents); err != nil {
|
if err = qp.CheckService(namespace, kubeConfigContents); err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
fmt.Print("Preflight service check FAILED\n")
|
fmt.Print("Preflight service check FAILED\n")
|
||||||
@@ -177,6 +189,9 @@ func pfPodCheckCmd(q *qliksense.Qliksense) *cobra.Command {
|
|||||||
fmt.Printf("Preflight pod check FAILED\n")
|
fmt.Printf("Preflight pod check FAILED\n")
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
if namespace == "" {
|
||||||
|
namespace = "default"
|
||||||
|
}
|
||||||
if err = qp.CheckPod(namespace, kubeConfigContents); err != nil {
|
if err = qp.CheckPod(namespace, kubeConfigContents); err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
fmt.Print("Preflight pod check FAILED\n")
|
fmt.Print("Preflight pod check FAILED\n")
|
||||||
@@ -272,8 +287,8 @@ func pfCreateServiceAccountCheckCmd(q *qliksense.Qliksense) *cobra.Command {
|
|||||||
return preflightServiceAccountCmd
|
return preflightServiceAccountCmd
|
||||||
}
|
}
|
||||||
|
|
||||||
func pfCreateRBCheckCmd(q *qliksense.Qliksense) *cobra.Command {
|
func pfCreateAuthCheckCmd(q *qliksense.Qliksense) *cobra.Command {
|
||||||
var preflightCreateRBCmd = &cobra.Command{
|
var preflightCreateAuthCmd = &cobra.Command{
|
||||||
Use: "authcheck",
|
Use: "authcheck",
|
||||||
Short: "preflight authcheck",
|
Short: "preflight authcheck",
|
||||||
Long: `perform preflight authcheck that combines the role, rolebinding and serviceaccount checks`,
|
Long: `perform preflight authcheck that combines the role, rolebinding and serviceaccount checks`,
|
||||||
@@ -297,7 +312,7 @@ func pfCreateRBCheckCmd(q *qliksense.Qliksense) *cobra.Command {
|
|||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
return preflightCreateRBCmd
|
return preflightCreateAuthCmd
|
||||||
}
|
}
|
||||||
|
|
||||||
func pfMongoCheckCmd(q *qliksense.Qliksense) *cobra.Command {
|
func pfMongoCheckCmd(q *qliksense.Qliksense) *cobra.Command {
|
||||||
@@ -318,6 +333,9 @@ func pfMongoCheckCmd(q *qliksense.Qliksense) *cobra.Command {
|
|||||||
fmt.Printf("Preflight mongo check FAILED\n")
|
fmt.Printf("Preflight mongo check FAILED\n")
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
if namespace == "" {
|
||||||
|
namespace = "default"
|
||||||
|
}
|
||||||
if err = qp.CheckMongo(kubeConfigContents, namespace, mongodbUrl); err != nil {
|
if err = qp.CheckMongo(kubeConfigContents, namespace, mongodbUrl); err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
fmt.Print("Preflight mongo check FAILED\n")
|
fmt.Print("Preflight mongo check FAILED\n")
|
||||||
|
|||||||
@@ -212,7 +212,7 @@ func rootCmd(p *qliksense.Qliksense) *cobra.Command {
|
|||||||
preflightCmd.AddCommand(pfCreateRoleCheckCmd(p))
|
preflightCmd.AddCommand(pfCreateRoleCheckCmd(p))
|
||||||
preflightCmd.AddCommand(pfCreateRoleBindingCheckCmd(p))
|
preflightCmd.AddCommand(pfCreateRoleBindingCheckCmd(p))
|
||||||
preflightCmd.AddCommand(pfCreateServiceAccountCheckCmd(p))
|
preflightCmd.AddCommand(pfCreateServiceAccountCheckCmd(p))
|
||||||
preflightCmd.AddCommand(pfCreateRBCheckCmd(p))
|
preflightCmd.AddCommand(pfCreateAuthCheckCmd(p))
|
||||||
|
|
||||||
cmd.AddCommand(preflightCmd)
|
cmd.AddCommand(preflightCmd)
|
||||||
cmd.AddCommand(loadCrFile(p))
|
cmd.AddCommand(loadCrFile(p))
|
||||||
|
|||||||
@@ -73,8 +73,8 @@ func mongoConnCheck(kubeConfigContents []byte, namespace, mongodbUrl string) err
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println("stdout:", stdout)
|
api.LogDebugMessage("stdout:", stdout)
|
||||||
fmt.Println("stderr:", stderr)
|
api.LogDebugMessage("stderr:", stderr)
|
||||||
stringToCheck := "Implicit session"
|
stringToCheck := "Implicit session"
|
||||||
if strings.Contains(stdout, stringToCheck) || strings.Contains(stderr, stringToCheck) {
|
if strings.Contains(stdout, stringToCheck) || strings.Contains(stderr, stringToCheck) {
|
||||||
fmt.Println("Preflight mongo check: PASSED")
|
fmt.Println("Preflight mongo check: PASSED")
|
||||||
|
|||||||
@@ -2,9 +2,11 @@ package preflight
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"path"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
|
||||||
|
|
||||||
|
"github.com/mitchellh/go-homedir"
|
||||||
|
"github.com/qlik-oss/k-apis/pkg/cr"
|
||||||
"github.com/qlik-oss/sense-installer/pkg/api"
|
"github.com/qlik-oss/sense-installer/pkg/api"
|
||||||
qapi "github.com/qlik-oss/sense-installer/pkg/api"
|
qapi "github.com/qlik-oss/sense-installer/pkg/api"
|
||||||
"github.com/qlik-oss/sense-installer/pkg/qliksense"
|
"github.com/qlik-oss/sense-installer/pkg/qliksense"
|
||||||
@@ -67,6 +69,18 @@ func (qp *QliksensePreflight) checkCreateEntity(namespace, entityToTest string)
|
|||||||
} else {
|
} else {
|
||||||
kusDir = filepath.Join(mfroot, "manifests", currentCR.Spec.Profile)
|
kusDir = filepath.Join(mfroot, "manifests", currentCR.Spec.Profile)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
currentCR.SetName("random")
|
||||||
|
currentCR.Spec.RotateKeys = "None"
|
||||||
|
currentCR.Spec.ManifestsRoot = mfroot
|
||||||
|
userHomeDir, err := homedir.Dir()
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf(`error fetching user's home directory: %v\n`, err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
cr.GeneratePatches(¤tCR.KApiCr, path.Join(userHomeDir, ".kube", "config"))
|
||||||
|
|
||||||
resultYamlString, err := qliksense.ExecuteKustomizeBuild(kusDir)
|
resultYamlString, err := qliksense.ExecuteKustomizeBuild(kusDir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("Unable to retrieve manifests from executing kustomize: %v\n", err)
|
fmt.Printf("Unable to retrieve manifests from executing kustomize: %v\n", err)
|
||||||
@@ -75,27 +89,30 @@ func (qp *QliksensePreflight) checkCreateEntity(namespace, entityToTest string)
|
|||||||
|
|
||||||
sa := qliksense.GetYamlsFromMultiDoc(string(resultYamlString), entityToTest)
|
sa := qliksense.GetYamlsFromMultiDoc(string(resultYamlString), entityToTest)
|
||||||
if sa != "" {
|
if sa != "" {
|
||||||
sa = strings.ReplaceAll(sa, "namespace: default\n", fmt.Sprintf("namespace: %s\n", namespace))
|
// sa = strings.ReplaceAll(sa, "namespace: default\n", fmt.Sprintf("namespace: %s\n", namespace))
|
||||||
} else {
|
} else {
|
||||||
err := fmt.Errorf("Unable to retrieve yamls to apply on cluster")
|
err := fmt.Errorf("Unable to retrieve yamls to apply on cluster")
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
namespace = "" // namespace is handled when generating the manifests
|
||||||
|
|
||||||
|
defer func() {
|
||||||
|
fmt.Println("Cleaning up resources")
|
||||||
|
api.KubectlDelete(sa, namespace)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Preflight cleanup failed!")
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
err = api.KubectlApply(sa, namespace)
|
err = api.KubectlApply(sa, namespace)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err := fmt.Errorf("Failed to create entity on the cluster")
|
err := fmt.Errorf("Failed to create entity on the cluster: %v", err)
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Printf("Preflight %s check: PASSED\n", entityToTest)
|
fmt.Printf("Preflight %s check: PASSED\n", entityToTest)
|
||||||
fmt.Println("Cleaning up resources")
|
|
||||||
err = api.KubectlDelete(sa, namespace)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println("Preflight cleanup failed!")
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ func GetYamlsFromMultiDoc(multiYaml string, kind string) string {
|
|||||||
for _, doc := range yamlDocs {
|
for _, doc := range yamlDocs {
|
||||||
scanner := bufio.NewScanner(strings.NewReader(doc))
|
scanner := bufio.NewScanner(strings.NewReader(doc))
|
||||||
for scanner.Scan() {
|
for scanner.Scan() {
|
||||||
if strings.TrimSpace(scanner.Text()) == "kind: "+kind {
|
if scanner.Text() == "kind: "+kind {
|
||||||
resultDocs = resultDocs + "\n---\n" + doc
|
resultDocs = resultDocs + "\n---\n" + doc
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user