diff --git a/packages/api/internal/api/spec.gen.go b/packages/api/internal/api/spec.gen.go index 9df796b181..6b99622196 100644 --- a/packages/api/internal/api/spec.gen.go +++ b/packages/api/internal/api/spec.gen.go @@ -19,110 +19,110 @@ import ( var swaggerSpec = []string{ "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", - "vLgsNI23AAA=", + "i/a+yD1GZxOP/Kol0hf9dNJGg/eALkDrefPzf4MmtDdSkXzM5++oF9MpXEI6RGAf8/lHNe52EmXAOZ57", + "QPAxnyPzEFmy9sCPCyi6L08FFIhQhXCl+lDBcoUdBlJmJ0jk6mGazxGoo/hwQzLgAmeeBU7sI4ml9kSz", + "nGVYRHtRggW8kLNEgxiqlqpBMjHQPLNgnwosSn4M2LBzC/QaKeavBGa4TEW09+Vs4oEs6JFtcHC1AmJ6", + "iUlEBGR8CJ1NkqhoOsKM4WUvjg8Nfq+IWHTXn6C4ZAyoSJeIQZEzQegc5TTV/KXEkHljRcoQCyzQDJPU", + "x/ctzNjNSywcHJ0e5KWWry1ZfHSK4pwBV1tTR9GWjEsOhIpXuxLBhJJMsu/LanFCBcxB6ccDBhIl+7WF", + "2cV1bMaIAcrUZioSchakXtLSYwyFTiLiEdUfEimGZgSYpXx3DXfqsiReqZphfjFEUvUqh5hfEDp/CwKT", + "lMv3tfnV3tcnnEFgR12+tkBtQW4BaFam6RIZ8A5M1CIUdVq1ObuCOevEQddZjeATwNn+0QejVdbD7/7R", + "B3QBy9VRaxZ4o9bGafr7LNr70o8Tud9TLmn0bBLRMk3xeQra3h1NK2a/Y8jkwqdtj/EVusRpCd0JOxOk", + "mItTDp59fcRcIAkZJBaEV0C8whyVXIkELxCbZ34Uyg4e10eLeqAhQUOYTUp8S/jFIQhGYt6lwQQuSezZ", + "z1v1O7KU3gbCjKTAl1xAduI1bd5Xz5F8F/0NtuZbEwTX4vUEXc/4T16ZIaXuUU58ovdQPkOFfGjBlBB1", + "Zg/jC5y+WQp7wAZfyWeIFzgGaTmcq1EunRIqfn4d+SS2JJrArJIA15m0rYTq808sYjqgdjfSOKtF9ZT8", + "Bw7feDBK+AXi5D/QVl5yz4fkTa8O2/FB5B29/IyNNyVJiFwHp0ct8nK38I5eEpbTDKhAl5gRyWc+Xdol", + "+3f0MvkMjHtvAOaBpQuglwliJaXSkDDmYXDuSaQvQl3hnCceulaDkXrmAVcXREGjSK86xOFmIdc6ec/y", + "7EOG5+BexBIi584IxUKfJcNFISfU17KQmHKvc5NoHhehgb8eHDkDWbVyYDRQYDit3ridWNguPxmvijz1", + "7STKKYzQSe42byf9Y92dDo5t71PC152gQxQcmOTK/TiWrPov7qPGqR6DzCD0r+nvnxSN/3pw9ABXRYnF", + "sVdFz3F8t8E2nDpgKTDnVznzKOEj80RePUpeix5WU9PGIVDNfeaZvOTA/Br41DwZv1U/UKsVJjVcfFAN", + "2ggd8ErlDslnaREdMZiRaw+c1e/KsJEiT7+BLpuCUV8QchaypZx1puXMu47+/Y7rFP2HUPc2YqHDO1Mi", + "A+jOvMpm/Ah0LhYec1D93r/FkGI2G26uMPHgxQdDKVQ+Ei4gmRol1PWcpQR71OW+/LnasXFEe+38lAAV", + "2oedQMFAO7uMBTtkruu3vfMWZXUT7hOk1Y35diJVkWOC9L3lGCu3knuDFyF0tYCGGkdXJE0RXBeEwejL", + "EDRNiF7fqDNUKfEsZ8vhAx3aceodgRMsBt2whiYO7fB29GQIeT2GDReY9VwvPVDFHJmXRkOVC0mT4w45", + "VWM7UZehI9rRaMbyDF0tSLxAhDd2bi48wyLajea4UaiKg1ywOQzgEEGDxC3dWkA0yUyxvnWDepxU8lAd", + "PFo1lsB5OY8mEaGzPJpEV5gpJafsRp9mO8TX8vKub3oelAPOUKYeGk+c44xsiqOWR7RfnnR8pGaNVdyk", + "jhP2lPo0Q+8iUhHJ1/Rl/28c4pwmHHFCY0BQ5PHip5axHrjhKenu9xhl+FpehJpuCRNrg8Rux1w25uQS", + "KJITs0uc1kvRMjv3aBcXEU042C1JOjqMi56LVieKc3hwhOKczsi8ZDo0171mBVwdtYly6Ai+tk9XPlnn", + "Jvly9/98sP8EV72+0Lv6A1swV9Od6XV71HKaX31VeKQgvuoFfGo6za8qEIi82skCkH253tB5nqeAlV7B", + "pciPcMmh4cqf4ZSDJ8yaZ1gau2m6RIV8qSkB8UyAxoUkobz0rwj1jX1A/6lhUo9psutVe3FxV40HccnA", + "d5WSvyOcpsg4k+I8y0pqo81KjnU0oHPe1RSNJZBeW8uC10XZy7/7pKIkhZRcev0tRkhtrep0CeszQ8x9", + "/ubNeR5r9jFekpbvJC25ADYO6maw1/7Ms4z44jDqdztBzuIFcMGU7yPoBX9v71at0yuZLKdq2hIqcDTW", + "NahfmZaK72GVVXj1zriVxjngqXYbdS94tRe4j0MlUq3DuJEftPrdguYZToL7McAIRNs6QANeufVy6h60", + "AbmAJ45XNqiKMA6vaQaiqV28xav+VbRH5QPlAtPYK3esf4iYMfVVdxB/Jgw6An06iKyMmpFe034uavO/", + "zQpTIYjuoSeOCKi23cJ3TY5dBmoybQB59dkqSWFFknaleAQTjheQqFC2h0vlLV2CQ4/SKQUckaRFbVW4", + "POC5qkPiz3LwWQ6uIAehhyaHROCoHI6mG8pDsM/ia4T40vLJlSTDAqwjqWoitDLLCdG2cw4Te+Hlnbu6", + "vKMoSjw4Ou3jt2ocqpJYRirO6k195wuEQPdV8LK5knaZrBpndZ2OvuAtrc5Up+Osbg7ERXkELAavESAB", + "LicvVd5SocfpZK0xcyeEX3BfSF2oZCSLS53fhOOFimRvZ3WEeyw/u5F9b0aWhP/JYDicagJbB1n6rdNw", + "aPyTM7eNGqwdIG8Qe4AyG6jtbtDj03MAZHFneXJaSayu667kLXlXx59wIq9QCcNESmrF9JRCLPQfJV0A", + "TsXCE6CaRNcv5DQvLrGKIXE5X72RYzNz/cvbeo36xwN3tfrn03rdxvEOFpjON3eLG8z5WV0NtMjATCBP", + "cQy8zPoiK00XS7/a3pCT5ZE9BLeT6JsLNCV5holHyb/BHJB+6CR3V642hmczEiPCjcuNnKejUriAXrYz", + "L1sAcTMqldhSsppeJk0P1GbjTJsK/Dzp8Eo7PmJoNXRjew6NPgJ3PEAk9gmy33OY9znMu3aY15z9Yz73", + "F7noSGUz8IowTVBKKHRudepH7zzySV+lzCNVs6gNN+EQqB2aETDOt1DOaMitVsclH7z+6LGgqvbv1goZ", + "6DUhzYfLhJqXF1bGomSQyL3yrogZdfdsI9pz/0zN1jogv/ua3eVaYFRrT1w4ODA7dKT2uMxl+8agPG4s", + "4k3EOHRTF8YKhLBT5FPXHTIuNTkuSnktPooDhU59zo9ZmmPRTWzQMlPdp0O+hkRloQdT5cOeBvmiv9BD", + "JbYHfQu9voverfZ4RHon9e/ycMAHEp7yx0zHWSFJxlHfDlHXuHBQ7dCRS6yObJhaS2elZC3jlFc5v6q6", + "yJehVUUS/yBiEazIaQQDQtJpnK0p5c9tx3tSzS9PfQI489y6VHcKj2Fuiqisv0LIt301hfyt9Xy0p/hj", + "AWIB9evWxjOuktaUjltlOHshtJu6bcSwDeqboWNdmkYTJsvbAMs9tYXsc+Vf0Av4wxfuGerxFo9uKJEz", + "zqkprp6GI4wnC3BiKvUrTsixxe4jjAs3YH/sFai+7A5zJ5NGh/F/jjI6nhXkkIL00IEHR5bylBToyCzI", + "jIOuVcgmf7bHLLk/gWGc9DBvD4gOHy/pven9G1+g35MIIV8i+LyJ4zM9VK7IoIWu8NJ0dkipJl8W4/jK", + "6f80BE0pYG1exaxMTYcMyco6P7nPa3peN6IYkpgW4E7vinX9owNasfZkNaBXO4UeSTWuX/GyrqdSonZa", + "4Cu6MrAUUdxNi67hJS3K89Snypq2oNkm4UiPRznTfUBq9zU6X3rsNMdI5BIq6/JhGy49V7K1PJs+aiyL", + "ZA2a12jUr67pZnJdpHXfuBGeUINMl13dY7gM1qbUBn4aQrPJDZNKWDdFkSvglbzpSvkVBKQa6jVNx/bY", + "UXvQTjReOdU21lCndp+N2MBK2opVzYUGN9joRjQ6eB9QCptim3G0XOVt+X2BjT2+JymcFmmOPSRVMODe", + "PCFXfM1IqkQXTlX6BzIv2ZIglS7mlVgl8xhVpyx1Inpqbr7IyzRB54BKtU/VzmkQNHbvnQMfmz6Bmw+4", + "rhMYzeMLYPKYHu9e9cy5hoSXX0c9KYwdZB4bVSXcoHgB8YWKPGKqKtnhGuJSgEVuJZrr/JCgbFFXHO9a", + "yg7f0Cob9ng4+AkR0ufdp0FK6+B/w9DSx+4ASuHXB6ZZzuIRJWCutLla5KnteVcLBjWRIh1WUsRgjlmS", + "Aq9gHRZCM9tUxAME+bPtiYA5wugc8y4vhmlx5mtY0oeabocTM4t7t2v7RMwu7rDP708KcAHFYJtAm18u", + "x/atZ1cZZdtYfEwFFN5QXSek67MYBtIuO1uzznj1t/bGX2Fi8iBtVma4gLqx6d5mk82VbdfJbm42GzTg", + "9tm8zCTo6hRAufoqxpzqD/VPzD09L+SvFlpqWBV+clbqMuzq8khOtRFB1N/7JbxrXysWVwKfqvtJ0Oh5", + "qAuq3Kfeyhp1mnCl2rFVlLJisaatsyViOZVsqtdy8rD2S9035RwwA/be3in14b7aumrF4upQali9+kII", + "xev7SUZoY0LVVnsBOFHDTWPt/3+hBr44adZrm2CKnEf9b2iOow8vfnNhUL8/LQssVcDLMXuxg8PbsSN2", + "FebGztYgAzuZRIXq6qB6LQhp9Ubvdt9IhDqlInvRztbLrR3VJqsAigsS7UWvtna2dlSUUSwU/rY1el4o", + "9Ghazrkvoq/rrDCicNUulZe0p8JLH5JoLzrKuXCogpu+58DFmzxZbqz/dKvgvxWmNK61Rg/13Q32M/e0", + "X/U1N+80VoXEcammS6fNum+1avvbclDdwLt/rBzkcqtyT/qo+cvZrdRjeK7KBJqEoPi9SRzbN43vGdxq", + "IklBeNs/yt8Rpv20ooe51LLf+mSC+9GFgJe1HrLd/OCCPF2LAl4PJIvq89wNSaaR/NDY14+C0IK8uICl", + "gsYcRKBeEKepjq0bFcE7iPsVhJavmr0bMF6tx/xIe7DSdl1rsNuB3kEeYiBKRiHxHOqRmc+rE1ootOiS", + "tsgIweyezy+YHaTdi0x2MfUoIrm9AU/wu5EV8cQk8mpE4bL09o39JswoydxPK0Ywa2rZr781s6I4ti+O", + "k8QN5Hzrknhl7sYi9lzBtLU/hK4j+fKGsbV58dC5uYySEDsDhGJCRz8IoUiO12WYQRX+T/VY+5t8ils/", + "j8YA2lx4dclHBd/VoKuQvE3zBEZYHXqYZ9OfzIPN2BrjwvaqOZFq6ru+xaEP9GBKpX15btGRfGqISG1s", + "+0a3MrgNYuZXELq+27QR9CPmk22IsJrEMX0Ubier1AerO/NfJahsK3NlbrRbqNA9lAh0dkdyGqIdU5M4", + "ml6qWvAnKb3GkVbQTFVF4vbTLflMGqy67L1rpG6CpO5JhXWq3m+732rz2zYGtxYCKvNITfEtaK7xYqWR", + "fd4v620jGrctSke8uAmHLUoIVNgo0aAd1SJHM5LaOEedJ6q+JoH+VK22/4HP4z/LnZ3dn3FR/KNgefJn", + "9NMWeofjhTIvME10106OspILdA7o9PgjAhrnCSRbAYFU1XX2feTv7GHVWat7z930Whd5ihh3xhDjzgPq", + "Q8cJ/OVMKpq1jbBm3cPAZdxWnKpa1FacuivwXCK/p3t5hfaHvZQ3lu1KRLekOHwb/0GIqiE+t50eY2Ex", + "6nYC0lm544TpYd0Nqk+mHuRZhl9wkIMkatJmMzH04a0K+c6hsZNoEsF1karOniby5xORZpKvJOG9n0YN", + "RzIzfP1BP3y5s9MSZpOopOSvEswARef3avB5i7PuJlJ1eUZWN2j6QVnhpirB7/Vs/UbStBa9AZdWhaap", + "U9a/molZNwQY6dZqCboLkqbfhtV3X8ozeNOsFef5Eqk7W1iG3RMCNy4R1rkF8rrF4g9DFkGe37aJzEGy", + "sURjEnVH0MxHPXJtupl4866k9Baefg5cf5OmTnCpkE0oykiaElPEFbhNqHQvv2vD1hj0N/3uXJbM5wjq", + "ur2+XQZ2lRLdiLLeVd2ubEcq5NX6jj0AKyqsr8OImrKeuVFy45Bh6jJk3XV0BE8GjdI7sGVVJ6lZsk6S", + "w6zqe2w/tDFx2uZN1FDdRKiuv7xH/vRNC6p+1WWvEUcDmqx3sNW2fPYQYf9WJ4J1/RUuIz+ANf2d8n1h", + "22D6XR+qS2aru0WPp6Piet1d86FtcN1lo2GDK09fjKnWfKot6H1i/vXOL2PG/vKNUQmDGQO+gJ5UwmM9", + "pMGWcC2AJuqDq4Kb5g26t+lIMjqu1r0rKa3nfmt9Fdl8NMmTfuF+TqkWwxYOtfF1AYVAWHV3raW36vdw", + "raXyq5+ljTXwsZdWnvzIYEVLjGrIPtDN5AlQsOT9PvKVz9eQdPrFR6LPPjXbaoL8dF3ERiw/mOvkO5XR", + "ToNpP4lPQbhdqtvtpbfQib+DK7q2gsoJfJCs/cG7LXSA01RdlheES5NskScoK1NBihRMdX1+CeyKEWEK", + "7U9OPk50s3s1Ycn164BstxmnCR6vbXw5Sn/0XeQoA8xLUxNrj2Yl9dZIJj6pGnc/vpZpNApvV/7Lw9WK", + "o8aHCy9TBBZUQ92+vOt8Y8zs8mwj2ogb0qy6FJvZfzQbXQDORmZxe6/fJ+bBQwagVTXLHePO+kAPF99o", + "lzf1obGREyF/c1C1faOrhMf5T9y4nlMO5sfiiZp4Xe+JKV5+dp18X64TpwPcnfwmou4Wd89Ok1djxr56", + "MgJ5kMG3M3zdy+TC+S6wj+GDnwMeIQYO8fWzJHjykmAS6O0scsmEjMAlNKhEfz1ap1gEss6Yaq0Uzqaw", + "Ne51S7+vvNvT76tCxlemuvo9bOJs8zPkz7Jq47JK56GNsh3tUK/IqR+2xIyPMquetyFGHN0r5eyhbVaT", + "t3dnu9XC6xFzc9a2Zuvdjy5E7El3dGnnPvxZ3kZVo7xauxvfQ8itpTt/XGH9cZ1C2GDDk0vw2gTJNASP", + "NJRsv7WxlYoBYtIjKnI6cfu4rWr7VK+ODyg1Wipuol7xKfJ6b1limM3la/eCmPsTF80eL2vXJna6ggbr", + "E59+Mue9Koxj0EIQ05Hq4tsgo29R63wHmmRbf259+8Y08LztCW+oi6vb+mwU0emPNb+p+oOuT4GTwdG2", + "C6lHGe36ZY5G7cL5Ntt3i9ntuols2LnSbLEWql4dQvPU9oB9EGR362BpAtd15zIT0Dq3XXuDaaX6uw6t", + "ZvS+FM58zn+fzTgE8jhXTuIMOGHsh8jGSbH6y2v36mlodoJe0dNg5eyTDDv5+XGsQ2ENDlXNAbdvFpgv", + "+kvJMTXth1FK6IVyo2EkMNM9iiVa9feoLY3jJehnfCT3vq+6Gd6RZxUZF1g1SjBUvNDThp1rA90TR3kz", + "Xt4PfTsNqgO2gYsX0zs6tz8qmjdY+g5SJ++PPy53V6mA7i3W+7z7Pdc+d1Tde73ZeqPnS5RTQDlDWc50", + "3byCxKjaQvOV1fXyjesP0LZapXKxVM0WpU70aOuDkvGcScjzysJUJZMzlmcBYFG4Fidua8xx0OoWcKgD", + "mshByaj6BlKhP7u4evFGn9p/eZ8hzedK9kfIJbncbYYF7urf/bz7GB7ez7tP97ZtYPBdVbcPqMEHuaU7", + "lPYU7un3TOj2CwDjyfxpuQnuSlhqQnZpEam+fKLaRvO97W1ckC3YPd/CRRE5M9zUEcg6AHfT6kHQ/FFF", + "S92/G31U3Qe2Ldvt2e1/AwAA///zg27DLbgAAA==", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/packages/api/internal/api/types.gen.go b/packages/api/internal/api/types.gen.go index d5f6b3f1c0..7b48695a4a 100644 --- a/packages/api/internal/api/types.gen.go +++ b/packages/api/internal/api/types.gen.go @@ -667,6 +667,9 @@ type Template struct { // BuildID Identifier of the last successful build for given template BuildID string `json:"buildID"` + // BuildStatus Status of the template build + BuildStatus TemplateBuildStatus `json:"buildStatus"` + // CpuCount CPU cores for the sandbox CpuCount CPUCount `json:"cpuCount"` @@ -711,16 +714,13 @@ type TemplateBuild struct { Logs []string `json:"logs"` Reason *BuildStatusReason `json:"reason,omitempty"` - // Status Status of the template + // Status Status of the template build Status TemplateBuildStatus `json:"status"` // TemplateID Identifier of the template TemplateID string `json:"templateID"` } -// TemplateBuildStatus Status of the template -type TemplateBuildStatus string - // TemplateBuildFileUpload defines model for TemplateBuildFileUpload. type TemplateBuildFileUpload struct { // Present Whether the file is already present in the cache @@ -791,6 +791,9 @@ type TemplateBuildStartV2 struct { Steps *[]TemplateStep `json:"steps,omitempty"` } +// TemplateBuildStatus Status of the template build +type TemplateBuildStatus string + // TemplateStep Step in the template build process type TemplateStep struct { // Args Arguments for the step diff --git a/packages/api/internal/handlers/templates_list.go b/packages/api/internal/handlers/templates_list.go index 2277a173e1..9432932be7 100644 --- a/packages/api/internal/handlers/templates_list.go +++ b/packages/api/internal/handlers/templates_list.go @@ -85,6 +85,7 @@ func (a *APIStore) GetTemplates(c *gin.Context, params api.GetTemplatesParams) { LastSpawnedAt: item.Env.LastSpawnedAt, SpawnCount: item.Env.SpawnCount, BuildCount: item.Env.BuildCount, + BuildStatus: api.TemplateBuildStatus(item.BuildStatus), CreatedBy: createdBy, EnvdVersion: envdVersion, }) diff --git a/packages/db/queries/get_team_templates.sql b/packages/db/queries/get_team_templates.sql index b0f9c5f3b7..92e24d010c 100644 --- a/packages/db/queries/get_team_templates.sql +++ b/packages/db/queries/get_team_templates.sql @@ -1,6 +1,6 @@ -- name: GetTeamTemplates :many SELECT sqlc.embed(e), - eb.id as build_id, eb.vcpu as build_vcpu, eb.ram_mb as build_ram_mb, eb.total_disk_size_mb as build_total_disk_size_mb, eb.envd_version as build_envd_version, eb.firecracker_version as build_firecracker_version, + eb.id as build_id, eb.vcpu as build_vcpu, eb.ram_mb as build_ram_mb, eb.total_disk_size_mb as build_total_disk_size_mb, eb.envd_version as build_envd_version, eb.firecracker_version as build_firecracker_version, eb.status as build_status, u.id as creator_id, u.email as creator_email, COALESCE(ea.aliases, ARRAY[]::text[])::text[] AS aliases FROM public.envs AS e @@ -13,7 +13,7 @@ LEFT JOIN LATERAL ( LEFT JOIN LATERAL ( SELECT b.* FROM public.env_builds AS b - WHERE b.env_id = e.id AND b.status = 'uploaded' + WHERE b.env_id = e.id ORDER BY b.finished_at DESC LIMIT 1 ) eb ON TRUE diff --git a/packages/db/queries/get_team_templates.sql.go b/packages/db/queries/get_team_templates.sql.go index 78c7aee6b0..461c89ccfe 100644 --- a/packages/db/queries/get_team_templates.sql.go +++ b/packages/db/queries/get_team_templates.sql.go @@ -13,7 +13,7 @@ import ( const getTeamTemplates = `-- name: GetTeamTemplates :many SELECT e.id, e.created_at, e.updated_at, e.public, e.build_count, e.spawn_count, e.last_spawned_at, e.team_id, e.created_by, e.cluster_id, - eb.id as build_id, eb.vcpu as build_vcpu, eb.ram_mb as build_ram_mb, eb.total_disk_size_mb as build_total_disk_size_mb, eb.envd_version as build_envd_version, eb.firecracker_version as build_firecracker_version, + eb.id as build_id, eb.vcpu as build_vcpu, eb.ram_mb as build_ram_mb, eb.total_disk_size_mb as build_total_disk_size_mb, eb.envd_version as build_envd_version, eb.firecracker_version as build_firecracker_version, eb.status as build_status, u.id as creator_id, u.email as creator_email, COALESCE(ea.aliases, ARRAY[]::text[])::text[] AS aliases FROM public.envs AS e @@ -26,7 +26,7 @@ LEFT JOIN LATERAL ( LEFT JOIN LATERAL ( SELECT b.id, b.created_at, b.updated_at, b.finished_at, b.status, b.dockerfile, b.start_cmd, b.vcpu, b.ram_mb, b.free_disk_size_mb, b.total_disk_size_mb, b.kernel_version, b.firecracker_version, b.env_id, b.envd_version, b.ready_cmd, b.cluster_node_id, b.reason, b.version FROM public.env_builds AS b - WHERE b.env_id = e.id AND b.status = 'uploaded' + WHERE b.env_id = e.id ORDER BY b.finished_at DESC LIMIT 1 ) eb ON TRUE @@ -49,6 +49,7 @@ type GetTeamTemplatesRow struct { BuildTotalDiskSizeMb *int64 BuildEnvdVersion *string BuildFirecrackerVersion string + BuildStatus string CreatorID *uuid.UUID CreatorEmail *string Aliases []string @@ -80,6 +81,7 @@ func (q *Queries) GetTeamTemplates(ctx context.Context, teamID uuid.UUID) ([]Get &i.BuildTotalDiskSizeMb, &i.BuildEnvdVersion, &i.BuildFirecrackerVersion, + &i.BuildStatus, &i.CreatorID, &i.CreatorEmail, &i.Aliases, diff --git a/spec/openapi.yml b/spec/openapi.yml index 456a53cb2e..e57d3e448d 100644 --- a/spec/openapi.yml +++ b/spec/openapi.yml @@ -540,6 +540,7 @@ components: - buildCount - envdVersion - aliases + - buildStatus properties: templateID: type: string @@ -588,6 +589,8 @@ components: description: Number of times the template was built envdVersion: $ref: "#/components/schemas/EnvdVersion" + buildStatus: + $ref: "#/components/schemas/TemplateBuildStatus" TemplateBuildRequest: required: @@ -800,6 +803,15 @@ components: items: $ref: "#/components/schemas/BuildLogEntry" + TemplateBuildStatus: + type: string + description: Status of the template build + enum: + - building + - waiting + - ready + - error + TemplateBuild: required: - templateID @@ -827,13 +839,7 @@ components: type: string description: Identifier of the build status: - type: string - description: Status of the template - enum: - - building - - waiting - - ready - - error + $ref: "#/components/schemas/TemplateBuildStatus" reason: $ref: "#/components/schemas/BuildStatusReason" diff --git a/tests/integration/internal/api/models.gen.go b/tests/integration/internal/api/models.gen.go index d5f6b3f1c0..7b48695a4a 100644 --- a/tests/integration/internal/api/models.gen.go +++ b/tests/integration/internal/api/models.gen.go @@ -667,6 +667,9 @@ type Template struct { // BuildID Identifier of the last successful build for given template BuildID string `json:"buildID"` + // BuildStatus Status of the template build + BuildStatus TemplateBuildStatus `json:"buildStatus"` + // CpuCount CPU cores for the sandbox CpuCount CPUCount `json:"cpuCount"` @@ -711,16 +714,13 @@ type TemplateBuild struct { Logs []string `json:"logs"` Reason *BuildStatusReason `json:"reason,omitempty"` - // Status Status of the template + // Status Status of the template build Status TemplateBuildStatus `json:"status"` // TemplateID Identifier of the template TemplateID string `json:"templateID"` } -// TemplateBuildStatus Status of the template -type TemplateBuildStatus string - // TemplateBuildFileUpload defines model for TemplateBuildFileUpload. type TemplateBuildFileUpload struct { // Present Whether the file is already present in the cache @@ -791,6 +791,9 @@ type TemplateBuildStartV2 struct { Steps *[]TemplateStep `json:"steps,omitempty"` } +// TemplateBuildStatus Status of the template build +type TemplateBuildStatus string + // TemplateStep Step in the template build process type TemplateStep struct { // Args Arguments for the step