Compare commits

...

4 Commits

Author SHA1 Message Date
Foysal Iqbal
9aaec986c3 Merge branch 'make-relative-path' into manifest-root-relative-path 2020-03-25 00:07:37 -04:00
Foysal Iqbal
9e7ec1bf8c fix relative path for manifestsroot
Signed-off-by: Foysal Iqbal <mqb@qlik.com>
2020-03-25 00:03:28 -04:00
Foysal Iqbal
bdb8a69ce3 Merge branch 'make-relative-path' into manifest-root-relative-path 2020-03-24 23:45:06 -04:00
Foysal Iqbal
d5402b61da fix relative path for manifestsroot
Signed-off-by: Foysal Iqbal <mqb@qlik.com>
2020-03-24 23:37:54 -04:00
13 changed files with 47 additions and 21 deletions

View File

@@ -140,14 +140,25 @@ func (qc *QliksenseConfig) BuildRepoPath(version string) string {
return qc.BuildRepoPathForContext(qc.Spec.CurrentContext, version)
}
func (qc *QliksenseConfig) BuildRelativeRepoPath(version string) string {
return qc.BuildRelativeRepoPathForContext(qc.Spec.CurrentContext, version)
}
func (qc *QliksenseConfig) BuildRepoPathForContext(contextName, version string) string {
return filepath.Join(qc.QliksenseHomePath, qliksenseContextsDirName, contextName, "qlik-k8s", version)
}
//BuildRelativeRepoPathForContext to build relative from qliksense home, so that can be written into cr file
// and later easy to export to different computer
func (qc *QliksenseConfig) BuildRelativeRepoPathForContext(contextName, version string) string {
return filepath.Join(qliksenseContextsDirName, contextName, "qlik-k8s", version)
}
func (qc *QliksenseConfig) BuildCurrentManifestsRoot(version string) string {
return qc.BuildRepoPath(version)
}
func (qc *QliksenseConfig) BuildCurrentRelativeManifestsRoot(version string) string {
return qc.BuildRelativeRepoPath(version)
}
func (qc *QliksenseConfig) WriteCR(cr *QliksenseCR, contextName string) error {
crf := qc.GetCRFilePath(contextName)
if crf == "" {
@@ -486,3 +497,10 @@ func (qc *QliksenseConfig) SetCurrentContextName(name string) {
func (qc *QliksenseConfig) Write() error {
return WriteToFile(qc, filepath.Join(qc.QliksenseHomePath, "config.yaml"))
}
func (qc *QliksenseConfig) GetCrManifestRoot(cr *QliksenseCR) string {
if filepath.IsAbs(cr.Spec.GetManifestsRoot()) {
return cr.Spec.GetManifestsRoot()
}
return filepath.Join(qc.QliksenseHomePath, cr.Spec.GetManifestsRoot())
}

View File

@@ -46,7 +46,7 @@ metadata:
version: v1.0.0
spec:
profile: docker-desktop
manifestsRoot: /Users/mqb/.qliksense/contexts/contx1/qlik-k8s/v0.0.1/manifests
manifestsRoot: contexts/contx1/qlik-k8s/v0.0.1/manifests
storageClassName: efs
configs:
qliksense:

View File

@@ -63,7 +63,7 @@ func (qliksenseConfig *QliksenseConfig) SwitchCurrentCRToVersionAndProfile(versi
if qcr, err := qliksenseConfig.GetCurrentCR(); err != nil {
return err
} else {
versionManifestRoot := qliksenseConfig.BuildCurrentManifestsRoot(version)
versionManifestRoot := qliksenseConfig.BuildCurrentRelativeManifestsRoot(version)
if (qcr.Spec.ManifestsRoot != versionManifestRoot) || (profile != "" && qcr.Spec.Profile != profile) || (qcr.GetLabelFromCr("version") != version) {
qcr.Spec.ManifestsRoot = versionManifestRoot
if profile != "" {

View File

@@ -232,7 +232,6 @@ func UntarGzFile(destination, fileToUntar string) error {
fileAtLoc.Chmod(os.ModePerm)
}
}
return nil
}
func UnZipFile(destination, fileToUnzip string) error {

View File

@@ -167,7 +167,7 @@ func (q *Qliksense) configExistsInCurrentContext() (exists bool, directory strin
} else if currentCr.Spec.ManifestsRoot == "" {
return false, "", "", nil
} else {
return true, currentCr.Spec.GetManifestsRoot(), currentCr.Spec.Profile, nil
return true, q.GetCrManifestRoot(currentCr), currentCr.Spec.Profile, nil
}
}

View File

@@ -82,12 +82,12 @@ func (q *Qliksense) applyConfigToK8s(qcr *qapi.QliksenseCR) error {
fmt.Printf(`error fetching user's home directory: %v\n`, err)
return err
}
fmt.Println("Manifests root: " + qcr.Spec.GetManifestsRoot())
fmt.Println("Manifests root: " + q.GetCrManifestRoot(qcr))
qcr.SetNamespace(qapi.GetKubectlNamespace())
// generate patches
cr.GeneratePatches(&qcr.KApiCr, path.Join(userHomeDir, ".kube", "config"))
// apply generated manifests
profilePath := filepath.Join(qcr.Spec.GetManifestsRoot(), qcr.Spec.GetProfileDir())
profilePath := filepath.Join(q.GetCrManifestRoot(qcr), qcr.Spec.GetProfileDir())
mByte, err := executeKustomizeBuild(profilePath)
if err != nil {
fmt.Println("cannot generate manifests for "+profilePath, err)

View File

@@ -19,7 +19,7 @@ func (q *Qliksense) ViewCrds(opts *CrdCommandOptions) error {
fmt.Println("cannot get the current-context cr", err)
return err
}
if engineCRD, err := getQliksenseInitCrd(qcr); err != nil {
if engineCRD, err := q.getQliksenseInitCrd(qcr); err != nil {
return err
} else if opts.All {
fmt.Printf("%s\n%s", q.GetOperatorCRDString(), engineCRD)
@@ -38,7 +38,7 @@ func (q *Qliksense) InstallCrds(opts *CrdCommandOptions) error {
return err
}
if engineCRD, err := getQliksenseInitCrd(qcr); err != nil {
if engineCRD, err := q.getQliksenseInitCrd(qcr); err != nil {
return err
} else if err = qapi.KubectlApply(engineCRD, ""); err != nil {
return err
@@ -52,12 +52,12 @@ func (q *Qliksense) InstallCrds(opts *CrdCommandOptions) error {
return nil
}
func getQliksenseInitCrd(qcr *qapi.QliksenseCR) (string, error) {
func (q *Qliksense) getQliksenseInitCrd(qcr *qapi.QliksenseCR) (string, error) {
var repoPath string
var err error
if qcr.Spec.GetManifestsRoot() != "" {
repoPath = qcr.Spec.GetManifestsRoot()
if q.GetCrManifestRoot(qcr) != "" {
repoPath = q.GetCrManifestRoot(qcr)
} else {
if repoPath, err = downloadFromGitRepoToTmpDir(defaultConfigRepoGitUrl, "master"); err != nil {
return "", err

View File

@@ -8,12 +8,13 @@ import (
)
func TestGetQliksenseInitCrd(t *testing.T) {
q := &Qliksense{}
someTmpRepoPath, err := downloadFromGitRepoToTmpDir(defaultConfigRepoGitUrl, "master")
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
crdFromContextConfig, err := getQliksenseInitCrd(&qapi.QliksenseCR{
crdFromContextConfig, err := q.getQliksenseInitCrd(&qapi.QliksenseCR{
KApiCr: kapi_config.KApiCr{
Spec: &kapi_config.CRSpec{
ManifestsRoot: someTmpRepoPath,
@@ -24,7 +25,7 @@ func TestGetQliksenseInitCrd(t *testing.T) {
t.Fatalf("unexpected error: %v", err)
}
crdFromDownloadedConfig, err := getQliksenseInitCrd(&qapi.QliksenseCR{
crdFromDownloadedConfig, err := q.getQliksenseInitCrd(&qapi.QliksenseCR{
KApiCr: kapi_config.KApiCr{
Spec: &kapi_config.CRSpec{
ManifestsRoot: "",

View File

@@ -36,7 +36,7 @@ func (q *Qliksense) PullImagesForCurrentCR() error {
}
version := qcr.GetLabelFromCr("version")
profile := qcr.Spec.Profile
repoDir := qcr.Spec.ManifestsRoot
repoDir := q.GetCrManifestRoot(qcr)
imagesDir, err := setupImagesDir(q.QliksenseHome)
if err != nil {
@@ -125,7 +125,7 @@ func (q *Qliksense) PushImagesForCurrentCR() error {
}
version := qcr.GetLabelFromCr("version")
profile := qcr.Spec.Profile
repoDir := qcr.Spec.ManifestsRoot
repoDir := q.GetCrManifestRoot(qcr)
dockerConfigJsonSecret, err := qConfig.GetPushDockerConfigJsonSecret()
if err != nil {

View File

@@ -34,7 +34,7 @@ func fetchAndUpdateCR(qConfig *qapi.QliksenseConfig, version string) error {
} else if err = kapis_git.Checkout(repo, version, fmt.Sprintf("%v-by-operator-%v", version, uuid.New().String()), nil); err != nil {
return err
}
qcr.Spec.ManifestsRoot = qConfig.BuildCurrentManifestsRoot(version)
qcr.Spec.ManifestsRoot = qConfig.BuildCurrentRelativeManifestsRoot(version)
qcr.AddLabelToCr("version", version)
return qConfig.WriteCurrentContextCR(qcr)
}

View File

@@ -21,8 +21,8 @@ func (q *Qliksense) GetInstallableVersions(opts *LsRemoteCmdOptions) error {
}
var repoPath string
if qcr.Spec.GetManifestsRoot() != "" {
repoPath = qcr.Spec.GetManifestsRoot()
if q.GetCrManifestRoot(qcr) != "" {
repoPath = q.GetCrManifestRoot(qcr)
} else {
repoPath, err = downloadFromGitRepoToTmpDir(defaultConfigRepoGitUrl, "master")
if err != nil {

View File

@@ -107,7 +107,7 @@ func (q *Qliksense) InstallQK8s(version string, opts *InstallCommandOptions, kee
if err != nil {
fmt.Println("cannot get the current-context cr", err)
return err
} else if qcr.Spec.GetManifestsRoot() == "" {
} else if qConfig.GetCrManifestRoot(qcr) == "" {
return errors.New("cannot get the manifest root. Use qliksense fetch <version> or qliksense set manifestsRoot")
}

View File

@@ -2,6 +2,7 @@ package qliksense
import (
"errors"
"path/filepath"
kapis_git "github.com/qlik-oss/k-apis/pkg/git"
qapi "github.com/qlik-oss/sense-installer/pkg/api"
@@ -12,8 +13,8 @@ func (q *Qliksense) DiscardAllUnstagedChangesFromGitRepo(qConfig *qapi.Qliksense
return err
} else if version := qcr.GetLabelFromCr("version"); version == "" {
return errors.New("version label is not set in CR")
} else if qcr.Spec.ManifestsRoot == qConfig.BuildRepoPath(version) {
if repo, err := kapis_git.OpenRepository(qcr.Spec.ManifestsRoot); err != nil {
} else if qConfig.GetCrManifestRoot(qcr) == qConfig.BuildRepoPath(version) {
if repo, err := kapis_git.OpenRepository(qConfig.GetCrManifestRoot(qcr)); err != nil {
return err
} else if err = kapis_git.DiscardAllUnstagedChanges(repo); err != nil {
return err
@@ -21,3 +22,10 @@ func (q *Qliksense) DiscardAllUnstagedChangesFromGitRepo(qConfig *qapi.Qliksense
}
return nil
}
func (q *Qliksense) GetCrManifestRoot(cr *qapi.QliksenseCR) string {
if filepath.IsAbs(cr.Spec.GetManifestsRoot()) {
return cr.Spec.GetManifestsRoot()
}
return filepath.Join(q.QliksenseHome, cr.Spec.GetManifestsRoot())
}