From 48df949c3020f2f12a6b6d89261536620d61617d Mon Sep 17 00:00:00 2001
From: Daniel Pacak <pacak.daniel@gmail.com>
Date: Thu, 26 Mar 2020 12:22:28 +0100
Subject: [PATCH] feat(trivy): Return Trivy DB update timestamp in
 /api/v1/metadata response (#11285)

Resolves: #11284

Signed-off-by: Daniel Pacak <pacak.daniel@gmail.com>
---
 Makefile                                       |  4 ++--
 .../compile-guide.md                           |  1 +
 .../scanner-metadata.component.ts              | 18 +++++++++++++++---
 src/portal/src/lib/utils/utils.ts              |  1 +
 4 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/Makefile b/Makefile
index 6c59f00a5..875754a6b 100644
--- a/Makefile
+++ b/Makefile
@@ -103,8 +103,8 @@ NOTARYVERSION=v0.6.1
 CLAIRVERSION=v2.1.1
 NOTARYMIGRATEVERSION=v3.5.4
 CLAIRADAPTERVERSION=v1.0.1
-TRIVYVERSION=v0.5.2
-TRIVYADAPTERVERSION=v0.5.0
+TRIVYVERSION=v0.5.3
+TRIVYADAPTERVERSION=v0.7.0
 
 # version of chartmuseum
 CHARTMUSEUMVERSION=v0.9.0
diff --git a/docs/1.10/build-customize-contribute/compile-guide.md b/docs/1.10/build-customize-contribute/compile-guide.md
index 2a0dc22ac..bcb4fdab0 100644
--- a/docs/1.10/build-customize-contribute/compile-guide.md
+++ b/docs/1.10/build-customize-contribute/compile-guide.md
@@ -114,6 +114,7 @@ The `Makefile` contains these configurable parameters:
 | COMPILETAG          | Compile model flag, default: compile_normal (local golang build) |
 | NOTARYFLAG          | Notary mode flag, default: false                                 |
 | CLAIRFLAG           | Clair mode flag, default: false                                  |
+| TRIVYFLAG           | Trivy mode flag, default: false                                  |
 | HTTPPROXY           | NPM http proxy for Clarity UI builder                            |
 | REGISTRYSERVER      | Remote registry server IP address                                |
 | REGISTRYUSER        | Remote registry server user name                                 |
diff --git a/src/portal/src/app/config/scanner/scanner-metadata/scanner-metadata.component.ts b/src/portal/src/app/config/scanner/scanner-metadata/scanner-metadata.component.ts
index 3c16feb46..362361a60 100644
--- a/src/portal/src/app/config/scanner/scanner-metadata/scanner-metadata.component.ts
+++ b/src/portal/src/app/config/scanner/scanner-metadata/scanner-metadata.component.ts
@@ -8,7 +8,7 @@ import { ScannerMetadata } from "../scanner-metadata";
 import { DatePipe } from "@angular/common";
 import { TranslateService } from "@ngx-translate/core";
 import { ErrorHandler } from "../../../../lib/utils/error-handler";
-import { DATABASE_UPDATED_PROPERTY } from "../../../../lib/utils/utils";
+import {DATABASE_NEXT_UPDATE_PROPERTY, DATABASE_UPDATED_PROPERTY} from "../../../../lib/utils/utils";
 
 @Component({
     selector: 'scanner-metadata',
@@ -34,14 +34,26 @@ export class ScannerMetadataComponent implements  OnInit {
             });
     }
     parseDate(item: any): string {
-        if (item && item.value && item.key === DATABASE_UPDATED_PROPERTY) {
+        if (this.hasValue(item) && this.hasDateValue(item)) {
             return new DatePipe(this.translate.currentLang).transform(item.value, 'short');
         }
-        if (item && item.value) {
+        if (this.hasValue(item)) {
             return item.value;
         }
         return '';
     }
+    hasValue(item: any): boolean {
+        return item && item.value;
+    }
+    hasDateValue(item: any): boolean {
+        switch (item.key) {
+            case DATABASE_UPDATED_PROPERTY:
+            case DATABASE_NEXT_UPDATE_PROPERTY:
+                return true;
+            default:
+                return false;
+        }
+    }
     toString(arr: string[]) {
         if (arr && arr.length > 0) {
             return "[" + arr.join(" , ") + "]";
diff --git a/src/portal/src/lib/utils/utils.ts b/src/portal/src/lib/utils/utils.ts
index ef829a521..eac62db43 100644
--- a/src/portal/src/lib/utils/utils.ts
+++ b/src/portal/src/lib/utils/utils.ts
@@ -245,6 +245,7 @@ export const DEFAULT_SUPPORTED_MIME_TYPE = "application/vnd.scanner.adapter.vuln
  *  the property name of vulnerability database updated time
  */
 export const DATABASE_UPDATED_PROPERTY = "harbor.scanner-adapter/vulnerability-database-updated-at";
+export const DATABASE_NEXT_UPDATE_PROPERTY = "harbor.scanner-adapter/vulnerability-database-next-update-at";
 
 /**
  * The state of vulnerability scanning