mirror of
https://github.com/rancher/rke.git
synced 2025-09-05 00:40:10 +00:00
Fixes for generating data.json
- remove rke2/k3s keys so data only has required info for rke1 - decide kdm url based on the tag version
This commit is contained in:
1
.github/workflows/workflow.yaml
vendored
1
.github/workflows/workflow.yaml
vendored
@@ -43,6 +43,7 @@ jobs:
|
|||||||
ls -lR build/bin
|
ls -lR build/bin
|
||||||
env:
|
env:
|
||||||
CROSS: 1
|
CROSS: 1
|
||||||
|
TAG: ${{ startsWith(github.ref, 'refs/tags/') && github.ref_name || '' }}
|
||||||
- name: Generate sha256 file for release
|
- name: Generate sha256 file for release
|
||||||
if: github.event_name == 'push' && github.ref_type == 'tag'
|
if: github.event_name == 'push' && github.ref_type == 'tag'
|
||||||
run: |
|
run: |
|
||||||
|
@@ -1,25 +1,27 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/coreos/go-semver/semver"
|
||||||
"github.com/rancher/rke/metadata"
|
"github.com/rancher/rke/metadata"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
defaultURL = "https://releases.rancher.com/kontainer-driver-metadata/dev-v2.9/data.json"
|
defaultDevURL = "https://releases.rancher.com/kontainer-driver-metadata/dev-v2.9/data.json"
|
||||||
dataFile = "data/data.json"
|
defaultReleaseURL = "https://releases.rancher.com/kontainer-driver-metadata/release-v2.9/data.json"
|
||||||
|
dataFile = "data/data.json"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Codegen fetch data.json from https://releases.rancher.com/kontainer-driver-metadata/release-v2.7/data.json and generates bindata
|
// Codegen fetch data.json from defaultURL or defaultReleaseURL and generates bindata
|
||||||
func main() {
|
func main() {
|
||||||
u := os.Getenv(metadata.RancherMetadataURLEnv)
|
u := getURL()
|
||||||
if u == "" {
|
fmt.Printf("Reading data from %s \n", u)
|
||||||
u = defaultURL
|
|
||||||
}
|
|
||||||
data, err := http.Get(u)
|
data, err := http.Get(u)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(fmt.Errorf("failed to fetch data.json from kontainer-driver-metadata repository"))
|
panic(fmt.Errorf("failed to fetch data.json from kontainer-driver-metadata repository"))
|
||||||
@@ -31,8 +33,39 @@ func main() {
|
|||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var jsonData map[string]interface{}
|
||||||
|
err = json.Unmarshal(b, &jsonData)
|
||||||
|
if err != nil {
|
||||||
|
panic(fmt.Errorf("failed to parse JSON: %v", err))
|
||||||
|
}
|
||||||
|
// rke doesn't need info about rke2 and k3s versions
|
||||||
|
delete(jsonData, "rke2")
|
||||||
|
delete(jsonData, "k3s")
|
||||||
|
|
||||||
|
b, err = json.Marshal(jsonData)
|
||||||
|
if err != nil {
|
||||||
|
panic(fmt.Errorf("failed to marshal json data: %v", err))
|
||||||
|
}
|
||||||
|
|
||||||
fmt.Println("Writing data")
|
fmt.Println("Writing data")
|
||||||
if err := os.WriteFile(dataFile, b, 0755); err != nil {
|
if err := os.WriteFile(dataFile, b, 0755); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getURL() string {
|
||||||
|
u := os.Getenv(metadata.RancherMetadataURLEnv)
|
||||||
|
if u == "" {
|
||||||
|
u = defaultDevURL
|
||||||
|
tag := os.Getenv("TAG")
|
||||||
|
if strings.HasPrefix(tag, "v") {
|
||||||
|
tag = tag[1:]
|
||||||
|
}
|
||||||
|
if v, err := semver.NewVersion(tag); err == nil {
|
||||||
|
if v.PreRelease == "" && v.String() != "" {
|
||||||
|
u = defaultReleaseURL
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return u
|
||||||
|
}
|
||||||
|
66
codegen/codegen_test.go
Normal file
66
codegen/codegen_test.go
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/rancher/rke/metadata"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestGetURL(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
envVar string
|
||||||
|
tag string
|
||||||
|
expectedURL string
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "No Metadata URL and TAG is release version",
|
||||||
|
envVar: "",
|
||||||
|
tag: "v1.0.0",
|
||||||
|
expectedURL: defaultReleaseURL,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "No Metadata URL and TAG is pre-release version",
|
||||||
|
envVar: "",
|
||||||
|
tag: "v1.0.0-alpha",
|
||||||
|
expectedURL: defaultDevURL,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Metadata URL set",
|
||||||
|
envVar: "https://example.com",
|
||||||
|
tag: "v1.0.0",
|
||||||
|
expectedURL: "https://example.com",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Invalid TAG",
|
||||||
|
envVar: "",
|
||||||
|
tag: "invalid-tag",
|
||||||
|
expectedURL: defaultDevURL,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "No TAG",
|
||||||
|
envVar: "",
|
||||||
|
tag: "",
|
||||||
|
expectedURL: defaultDevURL,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
// Set the environment variables
|
||||||
|
os.Setenv(metadata.RancherMetadataURLEnv, tt.envVar)
|
||||||
|
os.Setenv("TAG", tt.tag)
|
||||||
|
defer func() {
|
||||||
|
os.Unsetenv(metadata.RancherMetadataURLEnv)
|
||||||
|
os.Unsetenv("TAG")
|
||||||
|
}()
|
||||||
|
|
||||||
|
result := getURL()
|
||||||
|
|
||||||
|
if result != tt.expectedURL {
|
||||||
|
t.Errorf("expected %s, got %s", tt.expectedURL, result)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user