2828 'wait_to_complete' , 'is_endpoint_up' , 'set_endpoint' ,
2929 'start_docker_containers' , 'DockerContainer' ,
3030 'infer_object_label_from_class' , 'bypass_slash_encoding' ,
31- 'exception_handler' , 'enforce_min_ver' , 'check_version'
31+ 'exception_handler' , 'enforce_min_ver' , 'check_version' ,
32+ 'validate_parameters_versioning_support'
3233 ]
3334
3435log = logging .getLogger (__name__ )
@@ -465,7 +466,7 @@ def strip_snapshot(java_version):
465466
466467def check_version (base , comparator = None , service = 'nifi' ):
467468 """
468- Compares version 'a' against either version 'b' , or the version of the
469+ Compares version base against either version comparator , or the version of the
469470 currently connected service instance.
470471
471472 Since NiFi is java, it may return a version with -SNAPSHOT as part of it.
@@ -478,20 +479,34 @@ def check_version(base, comparator=None, service='nifi'):
478479 service (str): The service to test the version against, currently
479480 only supports NiFi
480481
481- Returns (int): -1 if a is lower, 0 if equal, and 1 if newer
482+ Returns (int): -1 if base is lower, 0 if equal, and 1 if newer than comparator
482483
483484 """
484485 assert isinstance (base , six .string_types )
485486 assert comparator is None or isinstance (comparator , six .string_types )
486- assert service == 'nifi'
487+ assert service in [ 'nifi' , 'registry' ]
487488 # This call currently only supports NiFi
488489 ver_a = version .parse (base )
489490 if comparator :
490491 # if b is set, we compare the passed versions
491492 comparator = strip_snapshot (comparator )
492493 ver_b = version .parse (comparator )
494+ elif service == 'registry' :
495+ try :
496+ reg_swagger_def = nipyapi .registry .ApiClient ().call_api (
497+ '/swagger/swagger.json' , 'GET' , _preload_content = False ,
498+ auth_settings = nipyapi .config .registry_config .enabled_auth
499+ )
500+ reg_json = load (reg_swagger_def [0 ].data )
501+ ver_b = version .parse (reg_json ['info' ]['version' ])
502+ except nipyapi .registry .rest .ApiException as e :
503+ if e .status == 404 :
504+ log .warning ("Unable to retrieve swagger.json from registry to check version, assuming older than 0.3" )
505+ ver_b = version .parse ('0.2.0' )
506+ else :
507+ raise
493508 else :
494- # if b not set, we compare a against the connected nifi instance
509+ # Working with NiFi
495510 ver_b = version .parse (strip_snapshot (nipyapi .system .get_nifi_version_info ().ni_fi_version ))
496511 if ver_b > ver_a :
497512 return - 1
@@ -500,18 +515,25 @@ def check_version(base, comparator=None, service='nifi'):
500515 return 0
501516
502517
503- def enforce_min_ver (min_version , bool_response = False ):
518+ def validate_parameters_versioning_support ():
519+ if enforce_min_ver ('1.10' , bool_response = True ) or enforce_min_ver ('0.6' , service = 'registry' , bool_response = True ):
520+ log .warning ("Connected NiFi Registry does not support Parameter Contexts and they will be lost in "
521+ "Version Control" .format ())
522+
523+
524+ def enforce_min_ver (min_version , bool_response = False , service = 'nifi' ):
504525 """
505526 Raises an error if target NiFi environment is not minimum version
506527 Args:
507528 min_version (str): Version to check against
508529 bool_response (bool): If True, will return True instead of
509530 raising error
531+ service: nifi or registry
510532
511533 Returns:
512534 (bool) or (NotImplementedError)
513535 """
514- if check_version (min_version ) == 1 :
536+ if check_version (min_version , service = service ) == 1 :
515537 if not bool_response :
516538 raise NotImplementedError (
517539 "This function is not available "
0 commit comments