Example #1
0
def add_configlet_index(data, user):
    cfgindex = ConfigletIndex()
    cfgindex.name = data[NAME]
    cfgindex.updated_by = user
    cfgindex.save()

    cfg = Configlet()
    cfg.name = data[NAME]
    cfg.version = 1
    cfg.group = data[GROUP]
    cfg.type = data[CONSTRUCT_TYPE]
    cfg.updated_by = user
    cfg.configletindex = cfgindex
    cfg.save()
    return cfg
Example #2
0
def add_configlet(data, user):
    cfg = Configlet()
    cfg.name = data[NAME]
    cfg.group = data[GROUP]
    cfg.type = data[CONSTRUCT_TYPE]
    cfg.updated_by = user
    cfg.save()
    return cfg
Example #3
0
def add_configlet_index(data, user):
    cfgindex = ConfigletIndex()
    cfgindex.name = data[NAME]
    cfgindex.updated_by = user
    cfgindex.save()

    cfg = Configlet()
    cfg.name = data[NAME]
    cfg.version = 1
    cfg.group = data[GROUP]
    cfg.type = data[CONSTRUCT_TYPE]
    cfg.updated_by = user
    cfg.configletindex = cfgindex
    cfg.save()
    return cfg
Example #4
0
def update_configlet(cfgindex_id,
                     fileobject,
                     cfg_id=0,
                     new_version=None,
                     user=''):
    cfg = None
    current_version = get_current_config_version(cfgindex_id)
    logger.debug("current version " + str(current_version))
    cfg = Configlet.objects.get(configletindex_id=cfgindex_id,
                                version=current_version)
    if cfg_id:
        logger.debug(str(cfg.id))
        logger.debug(str(cfg_id))
        if cfg_id != cfg.id:
            err = "Requested configlet is not latest version(%s)" % (
                str(cfg_id))
            logger.error(err)
            raise IgniteException(err)

        cfg = Configlet.objects.get(pk=cfg_id, configletindex_id=cfgindex_id)
    file_obj = fileobject[FILE]
    file_content = file_obj.read()
    if cfg.path and cfg_id:
        logger.debug(str(cfg.path))
        try:
            old = hashlib.md5(
                open(os.path.join(MEDIA_ROOT, str(cfg.path)),
                     'rb').read()).hexdigest()
            logger.debug("existed configlet md5= " + old)
            logger.debug(str(old))
            new = hashlib.md5(file_content).hexdigest()
            logger.debug("User given  configlet md5= " + new)
            change = False
            params = None
            logger.debug(str(new))
            if old == new:
                return cfg
            if cfg.type == SCRIPT:
                params = parse_file(file_content, PARAM_EXP_SCRIPT,
                                    PARAM_IDENTIFIER_SCRIPT)
            else:
                params = parse_file(file_content, PARAM_EXP_CONFIGLET,
                                    PARAM_IDENTIFIER_CONFIGLET)
            logger.debug("new parameters " + str(params))
            logger.debug("old parameters " + str(cfg.parameters))
            if params != cfg.parameters:
                change = True
            if change:
                logger.error(ERR_CHANGE_IN_PARAMS)
                raise IgniteException(ERR_CHANGE_IN_PARAMS)
            else:
                logger.debug("new version boolean is " + new_version)
                if str(new_version) in ['true', 'True']:
                    logger.debug("User requested new version of configlet")
                    new_cfg = Configlet()
                    new_cfg.name = cfg.name
                    new_cfg.updated_by = user
                    new_cfg.group = cfg.group
                    new_cfg.type = cfg.type
                    new_cfg.parameters = params
                    new_cfg.configletindex = cfg.configletindex
                    new_cfg.save()
                    new_cfg.version = current_version + 1
                    new_cfg.path.delete(save=False)
                    new_cfg.path = file_obj
                    new_cfg.save()
                    logger.debug("File content: " + str(file_content))
                    logger.debug("File named %s saved in db" % (file_obj))
                    return new_cfg
                elif str(new_version) in ['false', 'False']:
                    cfg.path.delete(save=False)
                    cfg.path = file_obj
                    cfg.updated_by = user
                    cfg.save()
                    logger.debug("File content: " + str(file_content))
                    logger.debug("File named %s saved in db" % (file_obj))
                    return cfg
                else:
                    err = "Unknown version type-" + str(new_version)
                    logger.error(err)
                    raise IgniteException(err)

        except Exception as e:
            logger.error(e)
            raise IgniteException(str(e))
    if cfg.path:
        err = "Update/Newversion is not possible on this request"
        logger.error(err)
        raise IgniteException(err)
    cfg.path.delete(save=False)
    cfg.path = file_obj

    logger.debug("adding a new configlet")
    if cfg.type == SCRIPT:
        params = parse_file(file_content, PARAM_EXP_SCRIPT,
                            PARAM_IDENTIFIER_SCRIPT)
    else:
        params = parse_file(file_content, PARAM_EXP_CONFIGLET,
                            PARAM_IDENTIFIER_CONFIGLET)

    cfg.parameters = params
    cfg.updated_by = user
    cfg.save()
    logger.debug("File content: " + str(file_content))
    logger.debug("File named %s saved in db" % (file_obj))
    return cfg
