1212// See the License for the specific language governing permissions and
1313// limitations under the License.
1414
15+ /*
16+ Package server contains the implementation of the pipeline upload server.
17+ */
1518package server
1619
1720import (
6568
6669type PipelineUploadServerOptions struct {
6770 CollectMetrics bool `json:"collect_metrics,omitempty"`
68- // ApiVersion string `default:"v2beta1" json:"api_version ,omitempty"`
71+ // ApiVersion string `default:"v2beta1" json:"apiVersion ,omitempty"`
6972 // DefaultNamespace string `default:"" json:"default_namespace,omitempty"`
7073}
7174
@@ -89,7 +92,7 @@ func (s *PipelineUploadServer) UploadPipeline(w http.ResponseWriter, r *http.Req
8992// endpoint to the HTTP endpoint.
9093// See https://github.com/grpc-ecosystem/grpc-gateway/issues/500
9194// Thus we create the HTTP endpoint directly and using swagger to auto generate the HTTP client.
92- func (s * PipelineUploadServer ) uploadPipeline (api_version string , w http.ResponseWriter , r * http.Request ) {
95+ func (s * PipelineUploadServer ) uploadPipeline (apiVersion string , w http.ResponseWriter , r * http.Request ) {
9396 if s .options .CollectMetrics {
9497 uploadPipelineRequests .Inc ()
9598 uploadPipelineVersionRequests .Inc ()
@@ -98,14 +101,16 @@ func (s *PipelineUploadServer) uploadPipeline(api_version string, w http.Respons
98101 glog .Infof ("Upload pipeline called" )
99102 file , header , err := r .FormFile (FormFileKey )
100103 if err != nil {
101- s .writeErrorToResponse (w , http .StatusBadRequest , util .Wrap (err , "Failed to read pipeline from file" ))
104+ glog .Errorf ("Failed to read pipeline from file: %v" , err )
105+ s .writeErrorToResponse (w , http .StatusBadRequest , errors .New ("Failed to read pipeline from file" ))
102106 return
103107 }
104108 defer file .Close ()
105109
106110 pipelineFile , err := ReadPipelineFile (header .Filename , file , common .MaxFileLength )
107111 if err != nil {
108- s .writeErrorToResponse (w , http .StatusBadRequest , util .Wrap (err , "Failed to read a pipeline spec file" ))
112+ glog .Errorf ("Failed to read a pipeline spec file: %v" , err )
113+ s .writeErrorToResponse (w , http .StatusBadRequest , errors .New ("Failed to read a pipeline spec file" ))
109114 return
110115 }
111116
@@ -126,7 +131,8 @@ func (s *PipelineUploadServer) uploadPipeline(api_version string, w http.Respons
126131 }
127132 err = s .canUploadVersionedPipeline (r , "" , resourceAttributes )
128133 if err != nil {
129- s .writeErrorToResponse (w , http .StatusBadRequest , util .Wrap (err , "Failed to create a pipeline due to authorization error" ))
134+ glog .Errorf ("Failed to create a pipeline due to authorization error: %v" , err )
135+ s .writeErrorToResponse (w , http .StatusBadRequest , errors .New ("Failed to create a pipeline" ))
130136 return
131137 }
132138
@@ -162,10 +168,12 @@ func (s *PipelineUploadServer) uploadPipeline(api_version string, w http.Respons
162168 newPipeline , newPipelineVersion , err := s .resourceManager .CreatePipelineAndPipelineVersion (pipeline , pipelineVersion )
163169 if err != nil {
164170 if util .IsUserErrorCodeMatch (err , codes .AlreadyExists ) {
165- s .writeErrorToResponse (w , http .StatusConflict , util .Wrap (err , "Failed to create a pipeline and a pipeline version. The pipeline already exists." ))
171+ glog .Errorf ("Failed to create a pipeline and a pipeline version. The pipeline already exists: %v" , err )
172+ s .writeErrorToResponse (w , http .StatusConflict , errors .New ("Failed to create a pipeline and a pipeline version" ))
166173 return
167174 }
168- s .writeErrorToResponse (w , http .StatusInternalServerError , util .Wrap (err , "Failed to create a pipeline and a pipeline version" ))
175+ glog .Errorf ("Failed to create a pipeline and a pipeline version: %v" , err )
176+ s .writeErrorToResponse (w , http .StatusInternalServerError , errors .New ("Failed to create a pipeline and a pipeline version" ))
169177 return
170178 }
171179
@@ -174,13 +182,14 @@ func (s *PipelineUploadServer) uploadPipeline(api_version string, w http.Respons
174182 }
175183
176184 var messageToMarshal proto.Message
177- switch api_version {
185+ switch apiVersion {
178186 case "v1beta1" :
179187 messageToMarshal = toApiPipelineV1 (newPipeline , newPipelineVersion )
180188 case "v2beta1" :
181189 messageToMarshal = toApiPipeline (newPipeline )
182190 default :
183- s .writeErrorToResponse (w , http .StatusInternalServerError , util .Wrap (err , "Failed to create a pipeline. Invalid API version" ))
191+ glog .Errorf ("Failed to create a pipeline. Invalid API version: %v" , apiVersion )
192+ s .writeErrorToResponse (w , http .StatusInternalServerError , errors .New ("Failed to create a pipeline" ))
184193 return
185194 }
186195
@@ -191,12 +200,14 @@ func (s *PipelineUploadServer) uploadPipeline(api_version string, w http.Respons
191200 }
192201 data , err := marshaler .Marshal (messageToMarshal )
193202 if err != nil {
194- s .writeErrorToResponse (w , http .StatusInternalServerError , util .Wrap (err , "Failed to create a pipeline. Marshaling error" ))
203+ glog .Errorf ("Failed to create a pipeline. Marshaling error: %v" , err )
204+ s .writeErrorToResponse (w , http .StatusInternalServerError , errors .New ("Failed to create a pipeline" ))
195205 return
196206 }
197207 _ , err = w .Write (data )
198208 if err != nil {
199- s .writeErrorToResponse (w , http .StatusInternalServerError , util .Wrap (err , "Failed to create a pipeline. Write error." ))
209+ glog .Errorf ("Failed to create a pipeline. Write error: %v" , err )
210+ s .writeErrorToResponse (w , http .StatusInternalServerError , errors .New ("Failed to create a pipeline" ))
200211 return
201212 }
202213}
@@ -216,27 +227,30 @@ func (s *PipelineUploadServer) UploadPipelineVersion(w http.ResponseWriter, r *h
216227// endpoint to the HTTP endpoint.
217228// See https://github.com/grpc-ecosystem/grpc-gateway/issues/500
218229// Thus we create the HTTP endpoint directly and using swagger to auto generate the HTTP client.
219- func (s * PipelineUploadServer ) uploadPipelineVersion (api_version string , w http.ResponseWriter , r * http.Request ) {
230+ func (s * PipelineUploadServer ) uploadPipelineVersion (apiVersion string , w http.ResponseWriter , r * http.Request ) {
220231 if s .options .CollectMetrics {
221232 uploadPipelineVersionRequests .Inc ()
222233 }
223234
224235 glog .Infof ("Upload pipeline version called" )
225236 file , header , err := r .FormFile (FormFileKey )
226237 if err != nil {
227- s .writeErrorToResponse (w , http .StatusBadRequest , util .Wrap (err , "Failed to create a pipeline version due to error parsing pipeline spec filename" ))
238+ glog .Errorf ("Failed to create a pipeline version. Error parsing pipeline spec filename: %v" , err )
239+ s .writeErrorToResponse (w , http .StatusBadRequest , errors .New ("Failed to create a pipeline version" ))
228240 return
229241 }
230242 defer file .Close ()
231243
232244 pipelineFile , err := ReadPipelineFile (header .Filename , file , common .MaxFileLength )
233245 if err != nil {
234- s .writeErrorToResponse (w , http .StatusBadRequest , util .Wrap (err , "Failed to create a pipeline version due to error reading pipeline spec file" ))
246+ glog .Errorf ("Failed to create a pipeline version. Error reading pipeline spec file: %v" , err )
247+ s .writeErrorToResponse (w , http .StatusBadRequest , errors .New ("Failed to create a pipeline version" ))
235248 return
236249 }
237- pipelineId := r .URL .Query ().Get (PipelineKey )
238- if pipelineId == "" {
239- s .writeErrorToResponse (w , http .StatusBadRequest , errors .New ("Failed to create a pipeline version due to error reading pipeline id" ))
250+ pipelineID := r .URL .Query ().Get (PipelineKey )
251+ if pipelineID == "" {
252+ glog .Errorf ("Failed to create a pipeline version. Error reading pipeline id" )
253+ s .writeErrorToResponse (w , http .StatusBadRequest , errors .New ("Failed to create a pipeline version" ))
240254 return
241255 }
242256
@@ -255,9 +269,10 @@ func (s *PipelineUploadServer) uploadPipelineVersion(api_version string, w http.
255269 return
256270 }
257271
258- namespace , err := s .resourceManager .FetchNamespaceFromPipelineId (pipelineId )
272+ namespace , err := s .resourceManager .FetchNamespaceFromPipelineId (pipelineID )
259273 if err != nil {
260- s .writeErrorToResponse (w , http .StatusBadRequest , util .Wrap (err , "Failed to create a pipeline version due to error reading namespace" ))
274+ glog .Errorf ("Failed to create a pipeline version. Error reading namespace: %v" , err )
275+ s .writeErrorToResponse (w , http .StatusBadRequest , errors .New ("Failed to create a pipeline version" ))
261276 return
262277 }
263278
@@ -271,9 +286,10 @@ func (s *PipelineUploadServer) uploadPipelineVersion(api_version string, w http.
271286 Namespace : namespace ,
272287 Verb : common .RbacResourceVerbCreate ,
273288 }
274- err = s .canUploadVersionedPipeline (r , pipelineId , resourceAttributes )
289+ err = s .canUploadVersionedPipeline (r , pipelineID , resourceAttributes )
275290 if err != nil {
276- s .writeErrorToResponse (w , http .StatusBadRequest , util .Wrap (err , "Failed to create a pipeline version due to authorization error" ))
291+ glog .Errorf ("Failed to create a pipeline version. Authorization error: %v" , err )
292+ s .writeErrorToResponse (w , http .StatusBadRequest , errors .New ("Failed to create a pipeline version" ))
277293 return
278294 }
279295
@@ -284,27 +300,30 @@ func (s *PipelineUploadServer) uploadPipelineVersion(api_version string, w http.
284300 Name : pipelineVersionName ,
285301 DisplayName : displayName ,
286302 Description : model .LargeText (r .URL .Query ().Get (DescriptionQueryStringKey )),
287- PipelineId : pipelineId ,
303+ PipelineId : pipelineID ,
288304 PipelineSpec : model .LargeText (pipelineFile ),
289305 },
290306 )
291307 if err != nil {
292308 if util .IsUserErrorCodeMatch (err , codes .AlreadyExists ) {
293- s .writeErrorToResponse (w , http .StatusConflict , util .Wrap (err , "Failed to create a pipeline version. The pipeline already exists." ))
309+ glog .Errorf ("Failed to create a pipeline version. The pipeline already exists: %v" , err )
310+ s .writeErrorToResponse (w , http .StatusConflict , errors .New ("Failed to create a pipeline version" ))
294311 return
295312 }
296- s .writeErrorToResponse (w , http .StatusInternalServerError , util .Wrap (err , "Failed to create a pipeline version" ))
313+ glog .Errorf ("Failed to create a pipeline version: %v" , err )
314+ s .writeErrorToResponse (w , http .StatusInternalServerError , errors .New ("Failed to create a pipeline version" ))
297315 return
298316 }
299317
300318 var messageToMarshal proto.Message
301- switch api_version {
319+ switch apiVersion {
302320 case "v1beta1" :
303321 messageToMarshal = toApiPipelineVersionV1 (newPipelineVersion )
304322 case "v2beta1" :
305323 messageToMarshal = toApiPipelineVersion (newPipelineVersion )
306324 default :
307- s .writeErrorToResponse (w , http .StatusInternalServerError , util .Wrap (err , "Failed to create a pipeline version. Invalid API version" ))
325+ glog .Errorf ("Failed to create a pipeline version. Invalid API version: %v" , apiVersion )
326+ s .writeErrorToResponse (w , http .StatusInternalServerError , errors .New ("Failed to create a pipeline version" ))
308327 return
309328 }
310329 // Marshal the message to bytes
@@ -314,12 +333,14 @@ func (s *PipelineUploadServer) uploadPipelineVersion(api_version string, w http.
314333 }
315334 data , err := marshaler .Marshal (messageToMarshal )
316335 if err != nil {
317- s .writeErrorToResponse (w , http .StatusInternalServerError , util .Wrap (err , "Failed to create a pipeline version. Marshaling error" ))
336+ glog .Errorf ("Failed to create a pipeline version. Marshaling error: %v" , err )
337+ s .writeErrorToResponse (w , http .StatusInternalServerError , errors .New ("Failed to create a pipeline version" ))
318338 return
319339 }
320340 _ , err = w .Write (data )
321341 if err != nil {
322- s .writeErrorToResponse (w , http .StatusInternalServerError , util .Wrap (err , "Failed to create a pipeline version. Write error." ))
342+ glog .Errorf ("Failed to create a pipeline version. Write error: %v" , err )
343+ s .writeErrorToResponse (w , http .StatusInternalServerError , errors .New ("Failed to create a pipeline version" ))
323344 return
324345 }
325346
@@ -328,13 +349,13 @@ func (s *PipelineUploadServer) uploadPipelineVersion(api_version string, w http.
328349 }
329350}
330351
331- func (s * PipelineUploadServer ) canUploadVersionedPipeline (r * http.Request , pipelineId string , resourceAttributes * authorizationv1.ResourceAttributes ) error {
352+ func (s * PipelineUploadServer ) canUploadVersionedPipeline (r * http.Request , pipelineID string , resourceAttributes * authorizationv1.ResourceAttributes ) error {
332353 if ! common .IsMultiUserMode () {
333354 // Skip authorization if not multi-user mode.
334355 return nil
335356 }
336- if len (pipelineId ) > 0 {
337- namespace , err := s .resourceManager .FetchNamespaceFromPipelineId (pipelineId )
357+ if len (pipelineID ) > 0 {
358+ namespace , err := s .resourceManager .FetchNamespaceFromPipelineId (pipelineID )
338359 if err != nil {
339360 return util .Wrap (err , "Failed to authorize with the Pipeline ID" )
340361 }
0 commit comments