Commit Graph

34 Commits (faa13c51adae311e187380972837d81ca60d3e54)

Author SHA1 Message Date
Zuul c8434994bd Merge "Add possibility to specify 0 timeout via CLI options" 2021-07-30 21:57:47 +00:00
Ruslan Aliev ab55bc5e86 Move clustetctl to KRM
Change-Id: I79ccb7b7c92f27cf6fdaaa540d86db80a0a62b41
Signed-off-by: Ruslan Aliev <>
Closes: #568
2021-07-17 22:06:43 -05:00
Ruslan Aliev 583fda5dfe Add possibility to specify 0 timeout via CLI options
Currently zero timeout won't be applied if specified via CLI
options of commands plan run and plan run. This patch fixes it.

Change-Id: Icad06ae8c71d78dc81821e2c5b0adb486d547fda
Signed-off-by: Ruslan Aliev <>
Relates-To: #566
Closes: #566
2021-06-29 01:26:34 -05:00
Zuul ed271774f6 Merge "Add Plan Status() to ifc.plan interface" 2021-05-11 09:37:16 +00:00
Vladimir Kozhukalov 1b960c129d Do not pass phase helper to executor initializers
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
2021-04-20 10:00:47 +03:00
niharikab 289b569de4 Add Plan Status() to ifc.plan interface
This commit adds plan Status() method to ifc.plan

Relates-To: #412
Change-Id: I4857eec9ea125902e305af64fbb336ff6de4faa8
2021-04-19 20:09:51 +05:30
Ruslan Aliev 675f718317 Remove unused fields from ExecutorConfig
AirshipConfig and BundleName fields are not used within Executors,
so they should be removed.

Change-Id: I23c54b854938ae554e888102a41c7ec215b85c27
Signed-off-by: Ruslan Aliev <>
2021-04-03 16:52:15 -05:00
Ruslan Aliev e9041a2a22 Reduce the number of unnecessary document.NewBundleByPath() calls
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 <>
Closes: #488
2021-03-27 12:58:36 -05:00
bijayasharma 044b636a57 Updated executor definition to introduce a status interface
Change-Id: Ib95cb2f6464b2d15ba7378e9b40a13899d273ba3
Signed-off-by: bijayasharma <>
Relates-To: #409
Closes: #409
2021-03-10 13:14:08 +00:00
Ruslan Aliev d1c7913ed3 Add cluster name filter for phase list cmd
This patch implements ability to filter phase by given
cluster name.

Change-Id: I4eb95f9f75c57eff4ae8eb41c608c6f6d7fa009c
Signed-off-by: Ruslan Aliev <>
2021-02-05 17:09:44 -06:00
Kostiantyn Kalynovskyi 3f9e56ecef Add BMH manager executor api object
Also this commit extends helper interface with inventory

Change-Id: I8df785f1c095a2e9502f23e1c83c5fcfe6f811fd
2021-02-01 19:10:31 +00:00
Dmitry Ukov 178b0eff3e Implement plan run command
Change-Id: Ie627ce670cd2b19d6999dc7c7a7a6dc12b25cace
Closes: #395
2021-01-28 10:13:05 +04:00
Dmitry Ukov 069e4069ce Implement plan list subcommand
Change-Id: Ibcd7dbf6dc8cd9d0b018c148017244526651d8ba
Closes: #385
2021-01-27 10:19:54 +00:00
Ruslan Aliev 5a6f1096eb Groom phase/executors package
All the duplicated methods were removed. Unit tests reorganized.
Test coverage increased.

Change-Id: I0f7bd3eea63c101195ea50c0369e62945d73f297
Signed-off-by: Ruslan Aliev <>
Closes: #432
2021-01-12 16:31:43 -06:00
Vladislav Kuzmin 49c0ad4a23 Add PhaseEntryPointBasePath to phase helper
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
2021-01-07 16:02:04 +00:00
Kostiantyn Kalynovskyi a6987107bd Allow to perform phase render using document entrypoint
In current setup, we rely on executor to perform render operation,
however there are many usecases, when we want to have a simple
`kustomize build` performed against document entrypoint in phase.
Now this will be a default behaviour and if a user would like
executor to perform rendering to actually understand what it's
doing, he will be able to specify --executor boolean flag.

Relates-To: #403

Change-Id: I181830f9814ff48a19ba0a1284e89900187bc7d8
2020-12-15 11:28:16 -06:00
Vladimir Kozhukalov a608d4c56d Add docEntryPointPrefix field to the metadata.yaml
* 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
     path: manifests/phases
     docEntryPointPrefix: manifests/site/test-site

   and a phase be
   kind: Phase
     name: initinfra-ephemeral
     clusterName: ephemeral-cluster
       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

Change-Id: I29ec14378790d95b66c3ff1fe6120bb200f91a50
Relates-To: #356
2020-10-22 13:29:05 +03:00
Zuul 23224e57c5 Merge "Phase docs are targetPath + phaseRepo + phase.DocumentEntrypoint" 2020-10-16 15:02:04 +00:00
Vladimir Kozhukalov dc68640389 Phase docs are targetPath + phaseRepo + phase.DocumentEntrypoint
Change-Id: I1d5ea75d1c19eb4ebaf37b28918ccde771bcef85
Relates-To: #356
2020-10-15 13:55:59 +03:00
Ruslan Aliev a6363f1c1e Run image build command like a phase
We perform almost the same activities prior calling createBootstrapIso
function like we do that in phase executor, also image build command
now is techically outdated since it doesn't work because it fails with
"phase document was not found" error. This patch removes unnecessary
functions like GenerateBootstrapIso and runs image build command in
a phase way. Test coverage increases slightly (by 0.2%) by removing
partially duplicating code which was not tested properly. Minor bug
fixes included.

