image: upload OpenStack images to OpenStack

This commit is contained in:
Malte Poll 2024-02-19 13:34:33 +01:00
parent 6f9020d527
commit 75f16ce87b
5 changed files with 23 additions and 55 deletions

View File

@ -18,40 +18,6 @@
"type": "github"
}
},
"flake-utils_2": {
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1701680307,
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1704008649,
"narHash": "sha256-rGPSWjXTXTurQN9beuHdyJhB8O761w1Zc5BqSSmHvoM=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "d44d59d2b5bd694cd9d996fd8c51d03e3e9ba7f7",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgsUnstable": {
"locked": {
"lastModified": 1706173671,
@ -90,32 +56,21 @@
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"uplosi": {
"inputs": {
"flake-utils": "flake-utils_2",
"nixpkgs": "nixpkgs"
"flake-utils": [
"flake-utils"
],
"nixpkgs": [
"nixpkgsUnstable"
]
},
"locked": {
"lastModified": 1706283202,
"narHash": "sha256-vQq8589wzi9aUYgoqyOl/oYgmyq0TB4e9A4E6SaIwgs=",
"lastModified": 1708338970,
"narHash": "sha256-eX86SesWRQN7S5g6sXgKG5Q6KJLcip2MxJIIIM1Lj+E=",
"owner": "edgelesssys",
"repo": "uplosi",
"rev": "9730d61d4216607eb7f8d38e21507790b7fa5a9a",
"rev": "32e47c6d2445cdc76b8458f785b921431c2ae609",
"type": "github"
},
"original": {

View File

@ -10,6 +10,8 @@
};
uplosi = {
url = "github:edgelesssys/uplosi";
inputs.nixpkgs.follows = "nixpkgsUnstable";
inputs.flake-utils.follows = "flake-utils";
};
};

View File

@ -73,7 +73,7 @@ func runUplosi(cmd *cobra.Command, _ []string) error {
var uploadC uploader
switch flags.provider {
case cloudprovider.AWS, cloudprovider.Azure, cloudprovider.GCP:
case cloudprovider.AWS, cloudprovider.Azure, cloudprovider.GCP, cloudprovider.OpenStack:
uploadC = uplosiupload.New(flags.uplosiPath, log)
default:
uploadC = nopupload.New(log)

View File

@ -19,3 +19,8 @@ publisher = "edgelesssys"
project = "constellation-images"
location = "europe-west3"
bucket = "constellation-os-images"
[base.openstack]
cloud = "stackit"
visibility = "private"
properties = { "hw_firmware_type" = "uefi", "os_type" = "linux" }

View File

@ -82,12 +82,14 @@ func prepareUplosiConfig(req *osimage.UploadRequest) ([]byte, error) {
awsConfig := baseConfig["aws"].(map[string]any)
azureConfig := baseConfig["azure"].(map[string]any)
gcpConfig := baseConfig["gcp"].(map[string]any)
openstackConfig := baseConfig["openstack"].(map[string]any)
baseConfig["imageVersion"] = imageVersionStr
baseConfig["provider"] = strings.ToLower(req.Provider.String())
extendAWSConfig(awsConfig, req.Version, req.AttestationVariant, req.Timestamp)
extendAzureConfig(azureConfig, req.Version, req.AttestationVariant, req.Timestamp)
extendGCPConfig(gcpConfig, req.Version, req.AttestationVariant)
extendOpenStackConfig(openstackConfig, req.Version, req.AttestationVariant)
buf := new(bytes.Buffer)
if err := toml.NewEncoder(buf).Encode(config); err != nil {
@ -264,6 +266,10 @@ func extendGCPConfig(gcpConfig map[string]any, version versionsapi.Version, atte
gcpConfig["blobName"] = gcpImageName(version, attestationVariant) + ".tar.gz"
}
func extendOpenStackConfig(openstackConfig map[string]any, version versionsapi.Version, attestationVariant string) {
openstackConfig["imageName"] = fmt.Sprintf("constellation-%s-%s-%s", version.Stream(), version.Version(), attestationVariant)
}
func gcpImageFamily(version versionsapi.Version) string {
if version.Stream() == "stable" {
return "constellation"