add options to skip metadata parts

This commit is contained in:
Oliver Kurth 2022-02-04 12:17:37 -08:00
parent 5eb502db77
commit b13ffe932b
5 changed files with 52 additions and 17 deletions

View File

@ -116,6 +116,9 @@ typedef enum
#define TDNF_REPO_KEY_SSL_CA_CERT "sslcacert"
#define TDNF_REPO_KEY_SSL_CLI_CERT "sslclientcert"
#define TDNF_REPO_KEY_SSL_CLI_KEY "sslclientkey"
#define TDNF_REPO_KEY_SKIP_MD_FILELISTS "skip_md_filelists"
#define TDNF_REPO_KEY_SKIP_MD_UPDATEINFO "skip_md_updateinfo"
#define TDNF_REPO_KEY_SKIP_MD_OTHER "skip_md_other"
//setopt keys
#define TDNF_SETOPT_KEY_REPOSDIR "reposdir"
@ -152,6 +155,9 @@ typedef enum
#define TDNF_REPO_DEFAULT_PRIORITY 50
#define TDNF_REPO_DEFAULT_METADATA_EXPIRE 172800 // 48 hours in seconds
#define TDNF_REPO_DEFAULT_METADATA_EXPIRE_STR STRINGIFYX(TDNF_REPO_DEFAULT_METADATA_EXPIRE)
#define TDNF_REPO_DEFAULT_SKIP_MD_FILELISTS 0
#define TDNF_REPO_DEFAULT_SKIP_MD_UPDATEINFO 0
#define TDNF_REPO_DEFAULT_SKIP_MD_OTHER 0
// var names
#define TDNF_VAR_RELEASEVER "$releasever"

View File

@ -709,7 +709,7 @@ TDNFFreeRepoMetadata(
uint32_t
TDNFEnsureRepoMDParts(
PTDNF pTdnf,
const char *pszBaseUrl,
PTDNF_REPO_DATA_INTERNAL pRepo,
PTDNF_REPO_METADATA pRepoMDRel,
PTDNF_REPO_METADATA *ppRepoMD
);

View File

@ -967,7 +967,7 @@ TDNFGetRepoMD(
dwError = TDNFEnsureRepoMDParts(
pTdnf,
pRepoData->pszBaseUrl,
pRepoData,
pRepoMDRel,
&pRepoMD);
BAIL_ON_TDNF_ERROR(dwError);
@ -1065,13 +1065,14 @@ error:
uint32_t
TDNFEnsureRepoMDParts(
PTDNF pTdnf,
const char *pszBaseUrl,
PTDNF_REPO_DATA_INTERNAL pRepo,
PTDNF_REPO_METADATA pRepoMDRel,
PTDNF_REPO_METADATA *ppRepoMD
)
{
uint32_t dwError = 0;
PTDNF_REPO_METADATA pRepoMD = NULL;
const char *pszBaseUrl = NULL;
if(!pTdnf || !pRepoMDRel || !ppRepoMD)
{
@ -1079,6 +1080,8 @@ TDNFEnsureRepoMDParts(
BAIL_ON_TDNF_ERROR(dwError);
}
pszBaseUrl = pRepo->pszBaseUrl;
dwError = TDNFAllocateMemory(
1,
sizeof(TDNF_REPO_METADATA),
@ -1102,7 +1105,7 @@ TDNFEnsureRepoMDParts(
pRepoMD->pszPrimary);
BAIL_ON_TDNF_ERROR(dwError);
if(!IsNullOrEmptyString(pRepoMDRel->pszFileLists))
if(!pRepo->nSkipMDFileLists && !IsNullOrEmptyString(pRepoMDRel->pszFileLists))
{
dwError = TDNFAppendPath(
pRepoMDRel->pszRepoCacheDir,
@ -1119,7 +1122,7 @@ TDNFEnsureRepoMDParts(
BAIL_ON_TDNF_ERROR(dwError);
}
if(!IsNullOrEmptyString(pRepoMDRel->pszUpdateInfo))
if(!pRepo->nSkipMDUpdateInfo && !IsNullOrEmptyString(pRepoMDRel->pszUpdateInfo))
{
dwError = TDNFAppendPath(
pRepoMDRel->pszRepoCacheDir,
@ -1136,7 +1139,7 @@ TDNFEnsureRepoMDParts(
BAIL_ON_TDNF_ERROR(dwError);
}
if(!IsNullOrEmptyString(pRepoMDRel->pszOther))
if(!pRepo->nSkipMDOther && !IsNullOrEmptyString(pRepoMDRel->pszOther))
{
dwError = TDNFAppendPath(
pRepoMDRel->pszRepoCacheDir,

View File

@ -278,6 +278,9 @@ TDNFCreateRepo(
pRepo->nMinrate = TDNF_REPO_DEFAULT_MINRATE;
pRepo->nThrottle = TDNF_REPO_DEFAULT_THROTTLE;
pRepo->nRetries = TDNF_REPO_DEFAULT_RETRIES;
pRepo->nSkipMDFileLists = TDNF_REPO_DEFAULT_SKIP_MD_FILELISTS;
pRepo->nSkipMDUpdateInfo = TDNF_REPO_DEFAULT_SKIP_MD_UPDATEINFO;
pRepo->nSkipMDOther = TDNF_REPO_DEFAULT_SKIP_MD_OTHER;
*ppRepo = pRepo;
cleanup:
@ -540,6 +543,27 @@ TDNFLoadReposFromFile(
TDNF_SAFE_FREE_MEMORY(pszMetadataExpire);
pszMetadataExpire = NULL;
dwError = TDNFReadKeyValueBoolean(
pSections,
TDNF_REPO_KEY_SKIP_MD_FILELISTS,
TDNF_REPO_DEFAULT_SKIP_MD_FILELISTS,
&pRepo->nSkipMDFileLists);
BAIL_ON_TDNF_ERROR(dwError);
dwError = TDNFReadKeyValueBoolean(
pSections,
TDNF_REPO_KEY_SKIP_MD_UPDATEINFO,
TDNF_REPO_DEFAULT_SKIP_MD_UPDATEINFO,
&pRepo->nSkipMDUpdateInfo);
BAIL_ON_TDNF_ERROR(dwError);
dwError = TDNFReadKeyValueBoolean(
pSections,
TDNF_REPO_KEY_SKIP_MD_OTHER,
TDNF_REPO_DEFAULT_SKIP_MD_OTHER,
&pRepo->nSkipMDOther);
BAIL_ON_TDNF_ERROR(dwError);
/* plugin event repo readconfig end */
dwError = TDNFEventRepoReadConfigEnd(pTdnf, pSections);
BAIL_ON_TDNF_ERROR(dwError);

View File

@ -41,7 +41,9 @@ typedef struct _TDNF_REPO_DATA_INTERNAL_
int nMinrate;
int nThrottle;
int nRetries;
int nSkipMDFileLists;
int nSkipMDUpdateInfo;
int nSkipMDOther;
struct _TDNF_REPO_DATA_INTERNAL_* pNext;
} TDNF_REPO_DATA_INTERNAL, *PTDNF_REPO_DATA_INTERNAL;