Add support for out of capacity error message

This commit is contained in:
Jonathan Leibiusky @xetorthio
2017-09-07 17:05:05 -03:00
parent d29a02bb22
commit ef9be2a5ac
3 changed files with 15 additions and 0 deletions

View File

@@ -2,10 +2,12 @@ package handlers
import (
"encoding/json"
"fmt"
"log"
"net/http"
"github.com/gorilla/mux"
"github.com/play-with-docker/play-with-docker/provisioner"
"github.com/play-with-docker/play-with-docker/pwd"
"github.com/play-with-docker/play-with-docker/pwd/types"
)
@@ -25,6 +27,10 @@ func NewInstance(rw http.ResponseWriter, req *http.Request) {
if pwd.SessionComplete(err) {
rw.WriteHeader(http.StatusConflict)
return
} else if provisioner.OutOfCapacity(err) {
rw.WriteHeader(http.StatusServiceUnavailable)
fmt.Fprintln(rw, `{"error": "out_of_capacity"}`)
return
}
log.Println(err)
rw.WriteHeader(http.StatusInternalServerError)

View File

@@ -1,12 +1,19 @@
package provisioner
import (
"errors"
"io"
"net"
"github.com/play-with-docker/play-with-docker/pwd/types"
)
var OutOfCapacityError = errors.New("OutOfCapacity")
func OutOfCapacity(e error) bool {
return e == OutOfCapacityError
}
type InstanceProvisionerApi interface {
InstanceNew(session *types.Session, conf types.InstanceConfig) (*types.Instance, error)
InstanceDelete(session *types.Session, instance *types.Instance) error

View File

@@ -127,6 +127,8 @@
}, function(response) {
if (response.status == 409) {
$scope.showAlert('Max instances reached', 'Maximum number of instances reached')
} else if (response.status == 503 && response.data.error == 'out_of_capacity') {
$scope.showAlert('Out Of Capacity', 'We are really sorry. But we are currently out of capacity and cannot create new instances. Please try again later.')
}
}).finally(function() {
updateNewInstanceBtnState(false);