Skip to content

Commit fcfd5bc

Browse files
committed
Merge remote-tracking branch 'origin/main' into cj/testutil-createtar
2 parents 482b9b9 + 747f7ce commit fcfd5bc

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+3612
-1567
lines changed

Makefile

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -482,6 +482,13 @@ DB_GEN_FILES := \
482482
coderd/database/dbauthz/dbauthz.go \
483483
coderd/database/dbmock/dbmock.go
484484

485+
TAILNETTEST_MOCKS := \
486+
tailnet/tailnettest/coordinatormock.go \
487+
tailnet/tailnettest/coordinateemock.go \
488+
tailnet/tailnettest/workspaceupdatesprovidermock.go \
489+
tailnet/tailnettest/subscriptionmock.go
490+
491+
485492
# all gen targets should be added here and to gen/mark-fresh
486493
gen: \
487494
tailnet/proto/tailnet.pb.go \
@@ -495,6 +502,7 @@ gen: \
495502
coderd/rbac/object_gen.go \
496503
codersdk/rbacresources_gen.go \
497504
site/src/api/rbacresourcesGenerated.ts \
505+
site/src/api/countriesGenerated.ts \
498506
docs/admin/integrations/prometheus.md \
499507
docs/reference/cli/index.md \
500508
docs/admin/security/audit-logs.md \
@@ -505,8 +513,7 @@ gen: \
505513
site/e2e/provisionerGenerated.ts \
506514
site/src/theme/icons.json \
507515
examples/examples.gen.json \
508-
tailnet/tailnettest/coordinatormock.go \
509-
tailnet/tailnettest/coordinateemock.go \
516+
$(TAILNETTEST_MOCKS) \
510517
coderd/database/pubsub/psmock/psmock.go
511518
.PHONY: gen
512519

@@ -525,6 +532,7 @@ gen/mark-fresh:
525532
coderd/rbac/object_gen.go \
526533
codersdk/rbacresources_gen.go \
527534
site/src/api/rbacresourcesGenerated.ts \
535+
site/src/api/countriesGenerated.ts \
528536
docs/admin/integrations/prometheus.md \
529537
docs/reference/cli/index.md \
530538
docs/admin/security/audit-logs.md \
@@ -534,8 +542,7 @@ gen/mark-fresh:
534542
site/e2e/provisionerGenerated.ts \
535543
site/src/theme/icons.json \
536544
examples/examples.gen.json \
537-
tailnet/tailnettest/coordinatormock.go \
538-
tailnet/tailnettest/coordinateemock.go \
545+
$(TAILNETTEST_MOCKS) \
539546
coderd/database/pubsub/psmock/psmock.go \
540547
"
541548

@@ -568,7 +575,7 @@ coderd/database/dbmock/dbmock.go: coderd/database/db.go coderd/database/querier.
568575
coderd/database/pubsub/psmock/psmock.go: coderd/database/pubsub/pubsub.go
569576
go generate ./coderd/database/pubsub/psmock
570577

571-
tailnet/tailnettest/coordinatormock.go tailnet/tailnettest/coordinateemock.go: tailnet/coordinator.go
578+
$(TAILNETTEST_MOCKS): tailnet/coordinator.go tailnet/service.go
572579
go generate ./tailnet/tailnettest/
573580

