Browse code

tdnf: --sec-severity option updates

Changes include:
1. tdnf --sec-severity [value] updateinfo and
tdnf --sec-severity [value] updateinfo summary commands to filter
the results based on the condition.
2. "tdnf --sec-severity [value] update" prints "0 updates available"
when there are no updates.
Change-Id: I8944fa78a8fe1032edf853cf06c1060e09dd6a8a
Reviewed-on: http://photon-jenkins.eng.vmware.com:8082/6010
Tested-by: gerrit-photon <photon-checkins@vmware.com>
Reviewed-by: Keerthana K <keerthanak@vmware.com>

Keerthana K authored on 2018/10/27 20:49:05
Showing 2 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,170 @@
0
+From 86689f5eb557e4a542661f306fecc621459af400 Mon Sep 17 00:00:00 2001
1
+From: Keerthana K <keerthanak@vmware.com>
2
+Date: Tue, 23 Oct 2018 06:02:22 +0000
3
+Subject: [PATCH] Bug 2219020: --sec-severity option updates
4
+
5
+Changes include:
6
+    1. tdnf --sec-severity [value] updateinfo and
7
+       tdnf --sec-severity [value] updateinfo summary commands to filter
8
+       the results based on the condition.
9
+    2. tdnf --sec-severity [value] update prints "No data available"
10
+       instead of Error message when there is no results.
11
+
12
+Change-Id: I34fb08be74a825236fc84bbe7f98b1715fec1f02
13
+---
14
+
15
+From bfb6c724e5ee74b3c5a2e762aaa740b072fcea66 Mon Sep 17 00:00:00 2001
16
+From: Keerthana K <keerthanak@vmware.com>
17
+Date: Tue, 13 Nov 2018 10:27:38 +0000
18
+Subject: [PATCH] Bug 2219020: --sec-severity option updates
19
+
20
+"tdnf updateinfo" and "tdnf update" commands return "0 updates available"
21
+instead of ERROR_TDNF_NO_DATA when there are no updates.
22
+
23
+Change-Id: I4144b4d59973d55625804354cddb5abca3945118
24
+---
25
+
26
+diff --git a/client/api.c b/client/api.c
27
+index 6b7e8ac..7b84cc2 100644
28
+--- a/client/api.c
29
+@@ -1166,6 +1166,8 @@ TDNFUpdateInfo(
30
+ 
31
+     if(!pUpdateInfos)
32
+     {
33
++        printf(
34
++            "\n%d updates. \n", nCount);
35
+         dwError = ERROR_TDNF_NO_DATA;
36
+         BAIL_ON_TDNF_ERROR(dwError);
37
+     }
38
+@@ -1173,6 +1175,7 @@ TDNFUpdateInfo(
39
+     *ppUpdateInfo = pUpdateInfos;
40
+ 
41
+ cleanup:
42
++    TDNF_SAFE_FREE_MEMORY(pszSeverity);
43
+     if(hAdvList)
44
+     {
45
+         hy_advisorylist_free(hAdvList);
46
+diff --git a/client/updateinfo.c b/client/updateinfo.c
47
+index 2ec7ff6..f776870 100644
48
+--- a/client/updateinfo.c
49
+@@ -41,6 +41,9 @@ TDNFUpdateInfoSummary(
50
+     HyAdvisory hAdv = NULL;
51
+     HyAdvisoryType nType = HY_ADVISORY_UNKNOWN;
52
+     int nTypeCount = HY_ADVISORY_ENHANCEMENT;
53
++    char*  pszSeverity = NULL;
54
++    uint32_t dwSecurity = 0;
55
++    const char* pszTemp = NULL;
56
+ 
57
+     if(!pTdnf || !ppszPackageNameSpecs || !ppSummary)
58
+     {
59
+@@ -69,6 +72,12 @@ TDNFUpdateInfoSummary(
60
+     pSummary[HY_ADVISORY_BUGFIX].nType = UPDATE_BUGFIX;
61
+     pSummary[HY_ADVISORY_ENHANCEMENT].nType = UPDATE_ENHANCEMENT;
62
+ 
63
++    dwError = TDNFGetSecuritySeverityOption(
64
++                  pTdnf,
65
++                  &dwSecurity,
66
++                  &pszSeverity);
67
++    BAIL_ON_TDNF_ERROR(dwError);
68
++
69
+     FOR_PACKAGELIST(hPkg, hPkgList, iPkg)
70
+     {
71
+         hAdvList = hy_package_get_advisories(hPkg, HY_GT);
72
+@@ -87,6 +96,21 @@ TDNFUpdateInfoSummary(
73
+                 BAIL_ON_TDNF_ERROR(dwError);
74
+             }
75
+             nType = hy_advisory_get_type(hAdv);
76
++            if (dwSecurity)
77
++            {
78
++                if (nType != HY_ADVISORY_SECURITY)
79
++                {
80
++                    continue;
81
++                }
82
++            }
83
++            else if (pszSeverity)
84
++            {
85
++                pszTemp = hy_advisory_get_severity(hAdv);
86
++                if (!pszTemp || atof(pszSeverity) > atof(pszTemp))
87
++                {
88
++                   continue;
89
++                }
90
++            }
91
+             if(nType < HY_ADVISORY_UNKNOWN || nType > HY_ADVISORY_ENHANCEMENT)
92
+             {
93
+                 dwError = ERROR_TDNF_INVALID_PARAMETER;
94
+@@ -102,6 +126,7 @@ TDNFUpdateInfoSummary(
95
+     *ppSummary = pSummary;
96
+ 
97
+ cleanup:
98
++    TDNF_SAFE_FREE_MEMORY(pszSeverity);
99
+     if(hAdv)
100
+     {
101
+         hy_advisory_free(hAdv);
102
+diff --git a/tools/cli/lib/updateinfocmd.c b/tools/cli/lib/updateinfocmd.c
103
+index 2d9c171..fc6a0f4 100644
104
+--- a/tools/cli/lib/updateinfocmd.c
105
+@@ -91,10 +91,6 @@ cleanup:
106
+     return dwError;
107
+ 
108
+ error:
109
+-    if(dwError == ERROR_TDNF_NO_DATA)
110
+-    {
111
+-        dwError = 0;
112
+-    }
113
+     goto cleanup;
114
+ }
115
+ 
116
+@@ -108,6 +104,7 @@ TDNFCliUpdateInfoSummary(
117
+ {
118
+     uint32_t dwError = 0;
119
+     int i = 0;
120
++    int nCount = 0;
121
+     PTDNF_UPDATEINFO_SUMMARY pSummary = NULL;
122
+ 
123
+     if(!pContext || !pCmdArgs)
124
+@@ -127,12 +124,20 @@ TDNFCliUpdateInfoSummary(
125
+     {
126
+         if(pSummary[i].nCount > 0)
127
+         {
128
++            nCount++;
129
+             printf(
130
+                 "%d %s notice(s)\n",
131
+                 pSummary[i].nCount,
132
+                 TDNFGetUpdateInfoType(pSummary[i].nType));
133
+         }
134
+     }
135
++    if (nCount == 0)
136
++    {
137
++        printf(
138
++            "\n%d updates. \n", nCount);
139
++        dwError = ERROR_TDNF_NO_DATA;
140
++        BAIL_ON_CLI_ERROR(dwError);
141
++    }
142
+ 
143
+ cleanup:
144
+     if(pSummary)
145
+diff --git a/tools/cli/main.c b/tools/cli/main.c
146
+index c0a2b5f..759dde0 100644
147
+--- a/tools/cli/main.c
148
+@@ -152,7 +152,7 @@ cleanup:
149
+ 
150
+ error:
151
+     TDNFCliPrintError(dwError);
152
+-    if (dwError == ERROR_TDNF_CLI_NOTHING_TO_DO)
153
++    if (dwError == ERROR_TDNF_CLI_NOTHING_TO_DO || dwError == ERROR_TDNF_NO_DATA)
154
+     {
155
+         // Nothing to do should not return an error code
156
+         dwError = 0;
157
+@@ -178,7 +178,7 @@ TDNFCliPrintError(
158
+         dwError = TDNFGetErrorString(dwErrorCode, &pszError);
159
+         BAIL_ON_CLI_ERROR(dwError);
160
+     }
161
+-    if(dwErrorCode == ERROR_TDNF_CLI_NOTHING_TO_DO)
162
++    if(dwErrorCode == ERROR_TDNF_CLI_NOTHING_TO_DO || dwErrorCode == ERROR_TDNF_NO_DATA)
163
+     {
164
+         dwErrorCode = 0;
165
+     }
... ...
@@ -4,7 +4,7 @@
4 4
 Summary:        dnf/yum equivalent using C libs
5 5
 Name:           tdnf
6 6
 Version:        1.2.3
7
-Release:        4%{?dist}
7
+Release:        5%{?dist}
8 8
 Vendor:         VMware, Inc.
9 9
 Distribution:   Photon
10 10
 License:        LGPLv2.1,GPLv2
... ...
@@ -29,6 +29,7 @@ Source3:        cache-updateinfo.timer
29 29
 Source4:        updateinfo.sh
30 30
 Patch0:         tdnf_add_retry_to_downloads.patch
31 31
 Patch1:         tdnf_fix_curl_getinfo_type.patch
32
+Patch2:         tdnf-updateinfo.patch
32 33
 
33 34
 %description
34 35
 tdnf is a yum/dnf equivalent
... ...
@@ -54,6 +55,7 @@ Library providing cli libs for tdnf like clients.
54 54
 %setup -q
55 55
 %patch0 -p1
56 56
 %patch1 -p1
57
+%patch2 -p1
57 58
 
58 59
 %build
59 60
 sed -i 's/tdnf, 1.2.0/tdnf, 1.2.3/' configure.ac
... ...
@@ -155,6 +157,8 @@ systemctl try-restart tdnf-cache-updateinfo.timer >/dev/null 2>&1 || :
155 155
     %{_libdir}/libtdnfcli.so.*
156 156
 
157 157
 %changelog
158
+*   Sat Oct 27 2018 Keerthana K <keerthanak@vmware.com> 1.2.3-5
159
+-   Fix bug in update and updateinfo.
158 160
 *   Fri Sep 14 2018 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 1.2.3-4
159 161
 -   fix bug in download status type
160 162
 *   Wed Sep 12 2018 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 1.2.3-3