diff --git a/core/api_v2.go b/core/api_v2.go index 8fd4f76d1..e4a0ee264 100644 --- a/core/api_v2.go +++ b/core/api_v2.go @@ -2610,6 +2610,33 @@ func (c *Core) v2API() *route.Router { r.OK(store) }) + r.Dispatch("POST /v2/tenants/:uuid/stores/:uuid/test", func(r *route.Request) { // {{{ + // if c.IsNotTenantOperator(r, r.Args[1]) { + // return + // } + + store, err := c.db.GetStore(r.Args[2]) + if err != nil { + r.Fail(route.Oops(err, "Unable to retrieve storage system information")) + return + } + + if store == nil || store.TenantUUID != r.Args[1] { + r.Fail(route.NotFound(nil, "No such store")) + return + } + + // if _, err = c.db.PauseJob(job.UUID); err != nil { + // r.Fail(route.Oops(err, "Unable to pause job")) + // return + // } + if _, err := c.db.CreateTestStoreTask("system", store); err != nil { + log.Errorf("failed to schedule storage test task (non-critical) for %s (%s): %s", + store.Name, store.UUID, err) + } + + r.Success("Testing store") + }) // }}} r.Dispatch("DELETE /v2/tenants/:uuid/stores/:uuid", func(r *route.Request) { // {{{ if c.IsNotTenantEngineer(r, r.Args[1]) { diff --git a/t/urls b/t/urls index 098fa870c..32d3e8e39 100644 --- a/t/urls +++ b/t/urls @@ -19,6 +19,7 @@ system engineer #!/admin/stores/store system engineer #!/admin/stores/new system engineer #!/admin/stores/edit system engineer #!/admin/stores/delete +system engineer #!/admin/stores/test system engineer #!/admin/policies system engineer #!/admin/policies/store @@ -39,6 +40,7 @@ tenant operator #!/stores/store tenant engineer #!/stores/new tenant engineer #!/stores/edit tenant engineer #!/stores/delete +tenant engineer #!/stores/test tenant operator #!/policies tenant operator #!/policies/store diff --git a/web/htdocs/index.html b/web/htdocs/index.html index 1648c99e9..059c4ad21 100755 --- a/web/htdocs/index.html +++ b/web/htdocs/index.html @@ -2524,6 +2524,7 @@