@@ -186,6 +186,7 @@ func (rc *ResourceCommand) Initialize(app *kingpin.Application, _ *tctlcfg.Globa
186
186
types .KindGitServer : rc .createGitServer ,
187
187
types .KindAutoUpdateAgentRollout : rc .createAutoUpdateAgentRollout ,
188
188
types .KindWorkloadIdentityX509IssuerOverride : rc .createWorkloadIdentityX509IssuerOverride ,
189
+ types .KindSigstorePolicy : rc .createSigstorePolicy ,
189
190
types .KindHealthCheckConfig : rc .createHealthCheckConfig ,
190
191
}
191
192
rc .UpdateHandlers = map [ResourceKind ]ResourceCreateHandler {
@@ -210,6 +211,7 @@ func (rc *ResourceCommand) Initialize(app *kingpin.Application, _ *tctlcfg.Globa
210
211
types .KindGitServer : rc .updateGitServer ,
211
212
types .KindAutoUpdateAgentRollout : rc .updateAutoUpdateAgentRollout ,
212
213
types .KindWorkloadIdentityX509IssuerOverride : rc .updateWorkloadIdentityX509IssuerOverride ,
214
+ types .KindSigstorePolicy : rc .updateSigstorePolicy ,
213
215
types .KindHealthCheckConfig : rc .updateHealthCheckConfig ,
214
216
}
215
217
rc .config = config
@@ -1226,6 +1228,65 @@ func (rc *ResourceCommand) updateWorkloadIdentityX509IssuerOverride(ctx context.
1226
1228
return nil
1227
1229
}
1228
1230
1231
+ func (rc * ResourceCommand ) createSigstorePolicy (ctx context.Context , client * authclient.Client , raw services.UnknownResource ) error {
1232
+ r , err := services .UnmarshalProtoResource [* workloadidentityv1pb.SigstorePolicy ](raw .Raw , services .DisallowUnknown ())
1233
+ if err != nil {
1234
+ return trace .Wrap (err )
1235
+ }
1236
+
1237
+ c := client .SigstorePolicyResourceServiceClient ()
1238
+ if rc .IsForced () {
1239
+ if _ , err := c .UpsertSigstorePolicy (
1240
+ ctx ,
1241
+ & workloadidentityv1pb.UpsertSigstorePolicyRequest {
1242
+ SigstorePolicy : r ,
1243
+ },
1244
+ ); err != nil {
1245
+ return trace .Wrap (err )
1246
+ }
1247
+ } else {
1248
+ if _ , err := c .CreateSigstorePolicy (
1249
+ ctx ,
1250
+ & workloadidentityv1pb.CreateSigstorePolicyRequest {
1251
+ SigstorePolicy : r ,
1252
+ },
1253
+ ); err != nil {
1254
+ return trace .Wrap (err )
1255
+ }
1256
+ }
1257
+
1258
+ fmt .Fprintf (
1259
+ rc .stdout ,
1260
+ types .KindSigstorePolicy + " %q has been created\n " ,
1261
+ r .GetMetadata ().GetName (),
1262
+ )
1263
+ return nil
1264
+ }
1265
+
1266
+ func (rc * ResourceCommand ) updateSigstorePolicy (ctx context.Context , client * authclient.Client , raw services.UnknownResource ) error {
1267
+ r , err := services .UnmarshalProtoResource [* workloadidentityv1pb.SigstorePolicy ](raw .Raw , services .DisallowUnknown ())
1268
+ if err != nil {
1269
+ return trace .Wrap (err )
1270
+ }
1271
+
1272
+ c := client .SigstorePolicyResourceServiceClient ()
1273
+ if _ , err = c .UpdateSigstorePolicy (
1274
+ ctx ,
1275
+ & workloadidentityv1pb.UpdateSigstorePolicyRequest {
1276
+ SigstorePolicy : r ,
1277
+ },
1278
+ ); err != nil {
1279
+ return trace .Wrap (err )
1280
+ }
1281
+
1282
+ fmt .Fprintf (
1283
+ rc .stdout ,
1284
+ types .KindSigstorePolicy + " %q has been updated\n " ,
1285
+ r .GetMetadata ().GetName (),
1286
+ )
1287
+ return nil
1288
+ }
1289
+
1229
1290
func (rc * ResourceCommand ) updateCrownJewel (ctx context.Context , client * authclient.Client , resource services.UnknownResource ) error {
1230
1291
in , err := services .UnmarshalCrownJewel (resource .Raw , services .DisallowUnknown ())
1231
1292
if err != nil {
@@ -2158,6 +2219,21 @@ func (rc *ResourceCommand) Delete(ctx context.Context, client *authclient.Client
2158
2219
types .KindWorkloadIdentityX509IssuerOverride + " %q has been deleted\n " ,
2159
2220
rc .ref .Name ,
2160
2221
)
2222
+ case types .KindSigstorePolicy :
2223
+ c := client .SigstorePolicyResourceServiceClient ()
2224
+ if _ , err := c .DeleteSigstorePolicy (
2225
+ ctx ,
2226
+ & workloadidentityv1pb.DeleteSigstorePolicyRequest {
2227
+ Name : rc .ref .Name ,
2228
+ },
2229
+ ); err != nil {
2230
+ return trace .Wrap (err )
2231
+ }
2232
+ fmt .Fprintf (
2233
+ rc .stdout ,
2234
+ types .KindSigstorePolicy + " %q has been deleted\n " ,
2235
+ rc .ref .Name ,
2236
+ )
2161
2237
case types .KindStaticHostUser :
2162
2238
if err := client .StaticHostUserClient ().DeleteStaticHostUser (ctx , rc .ref .Name ); err != nil {
2163
2239
return trace .Wrap (err )
@@ -3542,6 +3618,42 @@ func (rc *ResourceCommand) getCollection(ctx context.Context, client *authclient
3542
3618
}
3543
3619
}
3544
3620
return collection , nil
3621
+ case types .KindSigstorePolicy :
3622
+ c := client .SigstorePolicyResourceServiceClient ()
3623
+ if rc .ref .Name != "" {
3624
+ r , err := c .GetSigstorePolicy (
3625
+ ctx ,
3626
+ & workloadidentityv1pb.GetSigstorePolicyRequest {
3627
+ Name : rc .ref .Name ,
3628
+ },
3629
+ )
3630
+ if err != nil {
3631
+ return nil , trace .Wrap (err )
3632
+ }
3633
+ return namedResourceCollection {types .ProtoResource153ToLegacy (r )}, nil
3634
+ }
3635
+ var collection namedResourceCollection
3636
+ var pageToken string
3637
+ for {
3638
+ resp , err := c .ListSigstorePolicies (
3639
+ ctx ,
3640
+ & workloadidentityv1pb.ListSigstorePoliciesRequest {
3641
+ PageToken : pageToken ,
3642
+ },
3643
+ )
3644
+ if err != nil {
3645
+ return nil , trace .Wrap (err )
3646
+ }
3647
+ collection = slices .Grow (collection , len (resp .GetSigstorePolicies ()))
3648
+ for _ , r := range resp .GetSigstorePolicies () {
3649
+ collection = append (collection , types .ProtoResource153ToLegacy (r ))
3650
+ }
3651
+ pageToken = resp .GetNextPageToken ()
3652
+ if pageToken == "" {
3653
+ break
3654
+ }
3655
+ }
3656
+ return collection , nil
3545
3657
case types .KindHealthCheckConfig :
3546
3658
if rc .ref .Name != "" {
3547
3659
cfg , err := client .GetHealthCheckConfig (ctx , rc .ref .Name )
0 commit comments