diff --git a/bin/hipops b/bin/hipops index f4dce13..3492121 100755 Binary files a/bin/hipops and b/bin/hipops differ diff --git a/parser/scenario.go b/parser/scenario.go index f2a5c34..9f40c12 100644 --- a/parser/scenario.go +++ b/parser/scenario.go @@ -63,6 +63,22 @@ type playbook struct { Apps []string } +func (p *playbook) baseDuplicate() *playbook { + dup := &playbook{} + dup.Name = p.Name + dup.Play = p.Play + dup.State = p.State + dup.Inventory = p.Inventory + dup.User = p.User + dup.State = p.State + dupContainers := make([]*plugins.Container, len(p.Containers)) + for i, _ := range p.Containers { + dupContainers[i] = p.Containers[i].BaseDuplicate() + } + dup.Containers = dupContainers + return dup +} + func (p *playbook) configure(plugin *plugins.Plugin) error { if p.Inventory == "" { return errors.New(utilities.INVENTORY_MISSING) @@ -144,15 +160,16 @@ func (sc *Scenario) Parse(plugin *plugins.Plugin) ([]*plugins.Action, error) { if len(p.Apps) != 0 { for _, appString := range p.Apps { - subAction := action.BaseDuplicate() p.Name = utilities.ParseTemplate("{{.App.Name}}", sc, appString) - app, err := sc.findApp(p.Name) + subPlaybook := p.baseDuplicate() + subAction := action.BaseDuplicate() + app, err := sc.findApp(subPlaybook.Name) if err != nil { return nil, err } - sc.configureContainers(p, plugin, appString) + sc.configureContainers(subPlaybook, plugin, appString) app.toAction(subAction) - p.toAction(subAction) + subPlaybook.toAction(subAction) actions[counter] = subAction counter++ } diff --git a/plugins/plugins.go b/plugins/plugins.go index f072e80..aef7f51 100644 --- a/plugins/plugins.go +++ b/plugins/plugins.go @@ -110,3 +110,11 @@ func (c *Container) Configure() { c.Params = fmt.Sprintf("--name %s %s", c.Name, c.Params) } } + +func (a *Container) BaseDuplicate() *Container { + dup := &Container{} + dup.Params = a.Params + dup.Name = a.Name + dup.State = a.State + return dup +} diff --git a/version.go b/version.go index f3fba0f..7796a9b 100644 --- a/version.go +++ b/version.go @@ -4,7 +4,7 @@ package main var GitCommit string // The main version number that is being run at the moment. -const Version = "0.1.1" +const Version = "0.1.2" // A pre-release marker for the version. If this is "" (empty string) // then it means that it is a final release. Otherwise, this is a pre-release