4
4
import base64
5
5
import requests
6
6
7
- # INTERLYNK_API_URL = 'https://api.interlynk.io/lynkapi'
8
-
9
- INTERLYNK_API_URL = 'http://localhost:3000/lynkapi'
7
+ INTERLYNK_API_URL = 'https://api.interlynk.io/lynkapi'
10
8
11
9
INTERLYNK_API_TIMEOUT = 100
12
10
@@ -229,20 +227,16 @@ def resolve_env(self):
229
227
230
228
def resolve_ver (self ):
231
229
env = self .env or 'default'
232
- self .data = self ._fetch_context ()
233
-
234
230
if not self .ver_id :
235
231
for product in self .data .get ('data' , {}).get ('organization' , {}).get ('productNodes' , {}).get ('products' , []):
236
232
if product ['id' ] == self .prod_id :
237
233
for env in product ['environments' ]:
238
234
if env ['id' ] == self .env_id :
239
235
for ver in env ['versions' ]:
240
- if ver . get ( 'primaryComponent' ) and ver ['primaryComponent' ]. get ( 'version' ) == self .ver :
236
+ if ver ['primaryComponent' ][ 'version' ] == self .ver :
241
237
self .ver_id = ver ['id' ]
242
238
self .ver_status = self .vuln_status_to_status (
243
- ver ['vulnRunStatus' ]
244
- )
245
-
239
+ ver ['vulnRunStatus' ])
246
240
empty_ver = False
247
241
if not self .ver :
248
242
for product in self .data .get ('data' , {}).get ('organization' , {}).get ('productNodes' , {}).get ('products' , []):
@@ -251,13 +245,11 @@ def resolve_ver(self):
251
245
if env ['id' ] == self .env_id :
252
246
for ver in env ['versions' ]:
253
247
if ver ['id' ] == self .ver_id :
254
- if ver .get ('primaryComponent' ):
255
- self .ver = ver ['primaryComponent' ].get ('version' )
248
+ self .ver = ver ['primaryComponent' ]['version' ]
256
249
if not self .ver :
257
250
empty_ver = True
258
251
self .ver_status = self .vuln_status_to_status (
259
- ver ['vulnRunStatus' ]
260
- )
252
+ ver ['vulnRunStatus' ])
261
253
262
254
return (empty_ver or self .ver ) and self .ver_id
263
255
@@ -296,6 +288,11 @@ def versions(self):
296
288
def status (self ):
297
289
self .resolve_ver ()
298
290
return self .ver_status
291
+
292
+ def live_status (self ):
293
+ self .resolve_ver_status ()
294
+ return self .ver_status
295
+
299
296
300
297
def download (self ):
301
298
logging .debug ("Downloading SBOM for environment ID %s, sbom ID %s" ,
@@ -447,3 +444,60 @@ def vuln_status_to_status(self, status):
447
444
result_dict ['labelingStatus' ] = 'COMPLETED'
448
445
result_dict ['automationStatus' ] = 'COMPLETED'
449
446
return result_dict
447
+
448
+
449
+ def resolve_ver_status (self ):
450
+ """
451
+ Resolve version ID (ver_id) and version (ver) for the current context.
452
+ """
453
+ self .data = self ._fetch_context ()
454
+
455
+ # ver_id is present
456
+ if self .ver_id :
457
+ self ._update_ver_status ()
458
+ return self .ver_id
459
+
460
+ # ver_id is not present
461
+ self ._resolve_ver_id ()
462
+
463
+ # ver is not present
464
+ if not self .ver :
465
+ self ._resolve_ver_value ()
466
+
467
+ return self .ver_id and self .ver
468
+
469
+ def _update_ver_status (self ):
470
+ """Update the status of the version based on ver_id."""
471
+ for product in self .data .get ('data' , {}).get ('organization' , {}).get ('productNodes' , {}).get ('products' , []):
472
+ if product ['id' ] == self .prod_id :
473
+ for env in product ['environments' ]:
474
+ if env ['id' ] == self .env_id :
475
+ for ver in env ['versions' ]:
476
+ if ver ['id' ] == self .ver_id :
477
+ self .ver_status = self .vuln_status_to_status (ver ['vulnRunStatus' ])
478
+
479
+ def _resolve_ver_id (self ):
480
+ """Resolve ver_id based on ver."""
481
+ for product in self .data .get ('data' , {}).get ('organization' , {}).get ('productNodes' , {}).get ('products' , []):
482
+ if product ['id' ] == self .prod_id :
483
+ for env in product ['environments' ]:
484
+ if env ['id' ] == self .env_id :
485
+ for ver in env ['versions' ]:
486
+ if ver .get ('primaryComponent' ) and ver ['primaryComponent' ].get ('version' ) == self .ver :
487
+ self .ver_id = ver ['id' ]
488
+ self .ver_status = self .vuln_status_to_status (ver ['vulnRunStatus' ])
489
+
490
+ def _resolve_ver_value (self ):
491
+ """Resolve the version value (ver) based on ver_id."""
492
+ empty_ver = False
493
+ for product in self .data .get ('data' , {}).get ('organization' , {}).get ('productNodes' , {}).get ('products' , []):
494
+ if product ['id' ] == self .prod_id :
495
+ for env in product ['environments' ]:
496
+ if env ['id' ] == self .env_id :
497
+ for ver in env ['versions' ]:
498
+ if ver ['id' ] == self .ver_id :
499
+ if ver .get ('primaryComponent' ):
500
+ self .ver = ver ['primaryComponent' ].get ('version' )
501
+ if not self .ver :
502
+ empty_ver = True
503
+ return empty_ver
0 commit comments