def _add_profile(data, user, id=0): if id: obj = get_profile(id) update_ref_count(obj.construct_list, -1) obj.name = data[NAME] if not data[CONSTRUCT_LIST]: raise IgniteException(ERR_PROF_IS_EMPTY) else: obj.construct_list = data[CONSTRUCT_LIST] obj.submit = data[SUBMIT] obj.updated_by = user update_ref_count(data[CONSTRUCT_LIST], +1) obj.save() return obj else: fp_object = Profile() fp_object.name = data[NAME] if not data[CONSTRUCT_LIST]: raise IgniteException(ERR_PROF_IS_EMPTY) else: fp_object.construct_list = data[CONSTRUCT_LIST] fp_object.submit = data[SUBMIT] fp_object.updated_by = user update_ref_count(data[CONSTRUCT_LIST], +1) fp_object.save() return fp_object
def _add_profile(data, user, id=0): logger.debug("profile name = %s", data[NAME]) if id: # get existing profile profile = Profile.objects.get(pk=id) for cfg in profile.construct_list: configlet.update_ref_count(cfg[CONFIGLET_ID], -1) for param_detail in cfg[PARAM_LIST]: if param_detail[PARAM_TYPE] == POOL: update_pool_ref_count(int(param_detail[PARAM_VALUE]), -1) else: # create new profile profile = Profile() profile.name = data[NAME] profile.submit = data[SUBMIT] if not data[CONSTRUCT_LIST]: raise IgniteException(ERR_PROF_IS_EMPTY) else: profile.construct_list = data[CONSTRUCT_LIST] profile.updated_by = user profile.save() # increment ref count of configlets and pool used in this profile for cfg in profile.construct_list: configlet.update_ref_count(cfg[CONFIGLET_ID], 1) for param_detail in cfg[PARAM_LIST]: if param_detail[PARAM_TYPE] == POOL: update_pool_ref_count(int(param_detail[PARAM_VALUE]), 1) return profile
def _add_profile_index(data, user, prindex_id=0, pr_id=0): logger.debug("profile name = %s", data[NAME]) import hashlib pr_index = None profile = None temp1 = json.dumps(data[CONSTRUCT_LIST]) if pr_id and prindex_id: # get existing profile pr_index = ProfileIndex.objects.get(pk=prindex_id) profile = Profile.objects.get(pk=pr_id, profileindex_id=prindex_id) current_version = get_profile_current_version(prindex_id) new = hashlib.md5(str(json.loads(temp1))).hexdigest() old = hashlib.md5(str(profile.construct_list)).hexdigest() if not data[CONSTRUCT_LIST]: raise IgniteException(ERR_PROF_IS_EMPTY) if old == new: if not profile.submit: profile.submit = data[SUBMIT] profile.save() return profile obj = Profile.objects.get(profileindex=prindex_id, version=current_version) if obj.id != pr_id: err = "Update/Newversion can only be done with latest version of config profile" logger.error(err) raise IgniteException(err) for cfg in profile.construct_list: configlet.update_ref_count(cfg[CONFIGLETINDEX_ID], cfg[VERSION], -1) for param_detail in cfg[PARAM_LIST]: if param_detail[PARAM_TYPE] == POOL: update_pool_ref_count(int(param_detail[PARAM_VALUE]), -1) if data[NEW_VERSION]: if not profile.submit: err = "Please submit current version, then create new version" logger.error(err) raise IgniteException(err) profile = Profile() profile.version = current_version + 1 else: profile = Profile.objects.get(pk=pr_id) else: # create new profile if not data[CONSTRUCT_LIST]: raise IgniteException(ERR_PROF_IS_EMPTY) pr_index = ProfileIndex() pr_index.name = data[NAME] pr_index.updated_by = user pr_index.save() profile = Profile() profile.version = 1 profile.name = data[NAME] profile.construct_list = data[CONSTRUCT_LIST] profile.submit = data[SUBMIT] profile.updated_by = user profile.profileindex = pr_index profile.save() # increment ref count of configlets and pool used in this profile for cfg in profile.construct_list: configlet.update_ref_count(cfg[CONFIGLETINDEX_ID], cfg[VERSION], 1) for param_detail in cfg[PARAM_LIST]: if param_detail[PARAM_TYPE] == POOL: update_pool_ref_count(int(param_detail[PARAM_VALUE]), 1) return profile