From 2959db73574665382a3b86b0bbb0630decaeed2a Mon Sep 17 00:00:00 2001 From: Simon Murray Date: Tue, 3 Dec 2024 09:28:37 +0000 Subject: [PATCH] Add More Image Metadata From experimentation it's abundantly clear that for UX the OS needs to be more prescriptive and accurate in its filed naming. --- pkg/handler/handler.go | 8 +- pkg/openapi/schema.go | 272 ++++++++++++++++++----------------- pkg/openapi/server.spec.yaml | 36 ++++- pkg/openapi/types.go | 34 ++++- 4 files changed, 201 insertions(+), 149 deletions(-) diff --git a/pkg/handler/handler.go b/pkg/handler/handler.go index 5d38a46..f8f847a 100644 --- a/pkg/handler/handler.go +++ b/pkg/handler/handler.go @@ -245,9 +245,11 @@ func convertImage(in providers.Image) openapi.Image { Spec: openapi.ImageSpec{ Virtualization: convertImageVirtualization(in.Virtualization), Os: openapi.ImageOS{ - Family: "Debian", - Name: "Ubuntu Server", - Version: "24.04", + Kernel: openapi.Linux, + Family: openapi.Debian, + Distro: openapi.Ubuntu, + Codename: ptr.To("noble"), + Version: "24.04", }, SoftwareVersions: &openapi.SoftwareVersions{}, }, diff --git a/pkg/openapi/schema.go b/pkg/openapi/schema.go index 0d1f5e5..b6be8bd 100644 --- a/pkg/openapi/schema.go +++ b/pkg/openapi/schema.go @@ -19,141 +19,143 @@ import ( // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "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", + "edggDw8P/xcAAP//6LGKsdD5AAA=", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/pkg/openapi/server.spec.yaml b/pkg/openapi/server.spec.yaml index 909d900..24531b4 100644 --- a/pkg/openapi/server.spec.yaml +++ b/pkg/openapi/server.spec.yaml @@ -731,24 +731,43 @@ components: type: string models: $ref: '#/components/schemas/gpuModelList' + osKernel: + description: A kernel type. + type: string + enum: + - linux osFamily: description: A family of operating systems. This typically defines the package format. type: string enum: - - Redhat - - Debian + - redhat + - debian + osDistro: + description: A distribution name. + type: string + enum: + - rocky + - ubuntu imageOS: description: An operating system description. type: object required: + - kernel - family - - name + - distro - version properties: + kernel: + $ref: '#/components/schemas/osKernel' family: $ref: '#/components/schemas/osFamily' - name: - description: Full name of the operating system e.g. "Redhat Enterprise Linux". + distro: + $ref: '#/components/schemas/osDistro' + variant: + description: A free form variant e.g. desktop/server. + type: string + codename: + description: A free form code name e.g. warty/bionic. type: string version: description: Version of the operating system e.g. "24.04". @@ -1455,8 +1474,11 @@ components: spec: virtualization: virtualized os: - family: Debian - name: Ubuntu Server + kernel: linux + family: debian + distro: ubuntu + variant: server + codename: noble version: '24.04' softwareVersions: kubernetes: v1.25.6 diff --git a/pkg/openapi/types.go b/pkg/openapi/types.go index 63b2e90..0d5f6ad 100644 --- a/pkg/openapi/types.go +++ b/pkg/openapi/types.go @@ -24,10 +24,21 @@ const ( Virtualized ImageVirtualization = "virtualized" ) +// Defines values for OsDistro. +const ( + Rocky OsDistro = "rocky" + Ubuntu OsDistro = "ubuntu" +) + // Defines values for OsFamily. const ( - Debian OsFamily = "Debian" - Redhat OsFamily = "Redhat" + Debian OsFamily = "debian" + Redhat OsFamily = "redhat" +) + +// Defines values for OsKernel. +const ( + Linux OsKernel = "linux" ) // Defines values for RegionType. @@ -233,11 +244,20 @@ type ImageGpu struct { // ImageOS An operating system description. type ImageOS struct { + // Codename A free form code name e.g. warty/bionic. + Codename *string `json:"codename,omitempty"` + + // Distro A distribution name. + Distro OsDistro `json:"distro"` + // Family A family of operating systems. This typically defines the package format. Family OsFamily `json:"family"` - // Name Full name of the operating system e.g. "Redhat Enterprise Linux". - Name string `json:"name"` + // Kernel A kernel type. + Kernel OsKernel `json:"kernel"` + + // Variant A free form variant e.g. desktop/server. + Variant *string `json:"variant,omitempty"` // Version Version of the operating system e.g. "24.04". Version string `json:"version"` @@ -335,9 +355,15 @@ type NetworkWriteSpec struct { // NetworksRead A list of networks. type NetworksRead = []NetworkRead +// OsDistro A distribution name. +type OsDistro string + // OsFamily A family of operating systems. This typically defines the package format. type OsFamily string +// OsKernel A kernel type. +type OsKernel string + // QuotasSpec defines model for quotasSpec. type QuotasSpec struct { // Flavors A list of flavor quotas.