MCPcopy Index your code
hub / github.com/coder/coder / provisionerKeyDaemons

Method provisionerKeyDaemons

enterprise/coderd/provisionerkeys.go:129–185  ·  view source on GitHub ↗

@Summary List provisioner key daemons @ID list-provisioner-key-daemons @Security CoderSessionToken @Produce json @Tags Enterprise @Param organization path string true "Organization ID" @Success 200 {object} []codersdk.ProvisionerKeyDaemons @Router /api/v2/organizations/{organization}/provisionerkeys

(rw http.ResponseWriter, r *http.Request)

Source from the content-addressed store, hash-verified

127// @Success 200 {object} []codersdk.ProvisionerKeyDaemons
128// @Router /api/v2/organizations/{organization}/provisionerkeys/daemons [get]
129func (api *API) provisionerKeyDaemons(rw http.ResponseWriter, r *http.Request) {
130 ctx := r.Context()
131 organization := httpmw.OrganizationParam(r)
132
133 pks, err := api.Database.ListProvisionerKeysByOrganization(ctx, organization.ID)
134 if err != nil {
135 httpapi.InternalServerError(rw, err)
136 return
137 }
138 sdkKeys := convertProvisionerKeys(pks)
139
140 // For the default organization, we insert three rows for the special
141 // provisioner key types (built-in, user-auth, and psk). We _don't_ insert
142 // those into the database for any other org, but we still need to include the
143 // user-auth key in this list, so we just insert it manually.
144 if !slices.ContainsFunc(sdkKeys, func(key codersdk.ProvisionerKey) bool {
145 return key.ID == codersdk.ProvisionerKeyUUIDUserAuth
146 }) {
147 sdkKeys = append(sdkKeys, codersdk.ProvisionerKey{
148 ID: codersdk.ProvisionerKeyUUIDUserAuth,
149 Name: codersdk.ProvisionerKeyNameUserAuth,
150 Tags: map[string]string{},
151 })
152 }
153
154 daemons, err := api.Database.GetProvisionerDaemonsByOrganization(ctx, database.GetProvisionerDaemonsByOrganizationParams{OrganizationID: organization.ID})
155 if err != nil {
156 httpapi.InternalServerError(rw, err)
157 return
158 }
159 // provisionerdserver.DefaultHeartbeatInterval*3 matches the healthcheck report staleInterval.
160 recentDaemons := db2sdk.RecentProvisionerDaemons(time.Now(), provisionerdserver.DefaultHeartbeatInterval*3, daemons)
161
162 pkDaemons := []codersdk.ProvisionerKeyDaemons{}
163 for _, key := range sdkKeys {
164 // The key.OrganizationID for the `user-auth` key is hardcoded to
165 // the default org in the database and we are overwriting it here
166 // to be the correct org we used to query the list.
167 // This will be changed when we update the `user-auth` keys to be
168 // directly tied to a user ID.
169 if key.ID.String() == codersdk.ProvisionerKeyIDUserAuth {
170 key.OrganizationID = organization.ID
171 }
172 daemons := []codersdk.ProvisionerDaemon{}
173 for _, daemon := range recentDaemons {
174 if daemon.KeyID == key.ID {
175 daemons = append(daemons, daemon)
176 }
177 }
178 pkDaemons = append(pkDaemons, codersdk.ProvisionerKeyDaemons{
179 Key: key,
180 Daemons: daemons,
181 })
182 }
183
184 httpapi.Write(ctx, rw, http.StatusOK, pkDaemons)
185}
186

Callers

nothing calls this directly

Calls 9

OrganizationParamFunction · 0.92
InternalServerErrorFunction · 0.92
RecentProvisionerDaemonsFunction · 0.92
WriteFunction · 0.92
convertProvisionerKeysFunction · 0.85
ContextMethod · 0.65
StringMethod · 0.45

Tested by

no test coverage detected