Add Emberwake Cloud Ecosystem deploy hub with AWS and generic spread templates.
Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled
Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled
Unified expandable panels with mermaid flows, ZIP export, connection tests, and Playwright smoke coverage.
This commit is contained in:
@@ -23,7 +23,10 @@ type SpreadHandler struct {
|
||||
dataDir string
|
||||
projectRoot string
|
||||
wsHub *WSHub
|
||||
publicURL func() string
|
||||
erasureShards *erasure.ShardStore
|
||||
deployPlan *DeployPlanHandler
|
||||
s3CRRConfigFn func() erasure.S3ShardConfig
|
||||
notesMu sync.RWMutex
|
||||
}
|
||||
|
||||
@@ -33,6 +36,36 @@ func (h *SpreadHandler) BindErasureShards(store *erasure.ShardStore) {
|
||||
}
|
||||
}
|
||||
|
||||
func (h *SpreadHandler) BindDeployPlan(handler *DeployPlanHandler) {
|
||||
if h != nil {
|
||||
h.deployPlan = handler
|
||||
}
|
||||
}
|
||||
|
||||
func (h *SpreadHandler) BindS3CRRConfig(fn func() erasure.S3ShardConfig) {
|
||||
if h != nil {
|
||||
h.s3CRRConfigFn = fn
|
||||
}
|
||||
}
|
||||
|
||||
// GET /api/v1/spread/aws-s3-crr-template — operator-applied CRR JSON (no AWS API calls).
|
||||
func (h *SpreadHandler) GetS3CRRTemplate(w http.ResponseWriter, r *http.Request) {
|
||||
if h == nil || h.s3CRRConfigFn == nil {
|
||||
http.Error(w, "s3 crr not configured", http.StatusServiceUnavailable)
|
||||
return
|
||||
}
|
||||
doc, err := erasure.BuildS3CRRRule(h.s3CRRConfigFn())
|
||||
if err != nil {
|
||||
http.Error(w, err.Error(), http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
writeJSON(w, map[string]interface{}{
|
||||
"template": "templates/spread/aws/s3-crr-rule.json",
|
||||
"rule": doc,
|
||||
"notes": "Apply via S3 console or CLI; enables cross-region shard epidemic replication under shards/",
|
||||
})
|
||||
}
|
||||
|
||||
func NewSpreadHandler(database *dbpkg.Database, dataDir, projectRoot string, wsHub *WSHub) *SpreadHandler {
|
||||
return &SpreadHandler{db: database, dataDir: dataDir, projectRoot: projectRoot, wsHub: wsHub}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user