Change-Id: I545004cea721164838b296ae647a7651cde248ff
Signed-off-by: Ruslan Aliev <>
2020-10-13 17:48:55 -05:00
Ruslan Aliev fc33287204 Remove kubeconfig from config struct
Change-Id: I5ab8722dd151d9e652e0b20e1d82988cd98505af
Signed-off-by: Ruslan Aliev <>
2020-10-07 14:35:07 -05:00
Kostiantyn Kalynovskyi e6e56ffa2e Use BundleFactory instead of bundle in executors
This will allow to avoid using nil bundle and performing
additional checks inside the executors

Change-Id: Ia061cccf7e0a7948bbc5c8fce24e0e6f8b3256e1
2020-09-28 19:39:05 -05:00
Ruslan Aliev 0c736af2e8 Implement render methods
Change-Id: I03b7aad33576eaa9ef7dfaabfb579ac90cc26a12
Signed-off-by: Ruslan Aliev <>
2020-09-23 03:06:51 +00:00
Kostiantyn Kalynovskyi d79c71e94d Implement phase and phase.Client interface
Relates-To: #342

Change-Id: I8882204c0e9eae05fca30c093fcd3bad58e308e1
2020-09-11 16:24:04 -05:00
Kostiantyn Kalynovskyi 99d37b3907 Add phase, client and helper interfaces
The interfaces are not yet implemented.

Change-Id: Ide9e3691978efe470bf63d1053c8264ffcdf5a4d
2020-09-09 22:33:51 +00:00
Kostiantyn Kalynovskyi 0a7661ab7c Add clustermap object and interface
This commit adds cluster map api object, cluster map
interface and it's implementation built on top of cluster map api

Important note:
ClusterMap interface needs a method to identify namespace of the
cluster, it can't be a part of api object, because real source for
cluster namespace is cluster object from cluster-api upstream lib.
This will need further design discussion on how we will find
cluster-api kind: Cluster object in our manifests. For now, there
is dummy "default" namespace being used

Change-Id: I8175f54abbe77331f0c87c0bde50857ee5c0eb1d
2020-09-09 17:28:45 -05:00
Ruslan Aliev 88ec55d34b Refactor phase* commands
All the phase commands was refactored for usage with new config
factory. Config object now is being initialized in pkg module on demand,
which provides more flexibility and cleaner code.

Change-Id: I742c39788098c3185ce89936ea81cd461bf97af3
Signed-off-by: Ruslan Aliev <>
Relates-To: #327
2020-09-03 23:52:49 -05:00
Kostiantyn Kalynovskyi 1f932861d4 Add kubeconfig builder
Kubeconfig builder will be a single source of kubeconfig, allowing
to make a decision how to build kubeconfig based on different
parameters, such as path to kubeconfig, dynamic kubeconfig
options, or kubeconfig based on document bundle.

Change-Id: Ia63e11a6f0b327e283d3e7fce169a35d54684dfb
2020-09-02 17:18:19 -05:00
Dmitry Ukov 17bf4c77e8 Switch executor run method to read/write channel
Change-Id: If0eb2ae96d20338fee17f381ea61748f8485c7cd
2020-08-19 14:50:36 +04:00
Kostiantyn Kalynovskyi 2f1b520ab2 Change executor interface to accept channels
Now Run method will accept channels that they will write
events to, this will allow us to pass channels we want to them,
instead of execting them to return us a channel.

Wait method is removed from interface for now, as it needs more

Change-Id: Ibd47dfe49172f537b79bcc8f83f7c76aece8e862
2020-08-18 09:05:56 -05:00
Kostiantyn Kalynovskyi da12ae925d Add kubeconfig interface
This will allow to use various sources for kubeconfig and provide
utility to write, save, and clean kubeconfig files, as well as
use kubeconfig interface for phase executors.

Relates-To: #264

Change-Id: Ia5b5af00700a0adf55124e1dd335d570515ed804
2020-08-17 15:22:17 -05:00
Kostiantyn Kalynovskyi 696b287552 Modify executor interface to return channels
Change executors interface to return event channels and allow to
to set event processors. In further development this will allow better
visibility in UI or in command line, also opens the room for concurency.

Also add kubeconfig provider interface that will return kubeconfig.File
object to provide uniform way of accessing kubeconfig

Change-Id: I47bf9409a9b4286905cd9fc4ce172ee33e16dfa6
2020-08-06 17:52:31 -05:00
Kostiantyn Kalynovskyi dfb74fb878 Integrate ManifestMetadata with phase executors
With this commit executors will not rely on hardcoded path to build
bundle with phase information

Change-Id: I6b8826929cb5a4b95a5c4d30f23fad3a3af52555
Relates-To: #259
2020-07-16 00:19:00 +00:00
Dmitry Ukov 66b6acf565 Add phase run method
Change introduces phase executor interface as well as method to call it.
Each registered executor must implement this interface.

Relates-To: #259
Change-Id: I44665e5318ae59b4549cc77d10526a71bd40b40a
2020-07-08 14:31:22 +04:00