@@ -1259,42 +1259,42 @@ def get_version_scan_info(self, version_obj):
1259
1259
#
1260
1260
# Add project version as a component to another project
1261
1261
#
1262
- # WARNING: Uses internal API
1263
- ###
1264
-
1265
- # TODO: Refactor this code to use the (newly released, v2019.4.0) public endpoint for adding sub-projects (POST /api/projects/{projectId}/versions/{projectVersionId}/components)
1266
- # ref: https://jira.dc1.lan/browse/HUB-16972
1262
+ #
1267
1263
1268
1264
def add_version_as_component (self , main_project_release , sub_project_release ):
1269
1265
headers = self .get_headers ()
1270
1266
main_data = main_project_release ['_meta' ]['href' ].split ('/' )
1271
1267
sub_data = sub_project_release ['_meta' ]['href' ].split ('/' )
1272
- url = self .get_apibase () + "/v1/releases/" + main_data [7 ] + "/component-bom-entries"
1273
- logger .debug (url )
1268
+ main_project_release_links = main_project_release ['_meta' ]['links' ]
1269
+ main_project_release_component_links = [x for x in main_project_release_links if x ['rel' ] == 'components' ]
1270
+ main_project_release_component_link = main_project_release_component_links [0 ]['href' ]
1271
+ logger .debug (main_project_release_component_link )
1272
+ sub_project_release_as_custom_component_url = self .get_apibase () + "/components/" + sub_data [5 ] + "/versions/" + sub_data [7 ]
1273
+ logger .debug (sub_project_release_as_custom_component_url )
1274
1274
payload = {}
1275
- payload ['producerProject' ] = {}
1276
- payload ['producerProject' ]['id' ] = sub_data [5 ]
1277
- payload ['producerRelease' ] = {}
1278
- payload ['producerRelease' ]['id' ] = sub_data [7 ]
1275
+ payload ['component' ] = sub_project_release_as_custom_component_url
1279
1276
logger .debug (json .dumps (payload ))
1280
- response = requests .post (url , headers = headers , verify = not self .config ['insecure' ], json = payload )
1281
- jsondata = response .json ()
1282
- return jsondata
1277
+ response = requests .post (main_project_release_component_link , headers = headers , verify = not self .config ['insecure' ], json = payload )
1278
+ logger .debug (response )
1279
+ return response
1280
+
1281
+ ###
1282
+ #
1283
+ # Remove a project version as a component from another project
1284
+ #
1285
+ #
1283
1286
1284
1287
def remove_version_as_component (self , main_project_release , sub_project_release ):
1285
1288
headers = self .get_headers ()
1286
1289
main_data = main_project_release ['_meta' ]['href' ].split ('/' )
1287
1290
sub_data = sub_project_release ['_meta' ]['href' ].split ('/' )
1288
- url = self .get_apibase () + "/v1/releases/" + main_data [7 ] + "/component-bom-entries"
1289
- logger .debug (url )
1290
- payload = []
1291
- entity = {}
1292
- entity ['entityKey' ] = {}
1293
- entity ['entityKey' ]['entityId' ] = sub_data [7 ]
1294
- entity ['entityKey' ]['entityType' ] = 'RL'
1295
- payload .append (entity )
1296
- logger .debug (json .dumps (payload ))
1297
- response = requests .delete (url , headers = headers , verify = not self .config ['insecure' ], json = payload )
1291
+ main_project_release_links = main_project_release ['_meta' ]['links' ]
1292
+ main_project_release_component_links = [x for x in main_project_release_links if x ['rel' ] == 'components' ]
1293
+ main_project_release_component_link = main_project_release_component_links [0 ]['href' ]
1294
+ logger .debug (main_project_release_component_link )
1295
+ subcomponent_url = main_project_release_component_link + "/" + sub_data [5 ] + "/versions/" + sub_data [7 ]
1296
+ logger .debug (subcomponent_url )
1297
+ response = requests .delete (subcomponent_url , headers = headers , verify = not self .config ['insecure' ])
1298
1298
return response
1299
1299
1300
1300
###
0 commit comments