diff --git a/REUSE.toml b/REUSE.toml index 722a35b487..5e82d402d1 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -45,6 +45,16 @@ precedence = "aggregate" SPDX-FileCopyrightText = "2017-2024 SAP SE or an SAP affiliate company and Gardener contributors" SPDX-License-Identifier = "Apache-2.0" +[[annotations]] +path = [ + "frontend/src/data/vendors/dns/**.js", + "frontend/src/data/vendors/infra/**.js", + "frontend/src/data/vendors/machineImage/**.js" +] +precedence = "closest" +SPDX-FileCopyrightText = "2026 SAP SE or an SAP affiliate company and Gardener contributors" +SPDX-License-Identifier = "Apache-2.0" + [[annotations]] path = ["**.md", "docs/usage/shoot.yaml"] precedence = "aggregate" diff --git a/frontend/src/data/vendors/dns/alicloud-dns.js b/frontend/src/data/vendors/dns/alicloud-dns.js new file mode 100644 index 0000000000..48a56981b6 --- /dev/null +++ b/frontend/src/data/vendors/dns/alicloud-dns.js @@ -0,0 +1,6 @@ +export default { + name: 'alicloud-dns', + displayName: 'Alicloud DNS', + weight: 600, + icon: 'alicloud-dns.png', +} diff --git a/frontend/src/data/vendors/dns/aws-route53.js b/frontend/src/data/vendors/dns/aws-route53.js new file mode 100644 index 0000000000..3d34b1b9b6 --- /dev/null +++ b/frontend/src/data/vendors/dns/aws-route53.js @@ -0,0 +1,6 @@ +export default { + name: 'aws-route53', + displayName: 'Amazon Route53', + weight: 100, + icon: 'aws-route53.svg', +} diff --git a/frontend/src/data/vendors/dns/azure-dns.js b/frontend/src/data/vendors/dns/azure-dns.js new file mode 100644 index 0000000000..17e0ffa1fc --- /dev/null +++ b/frontend/src/data/vendors/dns/azure-dns.js @@ -0,0 +1,6 @@ +export default { + name: 'azure-dns', + displayName: 'Azure DNS', + weight: 200, + icon: 'azure-dns.svg', +} diff --git a/frontend/src/data/vendors/dns/azure-private-dns.js b/frontend/src/data/vendors/dns/azure-private-dns.js new file mode 100644 index 0000000000..7d941c7acf --- /dev/null +++ b/frontend/src/data/vendors/dns/azure-private-dns.js @@ -0,0 +1,6 @@ +export default { + name: 'azure-private-dns', + displayName: 'Azure Private DNS', + weight: 300, + icon: 'azure-dns.svg', +} diff --git a/frontend/src/data/vendors/dns/cloudflare.js b/frontend/src/data/vendors/dns/cloudflare.js new file mode 100644 index 0000000000..b092150dcb --- /dev/null +++ b/frontend/src/data/vendors/dns/cloudflare.js @@ -0,0 +1,6 @@ +export default { + name: 'cloudflare-dns', + displayName: 'Cloudflare DNS', + weight: 10100, + icon: 'cloudflare-dns.svg', +} diff --git a/frontend/src/data/vendors/dns/google-clouddns.js b/frontend/src/data/vendors/dns/google-clouddns.js new file mode 100644 index 0000000000..823fabe6fc --- /dev/null +++ b/frontend/src/data/vendors/dns/google-clouddns.js @@ -0,0 +1,6 @@ +export default { + name: 'google-clouddns', + displayName: 'Google Cloud DNS', + weight: 400, + icon: 'google-clouddns.svg', +} diff --git a/frontend/src/data/vendors/dns/index.js b/frontend/src/data/vendors/dns/index.js new file mode 100644 index 0000000000..98ae6b1738 --- /dev/null +++ b/frontend/src/data/vendors/dns/index.js @@ -0,0 +1,25 @@ +import awsRoute53 from './aws-route53' +import azureDns from './azure-dns' +import azurePrivateDns from './azure-private-dns' +import googleCloudDns from './google-clouddns' +import openstackDesignate from './openstack-designate' +import alicloudDns from './alicloud-dns' +import cloudflareDns from './cloudflare' +import infobloxDns from './infoblox' +import netlifyDns from './netlify' +import powerdns from './powerdns' +import rfc2136 from './rfc2136' + +export default [ + awsRoute53, + azureDns, + azurePrivateDns, + googleCloudDns, + openstackDesignate, + alicloudDns, + cloudflareDns, + infobloxDns, + netlifyDns, + powerdns, + rfc2136, +] diff --git a/frontend/src/data/vendors/dns/infoblox.js b/frontend/src/data/vendors/dns/infoblox.js new file mode 100644 index 0000000000..6a275c6c47 --- /dev/null +++ b/frontend/src/data/vendors/dns/infoblox.js @@ -0,0 +1,6 @@ +export default { + name: 'infoblox-dns', + displayName: 'Infoblox', + weight: 10200, + icon: 'infoblox-dns.svg', +} diff --git a/frontend/src/data/vendors/dns/netlify.js b/frontend/src/data/vendors/dns/netlify.js new file mode 100644 index 0000000000..68cb58add7 --- /dev/null +++ b/frontend/src/data/vendors/dns/netlify.js @@ -0,0 +1,6 @@ +export default { + name: 'netlify-dns', + displayName: 'Netlify DNS', + weight: 10300, + icon: 'netlify-dns.svg', +} diff --git a/frontend/src/data/vendors/dns/openstack-designate.js b/frontend/src/data/vendors/dns/openstack-designate.js new file mode 100644 index 0000000000..7a4c739c41 --- /dev/null +++ b/frontend/src/data/vendors/dns/openstack-designate.js @@ -0,0 +1,6 @@ +export default { + name: 'openstack-designate', + displayName: 'OpenStack Designate', + weight: 500, + icon: 'openstack.svg', +} diff --git a/frontend/src/data/vendors/dns/powerdns.js b/frontend/src/data/vendors/dns/powerdns.js new file mode 100644 index 0000000000..cffba743ab --- /dev/null +++ b/frontend/src/data/vendors/dns/powerdns.js @@ -0,0 +1,6 @@ +export default { + name: 'powerdns', + displayName: 'PowerDNS', + weight: 10400, + icon: 'powerdns.svg', +} diff --git a/frontend/src/data/vendors/dns/rfc2136.js b/frontend/src/data/vendors/dns/rfc2136.js new file mode 100644 index 0000000000..52fe18a46d --- /dev/null +++ b/frontend/src/data/vendors/dns/rfc2136.js @@ -0,0 +1,6 @@ +export default { + name: 'rfc2136', + displayName: 'Dynamic DNS (RFC2136)', + weight: 10500, + icon: 'rfc2136.svg', +} diff --git a/frontend/src/data/vendors/infra/alicloud.js b/frontend/src/data/vendors/infra/alicloud.js new file mode 100644 index 0000000000..faefe0afb3 --- /dev/null +++ b/frontend/src/data/vendors/infra/alicloud.js @@ -0,0 +1,6 @@ +export default { + name: 'alicloud', + displayName: 'Alibaba Cloud', + weight: 500, + icon: 'alicloud.svg', +} diff --git a/frontend/src/data/vendors/infra/aws.js b/frontend/src/data/vendors/infra/aws.js new file mode 100644 index 0000000000..81b1846642 --- /dev/null +++ b/frontend/src/data/vendors/infra/aws.js @@ -0,0 +1,6 @@ +export default { + name: 'aws', + displayName: 'AWS', + weight: 100, + icon: 'aws.svg', +} diff --git a/frontend/src/data/vendors/infra/azure.js b/frontend/src/data/vendors/infra/azure.js new file mode 100644 index 0000000000..7dd509ee68 --- /dev/null +++ b/frontend/src/data/vendors/infra/azure.js @@ -0,0 +1,6 @@ +export default { + name: 'azure', + displayName: 'Azure', + weight: 200, + icon: 'azure.svg', +} diff --git a/frontend/src/data/vendors/infra/gcp.js b/frontend/src/data/vendors/infra/gcp.js new file mode 100644 index 0000000000..c7d8299b28 --- /dev/null +++ b/frontend/src/data/vendors/infra/gcp.js @@ -0,0 +1,6 @@ +export default { + name: 'gcp', + displayName: 'Google Cloud', + weight: 300, + icon: 'gcp.svg', +} diff --git a/frontend/src/data/vendors/infra/hcloud.js b/frontend/src/data/vendors/infra/hcloud.js new file mode 100644 index 0000000000..a38602ffd5 --- /dev/null +++ b/frontend/src/data/vendors/infra/hcloud.js @@ -0,0 +1,6 @@ +export default { + name: 'hcloud', + displayName: 'Hetzner Cloud', + weight: 800, + icon: 'hcloud.svg', +} diff --git a/frontend/src/data/vendors/infra/index.js b/frontend/src/data/vendors/infra/index.js new file mode 100644 index 0000000000..39a57dc510 --- /dev/null +++ b/frontend/src/data/vendors/infra/index.js @@ -0,0 +1,27 @@ +import aws from './aws' +import azure from './azure' +import gcp from './gcp' +import openstack from './openstack' +import alicloud from './alicloud' +import metal from './metal' +import vsphere from './vsphere' +import hcloud from './hcloud' +import onmetal from './onmetal' +import ironcore from './ironcore' +import stackit from './stackit' +import local from './local' + +export default [ + aws, + azure, + gcp, + openstack, + alicloud, + metal, + vsphere, + hcloud, + onmetal, + ironcore, + stackit, + local, +] diff --git a/frontend/src/data/vendors/infra/ironcore.js b/frontend/src/data/vendors/infra/ironcore.js new file mode 100644 index 0000000000..5a7baf8ddb --- /dev/null +++ b/frontend/src/data/vendors/infra/ironcore.js @@ -0,0 +1,6 @@ +export default { + name: 'ironcore', + displayName: 'IronCore', + weight: 1000, + icon: 'ironcore.svg', +} diff --git a/frontend/src/data/vendors/infra/local.js b/frontend/src/data/vendors/infra/local.js new file mode 100644 index 0000000000..fdbe50477b --- /dev/null +++ b/frontend/src/data/vendors/infra/local.js @@ -0,0 +1,5 @@ +export default { + name: 'local', + displayName: 'Local', + weight: 10100, +} diff --git a/frontend/src/data/vendors/infra/metal.js b/frontend/src/data/vendors/infra/metal.js new file mode 100644 index 0000000000..e1221b8669 --- /dev/null +++ b/frontend/src/data/vendors/infra/metal.js @@ -0,0 +1,6 @@ +export default { + name: 'metal', + displayName: 'metal-stack', + weight: 600, + icon: 'metal.svg', +} diff --git a/frontend/src/data/vendors/infra/onmetal.js b/frontend/src/data/vendors/infra/onmetal.js new file mode 100644 index 0000000000..cec462b584 --- /dev/null +++ b/frontend/src/data/vendors/infra/onmetal.js @@ -0,0 +1,6 @@ +export default { + name: 'onMetal', + displayName: 'OnMetal', + weight: 900, + icon: 'onmetal.svg', +} diff --git a/frontend/src/data/vendors/infra/openstack.js b/frontend/src/data/vendors/infra/openstack.js new file mode 100644 index 0000000000..17fc2c43a5 --- /dev/null +++ b/frontend/src/data/vendors/infra/openstack.js @@ -0,0 +1,6 @@ +export default { + name: 'openstack', + displayName: 'OpenStack', + weight: 400, + icon: 'openstack.svg', +} diff --git a/frontend/src/data/vendors/infra/stackit.js b/frontend/src/data/vendors/infra/stackit.js new file mode 100644 index 0000000000..4de0cf6be3 --- /dev/null +++ b/frontend/src/data/vendors/infra/stackit.js @@ -0,0 +1,6 @@ +export default { + name: 'stackit', + displayName: 'stackit', + weight: 1100, + icon: 'stackit.svg', +} diff --git a/frontend/src/data/vendors/infra/vsphere.js b/frontend/src/data/vendors/infra/vsphere.js new file mode 100644 index 0000000000..481c1b8ca8 --- /dev/null +++ b/frontend/src/data/vendors/infra/vsphere.js @@ -0,0 +1,6 @@ +export default { + name: 'vsphere', + displayName: 'vSphere', + weight: 700, + icon: 'vsphere.svg', +} diff --git a/frontend/src/data/vendors/machineImage/index.js b/frontend/src/data/vendors/machineImage/index.js new file mode 100644 index 0000000000..b90d02383b --- /dev/null +++ b/frontend/src/data/vendors/machineImage/index.js @@ -0,0 +1,56 @@ +export default [ + { + name: 'gardenlinux', + displayName: 'Garden Linux', + weight: 100, + icon: 'gardenlinux.svg', + }, + { + name: 'gardenlinux-fips', + displayName: 'Garden Linux (FIPS)', + weight: 101, + icon: 'gardenlinux.svg', + }, + { + name: 'ubuntu', + displayName: 'Ubuntu', + weight: 200, + icon: 'ubuntu.svg', + }, + { + name: 'coreos', + displayName: 'CoreOS', + weight: 300, + icon: 'coreos.svg', + }, + { + name: 'flatcar', + displayName: 'Flatcar', + weight: 400, + icon: 'flatcar.svg', + }, + { + name: 'suse-jeos', + displayName: 'SUSE Linux Enterprise Server (JeOS)', + weight: 500, + icon: 'suse.svg', + }, + { + name: 'suse-chost', + displayName: 'SUSE Container Host configuration (Chost)', + weight: 600, + icon: 'suse.svg', + }, + { + name: 'memoryone-chost', + displayName: 'MemoryOne Container Host configuration (Chost)', + weight: 700, + icon: 'suse.svg', + }, + { + name: 'memoryone-gardenlinux', + displayName: 'MemoryOne Garden Linux', + weight: 701, + icon: 'gardenlinux.svg', + }, +] diff --git a/frontend/src/store/config.js b/frontend/src/store/config.js index 67db6f73d9..41e761646e 100644 --- a/frontend/src/store/config.js +++ b/frontend/src/store/config.js @@ -18,6 +18,9 @@ import { useApi } from '@/composables/useApi' import { useLogger } from '@/composables/useLogger' import { hash } from '@/utils/crypto' +import knownInfraVendors from '@/data/vendors/infra' +import knownDNSVendors from '@/data/vendors/dns' +import knownMachineImageVendors from '@/data/vendors/machineImage' import map from 'lodash/map' import get from 'lodash/get' @@ -436,209 +439,6 @@ export const useConfigStore = defineStore('config', () => { return getCondition(type) } - const knownInfraVendors = [ - { - name: 'aws', - displayName: 'AWS', - weight: 100, - icon: 'aws.svg', - }, - { - name: 'azure', - displayName: 'Azure', - weight: 200, - icon: 'azure.svg', - }, - { - name: 'gcp', - displayName: 'Google Cloud', - weight: 300, - icon: 'gcp.svg', - }, - { - name: 'openstack', - displayName: 'OpenStack', - weight: 400, - icon: 'openstack.svg', - }, - { - name: 'alicloud', - displayName: 'Alibaba Cloud', - weight: 500, - icon: 'alicloud.svg', - }, - { - name: 'metal', - displayName: 'metal-stack', - weight: 600, - icon: 'metal.svg', - }, - { - name: 'vsphere', - displayName: 'vSphere', - weight: 700, - icon: 'vsphere.svg', - }, - { - name: 'hcloud', - displayName: 'Hetzner Cloud', - weight: 800, - icon: 'hcloud.svg', - }, - { - name: 'onMetal', - displayName: 'OnMetal', - weight: 900, - icon: 'onmetal.svg', - }, - { - name: 'ironcore', - displayName: 'IronCore', - weight: 1000, - icon: 'ironcore.svg', - }, - { - name: 'stackit', - displayName: 'stackit', - weight: 1100, - icon: 'stackit.svg', - }, - { - name: 'local', - displayName: 'Local', - weight: 10100, - }, - ] - - const knownDNSVendors = [ - { - name: 'aws-route53', - displayName: 'Amazon Route53', - weight: 100, - icon: 'aws-route53.svg', - }, - { - name: 'azure-dns', - displayName: 'Azure DNS', - weight: 200, - icon: 'azure-dns.svg', - }, - { - name: 'azure-private-dns', - displayName: 'Azure Private DNS', - weight: 300, - icon: 'azure-dns.svg', - }, - { - name: 'google-clouddns', - displayName: 'Google Cloud DNS', - weight: 400, - icon: 'google-clouddns.svg', - }, - { - name: 'openstack-designate', - displayName: 'OpenStack Designate', - weight: 500, - icon: 'openstack.svg', - }, - { - name: 'alicloud-dns', - displayName: 'Alicloud DNS', - weight: 600, - icon: 'alicloud-dns.png', - }, - - // other dns providers - { - name: 'cloudflare-dns', - displayName: 'Cloudflare DNS', - weight: 10100, - icon: 'cloudflare-dns.svg', - }, - { - name: 'infoblox-dns', - displayName: 'Infoblox', - weight: 10200, - icon: 'infoblox-dns.svg', - }, - { - name: 'netlify-dns', - displayName: 'Netlify DNS', - weight: 10300, - icon: 'netlify-dns.svg', - }, - { - name: 'powerdns', - displayName: 'PowerDNS', - weight: 10400, - icon: 'powerdns.svg', - }, - { - name: 'rfc2136', - displayName: 'Dynamic DNS (RFC2136)', - weight: 10500, - icon: 'rfc2136.svg', - }, - ] - - const knownMachineImageVendors = [ - // os - { - name: 'gardenlinux', - displayName: 'Garden Linux', - weight: 100, - icon: 'gardenlinux.svg', - }, - { - name: 'gardenlinux-fips', - displayName: 'Garden Linux (FIPS)', - weight: 101, - icon: 'gardenlinux.svg', - }, - { - name: 'ubuntu', - displayName: 'Ubuntu', - weight: 200, - icon: 'ubuntu.svg', - }, - { - name: 'coreos', - displayName: 'CoreOS', - weight: 300, - icon: 'coreos.svg', - }, - { - name: 'flatcar', - displayName: 'Flatcar', - weight: 400, - icon: 'flatcar.svg', - }, - { - name: 'suse-jeos', - displayName: 'SUSE Linux Enterprise Server (JeOS)', - weight: 500, - icon: 'suse.svg', - }, - { - name: 'suse-chost', - displayName: 'SUSE Container Host configuration (Chost)', - weight: 600, - icon: 'suse.svg', - }, - { - name: 'memoryone-chost', - displayName: 'MemoryOne Container Host configuration (Chost)', - weight: 700, - icon: 'suse.svg', - }, - { - name: 'memoryone-gardenlinux', - displayName: 'MemoryOne Garden Linux', - weight: 701, - icon: 'gardenlinux.svg', - }, - ] - const knownVendors = { infra: knownInfraVendors, dns: knownDNSVendors,