From 379a7789dede0083bf41077f0929d916ca05ac5e Mon Sep 17 00:00:00 2001 From: Ian Maddaus Date: Mon, 13 Nov 2023 16:51:00 -0500 Subject: [PATCH] Set age for cached remote resources (#4202) * Set age for cached remote resources Signed-off-by: Ian Maddaus * DRY Signed-off-by: Ian Maddaus * Update how key is generated Signed-off-by: Ian Maddaus --------- Signed-off-by: Ian Maddaus --- config.toml | 21 ++++++ .../layouts/_default/release_notes.html | 53 +++------------ .../layouts/partials/release_notes_toc.html | 42 +----------- .../layouts/partials/version_numbers.html | 64 +++++++++++++++++++ 4 files changed, 96 insertions(+), 84 deletions(-) create mode 100644 themes/docs-new/layouts/partials/version_numbers.html diff --git a/config.toml b/config.toml index be272578ba..01cbdd0ad9 100644 --- a/config.toml +++ b/config.toml @@ -60,3 +60,24 @@ notAlternative = true endLevel = 4 ordered = false startLevel = 2 + +[caches] + [caches.assets] + dir = ':resourceDir/_gen' + maxAge = -1 + [caches.getcsv] + dir = ':cacheDir/:project' + maxAge = -1 + [caches.getjson] + dir = ':cacheDir/:project' + maxAge = "1h" + [caches.getresource] + dir = ':cacheDir/:project' + maxAge = "1h" + [caches.images] + dir = ':resourceDir/_gen' + maxAge = -1 + [caches.modules] + dir = ':cacheDir/modules' + maxAge = -1 + diff --git a/themes/docs-new/layouts/_default/release_notes.html b/themes/docs-new/layouts/_default/release_notes.html index 7191c77d4b..b6e663e674 100644 --- a/themes/docs-new/layouts/_default/release_notes.html +++ b/themes/docs-new/layouts/_default/release_notes.html @@ -11,50 +11,10 @@ {{ if or (hugo.IsProduction) ( eq hugo.Environment "staging") ( eq hugo.Environment "branch-deploy")}} {{ with $product := $.Param "release_notes" }} + {{ $partialData := dict "product" $product "chefVersions" $.Site.Data.releases.chef.current }} + {{ $versionsCorrectOrder := partial "version_numbers.html" $partialData }} - {{- $versionsUrl := "" -}} - {{- if eq $product "automate" -}} - {{- $versionsUrl = "https://packages.chef.io/releases/current/automate.json"}} - {{- else if (eq $product "habitat") -}} - {{- $versionsUrl = "assets/release-notes/habitat/release-versions.json" -}} - {{- else if (hasPrefix $product "inspec-") -}} - {{- $versionsUrl = print "_vendor/github.com/inspec/" $product "/docs-chef-io/assets/release-notes/" $product "/release-dates.json" -}} - {{- else -}} - {{- $versionsUrl = (print "https://omnitruck.chef.io/stable/" $product "/versions/all") -}} - {{- end -}} - - {{- $versions := getJSON $versionsUrl -}} - - {{/* We have a "current" version of Infra Client that they want release notes for on the Client release notes page. */}} - {{/* This allows us to add current release version numbers of Client to the list of version numbers */}} - {{/* that we want to include in the Client release notes. */}} - {{- if eq $product "chef" -}} - {{- $current_versions := $.Site.Data.releases.chef.current -}} - {{- $versions = append $current_versions $versions -}} - {{- $paddedVersions := apply $versions "partial" "zero_prefix_pad" "." }} - {{- $sortedVersions := (sort $paddedVersions "value" "desc") }} - {{- $versions = apply $sortedVersions "partial" "zero_prefix_trim" "." }} - {{- end -}} - - {{- $versionsCorrectOrder := slice -}} - - {{- if eq $product "automate" -}} - {{- $len := len $versions -}} - {{- range seq $len -}} - {{- $versionsCorrectOrder = $versionsCorrectOrder | append (index $versions (sub $len .)) -}} - {{- end -}} - {{- else if eq $product "chef" -}} - {{- $versionsCorrectOrder = $versions -}} - {{ else }} - {{ $len := len $versions }} - {{- range seq $len -}} - {{- $versionsCorrectOrder = $versionsCorrectOrder | append (index $versions (sub $len .)) }} - {{ end }} - {{- end -}} - - - - {{- range $versionsCorrectOrder}} + {{- range $versionsCorrectOrder }} {{- $version := "" -}} @@ -102,7 +62,12 @@

{{ $fullName }} {{ $version }}

Released on {{ time.Format "January 2, 2006" .release_date }}

{{- end -}} - {{- $remoteResponse := resources.GetRemote $mdUrl (dict "headers" (dict "Cache-Control" "no-cache" "Connection" "keep-alive")) -}} + {{/* Define GetRemote options */}} + {{ $headers := dict "Cache-Control" "no-cache" "Connection" "keep-alive" }} + {{ $cacheKey := print $mdUrl (now.Format "20060102") (div now.Hour 6) | md5 }} + {{ $opts := dict "headers" $headers "key" $cacheKey }} + + {{- $remoteResponse := resources.GetRemote $mdUrl $opts -}} {{- if eq $remoteResponse nil -}}

This release does not have any release notes.

diff --git a/themes/docs-new/layouts/partials/release_notes_toc.html b/themes/docs-new/layouts/partials/release_notes_toc.html index a9d6be2dc6..f5358764a6 100644 --- a/themes/docs-new/layouts/partials/release_notes_toc.html +++ b/themes/docs-new/layouts/partials/release_notes_toc.html @@ -10,46 +10,8 @@ {{ with $product := $.Param "release_notes" }} - {{ $versionsUrl := ""}} - {{ if eq $product "automate" }} - {{ $versionsUrl = "https://packages.chef.io/releases/current/automate.json"}} - {{ else if (eq $product "habitat") }} - {{ $versionsUrl = "assets/release-notes/habitat/release-versions.json" }} - {{ else if (hasPrefix $product "inspec-") }} - {{ $versionsUrl = print "_vendor/github.com/inspec/" $product "/docs-chef-io/assets/release-notes/" $product "/release-dates.json" }} - {{ else }} - {{ $versionsUrl = (print "https://omnitruck.chef.io/stable/" $product "/versions/all") }} - {{ end }} - - {{ $versions := getJSON $versionsUrl }} - - {{/* We have a current version of Infra Client that they want release notes for on the Client release notes page. */}} - {{/* This allows us to add current release version numbers of Client to the list of version numbers */}} - {{/* that we want to include in the Client release notes. */}} - {{- $current_versions := slice -}} - {{- if eq $product "chef" -}} - {{- $current_versions := $.Site.Data.releases.chef.current -}} - {{- $versions = append $current_versions $versions -}} - {{- $paddedVersions := apply $versions "partial" "zero_prefix_pad" "." }} - {{- $sortedVersions := (sort $paddedVersions "value" "desc") }} - {{- $versions = apply $sortedVersions "partial" "zero_prefix_trim" "." }} - {{- end -}} - - {{- $versionsCorrectOrder := slice -}} - - {{- if eq $product "automate" -}} - {{- $len := len $versions -}} - {{- range seq $len -}} - {{- $versionsCorrectOrder = $versionsCorrectOrder | append (index $versions (sub $len .)) -}} - {{- end -}} - {{- else if eq $product "chef" -}} - {{- $versionsCorrectOrder = $versions -}} - {{ else }} - {{ $len := len $versions }} - {{- range seq $len -}} - {{- $versionsCorrectOrder = $versionsCorrectOrder | append (index $versions (sub $len .)) }} - {{ end }} - {{- end -}} + {{ $partialData := dict "product" $product "chefVersions" $.Site.Data.releases.chef.current }} + {{ $versionsCorrectOrder := partial "version_numbers.html" $partialData }} {{ $lastDate := ""}} {{ if eq $product "automate" }} diff --git a/themes/docs-new/layouts/partials/version_numbers.html b/themes/docs-new/layouts/partials/version_numbers.html new file mode 100644 index 0000000000..a60ea07f85 --- /dev/null +++ b/themes/docs-new/layouts/partials/version_numbers.html @@ -0,0 +1,64 @@ +{{ $product := .product }} +{{ $chefVersions := .chefVersions }} + +{{ $versionsUrl := ""}} +{{ if eq $product "automate" }} + {{ $versionsUrl = "https://packages.chef.io/releases/current/automate.json"}} +{{ else if (eq $product "habitat") }} + {{ $versionsUrl = "assets/release-notes/habitat/release-versions.json" }} +{{ else if (hasPrefix $product "inspec-") }} + {{ $versionsUrl = print "_vendor/github.com/inspec/" $product "/docs-chef-io/assets/release-notes/" $product "/release-dates.json" }} +{{ else }} + {{ $versionsUrl = (print "https://omnitruck.chef.io/stable/" $product "/versions/all") }} +{{ end }} + +{{ $versions := "" }} + +{{ $headers := dict "Cache-Control" "no-cache" "Connection" "keep-alive" }} +{{ $cacheKey := print $versionsUrl (now.Format "20060102") (now.Hour) | md5 }} +{{ $opts := dict "headers" $headers "key" $cacheKey }} + +{{- if hasPrefix $versionsUrl "https://" -}} + {{- with resources.GetRemote $versionsUrl $opts -}} + {{ with .Err }} + {{ errorf "%s" . }} + {{ else }} + {{ $unmarshalOpts := dict "delimiter" "," }} + {{ $versions = . | transform.Unmarshal $unmarshalOpts }} + {{ end }} + {{ else }} + {{ errorf "Unable to get remote resource %q" $versionsUrl }} + {{ end }} +{{ else }} + {{ $versions = getJSON $versionsUrl }} +{{ end }} + + +{{/* We have a current version of Infra Client that they want release notes for on the Client release notes page. */}} +{{/* This allows us to add current release version numbers of Client to the list of version numbers */}} +{{/* that we want to include in the Client release notes. */}} +{{- $current_versions := slice -}} +{{- if eq $product "chef" -}} + {{- $versions = append $chefVersions $versions -}} + {{- $paddedVersions := apply $versions "partial" "zero_prefix_pad" "." }} + {{- $sortedVersions := (sort $paddedVersions "value" "desc") }} + {{- $versions = apply $sortedVersions "partial" "zero_prefix_trim" "." }} +{{- end -}} + +{{- $versionsCorrectOrder := slice -}} + +{{- if eq $product "automate" -}} + {{- $len := len $versions -}} + {{- range seq $len -}} + {{- $versionsCorrectOrder = $versionsCorrectOrder | append (index $versions (sub $len .)) -}} + {{- end -}} +{{- else if eq $product "chef" -}} + {{- $versionsCorrectOrder = $versions -}} +{{ else }} + {{ $len := len $versions }} + {{- range seq $len -}} + {{- $versionsCorrectOrder = $versionsCorrectOrder | append (index $versions (sub $len .)) }} + {{ end }} +{{- end -}} + +{{ return $versionsCorrectOrder }}