Refactoring CreateDeployment to isolate manifest creation logic.

CreateDeployment will now create a deployment before expansion, and will
fail the deployment on expansion error.
pull/91/head
Brendan Melville 10 years ago
parent 37cd3573c4
commit 1befa70ca9

@ -90,26 +90,23 @@ func (m *manager) GetManifest(deploymentName string, manifestName string) (*Mani
// and stores the deployment in the repository. Returns the deployment.
func (m *manager) CreateDeployment(t *Template) (*Deployment, error) {
log.Printf("Creating deployment: %s", t.Name)
et, err := m.expander.ExpandTemplate(*t)
_, err := m.repository.CreateDeployment(t.Name)
if err != nil {
log.Printf("Expansion failed %v", err)
log.Printf("CreateDeployment failed %v", err)
return nil, err
}
_, err = m.repository.CreateDeployment(t.Name)
manifest, err := createManifest(t)
if err != nil {
log.Printf("CreateDeployment failed %v", err)
log.Printf("Manifest creation failed: %v", err)
m.repository.SetDeploymentStatus(t.Name, FailedStatus)
return nil, err
}
manifest := NewManifest(t.Name, generateManifestName())
manifest.InputConfig = t
manifest.ExpandedConfig = et.Config
manifest.Layout = et.Layout
err = m.repository.AddManifest(t.Name, manifest)
if err != nil {
log.Printf("AddManifest failed %v", err)
m.repository.SetDeploymentStatus(t.Name, FailedStatus)
return nil, err
}
@ -126,6 +123,22 @@ func (m *manager) CreateDeployment(t *Template) (*Deployment, error) {
return m.repository.GetValidDeployment(t.Name)
}
func (m *manager) createManifest(t *Template) (*Manifest, error) {
et, err := m.expander.ExpandTemplate(*t)
if err != nil {
log.Printf("Expansion failed %v", err)
return nil, err
}
return &Manifest{
Name: generateManifestName(),
Deployment: t.Name,
InputConfig: t,
ExpandedConfig: et.Config,
Layout: et.Layout,
}
}
func (m *manager) addTypeInstances(deploymentName string, manifestName string, layout *Layout) {
m.repository.ClearTypeInstances(deploymentName)

@ -81,11 +81,6 @@ func NewDeployment(name string, id int) *Deployment {
Manifests: make(map[string]*Manifest, 0)}
}
// NewManifest creates a new manifest.
func NewManifest(deploymentName string, manifestName string) *Manifest {
return &Manifest{Deployment: deploymentName, Name: manifestName}
}
// DeploymentStatus is an enumeration type for the status of a deployment.
type DeploymentStatus string

Loading…
Cancel
Save