Example #5
0
def update_configlet(cfgindex_id, fileobject, cfg_id=0, new_version=None,  user=''):
    cfg = None
    current_version = get_current_config_version(cfgindex_id)
    logger.debug("current version " + str(current_version))
    cfg = Configlet.objects.get(configletindex_id=cfgindex_id, version=current_version)
    if cfg_id:
        logger.debug(str(cfg.id))
        logger.debug(str(cfg_id))
        if cfg_id != cfg.id:
            err = "Requested configlet is not latest version(%s)" % (str(cfg_id))
            logger.error(err)
            raise IgniteException(err)

        cfg = Configlet.objects.get(pk=cfg_id, configletindex_id=cfgindex_id)
    file_obj = fileobject[FILE]
    file_content = file_obj.read()
    if cfg.path and cfg_id:
        logger.debug(str(cfg.path))
        try:
            old = hashlib.md5(open(os.path.join(MEDIA_ROOT, str(cfg.path)), 'rb').read()).hexdigest()
            logger.debug("existed configlet md5= " + old)
            logger.debug(str(old))
            new = hashlib.md5(file_content).hexdigest()
            logger.debug("User given  configlet md5= " + new)
            change = False
            params = None
            logger.debug(str(new))
            if old == new:
                return cfg
            if cfg.type == SCRIPT:
                params = parse_file(file_content, PARAM_EXP_SCRIPT,
                                    PARAM_IDENTIFIER_SCRIPT)
            else:
                params = parse_file(file_content, PARAM_EXP_CONFIGLET,
                                    PARAM_IDENTIFIER_CONFIGLET)
            logger.debug("new parameters " + str(params))
            logger.debug("old parameters " + str(cfg.parameters))
            if params != cfg.parameters:
                change = True
            if change:
                logger.error(ERR_CHANGE_IN_PARAMS)
                raise IgniteException(ERR_CHANGE_IN_PARAMS)
            else:
                logger.debug("new version boolean is " + new_version)
                if str(new_version) in ['true', 'True']:
                    logger.debug("User requested new version of configlet")
                    new_cfg = Configlet()
                    new_cfg.name = cfg.name
                    new_cfg.updated_by = user
                    new_cfg.group = cfg.group
                    new_cfg.type = cfg.type
                    new_cfg.parameters = params
                    new_cfg.configletindex = cfg.configletindex
                    new_cfg.save()
                    new_cfg.version = current_version + 1
                    new_cfg.path.delete(save=False)
                    new_cfg.path = file_obj
                    new_cfg.save()
                    logger.debug("File content: "+str(file_content))
                    logger.debug("File named %s saved in db" % (file_obj))
                    return new_cfg
                elif str(new_version) in ['false', 'False']:
                    cfg.path.delete(save=False)
                    cfg.path = file_obj
                    cfg.updated_by = user
                    cfg.save()
                    logger.debug("File content: "+str(file_content))
                    logger.debug("File named %s saved in db" % (file_obj))
                    return cfg
                else:
                    err = "Unknown version type-" + str(new_version)
                    logger.error(err)
                    raise IgniteException(err)

        except Exception as e:
            logger.error(e)
            raise IgniteException(str(e))
    if cfg.path:
        err = "Update/Newversion is not possible on this request"
        logger.error(err)
        raise IgniteException(err)
    cfg.path.delete(save=False)
    cfg.path = file_obj

    logger.debug("adding a new configlet")
    if cfg.type == SCRIPT:
        params = parse_file(file_content, PARAM_EXP_SCRIPT,
                            PARAM_IDENTIFIER_SCRIPT)
    else:
        params = parse_file(file_content, PARAM_EXP_CONFIGLET,
                            PARAM_IDENTIFIER_CONFIGLET)

    cfg.parameters = params
    cfg.updated_by = user
    cfg.save()
    logger.debug("File content: "+str(file_content))
    logger.debug("File named %s saved in db" % (file_obj))
    return cfg