@@ -30,34 +30,21 @@ func NewCreateDeploymentTargetHandler(
3030 }
3131}
3232
33- // CreateDeploymentTargetRequest is the request object for the /deployment-targets POST endpoint
34- type CreateDeploymentTargetRequest struct {
35- // Deprecated: use name instead
36- Selector string `json:"selector"`
37- Name string `json:"name,omitempty"`
38- Preview bool `json:"preview"`
39- }
40-
41- // CreateDeploymentTargetResponse is the response object for the /deployment-targets POST endpoint
42- type CreateDeploymentTargetResponse struct {
43- DeploymentTargetID string `json:"deployment_target_id"`
44- }
45-
4633// ServeHTTP handles POST requests to create a new deployment target
4734func (c * CreateDeploymentTargetHandler ) ServeHTTP (w http.ResponseWriter , r * http.Request ) {
4835 ctx , span := telemetry .NewSpan (r .Context (), "serve-create-deployment-target" )
4936 defer span .End ()
5037
5138 project , _ := ctx .Value (types .ProjectScope ).(* models.Project )
52- cluster , _ := ctx .Value (types .ClusterScope ).(* models.Cluster )
5339
40+ cluster , clusterOk := ctx .Value (types .ClusterScope ).(* models.Cluster )
5441 if ! project .GetFeatureFlag (models .ValidateApplyV2 , c .Config ().LaunchDarklyClient ) {
5542 err := telemetry .Error (ctx , span , nil , "project does not have validate apply v2 enabled" )
5643 c .HandleAPIError (w , r , apierrors .NewErrForbidden (err ))
5744 return
5845 }
5946
60- request := & CreateDeploymentTargetRequest {}
47+ request := & types. CreateDeploymentTargetRequest {}
6148 if ok := c .DecodeAndValidate (w , r , request ); ! ok {
6249 err := telemetry .Error (ctx , span , nil , "error decoding request" )
6350 c .HandleAPIError (w , r , apierrors .NewErrPassThroughToClient (err , http .StatusBadRequest ))
@@ -69,14 +56,24 @@ func (c *CreateDeploymentTargetHandler) ServeHTTP(w http.ResponseWriter, r *http
6956 return
7057 }
7158
59+ clusterId := request .ClusterId
60+ if clusterOk {
61+ clusterId = cluster .ID
62+ }
63+ if clusterId == 0 {
64+ err := telemetry .Error (ctx , span , nil , "cluster id is required" )
65+ c .HandleAPIError (w , r , apierrors .NewErrPassThroughToClient (err , http .StatusBadRequest ))
66+ return
67+ }
68+
7269 name := request .Name
7370 if name == "" {
7471 name = request .Selector
7572 }
7673
7774 createReq := connect .NewRequest (& porterv1.CreateDeploymentTargetRequest {
7875 ProjectId : int64 (project .ID ),
79- ClusterId : int64 (cluster . ID ),
76+ ClusterId : int64 (clusterId ),
8077 Name : name ,
8178 Namespace : name ,
8279 IsPreview : request .Preview ,
@@ -99,7 +96,9 @@ func (c *CreateDeploymentTargetHandler) ServeHTTP(w http.ResponseWriter, r *http
9996 return
10097 }
10198
102- res := & CreateDeploymentTargetResponse {
99+ telemetry .WithAttributes (span , telemetry.AttributeKV {Key : "deployment-target-id" , Value : ccpResp .Msg .DeploymentTargetId })
100+
101+ res := & types.CreateDeploymentTargetResponse {
103102 DeploymentTargetID : ccpResp .Msg .DeploymentTargetId ,
104103 }
105104
0 commit comments