Skip to content

Commit 8ef36f6

Browse files
Fetch credentials from DB
Do not rely on the entity object to hold updated or detailed credentials, fetch them from the DB every time. This change also ensures that we pass in the user context instead of the runner context to the DB methods. Signed-off-by: Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
1 parent c2b974d commit 8ef36f6

File tree

6 files changed

+50
-7
lines changed

6 files changed

+50
-7
lines changed

.github/workflows/integration-tests.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ jobs:
5454
run: |
5555
set -o pipefail
5656
set -o errexit
57-
make integration 2>&1 | tee /artifacts-logs/e2e.log
57+
make integration 2>&1
5858
env:
5959
GARM_BASE_URL: ${{ steps.ngrok.outputs.tunnel-url }}
6060
ORG_NAME: gsamfira
@@ -68,6 +68,7 @@ jobs:
6868
run: |
6969
sudo systemctl status garm@runner || true
7070
sudo journalctl --no-pager 2>&1 > /artifacts-logs/system.log
71+
sudo journalctl -u garm@runner --no-pager 2>&1 > /artifacts-logs/garm.log
7172
7273
- name: Upload GARM and e2e logs
7374
if: always()

cmd/garm/main.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,8 @@ func main() {
151151
ctx, stop := signal.NotifyContext(context.Background(), signals...)
152152
defer stop()
153153

154+
ctx = auth.GetAdminContext(ctx)
155+
154156
cfg, err := config.NewConfig(*conf)
155157
if err != nil {
156158
log.Fatalf("Fetching config: %+v", err) //nolint:gocritic

runner/enterprises.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ func (r *Runner) CreateEnterprise(ctx context.Context, param params.CreateEnterp
5454
}
5555
}()
5656

57+
// Use the admin context in the pool manager. Any access control is already done above when
58+
// updating the store.
5759
var poolMgr common.PoolManager
5860
poolMgr, err = r.poolManagerCtrl.CreateEnterprisePoolManager(r.ctx, enterprise, r.providers, r.store)
5961
if err != nil {
@@ -172,6 +174,8 @@ func (r *Runner) UpdateEnterprise(ctx context.Context, enterpriseID string, para
172174
return params.Enterprise{}, errors.Wrap(err, "updating enterprise")
173175
}
174176

177+
// Use the admin context in the pool manager. Any access control is already done above when
178+
// updating the store.
175179
poolMgr, err := r.poolManagerCtrl.UpdateEnterprisePoolManager(r.ctx, enterprise)
176180
if err != nil {
177181
return params.Enterprise{}, fmt.Errorf("failed to update enterprise pool manager: %w", err)

runner/organizations.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ func (r *Runner) CreateOrganization(ctx context.Context, param params.CreateOrgP
6767
}
6868
}()
6969

70+
// Use the admin context in the pool manager. Any access control is already done above when
71+
// updating the store.
7072
poolMgr, err := r.poolManagerCtrl.CreateOrgPoolManager(r.ctx, org, r.providers, r.store)
7173
if err != nil {
7274
return params.Organization{}, errors.Wrap(err, "creating org pool manager")
@@ -201,6 +203,8 @@ func (r *Runner) UpdateOrganization(ctx context.Context, orgID string, param par
201203
return params.Organization{}, errors.Wrap(err, "updating org")
202204
}
203205

206+
// Use the admin context in the pool manager. Any access control is already done above when
207+
// updating the store.
204208
poolMgr, err := r.poolManagerCtrl.UpdateOrgPoolManager(r.ctx, org)
205209
if err != nil {
206210
return params.Organization{}, fmt.Errorf("updating org pool manager: %w", err)

runner/repositories.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ func (r *Runner) CreateRepository(ctx context.Context, param params.CreateRepoPa
6767
}
6868
}()
6969

70+
// Use the admin context in the pool manager. Any access control is already done above when
71+
// updating the store.
7072
poolMgr, err := r.poolManagerCtrl.CreateRepoPoolManager(r.ctx, repo, r.providers, r.store)
7173
if err != nil {
7274
return params.Repository{}, errors.Wrap(err, "creating repo pool manager")
@@ -200,6 +202,8 @@ func (r *Runner) UpdateRepository(ctx context.Context, repoID string, param para
200202
return params.Repository{}, errors.Wrap(err, "updating repo")
201203
}
202204

205+
// Use the admin context in the pool manager. Any access control is already done above when
206+
// updating the store.
203207
poolMgr, err := r.poolManagerCtrl.UpdateRepoPoolManager(r.ctx, repo)
204208
if err != nil {
205209
return params.Repository{}, fmt.Errorf("failed to update pool manager: %w", err)

runner/runner.go

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ func NewRunner(ctx context.Context, cfg config.Config, db dbCommon.Store) (*Runn
6767
poolManagerCtrl := &poolManagerCtrl{
6868
controllerID: ctrlID.ControllerID.String(),
6969
config: cfg,
70+
store: db,
7071
repositories: map[string]common.PoolManager{},
7172
organizations: map[string]common.PoolManager{},
7273
enterprises: map[string]common.PoolManager{},
@@ -92,6 +93,7 @@ type poolManagerCtrl struct {
9293

9394
controllerID string
9495
config config.Config
96+
store dbCommon.Store
9597

9698
repositories map[string]common.PoolManager
9799
organizations map[string]common.PoolManager
@@ -102,7 +104,12 @@ func (p *poolManagerCtrl) CreateRepoPoolManager(ctx context.Context, repo params
102104
p.mux.Lock()
103105
defer p.mux.Unlock()
104106

105-
cfgInternal, err := p.getInternalConfig(ctx, repo.Credentials, repo.GetBalancerType())
107+
creds, err := p.store.GetGithubCredentialsByName(ctx, repo.CredentialsName, true)
108+
if err != nil {
109+
return nil, errors.Wrap(err, "fetching credentials")
110+
}
111+
112+
cfgInternal, err := p.getInternalConfig(ctx, creds, repo.GetBalancerType())
106113
if err != nil {
107114
return nil, errors.Wrap(err, "fetching internal config")
108115
}
@@ -130,7 +137,12 @@ func (p *poolManagerCtrl) UpdateRepoPoolManager(ctx context.Context, repo params
130137
return nil, errors.Wrapf(runnerErrors.ErrNotFound, "repository %s/%s pool manager not loaded", repo.Owner, repo.Name)
131138
}
132139

133-
internalCfg, err := p.getInternalConfig(ctx, repo.Credentials, repo.GetBalancerType())
140+
creds, err := p.store.GetGithubCredentialsByName(ctx, repo.CredentialsName, true)
141+
if err != nil {
142+
return nil, errors.Wrap(err, "fetching credentials")
143+
}
144+
145+
internalCfg, err := p.getInternalConfig(ctx, creds, repo.GetBalancerType())
134146
if err != nil {
135147
return nil, errors.Wrap(err, "fetching internal config")
136148
}
@@ -175,7 +187,11 @@ func (p *poolManagerCtrl) CreateOrgPoolManager(ctx context.Context, org params.O
175187
p.mux.Lock()
176188
defer p.mux.Unlock()
177189

178-
cfgInternal, err := p.getInternalConfig(ctx, org.Credentials, org.GetBalancerType())
190+
creds, err := p.store.GetGithubCredentialsByName(ctx, org.CredentialsName, true)
191+
if err != nil {
192+
return nil, errors.Wrap(err, "fetching credentials")
193+
}
194+
cfgInternal, err := p.getInternalConfig(ctx, creds, org.GetBalancerType())
179195
if err != nil {
180196
return nil, errors.Wrap(err, "fetching internal config")
181197
}
@@ -202,7 +218,11 @@ func (p *poolManagerCtrl) UpdateOrgPoolManager(ctx context.Context, org params.O
202218
return nil, errors.Wrapf(runnerErrors.ErrNotFound, "org %s pool manager not loaded", org.Name)
203219
}
204220

205-
internalCfg, err := p.getInternalConfig(ctx, org.Credentials, org.GetBalancerType())
221+
creds, err := p.store.GetGithubCredentialsByName(ctx, org.CredentialsName, true)
222+
if err != nil {
223+
return nil, errors.Wrap(err, "fetching credentials")
224+
}
225+
internalCfg, err := p.getInternalConfig(ctx, creds, org.GetBalancerType())
206226
if err != nil {
207227
return nil, errors.Wrap(err, "fetching internal config")
208228
}
@@ -247,7 +267,11 @@ func (p *poolManagerCtrl) CreateEnterprisePoolManager(ctx context.Context, enter
247267
p.mux.Lock()
248268
defer p.mux.Unlock()
249269

250-
cfgInternal, err := p.getInternalConfig(ctx, enterprise.Credentials, enterprise.GetBalancerType())
270+
creds, err := p.store.GetGithubCredentialsByName(ctx, enterprise.CredentialsName, true)
271+
if err != nil {
272+
return nil, errors.Wrap(err, "fetching credentials")
273+
}
274+
cfgInternal, err := p.getInternalConfig(ctx, creds, enterprise.GetBalancerType())
251275
if err != nil {
252276
return nil, errors.Wrap(err, "fetching internal config")
253277
}
@@ -275,7 +299,11 @@ func (p *poolManagerCtrl) UpdateEnterprisePoolManager(ctx context.Context, enter
275299
return nil, errors.Wrapf(runnerErrors.ErrNotFound, "enterprise %s pool manager not loaded", enterprise.Name)
276300
}
277301

278-
internalCfg, err := p.getInternalConfig(ctx, enterprise.Credentials, enterprise.GetBalancerType())
302+
creds, err := p.store.GetGithubCredentialsByName(ctx, enterprise.CredentialsName, true)
303+
if err != nil {
304+
return nil, errors.Wrap(err, "fetching credentials")
305+
}
306+
internalCfg, err := p.getInternalConfig(ctx, creds, enterprise.GetBalancerType())
279307
if err != nil {
280308
return nil, errors.Wrap(err, "fetching internal config")
281309
}

0 commit comments

Comments
 (0)