Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion project.clj
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
[org.cyverse/cyverse-groups-client "0.1.10"]
[org.cyverse/common-cfg "2.8.4"]
[org.cyverse/common-cli "2.8.3"]
[org.cyverse/common-swagger-api "3.4.23"]
[org.cyverse/common-swagger-api "3.4.25"]
[metosin/ring-swagger-ui "5.32.11"]
[org.cyverse/kameleon "3.0.11"
:exclusions [com.impossibl.pgjdbc-ng/pgjdbc-ng]]
Expand Down
60 changes: 60 additions & 0 deletions src/terrain/clients/apps/raw.clj
Original file line number Diff line number Diff line change
Expand Up @@ -1172,6 +1172,14 @@
{:query-params (secured-params)
:as :json}))))

(defn list-resource-presets
[]
(:body
(client/get (apps-url "resource-presets")
(disable-redirects
{:query-params (secured-params)
:as :json}))))

(defn create-private-tool
[body]
(:body
Expand Down Expand Up @@ -1482,3 +1490,55 @@
{:form-params body
:content-type :json
:as :json}))))

(defn admin-list-resource-presets
[]
(:body
(client/get (apps-url "admin" "resource-presets")
(disable-redirects
{:query-params (secured-params)
:as :json}))))

(defn admin-create-resource-preset
[body]
(:body
(client/post (apps-url "admin" "resource-presets")
(disable-redirects
{:query-params (secured-params)
:form-params body
:content-type :json
:as :json}))))

(defn admin-get-resource-preset
[preset-id]
(:body
(client/get (apps-url "admin" "resource-presets" preset-id)
(disable-redirects
{:query-params (secured-params)
:as :json}))))

(defn admin-update-resource-preset
[preset-id body]
(:body
(client/patch (apps-url "admin" "resource-presets" preset-id)
(disable-redirects
{:query-params (secured-params)
:form-params body
:content-type :json
:as :json}))))

(defn admin-delete-resource-preset
[preset-id]
(:body
(client/delete (apps-url "admin" "resource-presets" preset-id)
(disable-redirects
{:query-params (secured-params)
:as :json}))))

(defn admin-set-default-resource-preset
[preset-id]
(:body
(client/put (apps-url "admin" "resource-presets" preset-id "default")
(disable-redirects
{:query-params (secured-params)
:as :json}))))
6 changes: 6 additions & 0 deletions src/terrain/routes.clj
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
[terrain.routes.analyses :refer [analysis-routes quicklaunch-routes]]
[terrain.routes.apps.admin.apps :refer [admin-apps-routes]]
[terrain.routes.apps.admin.reference-genomes :refer [admin-reference-genomes-routes]]
[terrain.routes.apps.admin.resource-presets :refer [admin-resource-preset-routes
resource-preset-routes]]
[terrain.routes.apps.admin.tools :refer [admin-tool-request-routes
admin-tool-routes]]
[terrain.routes.apps.categories :refer [app-category-routes
Expand Down Expand Up @@ -148,6 +150,7 @@
(subject-routes)
(reference-genomes-routes)
(gpu-models-routes)
(resource-preset-routes)
(tool-routes)
(tool-request-routes)
(permanent-id-request-routes)
Expand Down Expand Up @@ -204,6 +207,7 @@
(admin-instant-launch-routes)
(admin-ontology-routes)
(admin-reference-genomes-routes)
(admin-resource-preset-routes)
(admin-tool-routes)
(admin-tool-request-routes)
(admin-permanent-id-request-routes)
Expand Down Expand Up @@ -317,6 +321,7 @@
{:name "admin-permanent-id-requests", :description "Admin Permanent ID Request Endpoints"}
{:name "admin-qms", :description "Admin Quota Management Service Endpoints"}
{:name "admin-reference-genomes", :description "Admin Reference Genome Endpoints"}
{:name "admin-resource-presets", :description "Admin Resource Preset Endpoints"}
{:name "admin-request-types", :description "Admin Request Type Endpoints"}
{:name "admin-requests", :description "Admin Request Endpoints"}
{:name "admin-resource-usage", :description "Resource Usage Administration Endpoints"}
Expand Down Expand Up @@ -362,6 +367,7 @@
{:name "teams", :description "Team Endpoints"}
{:name "tools", :description "Tool Endpoints"}
{:name "gpu-models", :description "GPU Model Configuration Endpoints"}
{:name "resource-presets", :description "Resource Preset Endpoints"}
{:name "tool-requests", :description "Tool Request Endpoints"}
{:name "token", :description "OAuth Tokens"}
{:name "user-info", :description "User Information Endpoints"}
Expand Down
76 changes: 76 additions & 0 deletions src/terrain/routes/apps/admin/resource_presets.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
(ns terrain.routes.apps.admin.resource-presets
(:require [common-swagger-api.schema :refer [context describe DELETE GET PATCH POST PUT]]
[common-swagger-api.schema.apps :refer [ResourcePreset ResourcePresetList
ResourcePresetRequest ResourcePresetUpdateRequest]]
[ring.util.http-response :refer [ok]]
[terrain.clients.apps.raw :as apps]
[terrain.util :refer [optional-routes]]
[terrain.util.config :as config])
(:import [java.util UUID]))

;; Declarations to avoid lint warnings for query and path parameter bindings.
(declare body preset-id)

(defn admin-resource-preset-routes
[]
(optional-routes
[#(and (config/admin-routes-enabled)
(config/app-routes-enabled))]

(context "/resource-presets" []
:tags ["admin-resource-presets"]

(GET "/" []
:return ResourcePresetList
:summary "List Resource Presets"
:description "Lists all resource presets, including disabled ones."
(ok (apps/admin-list-resource-presets)))

(POST "/" []
:body [body ResourcePresetRequest]
:return ResourcePreset
:summary "Create a Resource Preset"
:description "Creates a new resource preset."
(ok (apps/admin-create-resource-preset body)))

(context "/:preset-id" []
:path-params [preset-id :- (describe UUID "The Resource Preset's UUID")]

(GET "/" []
:return ResourcePreset
:summary "Get a Resource Preset"
:description "Gets a resource preset by its identifier."
(ok (apps/admin-get-resource-preset preset-id)))

(PATCH "/" []
:body [body ResourcePresetUpdateRequest]
:return ResourcePreset
:summary "Update a Resource Preset"
:description "Updates an existing resource preset."
(ok (apps/admin-update-resource-preset preset-id body)))

(DELETE "/" []
:summary "Delete a Resource Preset"
:description "Permanently deletes a resource preset."
(ok (apps/admin-delete-resource-preset preset-id)))

(PUT "/default" []
:return ResourcePreset
:summary "Set Default Resource Preset"
:description "Sets this preset as the global default."
(ok (apps/admin-set-default-resource-preset preset-id)))))))

(defn resource-preset-routes
"Non-admin route for listing enabled resource presets."
[]
(optional-routes
[config/app-routes-enabled]

(context "/resource-presets" []
:tags ["resource-presets"]

(GET "/" []
:return ResourcePresetList
:summary "List Resource Presets"
:description "Lists enabled resource presets available for analysis launch."
(ok (apps/list-resource-presets))))))