Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit0584acb

Browse files
committed
Add support for presets to the coderd provisioners
1 parent39a33ec commit0584acb

File tree

61 files changed

+2422
-1124
lines changed

Some content is hidden

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

61 files changed

+2422
-1124
lines changed

‎coderd/agentapi/api.go

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ type API struct {
4242
*LifecycleAPI
4343
*AppsAPI
4444
*MetadataAPI
45-
*ResourcesMonitoringAPI
4645
*LogsAPI
4746
*ScriptsAPI
4847
*tailnet.DRPCService
@@ -103,12 +102,6 @@ func New(opts Options) *API {
103102
appearanceFetcher:opts.AppearanceFetcher,
104103
}
105104

106-
api.ResourcesMonitoringAPI=&ResourcesMonitoringAPI{
107-
Log:opts.Log,
108-
AgentID:opts.AgentID,
109-
Database:opts.Database,
110-
}
111-
112105
api.StatsAPI=&StatsAPI{
113106
AgentFn:api.agent,
114107
Database:opts.Database,

‎coderd/database/dbauthz/dbauthz.go

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -184,8 +184,6 @@ var (
184184
rbac.ResourceGroup.Type: {policy.ActionRead},
185185
// Provisionerd creates notification messages
186186
rbac.ResourceNotificationMessage.Type: {policy.ActionCreate,policy.ActionRead},
187-
// Provisionerd creates workspaces resources monitor
188-
rbac.ResourceWorkspaceAgentResourceMonitor.Type: {policy.ActionCreate},
189187
}),
190188
Org:map[string][]rbac.Permission{},
191189
User: []rbac.Permission{},
@@ -1394,13 +1392,7 @@ func (q *querier) FavoriteWorkspace(ctx context.Context, id uuid.UUID) error {
13941392
}
13951393

13961394
func (q*querier)FetchMemoryResourceMonitorsByAgentID(ctx context.Context,agentID uuid.UUID) (database.WorkspaceAgentMemoryResourceMonitor,error) {
1397-
workspace,err:=q.db.GetWorkspaceByAgentID(ctx,agentID)
1398-
iferr!=nil {
1399-
return database.WorkspaceAgentMemoryResourceMonitor{},err
1400-
}
1401-
1402-
err=q.authorizeContext(ctx,policy.ActionRead,workspace)
1403-
iferr!=nil {
1395+
iferr:=q.authorizeContext(ctx,policy.ActionRead,rbac.ResourceWorkspaceAgentResourceMonitor);err!=nil {
14041396
return database.WorkspaceAgentMemoryResourceMonitor{},err
14051397
}
14061398

@@ -1415,13 +1407,7 @@ func (q *querier) FetchNewMessageMetadata(ctx context.Context, arg database.Fetc
14151407
}
14161408

14171409
func (q*querier)FetchVolumesResourceMonitorsByAgentID(ctx context.Context,agentID uuid.UUID) ([]database.WorkspaceAgentVolumeResourceMonitor,error) {
1418-
workspace,err:=q.db.GetWorkspaceByAgentID(ctx,agentID)
1419-
iferr!=nil {
1420-
returnnil,err
1421-
}
1422-
1423-
err=q.authorizeContext(ctx,policy.ActionRead,workspace)
1424-
iferr!=nil {
1410+
iferr:=q.authorizeContext(ctx,policy.ActionRead,rbac.ResourceWorkspaceAgentResourceMonitor);err!=nil {
14251411
returnnil,err
14261412
}
14271413

‎coderd/database/dbauthz/dbauthz_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4772,7 +4772,7 @@ func (s *MethodTestSuite) TestResourcesMonitor() {
47724772
monitor,err:=db.FetchMemoryResourceMonitorsByAgentID(context.Background(),agt.ID)
47734773
require.NoError(s.T(),err)
47744774

4775-
check.Args(agt.ID).Asserts(w,policy.ActionRead).Returns(monitor)
4775+
check.Args(agt.ID).Asserts(rbac.ResourceWorkspaceAgentResourceMonitor,policy.ActionRead).Returns(monitor)
47764776
}))
47774777

47784778
s.Run("FetchVolumesResourceMonitorsByAgentID",s.Subtest(func(db database.Store,check*expects) {
@@ -4813,6 +4813,6 @@ func (s *MethodTestSuite) TestResourcesMonitor() {
48134813
monitors,err:=db.FetchVolumesResourceMonitorsByAgentID(context.Background(),agt.ID)
48144814
require.NoError(s.T(),err)
48154815

4816-
check.Args(agt.ID).Asserts(w,policy.ActionRead).Returns(monitors)
4816+
check.Args(agt.ID).Asserts(rbac.ResourceWorkspaceAgentResourceMonitor,policy.ActionRead).Returns(monitors)
48174817
}))
48184818
}

‎coderd/presets_test.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@ import (
1515
)
1616

1717
funcTestTemplateVersionPresets(t*testing.T) {
18-
// TODO (sasswart): Test case: what if a user tries to read presets or preset parameters from a different org?
19-
2018
t.Parallel()
2119

2220
givenPreset:= codersdk.Preset{

‎coderd/provisionerdserver/provisionerdserver.go

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1340,6 +1340,11 @@ func (s *server) CompleteJob(ctx context.Context, completed *proto.CompletedJob)
13401340
}
13411341
}
13421342

1343+
err=InsertWorkspacePresetsAndParameters(ctx,s.Logger,s.Database,jobID,input.TemplateVersionID,jobType.TemplateImport.Presets,s.timeNow())
1344+
iferr!=nil {
1345+
returnnil,xerrors.Errorf("insert workspace presets and parameters: %w",err)
1346+
}
1347+
13431348
varcompletedError sql.NullString
13441349

13451350
for_,externalAuthProvider:=rangejobType.TemplateImport.ExternalAuthProviders {
@@ -1809,6 +1814,52 @@ func InsertWorkspaceModule(ctx context.Context, db database.Store, jobID uuid.UU
18091814
returnnil
18101815
}
18111816

1817+
funcInsertWorkspacePresetsAndParameters(ctx context.Context,logger slog.Logger,db database.Store,jobID uuid.UUID,templateVersionID uuid.UUID,protoPresets []*sdkproto.Preset,t time.Time)error {
1818+
for_,preset:=rangeprotoPresets {
1819+
logger.Info(ctx,"inserting template import job preset",
1820+
slog.F("job_id",jobID.String()),
1821+
slog.F("preset_name",preset.Name),
1822+
)
1823+
iferr:=InsertWorkspacePresetAndParameters(ctx,db,templateVersionID,preset,t);err!=nil {
1824+
returnxerrors.Errorf("insert workspace preset: %w",err)
1825+
}
1826+
}
1827+
returnnil
1828+
}
1829+
1830+
funcInsertWorkspacePresetAndParameters(ctx context.Context,db database.Store,templateVersionID uuid.UUID,protoPreset*sdkproto.Preset,t time.Time)error {
1831+
err:=db.InTx(func(tx database.Store)error {
1832+
dbPreset,err:=tx.InsertPreset(ctx, database.InsertPresetParams{
1833+
TemplateVersionID:templateVersionID,
1834+
Name:protoPreset.Name,
1835+
CreatedAt:t,
1836+
})
1837+
iferr!=nil {
1838+
returnxerrors.Errorf("insert preset: %w",err)
1839+
}
1840+
1841+
varpresetParameterNames []string
1842+
varpresetParameterValues []string
1843+
for_,parameter:=rangeprotoPreset.Parameters {
1844+
presetParameterNames=append(presetParameterNames,parameter.Name)
1845+
presetParameterValues=append(presetParameterValues,parameter.Value)
1846+
}
1847+
_,err=tx.InsertPresetParameters(ctx, database.InsertPresetParametersParams{
1848+
TemplateVersionPresetID:dbPreset.ID,
1849+
Names:presetParameterNames,
1850+
Values:presetParameterValues,
1851+
})
1852+
iferr!=nil {
1853+
returnxerrors.Errorf("insert preset parameters: %w",err)
1854+
}
1855+
returnnil
1856+
},nil)
1857+
iferr!=nil {
1858+
returnxerrors.Errorf("insert preset and parameters: %w",err)
1859+
}
1860+
returnnil
1861+
}
1862+
18121863
funcInsertWorkspaceResource(ctx context.Context,db database.Store,jobID uuid.UUID,transition database.WorkspaceTransition,protoResource*sdkproto.Resource,snapshot*telemetry.Snapshot)error {
18131864
resource,err:=db.InsertWorkspaceResource(ctx, database.InsertWorkspaceResourceParams{
18141865
ID:uuid.New(),

‎coderd/provisionerdserver/provisionerdserver_test.go

Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import (
3030
"github.com/coder/coder/v2/coderd/database"
3131
"github.com/coder/coder/v2/coderd/database/dbgen"
3232
"github.com/coder/coder/v2/coderd/database/dbmem"
33+
"github.com/coder/coder/v2/coderd/database/dbtestutil"
3334
"github.com/coder/coder/v2/coderd/database/dbtime"
3435
"github.com/coder/coder/v2/coderd/database/pubsub"
3536
"github.com/coder/coder/v2/coderd/externalauth"
@@ -1708,6 +1709,155 @@ func TestCompleteJob(t *testing.T) {
17081709
})
17091710
}
17101711

1712+
funcTestInsertWorkspacePresetsAndParameters(t*testing.T) {
1713+
t.Parallel()
1714+
1715+
typetestCasestruct {
1716+
namestring
1717+
givenPresets []*sdkproto.Preset
1718+
}
1719+
1720+
testCases:= []testCase{
1721+
{
1722+
name:"no presets",
1723+
},
1724+
{
1725+
name:"one preset with no parameters",
1726+
givenPresets: []*sdkproto.Preset{
1727+
{
1728+
Name:"preset1",
1729+
},
1730+
},
1731+
},
1732+
{
1733+
name:"one preset with multiple parameters",
1734+
givenPresets: []*sdkproto.Preset{
1735+
{
1736+
Name:"preset1",
1737+
Parameters: []*sdkproto.PresetParameter{
1738+
{
1739+
Name:"param1",
1740+
Value:"value1",
1741+
},
1742+
{
1743+
Name:"param2",
1744+
Value:"value2",
1745+
},
1746+
},
1747+
},
1748+
},
1749+
},
1750+
{
1751+
name:"multiple presets with parameters",
1752+
givenPresets: []*sdkproto.Preset{
1753+
{
1754+
Name:"preset1",
1755+
Parameters: []*sdkproto.PresetParameter{
1756+
{
1757+
Name:"param1",
1758+
Value:"value1",
1759+
},
1760+
{
1761+
Name:"param2",
1762+
Value:"value2",
1763+
},
1764+
},
1765+
},
1766+
{
1767+
Name:"preset2",
1768+
Parameters: []*sdkproto.PresetParameter{
1769+
{
1770+
Name:"param3",
1771+
Value:"value3",
1772+
},
1773+
{
1774+
Name:"param4",
1775+
Value:"value4",
1776+
},
1777+
},
1778+
},
1779+
},
1780+
},
1781+
}
1782+
1783+
for_,c:=rangetestCases {
1784+
c:=c
1785+
t.Run(c.name,func(t*testing.T) {
1786+
t.Parallel()
1787+
1788+
ctx:=context.Background()
1789+
logger:=testutil.Logger(t)
1790+
db,ps:=dbtestutil.NewDB(t)
1791+
org:=dbgen.Organization(t,db, database.Organization{})
1792+
user:=dbgen.User(t,db, database.User{})
1793+
job:=dbgen.ProvisionerJob(t,db,ps, database.ProvisionerJob{
1794+
Type:database.ProvisionerJobTypeWorkspaceBuild,
1795+
OrganizationID:org.ID,
1796+
})
1797+
templateVersion:=dbgen.TemplateVersion(t,db, database.TemplateVersion{
1798+
JobID:job.ID,
1799+
OrganizationID:org.ID,
1800+
CreatedBy:user.ID,
1801+
})
1802+
1803+
err:=provisionerdserver.InsertWorkspacePresetsAndParameters(
1804+
ctx,
1805+
logger,
1806+
db,
1807+
job.ID,
1808+
templateVersion.ID,
1809+
c.givenPresets,
1810+
time.Now(),
1811+
)
1812+
require.NoError(t,err)
1813+
1814+
gotPresets,err:=db.GetPresetsByTemplateVersionID(ctx,templateVersion.ID)
1815+
require.NoError(t,err)
1816+
require.Len(t,gotPresets,len(c.givenPresets))
1817+
1818+
for_,givenPreset:=rangec.givenPresets {
1819+
foundMatch:=false
1820+
for_,gotPreset:=rangegotPresets {
1821+
ifgivenPreset.Name==gotPreset.Name {
1822+
foundMatch=true
1823+
break
1824+
}
1825+
}
1826+
require.True(t,foundMatch,"preset %s not found in parameters",givenPreset.Name)
1827+
}
1828+
1829+
gotPresetParameters,err:=db.GetPresetParametersByTemplateVersionID(ctx,templateVersion.ID)
1830+
require.NoError(t,err)
1831+
1832+
for_,givenPreset:=rangec.givenPresets {
1833+
for_,givenParameter:=rangegivenPreset.Parameters {
1834+
foundMatch:=false
1835+
for_,gotParameter:=rangegotPresetParameters {
1836+
nameMatches:=givenParameter.Name==gotParameter.Name
1837+
valueMatches:=givenParameter.Value==gotParameter.Value
1838+
1839+
// ensure that preset parameters are matched to the correct preset:
1840+
vargotPreset database.TemplateVersionPreset
1841+
for_,preset:=rangegotPresets {
1842+
ifpreset.ID==gotParameter.TemplateVersionPresetID {
1843+
gotPreset=preset
1844+
break
1845+
}
1846+
}
1847+
presetMatches:=gotPreset.Name==givenPreset.Name
1848+
1849+
ifnameMatches&&valueMatches&&presetMatches {
1850+
foundMatch=true
1851+
break
1852+
}
1853+
}
1854+
require.True(t,foundMatch,"preset parameter %s not found in presets",givenParameter.Name)
1855+
}
1856+
}
1857+
})
1858+
}
1859+
}
1860+
17111861
funcTestInsertWorkspaceResource(t*testing.T) {
17121862
t.Parallel()
17131863
ctx:=context.Background()

‎coderd/workspaceagents_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2234,7 +2234,7 @@ func requireGetManifest(ctx context.Context, t testing.TB, aAPI agentproto.DRPCA
22342234
}
22352235

22362236
funcpostStartup(ctx context.Context,t testing.TB,client agent.Client,startup*agentproto.Startup)error {
2237-
aAPI,_,err:=client.ConnectRPC24(ctx)
2237+
aAPI,_,err:=client.ConnectRPC23(ctx)
22382238
require.NoError(t,err)
22392239
deferfunc() {
22402240
cErr:=aAPI.DRPCConn().Close()

‎codersdk/richparameters.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import (
55

66
"golang.org/x/xerrors"
77

8-
"github.com/coder/terraform-provider-coder/provider"
8+
"github.com/coder/terraform-provider-coder/v2/provider"
99
)
1010

1111
funcValidateNewWorkspaceParameters(richParameters []TemplateVersionParameter,buildParameters []WorkspaceBuildParameter)error {

‎go.mod

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,6 @@ require (
9494
github.com/coder/quartzv0.1.2
9595
github.com/coder/retryv1.5.1
9696
github.com/coder/serpentv0.10.0
97-
github.com/coder/terraform-provider-coderv1.0.5-0.20250131073245-5b9a30ca496b
9897
github.com/coder/websocketv1.8.12
9998
github.com/coder/wgtunnelv0.1.13-0.20240522110300-ade90dfb2da0
10099
github.com/coreos/go-oidc/v3v3.12.0
@@ -467,3 +466,8 @@ require (
467466
kernel.org/pub/linux/libs/security/libcap/psxv1.2.73// indirect
468467
sigs.k8s.io/yamlv1.4.0// indirect
469468
)
469+
470+
require (
471+
github.com/coder/terraform-provider-coderv1.0.4
472+
github.com/coder/terraform-provider-coder/v2v2.1.3
473+
)

‎go.sum

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,8 +240,10 @@ github.com/coder/tailscale v1.1.1-0.20250129014916-8086c871eae6 h1:prDIwUcsSEKbs
240240
github.com/coder/tailscalev1.1.1-0.20250129014916-8086c871eae6/go.mod h1:1ggFFdHTRjPRu9Yc1yA7nVHBYB50w9Ce7VIXNqcW6Ko=
241241
github.com/coder/terraform-config-inspectv0.0.0-20250107175719-6d06d90c630e h1:JNLPDi2P73laR1oAclY6jWzAbucf70ASAvf5mh2cME0=
242242
github.com/coder/terraform-config-inspectv0.0.0-20250107175719-6d06d90c630e/go.mod h1:Gz/z9Hbn+4KSp8A2FBtNszfLSdT2Tn/uAKGuVqqWmDI=
243-
github.com/coder/terraform-provider-coderv1.0.5-0.20250131073245-5b9a30ca496b h1:Z9ssmlGrbf+mRIiyRzQj1P6vH8drKOqgzeTG6D0Ldjg=
244-
github.com/coder/terraform-provider-coderv1.0.5-0.20250131073245-5b9a30ca496b/go.mod h1:dQ1e/IccUxnmh/1bXTA3PopSoBkHMyWT6EkdBw8Lx6Y=
243+
github.com/coder/terraform-provider-coderv1.0.4 h1:MJldCvykIQzzqBVUDjCJpPyqvKelAAHrtJKfIIx4Qxo=
244+
github.com/coder/terraform-provider-coderv1.0.4/go.mod h1:dQ1e/IccUxnmh/1bXTA3PopSoBkHMyWT6EkdBw8Lx6Y=
245+
github.com/coder/terraform-provider-coder/v2v2.1.3 h1:zB7ObGsiOGBHcJUUMmcSauEPlTWRIYmMYieF05LxHSc=
246+
github.com/coder/terraform-provider-coder/v2v2.1.3/go.mod h1:RHGyb+ghiy8UpDAMJM8duRFuzd+1VqA3AtkRLh2P3Ug=
245247
github.com/coder/websocketv1.8.12 h1:5bUXkEPPIbewrnkU8LTCLVaxi4N4J8ahufH2vlo4NAo=
246248
github.com/coder/websocketv1.8.12/go.mod h1:LNVeNrXQZfe5qhS9ALED3uA+l5pPqvwXg3CKoDBB2gs=
247249
github.com/coder/wgtunnelv0.1.13-0.20240522110300-ade90dfb2da0 h1:C2/eCr+r0a5Auuw3YOiSyLNHkdMtyCZHPFBx7syN4rk=

‎provisioner/terraform/executor.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,7 @@ func (e *executor) plan(ctx, killCtx context.Context, env, vars []string, logr l
308308
Resources:state.Resources,
309309
ExternalAuthProviders:state.ExternalAuthProviders,
310310
Timings:append(e.timings.aggregate(),graphTimings.aggregate()...),
311+
Presets:state.Presets,
311312
},nil
312313
}
313314

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp