mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2024-12-27 10:50:33 +00:00
code that verifies the Docker daemon connection before adding
This commit is contained in:
parent
ffd42a1a0e
commit
0e3b11c44d
3 changed files with 26 additions and 12 deletions
|
@ -58,19 +58,19 @@ func PostNode(c *gin.Context) {
|
|||
node.CA = in.CA
|
||||
node.Arch = "linux_amd64"
|
||||
|
||||
err = engine.Allocate(node)
|
||||
if err != nil {
|
||||
c.String(http.StatusBadRequest, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
err = model.InsertNode(db, node)
|
||||
if err != nil {
|
||||
c.AbortWithStatus(http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
ok := engine.Allocate(node)
|
||||
if !ok {
|
||||
c.AbortWithStatus(http.StatusInternalServerError)
|
||||
} else {
|
||||
c.IndentedJSON(http.StatusOK, node)
|
||||
}
|
||||
|
||||
c.IndentedJSON(http.StatusOK, node)
|
||||
}
|
||||
|
||||
func DeleteNode(c *gin.Context) {
|
||||
|
|
|
@ -26,7 +26,7 @@ type Engine interface {
|
|||
Cancel(int64, int64, *model.Node) error
|
||||
Stream(int64, int64, *model.Node) (io.ReadCloser, error)
|
||||
Deallocate(*model.Node)
|
||||
Allocate(*model.Node) bool
|
||||
Allocate(*model.Node) error
|
||||
Subscribe(chan *Event)
|
||||
Unsubscribe(chan *Event)
|
||||
}
|
||||
|
@ -124,9 +124,23 @@ func (e *engine) Unsubscribe(c chan *Event) {
|
|||
e.bus.unsubscribe(c)
|
||||
}
|
||||
|
||||
func (e *engine) Allocate(node *model.Node) bool {
|
||||
log.Infof("registered docker daemon %s", node.Addr)
|
||||
return e.pool.allocate(node)
|
||||
func (e *engine) Allocate(node *model.Node) error {
|
||||
|
||||
// run the full build!
|
||||
client, err := newDockerClient(node.Addr, node.Cert, node.Key, node.CA)
|
||||
if err != nil {
|
||||
log.Errorf("error creating docker client %s. %s.", node.Addr, err)
|
||||
return err
|
||||
}
|
||||
version, err := client.Version()
|
||||
if err != nil {
|
||||
log.Errorf("error connecting to docker daemon %s. %s.", node.Addr, err)
|
||||
return err
|
||||
}
|
||||
|
||||
log.Infof("registered docker daemon %s running version %s", node.Addr, version.Version)
|
||||
e.pool.allocate(node)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (e *engine) Deallocate(n *model.Node) {
|
||||
|
|
|
@ -423,7 +423,7 @@ body.login div.alert { position: fixed; top: 0px; left: 0px; right: 0px; line-he
|
|||
|
||||
.tt-open { position: absolute; top: 34px; left: 0px; z-index: 100; display: none; background: #FFF; min-width: 100%; border: 1px solid #eee; border-radius: 0px; }
|
||||
|
||||
.tt-selectable:hover, .tt-cursor { background: #f4f4f4; }
|
||||
.tt-selectable:hover, .tt-cursor { background: #eff1f5; }
|
||||
|
||||
.tt-selectable { padding: 1rem 0.75rem; cursor: pointer; display: flex; }
|
||||
|
||||
|
|
Loading…
Reference in a new issue