diff --git a/pkg/phase/ifc/executor.go b/pkg/phase/ifc/executor.go index f7af81f8e..931303f24 100644 --- a/pkg/phase/ifc/executor.go +++ b/pkg/phase/ifc/executor.go @@ -23,7 +23,7 @@ import ( // Executor interface should be implemented by each runner type Executor interface { - Run(dryrun, debug bool) error + Run(dryrun, debug, wait bool) error Render(io.Writer) error Validate() error Wait() error diff --git a/pkg/phase/phase.go b/pkg/phase/phase.go index 634642fa1..1e3df4a7f 100644 --- a/pkg/phase/phase.go +++ b/pkg/phase/phase.go @@ -15,6 +15,7 @@ package phase import ( + "fmt" "path/filepath" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -26,12 +27,6 @@ import ( "opendev.org/airship/airshipctl/pkg/phase/ifc" ) -const ( - // PhaseDirName directory for bundle with phases - // TODO (dukov) Remove this once repository metadata is ready - PhaseDirName = "phases" -) - var ( // ExecutorRegistry contins registered runner factories ExecutorRegistry = make(map[schema.GroupVersionKind]ifc.ExecutorFactory) @@ -48,7 +43,12 @@ func (p *Cmd) getBundle() (document.Bundle, error) { if err != nil { return nil, err } - return document.NewBundleByPath(filepath.Join(ccm.TargetPath, ccm.SubPath, PhaseDirName)) + fmt.Printf("Target path is: %s", filepath.Join(ccm.TargetPath)) + meta, err := p.Config.CurrentContextManifestMetadata() + if err != nil { + return nil, err + } + return document.NewBundleByPath(filepath.Join(ccm.TargetPath, meta.PhaseMeta.Path)) } // GetPhase returns particular phase object identified by name @@ -126,7 +126,7 @@ func (p *Cmd) Exec(name string) error { return err } - return executor.Run(p.DryRun, p.Debug) + return executor.Run(p.DryRun, p.Debug, true) } // Plan shows available phase names diff --git a/pkg/phase/phase_test.go b/pkg/phase/phase_test.go index 015247d98..4312f43ad 100644 --- a/pkg/phase/phase_test.go +++ b/pkg/phase/phase_test.go @@ -71,6 +71,7 @@ func TestPhasePlan(t *testing.T) { m, err := s.Config.CurrentContextManifest() require.NoError(t, err) m.SubPath = "no_plan_site" + m.MetadataPath = "no_plan_site/metadata.yaml" return s }, expectedErr: document.ErrDocNotFound{ diff --git a/pkg/phase/testdata/airshipconfig.yaml b/pkg/phase/testdata/airshipconfig.yaml index 52a357ea7..71b0caa1e 100644 --- a/pkg/phase/testdata/airshipconfig.yaml +++ b/pkg/phase/testdata/airshipconfig.yaml @@ -27,6 +27,8 @@ kind: Config manifests: dummy_manifest: primaryRepositoryName: primary + targetPath: testdata + metadataPath: valid_site/metadata.yaml repositories: primary: auth: @@ -39,6 +41,5 @@ manifests: tag: v1.0.1 url: http://dummy.url.com/primary.git subPath: valid_site - targetPath: testdata users: dummy_user: {} \ No newline at end of file diff --git a/pkg/phase/testdata/no_plan_site/metadata.yaml b/pkg/phase/testdata/no_plan_site/metadata.yaml new file mode 100644 index 000000000..01eb92b8d --- /dev/null +++ b/pkg/phase/testdata/no_plan_site/metadata.yaml @@ -0,0 +1,4 @@ +inventory: + path: "manifests/site/inventory" +phase: + path: "no_plan_site/phases" \ No newline at end of file diff --git a/pkg/phase/testdata/valid_site/metadata.yaml b/pkg/phase/testdata/valid_site/metadata.yaml new file mode 100644 index 000000000..63f0999f4 --- /dev/null +++ b/pkg/phase/testdata/valid_site/metadata.yaml @@ -0,0 +1,4 @@ +inventory: + path: "manifests/site/inventory" +phase: + path: "valid_site/phases" \ No newline at end of file