feat: add corebuild worker selection

This commit is contained in:
2026-05-07 19:49:56 +00:00
parent c55eb5b832
commit d9dcc5b048
5 changed files with 171 additions and 36 deletions
+16 -5
View File
@@ -92,15 +92,25 @@ export class CloudlyViewBaseOs extends DeesElement {
return html`
<cloudly-sectionheading>BaseOS Images</cloudly-sectionheading>
<div class="layout">
<dees-panel .title=${'Create Image'} .subtitle=${'Build a Cloudly-bound BaseOS ISO'} .variant=${'outline'}>
<dees-panel .title=${'Create Image'} .subtitle=${'Build a Cloudly-bound BaseOS artifact'} .variant=${'outline'}>
<dees-form @formData=${(eventArg: CustomEvent) => this.createBuild((eventArg.detail as any).data)}>
<dees-input-dropdown
.key=${'imageKind'}
.label=${'Image Type'}
.selectedOption=${'balena-raw'}
.options=${[
{ key: 'balena-raw', option: 'balenaOS raw image', payload: null },
{ key: 'ubuntu-iso', option: 'Ubuntu bootstrap ISO', payload: null },
]}
></dees-input-dropdown>
<dees-input-dropdown
.key=${'architecture'}
.label=${'Architecture'}
.selectedOption=${'amd64'}
.options=${[
{ key: 'amd64', option: 'amd64 ISO', payload: null },
{ key: 'arm64', option: 'arm64 ISO', payload: null },
{ key: 'amd64', option: 'amd64', payload: null },
{ key: 'arm64', option: 'arm64', payload: null },
{ key: 'rpi', option: 'Raspberry Pi', payload: null },
]}
></dees-input-dropdown>
<dees-input-text .key=${'cloudlyUrl'} .label=${'Cloudly URL'} .value=${window.location.origin} .required=${true}></dees-input-text>
@@ -108,7 +118,7 @@ export class CloudlyViewBaseOs extends DeesElement {
<dees-input-text .key=${'wifiSsid'} .label=${'WiFi SSID'} .required=${false}></dees-input-text>
<dees-input-text .key=${'wifiPassword'} .label=${'WiFi Password'} .isPasswordBool=${true} .required=${false}></dees-input-text>
<dees-input-textarea .key=${'sshPublicKey'} .label=${'SSH Public Key'} .required=${false}></dees-input-textarea>
<dees-input-text .key=${'sourceImageUrl'} .label=${'Source ISO URL'} .description=${'Optional. Defaults to Ubuntu 24.04 through isocreator.'} .required=${false}></dees-input-text>
<dees-input-text .key=${'sourceImageUrl'} .label=${'Source Image URL'} .description=${'Required for balenaOS raw images (.img, .img.xz, or .zip). Optional for Ubuntu ISO builds.'} .required=${false}></dees-input-text>
<dees-form-submit .text=${this.isLoading ? 'Creating...' : 'Create BaseOS Image'} .disabled=${this.isLoading}></dees-form-submit>
</dees-form>
</dees-panel>
@@ -128,7 +138,7 @@ export class CloudlyViewBaseOs extends DeesElement {
<div class="build-head">
<div>
<strong>${data.hostname || buildArg.id}</strong>
<div class="meta">${data.architecture} · ${data.cloudlyUrl}</div>
<div class="meta">${data.imageKind || 'ubuntu-iso'} · ${data.architecture} · ${data.cloudlyUrl}</div>
</div>
<dees-badge .text=${data.status} .type=${data.status === 'ready' ? 'success' : data.status === 'failed' ? 'error' : 'info'}></dees-badge>
</div>
@@ -158,6 +168,7 @@ export class CloudlyViewBaseOs extends DeesElement {
const response = await this.fireBaseOsRequest('createBaseOsImageBuild', {
build: {
architecture: formDataArg.architecture || 'amd64',
imageKind: formDataArg.imageKind || undefined,
cloudlyUrl: formDataArg.cloudlyUrl || window.location.origin,
hostname: formDataArg.hostname || undefined,
sourceImageUrl: formDataArg.sourceImageUrl || undefined,