1
This commit is contained in:
@@ -147,6 +147,7 @@ func (m *Module) RegisterRoutes(router chi.Router) {
|
||||
r.Post("/{clusterID}/vpn-connections/{vpnConnectionID}/leases/{leaseID}/release", m.releaseVPNConnectionLease)
|
||||
r.Post("/{clusterID}/vpn-connections/{vpnConnectionID}/leases/{leaseID}/fence", m.fenceVPNConnectionLease)
|
||||
r.Get("/{clusterID}/nodes/{nodeID}/vpn/assignments", m.listNodeVPNAssignments)
|
||||
r.Post("/{clusterID}/nodes/{nodeID}/vpn/assignments/{vpnConnectionID}/lease/acquire", m.acquireNodeVPNAssignmentLease)
|
||||
r.Post("/{clusterID}/nodes/{nodeID}/vpn/assignments/{vpnConnectionID}/lease/{leaseID}/renew", m.renewNodeVPNAssignmentLease)
|
||||
r.Post("/{clusterID}/nodes/{nodeID}/vpn/assignments/{vpnConnectionID}/status", m.reportNodeVPNAssignmentStatus)
|
||||
r.Get("/{clusterID}/vpn-connections/{vpnConnectionID}/tunnel/stats", m.getVPNPacketStats)
|
||||
@@ -2072,6 +2073,35 @@ func (m *Module) listNodeVPNAssignments(w http.ResponseWriter, r *http.Request)
|
||||
httpx.WriteJSON(w, http.StatusOK, map[string]any{"vpn_assignments": items})
|
||||
}
|
||||
|
||||
func (m *Module) acquireNodeVPNAssignmentLease(w http.ResponseWriter, r *http.Request) {
|
||||
var payload struct {
|
||||
TTLSeconds int `json:"ttl_seconds"`
|
||||
Metadata json.RawMessage `json:"metadata"`
|
||||
}
|
||||
if err := json.NewDecoder(r.Body).Decode(&payload); err != nil {
|
||||
httpx.WriteError(w, http.StatusBadRequest, "invalid vpn node lease acquire payload")
|
||||
return
|
||||
}
|
||||
item, err := m.service.AcquireNodeVPNAssignmentLease(r.Context(), AcquireNodeVPNAssignmentLeaseInput{
|
||||
ClusterID: chi.URLParam(r, "clusterID"),
|
||||
VPNConnectionID: chi.URLParam(r, "vpnConnectionID"),
|
||||
OwnerNodeID: chi.URLParam(r, "nodeID"),
|
||||
TTL: time.Duration(payload.TTLSeconds) * time.Second,
|
||||
Metadata: payload.Metadata,
|
||||
})
|
||||
if writeServiceError(w, err) {
|
||||
return
|
||||
}
|
||||
httpx.WriteJSON(w, http.StatusCreated, map[string]any{"lease": NodeVPNAssignmentLease{
|
||||
LeaseID: item.ID,
|
||||
OwnerNodeID: item.OwnerNodeID,
|
||||
LeaseGeneration: item.LeaseGeneration,
|
||||
Status: item.Status,
|
||||
RenewedAt: item.RenewedAt,
|
||||
ExpiresAt: item.ExpiresAt,
|
||||
}})
|
||||
}
|
||||
|
||||
func (m *Module) renewNodeVPNAssignmentLease(w http.ResponseWriter, r *http.Request) {
|
||||
var payload struct {
|
||||
TTLSeconds int `json:"ttl_seconds"`
|
||||
|
||||
Reference in New Issue
Block a user