|
@@ -12,7 +12,7 @@
|
|
|
// See the License for the specific language governing permissions and
|
|
// See the License for the specific language governing permissions and
|
|
|
// limitations under the License.
|
|
// limitations under the License.
|
|
|
|
|
|
|
|
-package lease
|
|
|
|
|
|
|
+package leasehttp
|
|
|
|
|
|
|
|
import (
|
|
import (
|
|
|
"bytes"
|
|
"bytes"
|
|
@@ -22,15 +22,15 @@ import (
|
|
|
"time"
|
|
"time"
|
|
|
|
|
|
|
|
pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
|
|
pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
|
|
|
- "github.com/coreos/etcd/pkg/transport"
|
|
|
|
|
|
|
+ "github.com/coreos/etcd/lease"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
// NewHandler returns an http Handler for lease renewals
|
|
// NewHandler returns an http Handler for lease renewals
|
|
|
-func NewHandler(l Lessor) http.Handler {
|
|
|
|
|
|
|
+func NewHandler(l lease.Lessor) http.Handler {
|
|
|
return &leaseHandler{l}
|
|
return &leaseHandler{l}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-type leaseHandler struct{ l Lessor }
|
|
|
|
|
|
|
+type leaseHandler struct{ l lease.Lessor }
|
|
|
|
|
|
|
|
func (h *leaseHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|
func (h *leaseHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|
|
if r.Method != "POST" {
|
|
if r.Method != "POST" {
|
|
@@ -50,7 +50,7 @@ func (h *leaseHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- ttl, err := h.l.Renew(LeaseID(lreq.ID))
|
|
|
|
|
|
|
+ ttl, err := h.l.Renew(lease.LeaseID(lreq.ID))
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
http.Error(w, err.Error(), http.StatusBadRequest)
|
|
http.Error(w, err.Error(), http.StatusBadRequest)
|
|
|
return
|
|
return
|
|
@@ -69,20 +69,14 @@ func (h *leaseHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// RenewHTTP renews a lease at a given primary server.
|
|
// RenewHTTP renews a lease at a given primary server.
|
|
|
-func RenewHTTP(id LeaseID, url string, tlsInfo transport.TLSInfo, timeout time.Duration) (int64, error) {
|
|
|
|
|
|
|
+// TODO: Batch request in future?
|
|
|
|
|
+func RenewHTTP(id lease.LeaseID, url string, rt http.RoundTripper, timeout time.Duration) (int64, error) {
|
|
|
// will post lreq protobuf to leader
|
|
// will post lreq protobuf to leader
|
|
|
lreq, err := (&pb.LeaseKeepAliveRequest{ID: int64(id)}).Marshal()
|
|
lreq, err := (&pb.LeaseKeepAliveRequest{ID: int64(id)}).Marshal()
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
return -1, err
|
|
return -1, err
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // TODO creating a new transporter for each forward request
|
|
|
|
|
- // can be expensive; in the future reuse transports and batch requests
|
|
|
|
|
- rt, err := transport.NewTimeoutTransport(tlsInfo, timeout, 0, 0)
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- return -1, err
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
cc := &http.Client{Transport: rt, Timeout: timeout}
|
|
cc := &http.Client{Transport: rt, Timeout: timeout}
|
|
|
resp, err := cc.Post(url, "application/protobuf", bytes.NewReader(lreq))
|
|
resp, err := cc.Post(url, "application/protobuf", bytes.NewReader(lreq))
|
|
|
if err != nil {
|
|
if err != nil {
|