Possibility to set technology version
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
This commit is contained in:
parent
6f532b052e
commit
2a34177ab8
@ -247,10 +247,18 @@ func (c *Container) SetFileContent(filename string, text string, mode string) er
|
|||||||
|
|
||||||
// SetTechnology prepares container for given technology (Python, PHP, Node.js, ...)
|
// SetTechnology prepares container for given technology (Python, PHP, Node.js, ...)
|
||||||
// Where tech can be php, python or node and latest available version is used.
|
// Where tech can be php, python or node and latest available version is used.
|
||||||
func (c *Container) SetTechnology(tech string) error {
|
// If version is empty string default version will be used.
|
||||||
|
func (c *Container) SetTechnology(tech string, version string) error {
|
||||||
driver := c.getDriver()
|
driver := c.getDriver()
|
||||||
|
|
||||||
_, err := driver.Exec(c.App.Name, []string{"su", "app", "-c", "rosti " + tech}, "", []string{}, false)
|
var err error
|
||||||
|
|
||||||
|
// TODO: script injection here?
|
||||||
|
if version == "" {
|
||||||
|
_, err = driver.Exec(c.App.Name, []string{"su", "app", "-c", "rosti " + tech}, "", []string{}, false)
|
||||||
|
} else {
|
||||||
|
_, err = driver.Exec(c.App.Name, []string{"su", "app", "-c", "rosti " + tech + " " + version}, "", []string{}, false)
|
||||||
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
14
handlers.go
14
handlers.go
@ -320,49 +320,49 @@ func setServicesHandler(c echo.Context) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if quickServices.Python {
|
if quickServices.Python {
|
||||||
err = container.SetTechnology("python")
|
err = container.SetTechnology("python", "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return c.JSONPretty(http.StatusInternalServerError, Message{Message: err.Error()}, JSONIndent)
|
return c.JSONPretty(http.StatusInternalServerError, Message{Message: err.Error()}, JSONIndent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if quickServices.PHP {
|
if quickServices.PHP {
|
||||||
err = container.SetTechnology("php")
|
err = container.SetTechnology("php", "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return c.JSONPretty(http.StatusInternalServerError, Message{Message: err.Error()}, JSONIndent)
|
return c.JSONPretty(http.StatusInternalServerError, Message{Message: err.Error()}, JSONIndent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if quickServices.Node {
|
if quickServices.Node {
|
||||||
err = container.SetTechnology("node")
|
err = container.SetTechnology("node", "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return c.JSONPretty(http.StatusInternalServerError, Message{Message: err.Error()}, JSONIndent)
|
return c.JSONPretty(http.StatusInternalServerError, Message{Message: err.Error()}, JSONIndent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if quickServices.Ruby {
|
if quickServices.Ruby {
|
||||||
err = container.SetTechnology("ruby")
|
err = container.SetTechnology("ruby", "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return c.JSONPretty(http.StatusInternalServerError, Message{Message: err.Error()}, JSONIndent)
|
return c.JSONPretty(http.StatusInternalServerError, Message{Message: err.Error()}, JSONIndent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if quickServices.Deno {
|
if quickServices.Deno {
|
||||||
err = container.SetTechnology("deno")
|
err = container.SetTechnology("deno", "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return c.JSONPretty(http.StatusInternalServerError, Message{Message: err.Error()}, JSONIndent)
|
return c.JSONPretty(http.StatusInternalServerError, Message{Message: err.Error()}, JSONIndent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if quickServices.Memcached {
|
if quickServices.Memcached {
|
||||||
err = container.SetTechnology("memcached")
|
err = container.SetTechnology("memcached", "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return c.JSONPretty(http.StatusInternalServerError, Message{Message: err.Error()}, JSONIndent)
|
return c.JSONPretty(http.StatusInternalServerError, Message{Message: err.Error()}, JSONIndent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if quickServices.Redis {
|
if quickServices.Redis {
|
||||||
err = container.SetTechnology("redis")
|
err = container.SetTechnology("redis", "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return c.JSONPretty(http.StatusInternalServerError, Message{Message: err.Error()}, JSONIndent)
|
return c.JSONPretty(http.StatusInternalServerError, Message{Message: err.Error()}, JSONIndent)
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/nats-io/nats.go"
|
"github.com/nats-io/nats.go"
|
||||||
@ -612,8 +613,25 @@ func processesEventHandler(m *nats.Msg, message *RequestMessage) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Enable one of the supported technologies or services (python, node, redis, ...)
|
// Enable one of the supported technologies or services (python, node, redis, ...)
|
||||||
|
// If payload contains only name of the tech the default version for given image is selected.
|
||||||
|
// Otherwise it can be passed in format tech:version.
|
||||||
func enableTechEventHandler(m *nats.Msg, message *RequestMessage) error {
|
func enableTechEventHandler(m *nats.Msg, message *RequestMessage) error {
|
||||||
|
if !regexp.Match("[a-z0-9A-Z]*:?[0-9\.\-]*", []byte(message.Payload)) {
|
||||||
|
return errors.New("payload malformation, it has to be in format tech:version")
|
||||||
|
}
|
||||||
|
|
||||||
service := message.Payload
|
service := message.Payload
|
||||||
|
version := ""
|
||||||
|
|
||||||
|
if strings.Contains(service, ":") {
|
||||||
|
parts := strings.SplitN(message.Payload, ":", 2)
|
||||||
|
if len(parts) != 2 {
|
||||||
|
return errors.New("service and version malformat")
|
||||||
|
}
|
||||||
|
|
||||||
|
service = parts[0]
|
||||||
|
version = parts[1]
|
||||||
|
}
|
||||||
|
|
||||||
err := waitForApp(message.AppName)
|
err := waitForApp(message.AppName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -636,7 +654,7 @@ func enableTechEventHandler(m *nats.Msg, message *RequestMessage) error {
|
|||||||
App: app,
|
App: app,
|
||||||
}
|
}
|
||||||
|
|
||||||
err = container.SetTechnology(service)
|
err = container.SetTechnology(service, version)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println("ERROR enable tech problem: " + err.Error())
|
log.Println("ERROR enable tech problem: " + err.Error())
|
||||||
publish(app.Name, "backend problem", true)
|
publish(app.Name, "backend problem", true)
|
||||||
|
Loading…
Reference in New Issue
Block a user