From a1ae53196f5e86c86c8b4d6dc752d17194d97683 Mon Sep 17 00:00:00 2001 From: Gianluca Zuccarelli Date: Mon, 16 Oct 2023 20:13:46 +0200 Subject: [PATCH] cloudapi: add pulp upload target Add the pulp.ostree upload target to the cloud API and enable it for edge/iot commits. Co-Authored-By: Achilleas Koutsou --- internal/cloudapi/v2/handler.go | 7 +- internal/cloudapi/v2/imagerequest.go | 36 +++ internal/cloudapi/v2/openapi.v2.gen.go | 325 +++++++++++++------------ internal/cloudapi/v2/openapi.v2.yml | 26 ++ 4 files changed, 241 insertions(+), 153 deletions(-) diff --git a/internal/cloudapi/v2/handler.go b/internal/cloudapi/v2/handler.go index 3865a78c7f6..bc1ecf2bcb3 100644 --- a/internal/cloudapi/v2/handler.go +++ b/internal/cloudapi/v2/handler.go @@ -391,7 +391,12 @@ func targetResultToUploadStatus(t *target.TargetResult) (*UploadStatus, error) { uploadOptions = OCIUploadStatus{ Url: ociOptions.URL, } - + case target.TargetNamePulpOSTree: + uploadType = UploadTypesPulp + pulpOSTreeOptions := t.Options.(*target.PulpOSTreeTargetResultOptions) + uploadOptions = PulpOSTreeUploadStatus{ + RepoUrl: pulpOSTreeOptions.RepoURL, + } default: return nil, fmt.Errorf("unknown upload target: %s", t.Name) } diff --git a/internal/cloudapi/v2/imagerequest.go b/internal/cloudapi/v2/imagerequest.go index 1b42aedb0de..0eedd5a228e 100644 --- a/internal/cloudapi/v2/imagerequest.go +++ b/internal/cloudapi/v2/imagerequest.go @@ -220,6 +220,35 @@ func newOCITarget(options UploadOptions, imageType distro.ImageType) (*target.Ta return t, nil } +func newPulpOSTreeTarget(options UploadOptions, imageType distro.ImageType) (*target.Target, error) { + var pulpUploadOptions PulpOSTreeUploadOptions + jsonUploadOptions, err := json.Marshal(options) + if err != nil { + return nil, HTTPError(ErrorJSONMarshallingError) + } + err = json.Unmarshal(jsonUploadOptions, &pulpUploadOptions) + if err != nil { + return nil, HTTPError(ErrorJSONUnMarshallingError) + } + serverAddress := "" + if pulpUploadOptions.ServerAddress != nil { + serverAddress = *pulpUploadOptions.ServerAddress + } + repository := "" + if pulpUploadOptions.Repository != nil { + repository = *pulpUploadOptions.Repository + } + t := target.NewPulpOSTreeTarget(&target.PulpOSTreeTargetOptions{ + ServerAddress: serverAddress, + Repository: repository, + BasePath: pulpUploadOptions.Basepath, + }) + + t.ImageName = fmt.Sprintf("composer-api-%s", uuid.New().String()) + t.OsbuildArtifact.ExportFilename = imageType.Filename() + return t, nil +} + // Returns the name of the default target for a given image type name or error // if the image type name is unknown. func getDefaultTarget(imageType ImageTypes) (UploadTargetType, error) { @@ -321,6 +350,10 @@ func targetSupportMap() map[UploadTargetType]map[ImageTypes]bool { UploadTargetTypeOrgOsbuildOci: { ImageTypesOci: true, }, + UploadTargetTypeOrgOsbuildPulpOstree: { + ImageTypesEdgeCommit: true, + ImageTypesIotCommit: true, + }, } } @@ -379,6 +412,9 @@ func getTarget(targetType UploadTargetType, options UploadOptions, request *Comp case UploadTargetTypeOrgOsbuildOci: irTarget, err = newOCITarget(options, imageType) + case UploadTargetTypeOrgOsbuildPulpOstree: + irTarget, err = newPulpOSTreeTarget(options, imageType) + default: return nil, HTTPError(ErrorInvalidUploadTarget) } diff --git a/internal/cloudapi/v2/openapi.v2.gen.go b/internal/cloudapi/v2/openapi.v2.gen.go index 4408fbf51c9..2160c447306 100644 --- a/internal/cloudapi/v2/openapi.v2.gen.go +++ b/internal/cloudapi/v2/openapi.v2.gen.go @@ -130,6 +130,8 @@ const ( UploadTargetTypeOrgOsbuildGcp UploadTargetType = "org.osbuild.gcp" UploadTargetTypeOrgOsbuildOci UploadTargetType = "org.osbuild.oci" + + UploadTargetTypeOrgOsbuildPulpOstree UploadTargetType = "org.osbuild.pulp.ostree" ) // Defines values for UploadTypes. @@ -145,6 +147,8 @@ const ( UploadTypesGcp UploadTypes = "gcp" UploadTypesOciObjectstorage UploadTypes = "oci.objectstorage" + + UploadTypesPulp UploadTypes = "pulp" ) // AWSEC2CloneCompose defines model for AWSEC2CloneCompose. @@ -712,6 +716,21 @@ type PackageMetadata struct { Version string `json:"version"` } +// PulpOSTreeUploadOptions defines model for PulpOSTreeUploadOptions. +type PulpOSTreeUploadOptions struct { + // Basepath for distributing the repository + Basepath string `json:"basepath"` + + // Repository to import the ostree commit to + Repository *string `json:"repository,omitempty"` + ServerAddress *string `json:"server_address,omitempty"` +} + +// PulpOSTreeUploadStatus defines model for PulpOSTreeUploadStatus. +type PulpOSTreeUploadStatus struct { + RepoUrl string `json:"repo_url"` +} + // Repository configuration. // At least one of the 'baseurl', 'mirrorlist', 'metalink' properties must // be specified. If more of them are specified, the order of precedence is @@ -1100,158 +1119,160 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "H4sIAAAAAAAC/+y9e3PiONY4/FVUPG9VuivcLwlJ1dQ+hJCEBHKDXJeurLCFrWBLjiRDyFR/97ck2cYG", - "E6C7Z/bZ/fX8MR1s6ejo6OjoXOU/MwZ1PUoQETxz+GfGgwy6SCAW/LKQ/NdE3GDYE5iSzGHmGloIYGKi", - "90w2g96h6zko0XwCHR9lDjOlzPfv2QyWfd58xGaZbIZAV75RLbMZbtjIhbKLmHnyORcME0t14/gjZexL", - "3x0iBugIYIFcDjABCBo2CADGsQkBRNgUiyvxUW0/w+d7+FKBbjz0Ws1y06EENSX5uBoImiaWaELnmlEP", - "MYElIiPocJTNeLFHf2YYstR8lgbKZrgNGXqZYmG/QMOgfrAwwcwyh//MlMqVam1vv35QLJUz37IZRYlU", - "WMEDyBicqbkz9OZjhkwJJsDhW9SMDl+RIWQ/Pb87z6HQvFKk5z88wQjxDPJzU8RFrpTJ/p3TzmY4gR63", - "qXjRqx3HyZ3lwrfLWKUTLB3XdWTsCSh8vUsShIIuTmIEXZwrGvVKcf+gsr9fqx3UzOowjWJbknhhMnLc", - "7Boe6FV+hgU8f+hgQ2/hEfQdEbVLbun2CHAkgKBAvQZfhI1A0AWozfs1CyBwKLGygA5HPjegQCa4u+0M", - "COaAIeEzgsw8aAsO0LuHGZSggYstW4AhApxSghgQNiRgRBmgwkYM+GpuAyIgs5Dg+QEZkDkugvlIDstt", - "ygRicjQQGwxAYg4ITg6IOZC4c+giALkaSv6ODwfmo82XaEipgyD5+UXdbDlXsaLPnHRRHB9CNkqF/+Ez", - "9DPsgl1ooWiHLkh9SVE6UtTUdEQmUB3kogPX52qdfYLffHk0qYYWniACGOLUZwYCFqO+l1dLLAeRi0Vd", - "LCQnjRh1VRc5UcSFXHcGiUldQAkCQ8iRCSgBENzdtY8B5gNiIYKYZEO9kAmBohBL27EONaAIljc5wU7w", - "Jpykx+gEy0mG6L8o9LNgaiOGVBM1imRP3zHV5EO6QCK7WZgLxBR+Z3QqOdrBXADoOCBEgx8OiC2Exw8L", - "BZMaPO9ig1FORyJvULeASM7nBcPBBSjXthCIun9MMJr+oR7lDAfnHCgQF/8DP0JZ+CIHeokG2VEklxiH", - "jyTpCRWAe8jAI4zMLMBCPjSR6RuJBVlBh0Wiy+2BfMlO6YIy3vdz7kqyywbkXkSlT30DktsAzKkaMe24", - "84cRCi/YXEaqfSxRijf7AWSqqGbWh2UjB4flaq5aLVVyB0WjltsrlSvFPVQvHqByGnYCEUjEJ3hJJHSj", - "zbAKWHCEianWWu9QJTPANWUCOpvwYsiHAk9QzsQMGYKyWWHkExO6iAjo8KW3OZtOc4Lm5NA5jfICkWrG", - "PhrVhnu5klEZ5aomLObgXrmcKw6Le8Vy5cDcN/fXSt45xZbXdokD18jPVfI5KSE3ETkLSMYApKEQ12eP", - "qDmTo1CCrkaZw3/+mfn/GBplDjP/U5gbDIVAJS6k6MPfvy1AvEXcoyTQlB1nA6hXCrNbNEIMEQNlvmeX", - "KGImKVEqV5DUEXOofjDMlcpmJQertb1ctby3V6tVq8VisZjJZkaUuVBkDjO+r5ZnDdXMFGpFs5sv1o9P", - "6rP2CZbQw2p6ts3/IkrqKXWoxX/ppBS/D33smPr3gsUQoJDNvOcsmgseYiIQG0ED/fk9zZYY01elsH+G", - "2QV9xWou6RswQOhTUnQhwSPExS+lhxsH+vPEWJjcHPrnM0MCmlDAXzkxygVD6MWgrotF6pn1xYbc/hoe", - "XXIFBAiap5x/HjTG0NKwF30f6o1WpjAxHN/ExAKXrfvbRiZmk342nwBGRIg0wq6m363WUbfUrg2fC+ri", - "Dxip5p9h2Ey2/p7NmFhSZ+iLJeuE2cjJ1dOoqLmdzfH9bMi2bBzObbFzkmG3AfOj23eJuxMEiC3Hr5D/", - "aVKLR3DXTjc8HLKJrmhLos2hpNFsQ3wk6eaANuuTIOS9ctYtEj8AlJzg52JGg2sxRtmyJmUiAbEj/5RE", - "M2NSUAo8CzFtNkCe6qNbPtWixksI6PnIDUN8V03FNwzE5VxGEDs+k1qbh4iUInJC8301b7i0sZqUCIgJ", - "SpnZJ/azoMDnKPJKGCGQubW10nDV2usy3IiNlcckAVRQgNwhMhOqtjZL2SwfPFK6vRr1UEAr1RJx+MsE", - "MTyaLY8uycCoA/qdHlBt8AgHBnZsUOXIWfK0LDKYnmCqVhxO6WecG58sS7QeDCm31pyEijALxgrlSntI", - "JRW0lofoQ2vLEbQ9n6rLraNNTBZuThoTW8HxkMT8WD0PT+xQuVjyAs0nQ0lgwWseizvY5kQKfFzJoU5u", - "ji/T3UsLtHnz4SyPacGdBb6OQrAeh59QbdF7lg2nnMpt6uS9RR7lWJqvyzt8CDkKZhEJ9zmGoQ1tmCTP", - "kGlDbT9LKiEiCvIUK8gTu16oF97rey971YIESHmB8kJCoWc4lckWzgbDRsb4xfKsmJyMuTP1a4Y8uroN", - "InDoIDP95Qg7KNw8S8hYnjVGszRldjXCCWk/b+YiAR1MxunUdLE8R3h+hEzKoMeoXK48ZVYh7PcPOcc/", - "9PtcpTzwi8XyHmSG/Yem8gak1YNIxXIZiQgH+TpvICIoV+P/gyEHQY7+qOekDgzd2MhQ/n+vqp8o/I4g", - "R1e9DXBZSXKPYcqwmKUfmZw7MWm9RuamWoPhDohrqtuouaE02Fz5mR+maeytkFEMrPYjTrMJWu+CQRBv", - "o0RuaETM/ZwAE5BUxPOgbyOOBiTRe4odRznQODLlQWoij1NnggLXrmAYTVAEPw8aEYGcWXZAhAQ5Hz6E", - "xuEk8A5j16NMaNhS5v2rgIRRmPluXqGRNwv/ApEDbUACwToXiJvRdVGSpZA3HARvoaweh4ilARyZdF3/", - "k+OrULBsPugJdlDqeBLKjAvkbgUq6JIKkKEpdJz1UHS7xG5RMjHdx93B+uxUr7lceK0NbLqa2pGdgrBN", - "uUjXbpqUjLDlM6SjYlHDZLQk9njZgLQIDg3OT+2XsJ2K7nMBHUfR48VEE2ysiSfFOwDdIQsMnzFEhDMD", - "lDgzuRFHvhMpUsi0UI5j13PUts4FIKTWO/MWdYaCiSYFbsK0CY4RI2jtWl/oVkEAyUHr2nd0q+/ZDPUQ", - "4Qb01vW48hDpNRvXi76PWPTdo1xYDPHtIu8eZEItDSbWi0tNlAgHZ6AvaM6ZuJnFmHAPOcgQwKZTRXAT", - "83EQXgilWQQZmXmwEwLa0e+lncPgFPjEQZwricgQgAypeB5lwKUMAVdqcB7FRKg8kqmNDRsYkCOAxRxO", - "576bBzsKNnSmcMYHRBrX8nkWoAlScRklIYMhCAVInQgx+Hmww+B0B6ieErMIfT4gaUBW4BkEeAJbksFp", - "JpvR9ItI+S3VnzWTWu2/5RxTG2jjw2xAwk121QNYcOSMVELATAMjVAV64QRiR2qN0ZZUWjhglApA2YBA", - "MgvC7pLQcbefCTxGpWH9VeEcDvzCkeBghJFjhjCXpoM5wBahLIyzbSQ4Pz8AOWJS4KyF0gvbKSXLDrTe", - "dBHPuQ3GaMY3xbDXO7tA6djFAllrocTbSljYRR+UrBVW/bCdNM74NorbHU/T2dLM1LnKsES0RsDIc31n", - "fjaGYcoRJtABcsOOoCH02ifVTkS4z9CLB1mYR/d5yktLtQfChkKHuVVHEFOHAHrHcXsyZhKtOOHVCR1y", - "+nw2kAMYBLNV2gNl8jde8MtQlf40D/YtSpBlZf+btFgigZ5wkSPmYs6lWAAaQLRL52hhAqghoDpTpSUS", - "x6a4X6ule+WFneaRF3aoyEbwkyew1G7dmYlZqkeAaz9aEurVlOg0wxRqyh4xYvq/gpgLtpGaapp1FDk0", - "f5W32QjWcIkuCR+p7AFjuQopORabOUvVcFHzBcDpDl015U5gFm82bdU6xbMeipWN5Ism9bqolwaVjrk0", - "NdbZrwueqPbxVaCEAkqGFDLl4VJ6dOjZXHSf+eTF84cvYzR7sSG30xcz3goTjgyfofUtJSu/GIiJdG3P", - "hcSXItGXD17kWYbYy8ossiVeVkbVaoksbasfEcZhcHHZWSyXN9zTCjrkwHOghIzeUwOBf6FgX+Og3kzO", - "h7NQIj2Q7ZGs/7eIeIXRp9J9r1r9MekuQacJ9uD5j0j2Of38kH6RdP/7hPpJwouwELPH5CU9FV4+jc9D", - "Q5C0H84E4nH0y6XqfrVe2avWk+F9HxOxV1VbObIxks7HwgSytV7tWOfsHOH0maa5LbaUkQGMdZLRo0zw", - "1Wqyeg2+SAOHMgEYJBbiX5VV4jEqqEEd5SeRNnSclv/MlMuHwvAy2Uy9GPyBXeipP7dLS48p/z80/xCA", - "CrYpL7pkYRNz+WfKScEjR/sKyyEGbw4lNnOBHILEdrOMuffXj6obJwcdCUliIrwtax0WmC/tBDptXv9M", - "VG/oG2MkVruXINHSXsrHXr9xedy4PQY9QRm0EDAcyDk4UiDyiynEwY9cMMLK5Ip0z5u0a0lKyDfy+0om", - "V0UMJmhS1/MFAi1iYRI4efMD0o/yORWghQzrKRZ2cB6fNq9BEBDJBi4UzJWxnzTlFawgB37ug86D9iiZ", - "CxylXg/IjqEj6SwHPZwb+MVixfB9bKq/0E548gTDSTEuElhvk5o9z7tfJqWcon4fS3aN5hQ6pOJO9Rh9", - "R4y6AT1VLUNESih/Y1NBDzOj86CHEIhieA71zbxFqRVEyrlmHZUgW4gSrIOc9mRCtYqZ+o7AuQDzKPna", - "cChHXISHqo58D8iXIO85ZE/NmFG3r5LMhk05IgD6grpQYAM6zmyRyMjforonXSAEdFHzBmFzia+CkuTk", - "NPZV7JkfkBY07JBJFNWD6BCAEaUiRSAYRjlw8+BeYaCVFw4gQ4cDAkAO7Ejl4PBP5ELsYPP7ziFoEKB+", - "AWiaDHGuVT+GPIa4UjejsQwJAixMKw9OKAMB9bJgBzrYQP8by47YyQcjB1KyofttiYMeOgCxamx3llMu", - "sxz0vP+Fnsc9KvJW0CnsE0dJaZrbUiOYf5jGL/FaIIHpYsJTaWBSF2Jy+Kf+Vw6otifo+VggoJ+CLx7D", - "LmSzr8uDO44eUMX5OWKBMQBF0HeRIvOttyMP1p0FnNJ33eesGZY+aOEgGRVAMhuQkL6DBV1DMdwSV2Qi", - "5SHkh00XLxPYFYfLZM5kMwGB4w//kvrC6Nz9danu6myW8F8WU5khNxAxIRG5IYPYzFWKlVqpslapjYHL", - "rsucPw1NtS2UByutukIbd9IU0WJJG3NzI/gL9TT4r3P8Y/H39dVTCwDXUmHllNux2NwWymvYbY3urlLH", - "TK01bhL5a4XtdQiVi6G01zbsfBJ1SFUSl8bYOiVhhK1NPGOq3We0PonPbAsUUpOerhmdYK5Dc+DutrNR", - "7lIqdvGU2+0Qg8ywsUCGCLxR800bZc2sUHz14w3SWvszT4dNdI742khory9bqaknY2W/ItoT2fGBD6m4", - "FPcMbHo1yWxky+fBg41IWJpajFdbyQ5YHqwuJtj13QEx0QgTZILhLNZO6TXJw6VaPqge7O2XD/ZWOQW0", - "uv5CvY2SxpOW1Lx7UPGarlvLMZW6HAyibBWluHoOWqyZBUqjkwsB9CT5gEDAkQeZFI5BaxNJi0sru+qA", - "xYIDOiXhEHnQDeAPiIlHyjUuwjGkFTFFjiP/jdAI3wUyVNX3jjExpWY4INz39Im/RVRQ06qv4K49SBO7", - "JLEBFrj0W7gbVx2rKIwebJyPHTnBt85HDzK5IzbYDECy3Ck9DXxhmlulWGczKgis/9SY6b/DitkgD3tJ", - "7MSESWwoOJXDwCnP2TDHbB8Hv2J/cuhFPz80Mrp4FkFvP/Em+SPWT+WbRNUqwa8way14EOWgSA1POaUs", - "IwJgSdkcaU7q30QHTMUcvv4xBy9/LzZmcBqBc/AkCY0acswJ96SxPP8rRycwk81MuZNK4IsoF2abA8ST", - "C5sSRFDPpelm+S4KzEeVAkCpUAm+DOjkG1UFJAWQg0nS5Usod8UfI8oM9FmK5GpdKxhAO2ESoPWbnImG", - "vrVZpvVFULfyAznn82FPdHpq06G+mTuCfIUnRCWUJnuWi+Vi8aC4ny+mWvcq8pOeOjumrzglb1Y+tv3h", - "JhnHkI8XdfpqOU37nSDGl8qTKutvTQjQnw8VLO4c4pwq31asTVi6uGjGyJMhKDMhqjRtKX5I9KbTLVeB", - "XyXQlTDbhDppPBXGVJMg5cGWnvob3O6TkvYb6DXLbwQV0El7tUAFNWg2uhZI38ajO2dXhliz6toE52c8", - "uCqh7oXDCVof2+vbmEfORiwtGHeY0DO0W/Dort05fulcNRudXuO+BRCZYEaJrk8fkAlkWHvqtf9UM1/M", - "g8/hRGrkuppGncTKCec4szyQKKg7T6SWZKIJcqgnASsvLyXOLKt9q9rJMM+S0iKIrbh1ZGEtYjRZSXO0", - "pdmnO60x+sZopiLey1K1J7UvLVJ1E+DAGfWTgUU/tVbKgcTy02s5Q3+jzqpUR8QwygcN3TnKmtTXgCCD", - "uoiDwL+UVZczSLOHqPfKTwg4MigxYVB+EnPkIPJy18vf9U9y9Z+LY2QzV832djy/GsJfchVMYEMd/pmS", - "nI+ISLVGG+qCHRU/yAKsbuHJRptNcvsICcOWGyOAkgdt13MwCnyM//KZ8y/ZQdpIgQ6fHRAdkEjk0ysD", - "Iyi9VXsmn14ppEP3KYkEkEhYCKv0QhhUEYMvwVofgmJ5r1gdlk24hw5q1aFZqQ7rw3oZ1is1VIP7+2Z5", - "uFccjeDXrA44Dxkkhp1z8BgBFhXUzeExGznzah2p7H1d8Lkvt0g/2EfLlbsbdLO5u144HiOBmCtNMjC1", - "UUAa7chP3GHiQgItxMAXAxLTQR4mXwE2ERFYzPT9Spq/gKDKKaqdyOpFaFnnQZMS7ruIAUMylyr6W6ya", - "gBwYDpZbM9nGRmRAIl6K+EBKzZCxVtzMtHley2LS1dJGsIOlWPZtpJ+8K47ktDrU4CBVI6TuzTDTewkp", - "j9ERdtCqBC8BsUPVjw1zyftRhxTPajjSZyj24yMmceUqPVy74jaPRPvkR/qlrfBiBf/yrW7MSE/EQh5d", - "8WZlyVVMIV/WvLHlmrVVrwgUq9K8Qv/Z0ouYEr3mxhvtgFipKWc1ESIcpdWerGtcrCUO3yXVhPyANASQ", - "MPUxHBhXO0Ed5E4W7MxL49SvoCRvB8zXRMX/BmSI5tEaFXpW+fUaoqvP72QwhzJTxwg9hgxkKsmMdUFB", - "dM2bHFdKnCGdoLR8tFjB5t9Xp7l1Xea6vDapR3JgeVZQap28r2wunSOZukKMzms2FyIf16dSu4vKBCT7", - "zksPVLJB8hRInIA5+d9R67R9Ca5Pr8H13VGn3QQXrSdw1LlqXqjXAzIg7k378ui0YfQMetRqHHdG9aez", - "Mfo434Om032a7sPT07ZzDh1RP38tvxeOyhe7dnvU9t9PhXf/uo8GpHNrHd/t773Cfs27P665J93zijdG", - "BN0WjL779nYzvpzdcPuxTG8ep62Pu96w1LzsNkfNU2v8WL8pD8jH85i1jSY7Kd6Up+xi6EDftO928T0k", - "jWPulupPrTc+rDXuKvumuGPdys2T+WAd3O4+4uvRff12QC6OXvvFyuT+6Mrs9vhT5aADm2Sv7ZWuJl69", - "3aKFNmrdP5Xe3ObVdQNeFIfnZxV/ZFWbPhrz3X5vQKY3D33U7Lz7z529q+4jvbq+mE66N6P3oVV6PK5P", - "/OfihXgtGJdn5XfoF99d3vAPzs49NJ5cXd++OwMyexOvs+cRo/cYncy86bM1uZkKQrr1gtVr+YXz+z57", - "KtbKbuuuv980hvvVsXF20j8ZdccOGZ8WBqQ4uqs2bmGtWD2rvL8Wx2KIKpML4/qRXl/5F0f3/Kw3KRbv", - "Tp8as2vkz3br+8Zd4alld/fHld79xeuA7KH2szXD3avi1Ck9nR7fXhi+Mx3zg8au74ytEu0Pq7zy4T5P", - "rov7p7T//lAtv8KL2kNv99J+RmhA6nvFR3pvD43ShdfbfR0901fOWuK5fj28e959mpzUbz1mPjTY69nw", - "fFw+924vGu99+53fNPiRfVoakGLHfy8/wO5R0Sq3a9dG1zwvGG+vtFg3DPZ69Ojj9weGa9g/6D569bd+", - "YdT7uHS52bZIvfD2fDEguH7jOyN/f99/sx8KU1EeCoKFdcvfXu33rv/6dFd9HlbtsTip2xd3hcfH/Wr5", - "ze7ULqaN28ZN42hAxPHJ6fPD7cRwW9bFcbd00WvUn9378bBybnf63VLn8WgGH0q2QZxG+Nw4O59A9/7V", - "bNYmA2K4xi6+Ob86OuoeNRuN6glutdDZnsvsk7N9/57fdLrdcvGpZjzb5P2pftJw1R5qnk7rJ83puD0g", - "R9P26ckNPW82ePPo6KnZmLaaZ1areVJtNJrW+Gbee/fyqVHYP3ryLGfWazw/ndmvswt7QAq7o72P69H9", - "ZHhWLrbeKuP2/tXJ0WWRdB53j+5Krj/p7b71/V7locOOKm7l1HeEd3HbOr/oCLfWOh6QEjv9eGzQfmnm", - "HTy1653GsdltNq9mr41XTh/u6vtPd35ztzAkr6yPbsud26vmaHbd3N97OKjX8NX9gLi13u6Q3xxP95vl", - "DnPMRrfaPfbp7LnUw+IUPlcvbjr3YrffgqUq5k+90+brB92/fqrfV86vxrXigFhvD1a9fFkYuuXWR2+/", - "X688tI6HJWfyWm07k3er/XaBrFLp4/Hp3WVPvefz8+Zo8jHadS57e/67dTYgr++F8+LMeS538PCU7Z02", - "GrOrg7sH1njuTXvdYst47denrSZ5H/eO/dmb+zC9n1wePfqt9n39ClWeBqSL70qj88s6N/ePPX7yXuvu", - "PpqkS256u2fstX99cVxxH5jTMEmrb5tP9/XX57H3YB/PeKVwcICuBsQeF1mHzIqvl9Mx9EcFfFe/MvYe", - "J93xa+e2e27V7g7uL2bn/sOD+Jg+ktfuZe3h9uTo7aLKn6nb7Q7ISAz7Z6Xd2mx4+1BoVCZHQ/h++1AW", - "+3cfl6/GBxr3nlsYdi4POoUz47zZvi3dnNT36uVjs+G0Tg7MARmXrRv81LtpQHhePD9vfJxNbse3552O", - "dVF+unnCZ5f3s7KonM9ORpxBtzbtNR+uRvY1as86R/3n8wGZMO/SuR6iEe8f1Pb7o/LRZdu3Pp5Zs3b/", - "fty7GD9bt3bp/nTSa9+Q5uxjfDPba92V3649/FA7kDLKvm4/PrMLalxULjq9gwL+OL/p3zritdv4Y0D+", - "uB719wdEnS6ty+PPjp4V5a2UoRfOnfRD+vedBGmXcqlKvVTHu7TogkZAl/Mp+zqmm0Au1QoOsIqjzlOz", - "VJXggHzxsIccTNDX1IrBpeSc8CoWumVV7K81qZNWM1hhNKf7/ZYsm6AYcDsvaqpC1zDNyGcXRl98jtgO", - "B9AXNmX4A5kvYzTjy4n9nNs5ZJZrtdIBaDQajWbl8gM2S87zcbt02W/V5LN2o/eAxfjqrHpX36+2TH50", - "R2ZiWBlOJ7eWdebcOMOnR2eflIqTgxV3waTWB9xx7Y4NjRCdcBgUVUqWSmCq0qjWp05wFV+QdEqzeHub", - "JoL/goRuMJyFl2vHg9XzGYU3EJjp8oC0dZfSL8n0XosNGQlleWyJTCprL1SzLljshsATXYkWsHPyknhk", - "MCRy8lVMUnmQ8yllqaSS5tpLqt23bPZtIP0w4diyFy7FX1U6RJkFSay6Ih7IqxYr5Wq6o2+Dy9qvgvwz", - "MHKgFeaXM9uQf4YhdL1hVDVKmBIOHU6D8vlg5TloBzNaEKur5pQsL4vfkzZf1ryUrDHCrqXrwj5N0C27", - "yBMJHGILHFuctN3dj1VCbxEyCbutCZoQ4WmsPglwEOGBsFHiACvmCWXCzkEXMWzAvEepkyfCk8d4Jpsp", - "ffZ6qxMvXg2+OmAetsqGMkFJirt+MyFy73qFFpR8RjYLnS/HSshs4zuNF5Oa1vZZ/GbCui5LJShrx1i+", - "aH9dlxVX2K3rlhJdXddlKTT1/Vu6BAmVM31J/3LmliqZwDy8TZwh6OhrJFQFHhj6AiwTWyfCqbCc5PsB", - "SVlDHUQFLoIkCB1BxwEpDYHmID4gkCEtwLTytTQujNoG0m6CqboPTrsQJcIDwnwH6WsyGBpRhrJgioAN", - "J1GRjuJKoOpL5OyGCMApDGtJ1f34ZEcMiEc5x0FM18XvKnLhQmHY2pcZLAQQ1FIqoxSu0R5YFe2LJfht", - "c993Mldr862xYY/FJPEtNsaGPdKvL9yYx+OXcm+f3Rblx22SyhrkC+pc1lWXowYe+XA1vy2s+5Z5cswn", - "ZFUyXCJ9cYmdwgmtKEpLXLQY5FZqLld8HGybZO5p8t4byqx8cPFiXmfgLTzJ88riQ8kc+TBlLf4mnuoW", - "f66T6OJPqIFTqfFTabLpUZUFkN9WHmurMxI1DfQswsTDxFwNnA/Eli75Sl/pwEbaprBBXTG24n5K9bK0", - "yc2SS1r4RkbhJTu9aLHuE97tdu+m/hm8bZy7tx3a/rgdld+Oy+Zx7aN41H8v7L1/ltQXzypBrPSjZRJK", - "bTV8hsWsJ5dfE+gIQaapOlR/nYQq6vlDP/wImVJ+dbsIqrQd9KfIMBnRtCwZXd8laOC3ULlAOp1Fp4Hz", - "vMrXNFDwHYbg62cNDxo2AmWV3acU7MjLNJ1O81C9Vq6doC8vdNrN1mWvlSvni3lbuI5W8oQi2VXvSA0f", - "JBIzoAoZAfRwLFB4mCmHN5TJF4eZSr6YL2X0PQCKTAXDoQTxwp/Y/K74Kq3U9hTpixa0EFRFtyCQXIAy", - "lUHlIBFe56qvOoZhYlWoZOh73GN+FspUAtU8fV5Vy2BKgJKZyERmPn55SdvUqMS/CJFNfEvvn+nfUQmS", - "+DXyggJLFfuqL9Sp2wKiD9QFl0yHHKeNpPnn6n75hxu+qY+WqA92qMUoF4uxFJ4g9dYJooCF1+DulzlC", - "nx67MSopdk5SJk4TySLVXzh0kM6+PGibaOUuTLnDph669NcP3fDVFRdjpFx5WCOiR6/89aPfkbk3TnKg", - "h5jkDRDxtsak+ndgMiZ0ShaWoPZ3rP4dQe+eygwBqkQCUEPdAGkmRLjaxaHw/uc3uUe477qQzQL1Ji6E", - "lPCK+EnBKRjzb0V6NO3O66au8oOAoGnYNQs8KqeOlQVkUMKDGwWUQ22CGAyFu5L3gVqlPoqpva6YxQ0r", - "viy4rikX4Wd7tJBBXIQfAPo1Oz756YrvyeNTCrPvS/Km9KtHb5tpSx+8BDbkcv2YQOa/Teiw+Xcrfkue", - "35JnQ8kTCI00SfOrlKct9KWQhmsUpcTHUzZSlSLA/48pSwlKpXBQki6/FabfYus/VGFaKb+0IRjXmlL0", - "l/i3BzeSJzFh9X9IivwFutfiVx3/bu0r7RuQKSyl/INoOr8nZYhUuYf+aE26XBPoXRTUDY5JfFK+3r6Z", - "9Kr+qgHS9ub3xKktyZK4IeyTDeAE1YU/coqPMMHcjh3i4NMzHIv50a2ryVTow0UCAkw0D2NKABxSX4Sf", - "zPUd8dkxr4ojfx/yaw/54JuRqVtDskB0kZuOmkUGIiaAUH2lvOE7kAU3V4Evwqa+ZQdxq/Pe1eXX/H/d", - "RjpVt5RZYUAx5PK0bZT4/uWneylqucF2ulWfhOeqOCH6TJVERtnggTgj8e+LBxdZRI0NqjZWVKQeLF94", - "kQcUIO6OjcIRzJIzCj9BlQvB5WufbMX5d0V/78e1+3FOrBWbMrHcSxvzv3OvJbfHBpsuViT1+Z6LijLl", - "llvaZ/oORfQODZE4iJjafsgEJtJ3PtDEXotc/+oGnM92Rojn742xfmNEn65dsS/CpdxmX/w2Un8bqf/X", - "jNQl2ZQm7xTwuE6xJGLmnzBYEi5pM5s3KagbMVZlpMTaqSsz/tKtP59DGrfrD2LTEQiI8Xub/Xu2mWb0", - "/7xNBiMGgo4DoiS3kJvm22y9RxsSnfRAjCjXSGM2v2N6OAPq6EzfqJv7j1DQ/KdO/crffIavXEr1AsSf", - "/d7Fv3fxNrsYLXOQ3LlRks/qE/IqaPKTfL+Yf7U00QAVJQukVS5BhF8p+Q/USz6dzveoaiJNinWDy7Kp", - "6Rv6hvfoHrRkChj0cF59SNLGI12uAj2sv9qeU54HxHLhTf2FSVlpKwuJaQJamFifDcAFtNBPDhN8tDO4", - "zDsaZh2cb9///wAAAP//ITEGsQWVAAA=", + "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", + "07+iVlWXAAA=", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/internal/cloudapi/v2/openapi.v2.yml b/internal/cloudapi/v2/openapi.v2.yml index 87dc9b3ee11..6dae8a16df7 100644 --- a/internal/cloudapi/v2/openapi.v2.yml +++ b/internal/cloudapi/v2/openapi.v2.yml @@ -612,6 +612,7 @@ components: - $ref: '#/components/schemas/AzureUploadStatus' - $ref: '#/components/schemas/ContainerUploadStatus' - $ref: '#/components/schemas/OCIUploadStatus' + - $ref: '#/components/schemas/PulpOSTreeUploadStatus' UploadStatusValue: type: string enum: ['success', 'failure', 'pending', 'running'] @@ -624,6 +625,7 @@ components: - azure - container - oci.objectstorage + - pulp AWSEC2UploadStatus: type: object required: @@ -692,6 +694,13 @@ components: properties: url: type: string + PulpOSTreeUploadStatus: + type: object + required: + - repo_url + properties: + repo_url: + type: string ComposeMetadata: allOf: - $ref: '#/components/schemas/ObjectReference' @@ -935,6 +944,7 @@ components: - org.osbuild.container - org.osbuild.gcp - org.osbuild.oci + - org.osbuild.pulp.ostree description: | The name of the upload target that matches the upload_options. upload_options: @@ -948,6 +958,7 @@ components: - $ref: '#/components/schemas/ContainerUploadOptions' - $ref: '#/components/schemas/LocalUploadOptions' - $ref: '#/components/schemas/OCIUploadOptions' + - $ref: '#/components/schemas/PulpOSTreeUploadOptions' description: | Options for a given upload destination. This should really be oneOf but AWSS3UploadOptions is a subset of @@ -1116,6 +1127,21 @@ components: example: 'latest' description: | Tag for the created container image + PulpOSTreeUploadOptions: + type: object + additionalProperties: false + required: + - basepath + properties: + basepath: + type: string + description: 'Basepath for distributing the repository' + repository: + type: string + description: 'Repository to import the ostree commit to' + server_address: + type: string + format: uri Customizations: type: object additionalProperties: false