MCPcopy Create free account
hub / github.com/cloudbase/garm / DeleteOrganization

Method DeleteOrganization

runner/organizations.go:123–184  ·  view source on GitHub ↗
(ctx context.Context, orgID string, keepWebhook bool)

Source from the content-addressed store, hash-verified

121}
122
123func (r *Runner) DeleteOrganization(ctx context.Context, orgID string, keepWebhook bool) error {
124 if !auth.IsAdmin(ctx) {
125 return runnerErrors.ErrUnauthorized
126 }
127
128 org, err := r.store.GetOrganizationByID(ctx, orgID)
129 if err != nil {
130 return fmt.Errorf("error fetching org: %w", err)
131 }
132
133 entity, err := org.GetEntity()
134 if err != nil {
135 return fmt.Errorf("error getting entity: %w", err)
136 }
137
138 pools, err := r.store.ListEntityPools(ctx, entity)
139 if err != nil {
140 return fmt.Errorf("error fetching org pools: %w", err)
141 }
142
143 if len(pools) > 0 {
144 poolIDs := []string{}
145 for _, pool := range pools {
146 poolIDs = append(poolIDs, pool.ID)
147 }
148
149 return runnerErrors.NewBadRequestError("org has pools defined (%s)", strings.Join(poolIDs, ", "))
150 }
151
152 scaleSets, err := r.store.ListEntityScaleSets(ctx, entity)
153 if err != nil {
154 return fmt.Errorf("error fetching organization scale sets: %w", err)
155 }
156
157 if len(scaleSets) > 0 {
158 return runnerErrors.NewBadRequestError("organization has scale sets defined; delete them first")
159 }
160
161 if !keepWebhook && r.config.Default.EnableWebhookManagement {
162 poolMgr, err := r.poolManagerCtrl.GetOrgPoolManager(org)
163 if err != nil {
164 return fmt.Errorf("error fetching pool manager: %w", err)
165 }
166
167 if err := poolMgr.UninstallWebhook(ctx); err != nil {
168 // nolint:golangci-lint,godox
169 // TODO(gabriel-samfira): Should we error out here?
170 slog.With(slog.Any("error", err)).ErrorContext(
171 ctx, "failed to uninstall webhook",
172 "org_id", org.ID)
173 }
174 }
175
176 if err := r.poolManagerCtrl.DeleteOrgPoolManager(org); err != nil {
177 return fmt.Errorf("error deleting org pool manager: %w", err)
178 }
179
180 if err := r.store.DeleteOrganization(ctx, orgID); err != nil {

Callers

nothing calls this directly

Calls 9

IsAdminFunction · 0.92
GetOrganizationByIDMethod · 0.65
GetEntityMethod · 0.65
ListEntityPoolsMethod · 0.65
ListEntityScaleSetsMethod · 0.65
GetOrgPoolManagerMethod · 0.65
UninstallWebhookMethod · 0.65
DeleteOrgPoolManagerMethod · 0.65
DeleteOrganizationMethod · 0.65

Tested by

no test coverage detected