574581
tailnet/proto/tailnet.pb.go: tailnet/proto/tailnet.proto
@@ -626,17 +633,20 @@ site/src/theme/icons.json: $(wildcard scripts/gensite/*) $(wildcard site/static/
626633
examples/examples.gen.json: scripts/examplegen/main.go examples/examples.go $(shell find ./examples/templates)
627634
go run ./scripts/examplegen/main.go > examples/examples.gen.json
628635

629-
coderd/rbac/object_gen.go: scripts/rbacgen/rbacobject.gotmpl scripts/rbacgen/main.go coderd/rbac/object.go coderd/rbac/policy/policy.go
630-
go run scripts/rbacgen/main.go rbac > coderd/rbac/object_gen.go
636+
coderd/rbac/object_gen.go: scripts/typegen/rbacobject.gotmpl scripts/typegen/main.go coderd/rbac/object.go coderd/rbac/policy/policy.go
637+
go run scripts/typegen/main.go rbac object > coderd/rbac/object_gen.go
631638

632-
codersdk/rbacresources_gen.go: scripts/rbacgen/codersdk.gotmpl scripts/rbacgen/main.go coderd/rbac/object.go coderd/rbac/policy/policy.go
639+
codersdk/rbacresources_gen.go: scripts/typegen/codersdk.gotmpl scripts/typegen/main.go coderd/rbac/object.go coderd/rbac/policy/policy.go
633640
# Do no overwrite codersdk/rbacresources_gen.go directly, as it would make the file empty, breaking
634641
# the `codersdk` package and any parallel build targets.
635-
go run scripts/rbacgen/main.go codersdk > /tmp/rbacresources_gen.go
642+
go run scripts/typegen/main.go rbac codersdk > /tmp/rbacresources_gen.go
636643
mv /tmp/rbacresources_gen.go codersdk/rbacresources_gen.go
637644

638-
site/src/api/rbacresourcesGenerated.ts: scripts/rbacgen/codersdk.gotmpl scripts/rbacgen/main.go coderd/rbac/object.go coderd/rbac/policy/policy.go
639-
go run scripts/rbacgen/main.go typescript > "$@"
645+
site/src/api/rbacresourcesGenerated.ts: scripts/typegen/codersdk.gotmpl scripts/typegen/main.go coderd/rbac/object.go coderd/rbac/policy/policy.go
646+
go run scripts/typegen/main.go rbac typescript > "$@"
647+
648+
site/src/api/countriesGenerated.ts: scripts/typegen/countries.tstmpl scripts/typegen/main.go codersdk/countries.go
649+
go run scripts/typegen/main.go countries > "$@"
640650

641651
docs/admin/integrations/prometheus.md: scripts/metricsdocgen/main.go scripts/metricsdocgen/metrics
642652
go run scripts/metricsdocgen/main.go

cli/login.go

Lines changed: 4 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -530,36 +530,13 @@ func promptDevelopers(inv *serpent.Invocation) (string, error) {
530530
}
531531

532532
func promptCountry(inv *serpent.Invocation) (string, error) {
533-
countries := []string{
534-
"Afghanistan", "Åland Islands", "Albania", "Algeria", "American Samoa", "Andorra", "Angola", "Anguilla", "Antarctica", "Antigua and Barbuda",
535-
"Argentina", "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan", "Bahamas", "Bahrain", "Bangladesh", "Barbados",
536-
"Belarus", "Belgium", "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia, Plurinational State of", "Bonaire, Sint Eustatius and Saba", "Bosnia and Herzegovina", "Botswana",
537-
"Bouvet Island", "Brazil", "British Indian Ocean Territory", "Brunei Darussalam", "Bulgaria", "Burkina Faso", "Burundi", "Cambodia", "Cameroon", "Canada",
538-
"Cape Verde", "Cayman Islands", "Central African Republic", "Chad", "Chile", "China", "Christmas Island", "Cocos (Keeling) Islands", "Colombia", "Comoros",
539-
"Congo", "Congo, the Democratic Republic of the", "Cook Islands", "Costa Rica", "Côte d'Ivoire", "Croatia", "Cuba", "Curaçao", "Cyprus", "Czech Republic",
540-
"Denmark", "Djibouti", "Dominica", "Dominican Republic", "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea", "Estonia",
541-
"Ethiopia", "Falkland Islands (Malvinas)", "Faroe Islands", "Fiji", "Finland", "France", "French Guiana", "French Polynesia", "French Southern Territories", "Gabon",
542-
"Gambia", "Georgia", "Germany", "Ghana", "Gibraltar", "Greece", "Greenland", "Grenada", "Guadeloupe", "Guam",
543-
"Guatemala", "Guernsey", "Guinea", "Guinea-Bissau", "Guyana", "Haiti", "Heard Island and McDonald Islands", "Holy See (Vatican City State)", "Honduras", "Hong Kong",
544-
"Hungary", "Iceland", "India", "Indonesia", "Iran, Islamic Republic of", "Iraq", "Ireland", "Isle of Man", "Israel", "Italy",
545-
"Jamaica", "Japan", "Jersey", "Jordan", "Kazakhstan", "Kenya", "Kiribati", "Korea, Democratic People's Republic of", "Korea, Republic of", "Kuwait",
546-
"Kyrgyzstan", "Lao People's Democratic Republic", "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg",
547-
"Macao", "Macedonia, the Former Yugoslav Republic of", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "Marshall Islands", "Martinique",
548-
"Mauritania", "Mauritius", "Mayotte", "Mexico", "Micronesia, Federated States of", "Moldova, Republic of", "Monaco", "Mongolia", "Montenegro", "Montserrat",
549-
"Morocco", "Mozambique", "Myanmar", "Namibia", "Nauru", "Nepal", "Netherlands", "New Caledonia", "New Zealand", "Nicaragua",
550-
"Niger", "Nigeria", "Niue", "Norfolk Island", "Northern Mariana Islands", "Norway", "Oman", "Pakistan", "Palau", "Palestine, State of",
551-
"Panama", "Papua New Guinea", "Paraguay", "Peru", "Philippines", "Pitcairn", "Poland", "Portugal", "Puerto Rico", "Qatar",
552-
"Réunion", "Romania", "Russian Federation", "Rwanda", "Saint Barthélemy", "Saint Helena, Ascension and Tristan da Cunha", "Saint Kitts and Nevis", "Saint Lucia", "Saint Martin (French part)", "Saint Pierre and Miquelon",
553-
"Saint Vincent and the Grenadines", "Samoa", "San Marino", "Sao Tome and Principe", "Saudi Arabia", "Senegal", "Serbia", "Seychelles", "Sierra Leone", "Singapore",
554-
"Sint Maarten (Dutch part)", "Slovakia", "Slovenia", "Solomon Islands", "Somalia", "South Africa", "South Georgia and the South Sandwich Islands", "South Sudan", "Spain", "Sri Lanka",
555-
"Sudan", "Suriname", "Svalbard and Jan Mayen", "Swaziland", "Sweden", "Switzerland", "Syrian Arab Republic", "Taiwan, Province of China", "Tajikistan", "Tanzania, United Republic of",
556-
"Thailand", "Timor-Leste", "Togo", "Tokelau", "Tonga", "Trinidad and Tobago", "Tunisia", "Turkey", "Turkmenistan", "Turks and Caicos Islands",
557-
"Tuvalu", "Uganda", "Ukraine", "United Arab Emirates", "United Kingdom", "United States", "United States Minor Outlying Islands", "Uruguay", "Uzbekistan", "Vanuatu",
558-
"Venezuela, Bolivarian Republic of", "Vietnam", "Virgin Islands, British", "Virgin Islands, U.S.", "Wallis and Futuna", "Western Sahara", "Yemen", "Zambia", "Zimbabwe",
533+
options := make([]string, len(codersdk.Countries))
534+
for i, country := range codersdk.Countries {
535+
options[i] = country.Name
559536
}
560537

561538
selection, err := cliui.Select(inv, cliui.SelectOptions{
562-
Options: countries,
539+
Options: options,
563540
Message: "Select the country:",
564541
HideSearch: false,
565542
})

coderd/database/dbauthz/dbauthz.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2666,6 +2666,20 @@ func (q *querier) GetWorkspaceByWorkspaceAppID(ctx context.Context, workspaceApp
26662666
return fetch(q.log, q.auth, q.db.GetWorkspaceByWorkspaceAppID)(ctx, workspaceAppID)
26672667
}
26682668

2669+
func (q *querier) GetWorkspaceModulesByJobID(ctx context.Context, jobID uuid.UUID) ([]database.WorkspaceModule, error) {
2670+
if err := q.authorizeContext(ctx, policy.ActionRead, rbac.ResourceSystem); err != nil {
2671+
return nil, err
2672+
}
2673+
return q.db.GetWorkspaceModulesByJobID(ctx, jobID)
2674+
}
2675+
2676+
func (q *querier) GetWorkspaceModulesCreatedAfter(ctx context.Context, createdAt time.Time) ([]database.WorkspaceModule, error) {
2677+
if err := q.authorizeContext(ctx, policy.ActionRead, rbac.ResourceSystem); err != nil {
2678+
return nil, err
2679+
}
2680+
return q.db.GetWorkspaceModulesCreatedAfter(ctx, createdAt)
2681+
}
2682+
26692683
func (q *querier) GetWorkspaceProxies(ctx context.Context) ([]database.WorkspaceProxy, error) {
26702684
return fetchWithPostFilter(q.auth, policy.ActionRead, func(ctx context.Context, _ interface{}) ([]database.WorkspaceProxy, error) {
26712685
return q.db.GetWorkspaceProxies(ctx)
@@ -3222,6 +3236,13 @@ func (q *querier) InsertWorkspaceBuildParameters(ctx context.Context, arg databa
32223236
return q.db.InsertWorkspaceBuildParameters(ctx, arg)
32233237
}
32243238

3239+
func (q *querier) InsertWorkspaceModule(ctx context.Context, arg database.InsertWorkspaceModuleParams) (database.WorkspaceModule, error) {
3240+
if err := q.authorizeContext(ctx, policy.ActionCreate, rbac.ResourceSystem); err != nil {
3241+
return database.WorkspaceModule{}, err
3242+
}
3243+
return q.db.InsertWorkspaceModule(ctx, arg)
3244+
}
3245+
32253246
func (q *querier) InsertWorkspaceProxy(ctx context.Context, arg database.InsertWorkspaceProxyParams) (database.WorkspaceProxy, error) {
32263247
return insert(q.log, q.auth, rbac.ResourceWorkspaceProxy, q.db.InsertWorkspaceProxy)(ctx, arg)
32273248
}

coderd/database/dbauthz/dbauthz_test.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2907,6 +2907,21 @@ func (s *MethodTestSuite) TestSystemFunctions() {
29072907
}
29082908
check.Args(build.ID).Asserts(rbac.ResourceSystem, policy.ActionRead).Returns(rows)
29092909
}))
2910+
s.Run("InsertWorkspaceModule", s.Subtest(func(db database.Store, check *expects) {
2911+
j := dbgen.ProvisionerJob(s.T(), db, nil, database.ProvisionerJob{
2912+
Type: database.ProvisionerJobTypeWorkspaceBuild,
2913+
})
2914+
check.Args(database.InsertWorkspaceModuleParams{
2915+
JobID: j.ID,
2916+
Transition: database.WorkspaceTransitionStart,
2917+
}).Asserts(rbac.ResourceSystem, policy.ActionCreate)
2918+
}))
2919+
s.Run("GetWorkspaceModulesByJobID", s.Subtest(func(db database.Store, check *expects) {
2920+
check.Args(uuid.New()).Asserts(rbac.ResourceSystem, policy.ActionRead)
2921+
}))
2922+
s.Run("GetWorkspaceModulesCreatedAfter", s.Subtest(func(db database.Store, check *expects) {
2923+
check.Args(dbtime.Now()).Asserts(rbac.ResourceSystem, policy.ActionRead)
2924+
}))
29102925
}
29112926

29122927
func (s *MethodTestSuite) TestNotifications() {

coderd/database/dbgen/dbgen.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -657,11 +657,29 @@ func WorkspaceResource(t testing.TB, db database.Store, orig database.WorkspaceR
657657
Valid: takeFirst(orig.InstanceType.Valid, false),
658658
},
659659
DailyCost: takeFirst(orig.DailyCost, 0),
660+
ModulePath: sql.NullString{
661+
String: takeFirst(orig.ModulePath.String, ""),
662+
Valid: takeFirst(orig.ModulePath.Valid, true),
663+
},
660664
})
661665
require.NoError(t, err, "insert resource")
662666
return resource
663667
}
664668

669+
func WorkspaceModule(t testing.TB, db database.Store, orig database.WorkspaceModule) database.WorkspaceModule {
670+
module, err := db.InsertWorkspaceModule(genCtx, database.InsertWorkspaceModuleParams{
671+
ID: takeFirst(orig.ID, uuid.New()),
672+
JobID: takeFirst(orig.JobID, uuid.New()),
673+
Transition: takeFirst(orig.Transition, database.WorkspaceTransitionStart),
674+
Source: takeFirst(orig.Source, "test-source"),
675+
Version: takeFirst(orig.Version, "v1.0.0"),
676+
Key: takeFirst(orig.Key, "test-key"),
677+
CreatedAt: takeFirst(orig.CreatedAt, dbtime.Now()),
678+
})
679+
require.NoError(t, err, "insert workspace module")
680+
return module
681+
}
682+
665683
func WorkspaceResourceMetadatums(t testing.TB, db database.Store, seed database.WorkspaceResourceMetadatum) []database.WorkspaceResourceMetadatum {
666684
meta, err := db.InsertWorkspaceResourceMetadata(genCtx, database.InsertWorkspaceResourceMetadataParams{
667685
WorkspaceResourceID: takeFirst(seed.WorkspaceResourceID, uuid.New()),

coderd/database/dbmem/dbmem.go

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ func New() database.Store {
7373
workspaceAgents: make([]database.WorkspaceAgent, 0),
7474
provisionerJobLogs: make([]database.ProvisionerJobLog, 0),
7575
workspaceResources: make([]database.WorkspaceResource, 0),
76+
workspaceModules: make([]database.WorkspaceModule, 0),
7677
workspaceResourceMetadata: make([]database.WorkspaceResourceMetadatum, 0),
7778
provisionerJobs: make([]database.ProvisionerJob, 0),
7879
templateVersions: make([]database.TemplateVersionTable, 0),
@@ -232,6 +233,7 @@ type data struct {
232233
workspaceBuildParameters []database.WorkspaceBuildParameter
233234
workspaceResourceMetadata []database.WorkspaceResourceMetadatum
234235
workspaceResources []database.WorkspaceResource
236+
workspaceModules []database.WorkspaceModule
235237
workspaces []database.WorkspaceTable
236238
workspaceProxies []database.WorkspaceProxy
237239
customRoles []database.CustomRole
@@ -6671,6 +6673,32 @@ func (q *FakeQuerier) GetWorkspaceByWorkspaceAppID(_ context.Context, workspaceA
66716673
return database.Workspace{}, sql.ErrNoRows
66726674
}
66736675

6676+
func (q *FakeQuerier) GetWorkspaceModulesByJobID(_ context.Context, jobID uuid.UUID) ([]database.WorkspaceModule, error) {
6677+
q.mutex.RLock()
6678+
defer q.mutex.RUnlock()
6679+
6680+
modules := make([]database.WorkspaceModule, 0)
6681+
for _, module := range q.workspaceModules {
6682+
if module.JobID == jobID {
6683+
modules = append(modules, module)
6684+
}
6685+
}
6686+
return modules, nil
6687+
}
6688+
6689+
func (q *FakeQuerier) GetWorkspaceModulesCreatedAfter(_ context.Context, createdAt time.Time) ([]database.WorkspaceModule, error) {
6690+
q.mutex.RLock()
6691+
defer q.mutex.RUnlock()
6692+
6693+
modules := make([]database.WorkspaceModule, 0)
6694+
for _, module := range q.workspaceModules {
6695+
if module.CreatedAt.After(createdAt) {
6696+
modules = append(modules, module)
6697+
}
6698+
}
6699+
return modules, nil
6700+
}
6701+
66746702
func (q *FakeQuerier) GetWorkspaceProxies(_ context.Context) ([]database.WorkspaceProxy, error) {
66756703
q.mutex.RLock()
66766704
defer q.mutex.RUnlock()
@@ -8233,6 +8261,20 @@ func (q *FakeQuerier) InsertWorkspaceBuildParameters(_ context.Context, arg data
82338261
return nil
82348262
}
82358263

8264+
func (q *FakeQuerier) InsertWorkspaceModule(_ context.Context, arg database.InsertWorkspaceModuleParams) (database.WorkspaceModule, error) {
8265+
err := validateDatabaseType(arg)
8266+
if err != nil {
8267+
return database.WorkspaceModule{}, err
8268+
}
8269+
8270+
q.mutex.Lock()
8271+
defer q.mutex.Unlock()
8272+
8273+
workspaceModule := database.WorkspaceModule(arg)
8274+
q.workspaceModules = append(q.workspaceModules, workspaceModule)
8275+
return workspaceModule, nil
8276+
}
8277+
82368278
func (q *FakeQuerier) InsertWorkspaceProxy(_ context.Context, arg database.InsertWorkspaceProxyParams) (database.WorkspaceProxy, error) {
82378279
q.mutex.Lock()
82388280
defer q.mutex.Unlock()
@@ -8283,6 +8325,7 @@ func (q *FakeQuerier) InsertWorkspaceResource(_ context.Context, arg database.In
82838325
Hide: arg.Hide,
82848326
Icon: arg.Icon,
82858327
DailyCost: arg.DailyCost,
8328+
ModulePath: arg.ModulePath,
82868329
}
82878330
q.workspaceResources = append(q.workspaceResources, resource)
82888331
return resource, nil

coderd/database/dbmetrics/querymetrics.go

Lines changed: 21 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)