Remove phase apply command
Command phase run will be used instead, so phase apply became no longer needed. Change-Id: I8bdbd6bcad7efbb03632978d8952700fc39d55ba Signed-off-by: Ruslan Aliev <raliev@mirantis.com>
This commit is contained in:
parent
0c736af2e8
commit
2f5402ae80
@ -1,81 +0,0 @@
|
||||
/*
|
||||
Copyright 2014 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package phase
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
|
||||
"opendev.org/airship/airshipctl/pkg/config"
|
||||
"opendev.org/airship/airshipctl/pkg/phase/apply"
|
||||
)
|
||||
|
||||
const (
|
||||
applyLong = `
|
||||
Apply specific phase to kubernetes cluster such as control-plane, workloads, initinfra
|
||||
`
|
||||
applyExample = `
|
||||
# Apply initinfra phase to a cluster
|
||||
airshipctl phase apply initinfra
|
||||
`
|
||||
)
|
||||
|
||||
// NewApplyCommand creates a command to apply phase to k8s cluster.
|
||||
func NewApplyCommand(cfgFactory config.Factory) *cobra.Command {
|
||||
i := &apply.Options{}
|
||||
applyCmd := &cobra.Command{
|
||||
Use: "apply PHASE_NAME",
|
||||
Short: "Apply phase to a cluster",
|
||||
Long: applyLong[1:],
|
||||
Args: cobra.ExactArgs(1),
|
||||
Example: applyExample,
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
i.PhaseName = args[0]
|
||||
cfg, err := cfgFactory()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
i.Initialize(cfg.KubeConfigPath())
|
||||
return i.Run(cfg)
|
||||
},
|
||||
}
|
||||
addApplyFlags(i, applyCmd)
|
||||
return applyCmd
|
||||
}
|
||||
|
||||
func addApplyFlags(i *apply.Options, cmd *cobra.Command) {
|
||||
flags := cmd.Flags()
|
||||
flags.BoolVar(
|
||||
&i.DryRun,
|
||||
"dry-run",
|
||||
false,
|
||||
"don't deliver documents to the cluster, simulate the changes instead")
|
||||
|
||||
flags.BoolVar(
|
||||
&i.Prune,
|
||||
"prune",
|
||||
false,
|
||||
`if set to true, command will delete all kubernetes resources that are not`+
|
||||
` defined in airship documents and have airshipit.org/deployed=apply label`)
|
||||
|
||||
flags.DurationVar(
|
||||
&i.WaitTimeout,
|
||||
"wait-timeout",
|
||||
time.Second*120,
|
||||
`number of seconds to wait for resources to become ready, if set to 0 will not wait`)
|
||||
}
|
@ -1,35 +0,0 @@
|
||||
/*
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
https://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package phase_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"opendev.org/airship/airshipctl/cmd/phase"
|
||||
"opendev.org/airship/airshipctl/testutil"
|
||||
)
|
||||
|
||||
func TestNewApplyCommand(t *testing.T) {
|
||||
tests := []*testutil.CmdTest{
|
||||
{
|
||||
Name: "phase-apply-cmd-with-help",
|
||||
CmdLine: "--help",
|
||||
Cmd: phase.NewApplyCommand(nil),
|
||||
},
|
||||
}
|
||||
for _, testcase := range tests {
|
||||
testutil.RunTest(t, testcase)
|
||||
}
|
||||
}
|
@ -35,7 +35,6 @@ func NewPhaseCommand(cfgFactory config.Factory) *cobra.Command {
|
||||
Long: clusterLong[1:],
|
||||
}
|
||||
|
||||
phaseRootCmd.AddCommand(NewApplyCommand(cfgFactory))
|
||||
phaseRootCmd.AddCommand(NewRenderCommand(cfgFactory))
|
||||
phaseRootCmd.AddCommand(NewPlanCommand(cfgFactory))
|
||||
phaseRootCmd.AddCommand(NewRunCommand(cfgFactory))
|
||||
|
@ -24,8 +24,6 @@ import (
|
||||
const (
|
||||
// TODO (kkalynovskyi) when different phase executors will be implemented, and their description is more clear,
|
||||
// add documentation here. also consider adding dynamic phase descriptions based on executors.
|
||||
// TODO (kkalynovskyi) when this command is fully functional and phase executors are developed
|
||||
// remove phase apply command
|
||||
runLong = `Run specific life-cycle phase such as ephemeral-control-plane, target-initinfra etc...`
|
||||
runExample = `
|
||||
# Run initinfra phase
|
||||
|
@ -1,16 +0,0 @@
|
||||
Apply specific phase to kubernetes cluster such as control-plane, workloads, initinfra
|
||||
|
||||
Usage:
|
||||
apply PHASE_NAME [flags]
|
||||
|
||||
Examples:
|
||||
|
||||
# Apply initinfra phase to a cluster
|
||||
airshipctl phase apply initinfra
|
||||
|
||||
|
||||
Flags:
|
||||
--dry-run don't deliver documents to the cluster, simulate the changes instead
|
||||
-h, --help help for apply
|
||||
--prune if set to true, command will delete all kubernetes resources that are not defined in airship documents and have airshipit.org/deployed=apply label
|
||||
--wait-timeout duration number of seconds to wait for resources to become ready, if set to 0 will not wait (default 2m0s)
|
@ -5,7 +5,6 @@ Usage:
|
||||
phase [command]
|
||||
|
||||
Available Commands:
|
||||
apply Apply phase to a cluster
|
||||
help Help about any command
|
||||
plan List phases
|
||||
render Render phase documents from model
|
||||
|
@ -25,7 +25,7 @@ In a nutshell, users of `airshipctl` should be able to do the following:
|
||||
instance that `airshipctl` can communicate with for subsequent steps. This
|
||||
ephemeral host provides a foothold in the target environment so we can follow
|
||||
the standard cluster-api bootstrap flow.
|
||||
6. Run `airshipctl phase apply initinfra` to bootstrap the new ephemeral cluster
|
||||
6. Run `airshipctl phase run initinfra-ephemeral` to bootstrap the new ephemeral cluster
|
||||
with enough of the chosen cluster-api provider components to provision the
|
||||
target cluster.
|
||||
7. Run `airshipctl clusterctl` to use the ephemeral Kubernetes host to provision
|
||||
|
@ -25,7 +25,6 @@ such as getting list and applying specific one.
|
||||
### SEE ALSO
|
||||
|
||||
* [airshipctl](airshipctl.md) - A unified entrypoint to various airship components
|
||||
* [airshipctl phase apply](airshipctl_phase_apply.md) - Apply phase to a cluster
|
||||
* [airshipctl phase plan](airshipctl_phase_plan.md) - List phases
|
||||
* [airshipctl phase render](airshipctl_phase_render.md) - Render phase documents from model
|
||||
* [airshipctl phase run](airshipctl_phase_run.md) - Run phase
|
||||
|
@ -1,43 +0,0 @@
|
||||
## airshipctl phase apply
|
||||
|
||||
Apply phase to a cluster
|
||||
|
||||
### Synopsis
|
||||
|
||||
Apply specific phase to kubernetes cluster such as control-plane, workloads, initinfra
|
||||
|
||||
|
||||
```
|
||||
airshipctl phase apply PHASE_NAME [flags]
|
||||
```
|
||||
|
||||
### Examples
|
||||
|
||||
```
|
||||
|
||||
# Apply initinfra phase to a cluster
|
||||
airshipctl phase apply initinfra
|
||||
|
||||
```
|
||||
|
||||
### Options
|
||||
|
||||
```
|
||||
--dry-run don't deliver documents to the cluster, simulate the changes instead
|
||||
-h, --help help for apply
|
||||
--prune if set to true, command will delete all kubernetes resources that are not defined in airship documents and have airshipit.org/deployed=apply label
|
||||
--wait-timeout duration number of seconds to wait for resources to become ready, if set to 0 will not wait (default 2m0s)
|
||||
```
|
||||
|
||||
### Options inherited from parent commands
|
||||
|
||||
```
|
||||
--airshipconf string Path to file for airshipctl configuration. (default "$HOME/.airship/config")
|
||||
--debug enable verbose output
|
||||
--kubeconfig string Path to kubeconfig associated with airshipctl configuration. (default "$HOME/.airship/kubeconfig")
|
||||
```
|
||||
|
||||
### SEE ALSO
|
||||
|
||||
* [airshipctl phase](airshipctl_phase.md) - Manage phases
|
||||
|
@ -15,11 +15,11 @@ components**
|
||||
|
||||
**Create a workload cluster, with control plane and worker nodes**
|
||||
|
||||
> airshipctl phase apply controlplane
|
||||
> airshipctl phase run controlplane
|
||||
|
||||
> airshipctl phase apply workers
|
||||
> airshipctl phase run workers
|
||||
|
||||
Note: `airshipctl phase apply initinfra` is not used because all the provider
|
||||
Note: `airshipctl phase run initinfra-ephemeral` is not used because all the provider
|
||||
components are initialized using `airshipctl cluster init`
|
||||
|
||||
The phase `initinfra` is included just to get `validate docs` to
|
||||
@ -378,7 +378,7 @@ b9690cecdcf2 kindest/node:v1.18.2 "/usr/local/bin/entr…" 14
|
||||
|
||||
## Create your first workload cluster
|
||||
|
||||
$ airshipctl phase apply controlplane --debug
|
||||
$ airshipctl phase run controlplane --debug
|
||||
|
||||
```
|
||||
[airshipctl] 2020/08/12 14:10:12 building bundle from kustomize path /tmp/airship/airshipctl/manifests/site/docker-test-site/target/controlplane
|
||||
@ -452,7 +452,7 @@ NAME PROVIDERID PHASE
|
||||
dtc-control-plane-p4fsx docker:////dtc-dtc-control-plane-p4fsx Running
|
||||
```
|
||||
|
||||
$ airshipctl phase apply workers --debug
|
||||
$ airshipctl phase run workers --debug
|
||||
|
||||
```
|
||||
[airshipctl] 2020/08/12 14:11:55 building bundle from kustomize path /tmp/airship/airshipctl/manifests/site/docker-test-site/target/worker
|
||||
@ -678,7 +678,7 @@ There are 3 phases currently available in `docker-test-site/target`.
|
||||
|
||||
Note: `airshipctl cluster init` initializes all the provider components
|
||||
including the docker infrastructure provider component. As a result, `airshipctl
|
||||
phase apply initinfra` is not used.
|
||||
phase run initinfra-ephemeral` is not used.
|
||||
|
||||
At the moment, `phase initinfra` is only present for two reasons:
|
||||
- `airshipctl` complains if the phase is not found
|
||||
@ -687,11 +687,11 @@ At the moment, `phase initinfra` is only present for two reasons:
|
||||
#### Patch Merge Strategy
|
||||
|
||||
Json patch to patch `control plane machine count` is applied on templates in `manifests/function/k8scontrol-capd`
|
||||
from `airshipctl/manifests/site/docker-test-site/target/controlplane` when `airshipctl phase apply
|
||||
from `airshipctl/manifests/site/docker-test-site/target/controlplane` when `airshipctl phase run
|
||||
controlplane` is executed
|
||||
|
||||
Json patch to patch `workers machine count` is applied on templates in `manifests/function/workers-capd`
|
||||
from `airshipctl/manifests/site/docker-test-site/target/workers` when `airshipctl phase apply
|
||||
from `airshipctl/manifests/site/docker-test-site/target/workers` when `airshipctl phase run
|
||||
workers` is executed.
|
||||
|
||||
| Patch Name | Purpose |
|
||||
|
@ -1,88 +0,0 @@
|
||||
/*
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
https://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package apply
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"sigs.k8s.io/cli-utils/pkg/common"
|
||||
|
||||
"opendev.org/airship/airshipctl/pkg/config"
|
||||
"opendev.org/airship/airshipctl/pkg/document"
|
||||
"opendev.org/airship/airshipctl/pkg/events"
|
||||
"opendev.org/airship/airshipctl/pkg/k8s/applier"
|
||||
"opendev.org/airship/airshipctl/pkg/k8s/utils"
|
||||
"opendev.org/airship/airshipctl/pkg/log"
|
||||
)
|
||||
|
||||
// Options is an abstraction used to apply the phase
|
||||
type Options struct {
|
||||
DryRun bool
|
||||
Prune bool
|
||||
PhaseName string
|
||||
WaitTimeout time.Duration
|
||||
|
||||
Applier *applier.Applier
|
||||
Processor events.EventProcessor
|
||||
EventChannel chan events.Event
|
||||
}
|
||||
|
||||
// Initialize Options with required field, such as Applier
|
||||
func (o *Options) Initialize(kubeConfigPath string) {
|
||||
f := utils.FactoryFromKubeConfig(kubeConfigPath, "")
|
||||
streams := utils.Streams()
|
||||
o.EventChannel = make(chan events.Event)
|
||||
o.Applier = applier.NewApplier(o.EventChannel, f, streams)
|
||||
o.Processor = events.NewDefaultProcessor(streams)
|
||||
}
|
||||
|
||||
// Run apply subcommand logic
|
||||
func (o *Options) Run(cfg *config.Config) error {
|
||||
ao := applier.ApplyOptions{
|
||||
DryRunStrategy: common.DryRunNone,
|
||||
Prune: o.Prune,
|
||||
WaitTimeout: o.WaitTimeout,
|
||||
}
|
||||
if o.DryRun {
|
||||
ao.DryRunStrategy = common.DryRunClient
|
||||
}
|
||||
|
||||
clusterName, err := cfg.CurrentContextClusterName()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
clusterType, err := cfg.CurrentContextClusterType()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ao.BundleName = fmt.Sprintf("%s-%s-%s", clusterName, clusterType, o.PhaseName)
|
||||
kustomizePath, err := cfg.CurrentContextEntryPoint(o.PhaseName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
log.Debugf("building bundle from kustomize path %s", kustomizePath)
|
||||
b, err := document.NewBundleByPath(kustomizePath)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// Returns all documents for this phase
|
||||
bundle, err := b.SelectBundle(document.NewDeployToK8sSelector())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
go o.Applier.ApplyBundle(bundle, ao)
|
||||
return o.Processor.Process(o.EventChannel)
|
||||
}
|
@ -1,124 +0,0 @@
|
||||
/*
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
https://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package apply_test
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
"k8s.io/cli-runtime/pkg/genericclioptions"
|
||||
applyevent "sigs.k8s.io/cli-utils/pkg/apply/event"
|
||||
|
||||
"opendev.org/airship/airshipctl/pkg/config"
|
||||
"opendev.org/airship/airshipctl/pkg/document"
|
||||
"opendev.org/airship/airshipctl/pkg/events"
|
||||
"opendev.org/airship/airshipctl/pkg/k8s/applier"
|
||||
"opendev.org/airship/airshipctl/pkg/phase/apply"
|
||||
"opendev.org/airship/airshipctl/testutil"
|
||||
"opendev.org/airship/airshipctl/testutil/k8sutils"
|
||||
)
|
||||
|
||||
const (
|
||||
kubeconfigPath = "testdata/kubeconfig.yaml"
|
||||
airshipConfigFile = "testdata/config.yaml"
|
||||
)
|
||||
|
||||
func TestDeploy(t *testing.T) {
|
||||
bundle := testutil.NewTestBundle(t, "testdata/primary/site/test-site/ephemeral/initinfra")
|
||||
replicationController, err := bundle.SelectOne(document.NewSelector().ByKind("ReplicationController"))
|
||||
require.NoError(t, err)
|
||||
b, err := replicationController.AsYAML()
|
||||
require.NoError(t, err)
|
||||
f := k8sutils.FakeFactory(t,
|
||||
[]k8sutils.ClientHandler{
|
||||
&k8sutils.InventoryObjectHandler{},
|
||||
&k8sutils.NamespaceHandler{},
|
||||
&k8sutils.GenericHandler{
|
||||
Obj: &corev1.ReplicationController{},
|
||||
Bytes: b,
|
||||
URLPath: "/namespaces/%s/replicationcontrollers",
|
||||
Namespace: replicationController.GetNamespace(),
|
||||
},
|
||||
})
|
||||
defer f.Cleanup()
|
||||
tests := []struct {
|
||||
name string
|
||||
expectedErrorString string
|
||||
phaseName string
|
||||
events []applyevent.Event
|
||||
}{
|
||||
{
|
||||
name: "success",
|
||||
expectedErrorString: "",
|
||||
events: k8sutils.SuccessEvents(),
|
||||
},
|
||||
{
|
||||
name: "missing phase",
|
||||
expectedErrorString: "Phase document 'missingPhase' was not found",
|
||||
phaseName: "missingPhase",
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
tt := tt
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
rs := makeNewFakeRootSettings(t, kubeconfigPath, airshipConfigFile)
|
||||
ao := &apply.Options{PhaseName: "initinfra", DryRun: true}
|
||||
ao.Initialize(rs.KubeConfigPath())
|
||||
|
||||
if tt.events != nil {
|
||||
ch := make(chan events.Event)
|
||||
cliApplier := applier.NewFakeApplier(
|
||||
ch,
|
||||
genericclioptions.IOStreams{
|
||||
In: os.Stdin,
|
||||
Out: os.Stdout,
|
||||
ErrOut: os.Stderr,
|
||||
}, k8sutils.SuccessEvents(), f)
|
||||
ao.Applier = cliApplier
|
||||
ao.EventChannel = ch
|
||||
}
|
||||
if tt.phaseName != "" {
|
||||
ao.PhaseName = tt.phaseName
|
||||
}
|
||||
actualErr := ao.Run(rs)
|
||||
if tt.expectedErrorString != "" {
|
||||
require.Error(t, actualErr)
|
||||
assert.Contains(t, actualErr.Error(), tt.expectedErrorString)
|
||||
} else {
|
||||
assert.NoError(t, actualErr)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// makeNewFakeRootSettings takes kubeconfig path and directory path to fixture dir as argument.
|
||||
func makeNewFakeRootSettings(t *testing.T, kp string, dir string) *config.Config {
|
||||
t.Helper()
|
||||
akp, err := filepath.Abs(kp)
|
||||
require.NoError(t, err)
|
||||
|
||||
adir, err := filepath.Abs(dir)
|
||||
require.NoError(t, err)
|
||||
|
||||
settings, err := config.CreateFactory(&adir, &akp)()
|
||||
require.NoError(t, err)
|
||||
|
||||
return settings
|
||||
}
|
23
pkg/phase/apply/testdata/config.yaml
vendored
23
pkg/phase/apply/testdata/config.yaml
vendored
@ -1,23 +0,0 @@
|
||||
apiVersion: airshipit.org/v1alpha1
|
||||
contexts:
|
||||
dummy_cluster:
|
||||
contextKubeconf: dummycluster_ephemeral
|
||||
manifest: dummy_manifest
|
||||
currentContext: dummy_cluster
|
||||
kind: Config
|
||||
manifests:
|
||||
dummy_manifest:
|
||||
primaryRepositoryName: primary
|
||||
repositories:
|
||||
primary:
|
||||
auth:
|
||||
sshKey: testdata/test-key.pem
|
||||
type: ssh-key
|
||||
checkout:
|
||||
branch: ""
|
||||
force: false
|
||||
remoteRef: ""
|
||||
tag: v1.0.1
|
||||
url: http://dummy.url.com/primary.git
|
||||
subPath: primary/site/test-site
|
||||
targetPath: testdata
|
19
pkg/phase/apply/testdata/kubeconfig.yaml
vendored
19
pkg/phase/apply/testdata/kubeconfig.yaml
vendored
@ -1,19 +0,0 @@
|
||||
apiVersion: v1
|
||||
clusters:
|
||||
- cluster:
|
||||
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN5RENDQWJDZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRFNU1Ea3lPVEUzTURNd09Wb1hEVEk1TURreU5qRTNNRE13T1Zvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTUZyCkdxM0kyb2dZci81Y01Udy9Na1pORTNWQURzdEdyU240WjU2TDhPUGhMcUhDN2t1dno2dVpES3dCSGtGeTBNK2MKRXIzd2piUGE1aTV5NmkyMGtxSHBVMjdPZTA0dzBXV2s4N0RSZVlWaGNoZVJHRXoraWt3SndIcGRmMjJVemZNKwpkSDBzaUhuMVd6UnovYk4za3hMUzJlMnZ2U1Y3bmNubk1YRUd4OXV0MUY0NThHeWxxdmxXTUlWMzg5Q2didXFDCkcwcFdiMTBLM0RVZWdiT25Xa1FmSm5sTWRRVVZDUVdZZEZaaklrcWtkWi9hVTRobkNEV01oZXNWRnFNaDN3VVAKczhQay9BNWh1ZFFPbnFRNDVIWXZLdjZ5RjJWcDUyWExBRUx3NDJ4aVRKZlh0V1h4eHR6cU4wY1lyL2VxeS9XMQp1YVVGSW5xQjFVM0JFL1oxbmFrQ0F3RUFBYU1qTUNFd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFKUUVKQVBLSkFjVDVuK3dsWGJsdU9mS0J3c2gKZTI4R1c5R2QwM0N0NGF3RzhzMXE1ZHNua2tpZmVTUENHVFZ1SXF6UTZDNmJaSk9SMDMvVEl5ejh6NDJnaitDVApjWUZXZkltM2RKTnpRL08xWkdySXZZNWdtcWJtWDlpV0JaU24rRytEOGxubzd2aGMvY0tBRFR5OTMvVU92MThuCkdhMnIrRGJJcHcyTWVBVEl2elpxRS9RWlVSQ25DMmdjUFhTVzFqN2h4R3o1a3ZNcGVDZTdQYVUvdVFvblVHSWsKZ2t6ZzI4NHQvREhUUzc4N1V1SUg5cXBaV09yTFNMOGFBeUxQUHhWSXBteGZmbWRETE9TS2VUemRlTmxoSitUMwowQlBVaHBQTlJBNTNJN0hRQjhVUDR2elNONTkzZ1VFbVlFQ2Jic2RYSzB6ZVR6SDdWWHR2Zmd5WTVWWT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
|
||||
server: https://127.0.0.1:6443
|
||||
name: dummycluster_ephemeral
|
||||
contexts:
|
||||
- context:
|
||||
cluster: dummycluster_ephemeral
|
||||
user: kubernetes-admin
|
||||
name: dummy_cluster
|
||||
current-context: dummy_cluster
|
||||
kind: Config
|
||||
preferences: {}
|
||||
users:
|
||||
- name: kubernetes-admin
|
||||
user:
|
||||
client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM4akNDQWRxZ0F3SUJBZ0lJQXhEdzk2RUY4SXN3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB4T1RBNU1qa3hOekF6TURsYUZ3MHlNREE1TWpneE56QXpNVEphTURReApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1Sa3dGd1lEVlFRREV4QnJkV0psY201bGRHVnpMV0ZrCmJXbHVNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXV6R0pZdlBaNkRvaTQyMUQKSzhXSmFaQ25OQWQycXo1cC8wNDJvRnpRUGJyQWd6RTJxWVZrek9MOHhBVmVSN1NONXdXb1RXRXlGOEVWN3JyLwo0K0hoSEdpcTVQbXF1SUZ5enpuNi9JWmM4alU5eEVmenZpa2NpckxmVTR2UlhKUXdWd2dBU05sMkFXQUloMmRECmRUcmpCQ2ZpS1dNSHlqMFJiSGFsc0J6T3BnVC9IVHYzR1F6blVRekZLdjJkajVWMU5rUy9ESGp5UlJKK0VMNlEKQlltR3NlZzVQNE5iQzllYnVpcG1NVEFxL0p1bU9vb2QrRmpMMm5acUw2Zkk2ZkJ0RjVPR2xwQ0IxWUo4ZnpDdApHUVFaN0hUSWJkYjJ0cDQzRlZPaHlRYlZjSHFUQTA0UEoxNSswV0F5bVVKVXo4WEE1NDRyL2J2NzRKY0pVUkZoCmFyWmlRd0lEQVFBQm95Y3dKVEFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUgKQXdJd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFMMmhIUmVibEl2VHJTMFNmUVg1RG9ueVVhNy84aTg1endVWApSd3dqdzFuS0U0NDJKbWZWRGZ5b0hRYUM4Ti9MQkxyUXM0U0lqU1JYdmFHU1dSQnRnT1RRV21Db1laMXdSbjdwCndDTXZQTERJdHNWWm90SEZpUFl2b1lHWFFUSXA3YlROMmg1OEJaaEZ3d25nWUovT04zeG1rd29IN1IxYmVxWEYKWHF1TTluekhESk41VlZub1lQR09yRHMwWlg1RnNxNGtWVU0wVExNQm9qN1ZIRDhmU0E5RjRYNU4yMldsZnNPMAo4aksrRFJDWTAyaHBrYTZQQ0pQS0lNOEJaMUFSMG9ZakZxT0plcXpPTjBqcnpYWHh4S2pHVFVUb1BldVA5dCtCCjJOMVA1TnI4a2oxM0lrend5Q1NZclFVN09ZM3ltZmJobHkrcXZxaFVFa014MlQ1SkpmQT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
|
||||
client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcFFJQkFBS0NBUUVBdXpHSll2UFo2RG9pNDIxREs4V0phWkNuTkFkMnF6NXAvMDQyb0Z6UVBickFnekUyCnFZVmt6T0w4eEFWZVI3U041d1dvVFdFeUY4RVY3cnIvNCtIaEhHaXE1UG1xdUlGeXp6bjYvSVpjOGpVOXhFZnoKdmlrY2lyTGZVNHZSWEpRd1Z3Z0FTTmwyQVdBSWgyZERkVHJqQkNmaUtXTUh5ajBSYkhhbHNCek9wZ1QvSFR2MwpHUXpuVVF6Rkt2MmRqNVYxTmtTL0RIanlSUkorRUw2UUJZbUdzZWc1UDROYkM5ZWJ1aXBtTVRBcS9KdW1Pb29kCitGakwyblpxTDZmSTZmQnRGNU9HbHBDQjFZSjhmekN0R1FRWjdIVEliZGIydHA0M0ZWT2h5UWJWY0hxVEEwNFAKSjE1KzBXQXltVUpVejhYQTU0NHIvYnY3NEpjSlVSRmhhclppUXdJREFRQUJBb0lCQVFDU0pycjlaeVpiQ2dqegpSL3VKMFZEWCt2aVF4c01BTUZyUjJsOE1GV3NBeHk1SFA4Vk4xYmc5djN0YUVGYnI1U3hsa3lVMFJRNjNQU25DCm1uM3ZqZ3dVQWlScllnTEl5MGk0UXF5VFBOU1V4cnpTNHRxTFBjM3EvSDBnM2FrNGZ2cSsrS0JBUUlqQnloamUKbnVFc1JpMjRzT3NESlM2UDE5NGlzUC9yNEpIM1M5bFZGbkVuOGxUR2c0M1kvMFZoMXl0cnkvdDljWjR5ZUNpNwpjMHFEaTZZcXJZaFZhSW9RRW1VQjdsbHRFZkZzb3l4VDR6RTE5U3pVbkRoMmxjYTF1TzhqcmI4d2xHTzBoQ2JyClB1R1l2WFFQa3Q0VlNmalhvdGJ3d2lBNFRCVERCRzU1bHp6MmNKeS9zSS8zSHlYbEMxcTdXUmRuQVhhZ1F0VzkKOE9DZGRkb0JBb0dCQU5NcUNtSW94REtyckhZZFRxT1M1ZFN4cVMxL0NUN3ZYZ0pScXBqd2Y4WHA2WHo0KzIvTAozVXFaVDBEL3dGTkZkc1Z4eFYxMnNYMUdwMHFWZVlKRld5OVlCaHVSWGpTZ0ZEWldSY1Z1Y01sNVpPTmJsbmZGCjVKQ0xnNXFMZ1g5VTNSRnJrR3A0R241UDQxamg4TnhKVlhzZG5xWE9xNTFUK1RRT1UzdkpGQjc1QW9HQkFPTHcKalp1cnZtVkZyTHdaVGgvRDNpWll5SVV0ZUljZ2NKLzlzbTh6L0pPRmRIbFd4dGRHUFVzYVd1MnBTNEhvckFtbgpqTm4vSTluUXd3enZ3MWUzVVFPbUhMRjVBczk4VU5hbk5TQ0xNMW1yaXZHRXJ1VHFnTDM1bU41eFZPdTUxQU5JCm4yNkFtODBJT2JDeEtLa0R0ZXJSaFhHd3g5c1pONVJCbG9VRThZNGJBb0dBQ3ZsdVhMZWRxcng5VkE0bDNoNXUKVDJXRVUxYjgxZ1orcmtRc1I1S0lNWEw4cllBTElUNUpHKzFuendyN3BkaEFXZmFWdVV2SDRhamdYT0h6MUs5aQpFODNSVTNGMG9ldUg0V01PY1RwU0prWm0xZUlXcWRiaEVCb1FGdUlWTXRib1BsV0d4ZUhFRHJoOEtreGp4aThSCmdEcUQyajRwY1IzQ0g5QjJ5a0lqQjVFQ2dZRUExc0xXLys2enE1c1lNSm14K1JXZThhTXJmL3pjQnVTSU1LQWgKY0dNK0wwMG9RSHdDaUU4TVNqcVN1ajV3R214YUFuanhMb3ZwSFlRV1VmUEVaUW95UE1YQ2VhRVBLOU4xbk8xMwp0V2lHRytIZkIxaU5PazFCc0lhNFNDbndOM1FRVTFzeXBaeEgxT3hueS9LYmkvYmEvWEZ5VzNqMGFUK2YvVWxrCmJGV1ZVdWtDZ1lFQTBaMmRTTFlmTjV5eFNtYk5xMWVqZXdWd1BjRzQxR2hQclNUZEJxdHFac1doWGE3aDdLTWEKeHdvamh5SXpnTXNyK2tXODdlajhDQ2h0d21sQ1p5QU92QmdOZytncnJ1cEZLM3FOSkpKeU9YREdHckdpbzZmTQp5aXB3Q2tZVGVxRThpZ1J6UkI5QkdFUGY4eVpjMUtwdmZhUDVhM0lRZmxiV0czbGpUemNNZVZjPQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=
|
@ -1,2 +0,0 @@
|
||||
resources:
|
||||
- replicationcontroller.yaml
|
@ -1,19 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: ReplicationController
|
||||
metadata:
|
||||
name: test-rc
|
||||
namespace: test
|
||||
labels:
|
||||
airshipit.org/phase: "initinfra"
|
||||
spec:
|
||||
replicas: 1
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
name: test-rc
|
||||
spec:
|
||||
containers:
|
||||
- name: test-rc
|
||||
image: nginx
|
||||
ports:
|
||||
- containerPort: 80
|
@ -1,2 +0,0 @@
|
||||
resources:
|
||||
- initinfra
|
@ -125,7 +125,7 @@ for cluster in ephemeral target; do
|
||||
fi
|
||||
|
||||
# step 2: dry-run the entire phase
|
||||
${ACTL} phase apply --dry-run ${phase}
|
||||
${ACTL} phase run --dry-run ${phase}
|
||||
fi
|
||||
done
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user