go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers/os/resources/mondoo_eol.go (about) 1 // Copyright (c) Mondoo, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 package resources 5 6 import ( 7 "context" 8 "errors" 9 "time" 10 11 "go.mondoo.com/cnquery/llx" 12 "go.mondoo.com/cnquery/providers-sdk/v1/resources" 13 "go.mondoo.com/cnquery/providers-sdk/v1/upstream/mvd" 14 ) 15 16 func (s *mqlMondooEol) id() (string, error) { 17 return "product:" + s.Product.Data + ":" + s.Version.Data, nil 18 } 19 20 func (s *mqlMondooEol) date() (*time.Time, error) { 21 name := s.Product.Data 22 version := s.Version.Data 23 24 upstream := s.MqlRuntime.Upstream 25 if upstream == nil || upstream.ApiEndpoint == "" { 26 return nil, resources.MissingUpstreamError{} 27 } 28 29 // get new advisory report 30 // start scanner client 31 scannerClient, err := newAdvisoryScannerHttpClient(upstream.ApiEndpoint, upstream.Plugins, upstream.HttpClient) 32 if err != nil { 33 return nil, err 34 } 35 36 platformEolInfo, err := scannerClient.IsEol(context.Background(), &mvd.Platform{ 37 Name: name, 38 Release: version, 39 }) 40 if err != nil { 41 return nil, err 42 } 43 44 if platformEolInfo == nil { 45 return nil, errors.New("no platform eol information available") 46 } 47 48 var eolDate *time.Time 49 50 if platformEolInfo.EolDate != "" { 51 parsedEolDate, err := time.Parse(time.RFC3339, platformEolInfo.EolDate) 52 if err != nil { 53 return nil, errors.New("could not parse eol date: " + platformEolInfo.EolDate) 54 } 55 eolDate = &parsedEolDate 56 } else { 57 eolDate = &llx.NeverFutureTime 58 } 59 60 return eolDate, nil 61 }