Set password, ssh keys and tech in single step during create
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
d469c813a1
commit
779d9ba95a
@ -101,6 +101,14 @@ type App struct {
|
|||||||
|
|
||||||
// This is not store in the database but used in create request when the app suppose to be created from an existing snapshot
|
// This is not store in the database but used in create request when the app suppose to be created from an existing snapshot
|
||||||
Snapshot string `json:"snapshot" gorm:"-"`
|
Snapshot string `json:"snapshot" gorm:"-"`
|
||||||
|
|
||||||
|
// Fields to setup during creating of the app, this is not stored in the database
|
||||||
|
Setup struct {
|
||||||
|
SSHKeys string `json:"ssh_keys"`
|
||||||
|
Tech string `json:"tech"`
|
||||||
|
TechVersion string `json:"tech_version"`
|
||||||
|
Password string `json:"password"`
|
||||||
|
} `json:"setup,omitempty" gorm:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Validate do basic checks of the struct values
|
// Validate do basic checks of the struct values
|
||||||
|
46
glue/main.go
46
glue/main.go
@ -227,30 +227,56 @@ func (p *Processor) Create(appTemplate apps.App) error {
|
|||||||
// Restore the data
|
// Restore the data
|
||||||
err = p.SnapshotProcessor.RestoreSnapshot(appTemplate.Snapshot, appTemplate.Name)
|
err = p.SnapshotProcessor.RestoreSnapshot(appTemplate.Snapshot, appTemplate.Name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return fmt.Errorf("failed to restore snapshot: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Wait for the app to be created
|
||||||
|
err = p.waitForApp()
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to wait for app: %v", err)
|
||||||
|
}
|
||||||
|
time.Sleep(5 * time.Second) // We wait for a little bit longer to make sure the container is fully started
|
||||||
|
|
||||||
|
// Setup SSH keys if it's noted in the request
|
||||||
|
if len(appTemplate.Setup.SSHKeys) > 0 && len(appTemplate.Snapshot) == 0 {
|
||||||
|
err = p.UpdateKeys(appTemplate.Setup.SSHKeys)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to update keys: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Setup technology if it's noted in the request
|
||||||
|
if len(appTemplate.Setup.Tech) > 0 && len(appTemplate.Snapshot) == 0 {
|
||||||
|
err = p.EnableTech(appTemplate.Setup.Tech, appTemplate.Setup.TechVersion)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to enable tech: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set password if it's noted in the request
|
||||||
|
if len(appTemplate.Setup.Password) > 0 && len(appTemplate.Snapshot) == 0 {
|
||||||
|
err = p.SetPassword(appTemplate.Setup.Password)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to set password: %v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Changes port of the app hosted inside the container
|
// Changes port of the app hosted inside the container
|
||||||
if appTemplate.AppPort != 0 {
|
if appTemplate.AppPort != 0 && len(appTemplate.Snapshot) == 0 {
|
||||||
err = p.waitForApp()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
err = container.SetAppPort(appTemplate.AppPort)
|
err = container.SetAppPort(appTemplate.AppPort)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return fmt.Errorf("failed to change app port to %d: %v", appTemplate.AppPort, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = container.RestartProcess("nginx")
|
err = container.RestartProcess("nginx")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return fmt.Errorf("failed to restart nginx: %v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
err = container.Start()
|
err = container.Start()
|
||||||
return err
|
return fmt.Errorf("failed to start container: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Register registers app without creating a container for it
|
// Register registers app without creating a container for it
|
||||||
|
Loading…
Reference in New Issue
Block a user