Adding Expand to the manager.

pull/91/head
Brendan Melville 10 years ago
parent 1befa70ca9
commit 10aa6ff7c6

@ -28,6 +28,7 @@ type Manager interface {
PutDeployment(name string, t *Template) (*Deployment, error) PutDeployment(name string, t *Template) (*Deployment, error)
ListManifests(deploymentName string) (map[string]*Manifest, error) ListManifests(deploymentName string) (map[string]*Manifest, error)
GetManifest(deploymentName string, manifest string) (*Manifest, error) GetManifest(deploymentName string, manifest string) (*Manifest, error)
Expand(t *Template) (*Manifest, error)
ListTypes() []string ListTypes() []string
ListInstances(typeName string) []*TypeInstance ListInstances(typeName string) []*TypeInstance
} }
@ -96,7 +97,7 @@ func (m *manager) CreateDeployment(t *Template) (*Deployment, error) {
return nil, err return nil, err
} }
manifest, err := createManifest(t) manifest, err := m.createManifest(t)
if err != nil { if err != nil {
log.Printf("Manifest creation failed: %v", err) log.Printf("Manifest creation failed: %v", err)
m.repository.SetDeploymentStatus(t.Name, FailedStatus) m.repository.SetDeploymentStatus(t.Name, FailedStatus)
@ -110,7 +111,7 @@ func (m *manager) CreateDeployment(t *Template) (*Deployment, error) {
return nil, err return nil, err
} }
if err := m.deployer.CreateConfiguration(et.Config); err != nil { if err := m.deployer.CreateConfiguration(manifest.ExpandedConfig); err != nil {
// Deployment failed, mark as deleted // Deployment failed, mark as deleted
log.Printf("CreateConfiguration failed: %v", err) log.Printf("CreateConfiguration failed: %v", err)
m.repository.SetDeploymentStatus(t.Name, FailedStatus) m.repository.SetDeploymentStatus(t.Name, FailedStatus)
@ -136,7 +137,7 @@ func (m *manager) createManifest(t *Template) (*Manifest, error) {
InputConfig: t, InputConfig: t,
ExpandedConfig: et.Config, ExpandedConfig: et.Config,
Layout: et.Layout, Layout: et.Layout,
} }, nil
} }
func (m *manager) addTypeInstances(deploymentName string, manifestName string, layout *Layout) { func (m *manager) addTypeInstances(deploymentName string, manifestName string, layout *Layout) {
@ -188,7 +189,7 @@ func (m *manager) DeleteDeployment(name string, forget bool) (*Deployment, error
} }
// Create an empty manifest since resources have been deleted. // Create an empty manifest since resources have been deleted.
err = m.repository.AddManifest(name, NewManifest(name, generateManifestName())) err = m.repository.AddManifest(name, &Manifest{Deployment: name, Name: generateManifestName()})
if err != nil { if err != nil {
log.Printf("Failed to add empty manifest") log.Printf("Failed to add empty manifest")
return nil, err return nil, err
@ -224,10 +225,13 @@ func (m *manager) PutDeployment(name string, t *Template) (*Deployment, error) {
return nil, err return nil, err
} }
manifest := NewManifest(t.Name, generateManifestName()) manifest := &Manifest{
manifest.InputConfig = t Deployment: t.Name,
manifest.ExpandedConfig = et.Config Name: generateManifestName(),
manifest.Layout = et.Layout InputConfig: t,
ExpandedConfig: et.Config,
Layout: et.Layout,
}
err = m.repository.AddManifest(t.Name, manifest) err = m.repository.AddManifest(t.Name, manifest)
if err != nil { if err != nil {
@ -240,6 +244,19 @@ func (m *manager) PutDeployment(name string, t *Template) (*Deployment, error) {
return m.repository.GetValidDeployment(t.Name) return m.repository.GetValidDeployment(t.Name)
} }
func (m *manager) Expand(t *Template) (*Manifest, error) {
et, err := m.expander.ExpandTemplate(*t)
if err != nil {
log.Printf("Expansion failed %v", err)
return nil, err
}
return &Manifest{
ExpandedConfig: et.Config,
Layout: et.Layout,
}, nil
}
func (m *manager) ListTypes() []string { func (m *manager) ListTypes() []string {
return m.repository.ListTypes() return m.repository.ListTypes()
} }

@ -394,6 +394,29 @@ func TestDeleteDeploymentForget(t *testing.T) {
} }
} }
func TestExpand(t *testing.T) {
m, err := testManager.Expand(&template)
if err != nil {
t.Error("Failed to expand template into manifest.")
}
if m.InputConfig != nil {
t.Errorf("Input config not nil: %v", *m)
}
if m.InputConfig != nil {
t.Errorf("Input config not nil: %v", *m)
}
if !reflect.DeepEqual(*m.ExpandedConfig, configuration) {
t.Errorf("Expanded config not correct in output manifest: %v", *m)
}
if !reflect.DeepEqual(*m.Layout, layout) {
t.Errorf("Layout not correct in output manifest: %v", *m)
}
}
func TestListTypes(t *testing.T) { func TestListTypes(t *testing.T) {
testRepository.reset() testRepository.reset()

Loading…
Cancel
Save