This patch introduces ability to validate phases using kubeval.
Appropriate functionality was embedded into phase/plan validate
command.
Change-Id: I1e1ccae2b7e4948bdc97a199c96c07a3eb7292b2
Signed-off-by: Ruslan Aliev <raliev@mirantis.com>
Relates-To: #503
Closes: #2
Closes: #19
Phase helper provides plenty of useful methods for
a phase client. But these methods are not used by
phase executor initializers except for getting some
configuration values. So, it is better to provide
initializers with necessary values instead of passing
them the phase helper.
Change-Id: I8c596455e30444570a86efad73d792af0ca83a33
Relates-To: #464
Relates-To: #465
Since document.NewBundleByPath() is pretty resource and time
consuming call (because it invokes kustomize under the hood),
we should avoid unnecessary calls of this function. There are
lots of the same constructor calls of new bundle from phase
bundle root path, mostly in helper, which slows airshipctl
and makes no sense. This patch fixes this problem by storing
phase root bundle variable in helper, which creates only once
during airshipctl execution.
Change-Id: I6b59d440f7ab7a68dc613091dafcc9e82df10eb7
Signed-off-by: Ruslan Aliev <raliev@mirantis.com>
Closes: #488
Since this field is no longer actually used, there is need to
remove it completely.
Change-Id: I9f7002f8def31d1660919bd0128707e43a57ad71
Signed-off-by: Ruslan Aliev <raliev@mirantis.com>
* Phase list command lists phases of current documentset/plan in
table or yaml format.
airshipctl phase list
airshipctl phase list --plan planName
airshipctl phase list --plan planName -o yaml
airshipctl phase list --plan planName -o table(default format)
Relates-To: #358
Co-Authored-By: Niharika Bhavaraju <niha.twinkle@gmail.com>
Change-Id: I37add2fc9dca2433de525bac8c2cc9e56fe39621
* phase related errors were moved to separate package to prevent
cycling import error;
* error duplicates were removed;
* non-related to package errors were moved to appropriate ones.
Change-Id: If6cfb08c48d356c1517a13157a5fe740dc1635a4
Signed-off-by: Ruslan Aliev <raliev@mirantis.com>
Relates-To: #485
Change ClusterMap API object to support multiple kubeconfig sources
for a cluster. If one kubeconfig source fails, kubeconfig builder
will not fail and move on to the next one. This behaviour will allow
to support cases when ephemeral cluster is not accesible anymore or
when target cluster is not yet accessible.
For more information please read issue #460 in airshipctl github
Relates-To: #460
Related-To: #460
Change-Id: I7cd32f78cd7c4ad8814eac357424c24216f40d76
Isogen executor is not needed any more since there is
iso build phase plan that runs two phases using generic
containers.
Relates-To: #440
Change-Id: I3600e82fa1d8a92cdf103d93cd4536bf4a713cca
It allows us to have more clear and controllable unit tests and
to move towards bringing all file operations in airshipctl to a
common standard for all source files (using only document
filesystem module).
Change-Id: I560edb7c8e9cd682f3c188527245fcd40045e16c
Signed-off-by: Ruslan Aliev <raliev@mirantis.com>
Relates-To: #415
This patch implements ability to filter phase by given
cluster name.
Change-Id: I4eb95f9f75c57eff4ae8eb41c608c6f6d7fa009c
Signed-off-by: Ruslan Aliev <raliev@mirantis.com>
Plan validation:
1. Each phase must be defined within phase document bundle.
2. Each phase does not return error for Validate method
Phase validation:
1. Document bundle associated with the phase can be rendered without an
error.
2. Associated executor must not return an error.
Relates-to: #330
Change-Id: I08c5e8e42570f2cafdced5a02481b033414ffae0
This parameter allows to get full path to current site.
Also change phaseRoot to phaseBundleRoot and
change the corresponding methods.
Change-Id: Ia4b1b55ceaa8c544ed429ec314bc8772a2fee6de
Relates-To: #379
This change removes the SubPath entry portion of the config manifests, and
refactors several areas that used it. This also updates unit tests to
reflect the new changes.
Closes: #255
Change-Id: Ibbb519a3f1fb28a1594e971274c5de54b99c867e
* The phase.docEntryPointPrefix field in the metadata.yaml
allows you to define a common part of the documentEntryPoint
for all phases in the phase bundle.
For example, let metadata.yaml be
---
phase:
path: manifests/phases
docEntryPointPrefix: manifests/site/test-site
and a phase be
---
apiVersion: airshipit.org/v1alpha1
kind: Phase
metadata:
name: initinfra-ephemeral
clusterName: ephemeral-cluster
config:
executorRef:
apiVersion: airshipit.org/v1alpha1
kind: KubernetesApply
name: kubernetes-apply
documentEntryPoint: ephemeral/initinfra
Then the documentEntryPoint for executor will be prepended with
docEntryPointPrefix and the path to the executor bundle will be
manifests/site/test-site/ephemeral/initinfra
Change-Id: I29ec14378790d95b66c3ff1fe6120bb200f91a50
Relates-To: #356
The test makes sure that correct error is returned when bundle
factory fails, and increases test coverage of executor() function
Change-Id: Ibfc5d8ea1941a5d4d304a8afaedc5c89efe7c398