def convert(self, f5_config, avi_config, user_ignore, tenant_ref): avi_config['hash_algorithm'] = [] converted_objs = [] f5_persistence_dict = f5_config.get('persistence') user_ignore = user_ignore.get('persistence', {}) for key in f5_persistence_dict.keys(): persist_mode = None name = None skipped = [] try: persist_mode, name = key.split(" ") LOG.debug("Converting persistence profile: %s" % name) profile = f5_persistence_dict[key] prof_conv = ProfileConfigConv() profile = prof_conv.update_with_default_profile( persist_mode, profile, f5_persistence_dict, name) tenant, name = conv_utils.get_tenant_ref(name) if tenant_ref != 'admin': tenant = tenant_ref # TODO: Should be enabled after controller app cookie issue is fixed # if persist_mode == "cookie": # persist_profile = self.convert_cookie(name, profile, # skipped, tenant) # if not persist_profile: # continue # u_ignore = user_ignore.get('cookie', []) if persist_mode == "ssl": persist_profile = self.convert_ssl( name, profile, skipped, self.indirect, tenant) u_ignore = user_ignore.get('ssl', []) elif persist_mode == "source-addr": persist_profile = self.convert_source_addr( name, profile, skipped, tenant) u_ignore = user_ignore.get('source-addr', []) elif persist_mode == "hash": avi_config['hash_algorithm'].append(name) skipped = profile.keys() LOG.warn('hash-persistence profile %s will be mapped ' 'indirectly to Pool -> Load Balance Algorithm' % name) conv_status = { 'status': conv_const.STATUS_PARTIAL, 'skipped': skipped } msg = 'Indirectly mapped to Pool -> Load Balance Algorithm' conv_utils.add_conv_status( 'profile', "hash-persistence", name, conv_status, msg) continue else: LOG.warning( 'persist mode not supported skipping conversion: %s' % name) self.update_conv_status_for_skip(persist_mode, name) continue if not persist_profile: continue # code to merge applicaation persistence profile. if self.object_merge_check: conv_utils.update_skip_duplicates(persist_profile, avi_config['ApplicationPersistenceProfile'], 'app_per_profile', converted_objs, name, None) self.app_per_count += 1 else: avi_config["ApplicationPersistenceProfile"].append( persist_profile) ignore_for_defaults = {"app-service": "none", "mask": "none"} conv_status = conv_utils.get_conv_status( skipped, self.indirect, ignore_for_defaults, profile, u_ignore) self.update_conversion_status(conv_status, persist_mode, name, persist_profile) except: LOG.error("Failed to convert persistance profile : %s" % key, exc_info=True) self.update_conv_status_for_error(name, persist_mode, key) count = len(avi_config["ApplicationPersistenceProfile"]) LOG.debug("Converted %s persistence profiles" % count) f5_config.pop('persistence')
def convert(self, f5_config, avi_config, user_ignore, tenant_ref, merge_object_mapping, sys_dict): """ :param f5_config: parsed f5 config :param avi_config: dict of avi config :param user_ignore: Ignore config defined by user :param tenant_ref: tenant of which output to converted :param merge_object_mapping: flag for object merge :param sys_dict: baseline profile :return: """ avi_config['hash_algorithm'] = [] converted_objs = [] f5_persistence_dict = f5_config.get('persistence') user_ignore = user_ignore.get('persistence', {}) # Added variable to get total object count. progressbar_count = 0 total_size = len(f5_persistence_dict.keys()) print "Converting Persistence Profiles..." for key in f5_persistence_dict.keys(): progressbar_count += 1 persist_mode = None name = None skipped = [] # Added call to check the progress. msg = "persistence conversion started..." conv_utils.print_progress_bar(progressbar_count, total_size, msg, prefix='Progress', suffix='') if key == 'global-settings': msg = 'persist mode not supported skipping conversion: %s' \ % name LOG.warning(msg) self.update_conv_status_for_skip(None, name, msg) continue try: persist_mode, name = key.split(" ") LOG.debug("Converting persistence profile: %s" % name) profile = f5_persistence_dict[key] prof_conv = ProfileConfigConv() profile = prof_conv.update_with_default_profile( persist_mode, profile, f5_persistence_dict, name) tenant, name = conv_utils.get_tenant_ref(name) if tenant_ref != 'admin': tenant = tenant_ref if self.prefix: name = '{}-{}'.format(self.prefix, name) # Enabled the cookie support if persist_mode == "cookie": persist_profile = self.convert_cookie(name, profile, skipped, tenant) if not persist_profile: continue u_ignore = user_ignore.get('cookie', []) elif persist_mode == "ssl": persist_profile = self.convert_ssl( name, profile, skipped, self.indirect, tenant) u_ignore = user_ignore.get('ssl', []) elif persist_mode == "source-addr": persist_profile = self.convert_source_addr( name, profile, skipped, tenant) u_ignore = user_ignore.get('source-addr', []) elif persist_mode == "hash": avi_config['hash_algorithm'].append(name) skipped = profile.keys() LOG.warn('hash-persistence profile %s will be mapped ' 'indirectly to Pool -> Load Balance Algorithm' % name) conv_status = { 'status': conv_const.STATUS_PARTIAL, 'skipped': skipped } msg = 'Indirectly mapped to Pool -> Load Balance Algorithm' conv_utils.add_conv_status( 'profile', "hash-persistence", name, conv_status, msg) continue else: msg = 'persist mode not supported skipping conversion: %s'\ % name LOG.warning(msg) self.update_conv_status_for_skip(persist_mode, name, msg) continue if not persist_profile: continue # code to merge applicaation persistence profile. if self.object_merge_check: conv_utils.update_skip_duplicates(persist_profile, avi_config['ApplicationPersistenceProfile'], 'app_per_profile', converted_objs, name, None, merge_object_mapping, persist_mode, self.prefix, sys_dict['ApplicationPersistenceProfile']) self.app_per_count += 1 else: avi_config["ApplicationPersistenceProfile"].append( persist_profile) ignore_for_defaults = {"app-service": "none", "mask": "none"} conv_status = conv_utils.get_conv_status( skipped, self.indirect, ignore_for_defaults, profile, u_ignore) self.update_conversion_status(conv_status, persist_mode, name, persist_profile) except: update_count('error') LOG.error("Failed to convert persistance profile : %s" % key, exc_info=True) self.update_conv_status_for_error(name, persist_mode, key) count = len(avi_config["ApplicationPersistenceProfile"]) LOG.debug("Converted %s persistence profiles" % count) f5_config.pop('persistence')
def convert(self, f5_config, avi_config, user_ignore, tenant_ref): avi_config['hash_algorithm'] = [] converted_objs = [] f5_persistence_dict = f5_config.get('persistence') user_ignore = user_ignore.get('persistence', {}) for key in f5_persistence_dict.keys(): persist_mode = None name = None skipped = [] try: persist_mode, name = key.split(" ") LOG.debug("Converting persistence profile: %s" % name) profile = f5_persistence_dict[key] prof_conv = ProfileConfigConv() profile = prof_conv.update_with_default_profile( persist_mode, profile, f5_persistence_dict, name) tenant, name = conv_utils.get_tenant_ref(name) if tenant_ref != 'admin': tenant = tenant_ref # TODO: Should be enabled after controller app cookie issue is fixed # if persist_mode == "cookie": # persist_profile = self.convert_cookie(name, profile, # skipped, tenant) # if not persist_profile: # continue # u_ignore = user_ignore.get('cookie', []) if persist_mode == "ssl": persist_profile = self.convert_ssl(name, profile, skipped, self.indirect, tenant) u_ignore = user_ignore.get('ssl', []) elif persist_mode == "source-addr": persist_profile = self.convert_source_addr( name, profile, skipped, tenant) u_ignore = user_ignore.get('source-addr', []) elif persist_mode == "hash": avi_config['hash_algorithm'].append(name) skipped = profile.keys() LOG.warn('hash-persistence profile %s will be mapped ' 'indirectly to Pool -> Load Balance Algorithm' % name) conv_status = { 'status': conv_const.STATUS_PARTIAL, 'skipped': skipped } msg = 'Indirectly mapped to Pool -> Load Balance Algorithm' conv_utils.add_conv_status('profile', "hash-persistence", name, conv_status, msg) continue else: LOG.warning( 'persist mode not supported skipping conversion: %s' % name) self.update_conv_status_for_skip(persist_mode, name) continue if not persist_profile: continue # code to merge applicaation persistence profile. if self.object_merge_check: conv_utils.update_skip_duplicates( persist_profile, avi_config['ApplicationPersistenceProfile'], 'app_per_profile', converted_objs, name, None) self.app_per_count += 1 else: avi_config["ApplicationPersistenceProfile"].append( persist_profile) ignore_for_defaults = {"app-service": "none", "mask": "none"} conv_status = conv_utils.get_conv_status( skipped, self.indirect, ignore_for_defaults, profile, u_ignore) self.update_conversion_status(conv_status, persist_mode, name, persist_profile) except: LOG.error("Failed to convert persistance profile : %s" % key, exc_info=True) self.update_conv_status_for_error(name, persist_mode, key) count = len(avi_config["ApplicationPersistenceProfile"]) LOG.debug("Converted %s persistence profiles" % count) f5_config.pop('persistence')