Add Plan Status() to ifc.plan interface

This commit adds plan Status() method to ifc.plan
interface.

Relates-To: #412
Change-Id: I4857eec9ea125902e305af64fbb336ff6de4faa8
changes/36/784936/2
niharikab 2021-04-06 17:27:36 +05:30
parent dd9a904fcd
commit 289b569de4
2 changed files with 21 additions and 0 deletions

View File

@ -246,6 +246,20 @@ func (p *plan) Run(ro ifc.RunOptions) error {
return nil
}
// Status returns the status of phases in a given plan
func (p *plan) Status(options ifc.StatusOptions) (ifc.PlanStatus, error) {
for _, step := range p.apiObj.Phases {
phase, err := p.phaseClient.PhaseByID(ifc.ID{Name: step.Name})
if err != nil {
return ifc.PlanStatus{}, err
}
if _, err = phase.Status(); err != nil {
return ifc.PlanStatus{}, err
}
}
return ifc.PlanStatus{}, nil
}
var _ ifc.Client = &client{}
type client struct {

View File

@ -41,8 +41,15 @@ type PhaseStatus struct {
type Plan interface {
Validate() error
Run(RunOptions) error
Status(StatusOptions) (PlanStatus, error)
}
// StatusOptions is used to define status options
type StatusOptions struct{}
// PlanStatus is a struct which defines status of PLAN
type PlanStatus struct{}
// ID uniquely identifies the phase
type ID struct {
Name string