Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions libs/types/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ export type { ApplicationVolume } from './models/ApplicationVolume';
export type { ApplicationVolumeProviderSpec } from './models/ApplicationVolumeProviderSpec';
export type { ApplicationVolumeStatus } from './models/ApplicationVolumeStatus';
export { AppType } from './models/AppType';
export type { ArtifactApplicationProviderSpec } from './models/ArtifactApplicationProviderSpec';
export type { AuthConfig } from './models/AuthConfig';
export type { AuthOrganizationsConfig } from './models/AuthOrganizationsConfig';
export type { Batch } from './models/Batch';
Expand Down
1 change: 1 addition & 0 deletions libs/types/models/AppType.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,5 @@
*/
export enum AppType {
AppTypeCompose = 'compose',
AppTypeQuadlet = 'quadlet',
Comment thread
celdrake marked this conversation as resolved.
}
3 changes: 2 additions & 1 deletion libs/types/models/ApplicationProviderSpec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
/* eslint-disable */
import type { ApplicationEnvVars } from './ApplicationEnvVars';
import type { AppType } from './AppType';
import type { ArtifactApplicationProviderSpec } from './ArtifactApplicationProviderSpec';
import type { ImageApplicationProviderSpec } from './ImageApplicationProviderSpec';
import type { InlineApplicationProviderSpec } from './InlineApplicationProviderSpec';
export type ApplicationProviderSpec = (ApplicationEnvVars & {
Expand All @@ -12,5 +13,5 @@ export type ApplicationProviderSpec = (ApplicationEnvVars & {
*/
name?: string;
appType?: AppType;
} & (ImageApplicationProviderSpec | InlineApplicationProviderSpec));
} & (ImageApplicationProviderSpec | ArtifactApplicationProviderSpec | InlineApplicationProviderSpec));

11 changes: 11 additions & 0 deletions libs/types/models/ArtifactApplicationProviderSpec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
/* generated using openapi-typescript-codegen -- do no edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
export type ArtifactApplicationProviderSpec = {
/**
* Reference to an OCI artifact for the application package.
*/
artifact: string;
};

4 changes: 4 additions & 0 deletions libs/types/models/EnrollmentRequestSpec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,9 @@ export type EnrollmentRequestSpec = {
* A set of labels that the service will apply to this device when its enrollment is approved.
*/
labels?: Record<string, string>;
/**
* The rendered version of the device from desired.json (optional).
*/
knownRenderedVersion?: string;
};

Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import {
InlineConfigTemplate,
KubeSecretTemplate,
SpecConfigTemplate,
isArtifactAppProvider,
isGitConfigTemplate,
isGitProviderSpec,
isHttpConfigTemplate,
Expand Down Expand Up @@ -284,6 +285,7 @@ export const getApplicationPatches = (
value: updatedApps.map(toAPIApplication),
});
} else {
// TODO EDM-2451: Add support for artifact applications
const needsPatch = currentApps.some((currentApp, index) => {
const updatedApp = updatedApps[index];
const isCurrentImageApp = isImageAppProvider(currentApp);
Expand All @@ -307,7 +309,9 @@ export const getApplicationPatches = (
if (isCurrentImageApp) {
return (updatedApp as ImageAppForm).image !== currentApp.image;
}

if (isArtifactAppProvider(currentApp)) {
return false;
}
return hasInlineApplicationChanged(currentApp, updatedApp as InlineAppForm);
});
if (needsPatch) {
Expand Down Expand Up @@ -386,28 +390,31 @@ const getAppFormVolumes = (app: ApplicationProviderSpecFixed) =>

export const getApplicationValues = (deviceSpec?: DeviceSpec): AppForm[] => {
const apps = deviceSpec?.applications || [];
return apps.map((app) => {
if (isImageAppProvider(app)) {
return apps
.filter((app) => !isArtifactAppProvider(app))
.map((app) => {
if (isImageAppProvider(app)) {
return {
specType: AppSpecType.OCI_IMAGE,
name: app.name || '',
image: app.image,
variables: getAppFormVariables(app),
volumes: getAppFormVolumes(app),
};
}
// TODO EDM-2451: Add support for artifact applications
return {
specType: AppSpecType.OCI_IMAGE,
specType: AppSpecType.INLINE,
name: app.name || '',
image: app.image,
files: (app as InlineApplicationProviderSpec).inline.map((file) => ({
path: file.path || '',
content: file.content,
base64: file.contentEncoding === EncodingType.EncodingBase64,
})),
variables: getAppFormVariables(app),
volumes: getAppFormVolumes(app),
};
}
return {
specType: AppSpecType.INLINE,
name: app.name || '',
files: app.inline.map((file) => ({
path: file.path || '',
content: file.content,
base64: file.contentEncoding === EncodingType.EncodingBase64,
})),
variables: getAppFormVariables(app),
volumes: getAppFormVolumes(app),
};
});
});
};

export const getConfigTemplatesValues = (deviceSpec?: DeviceSpec, registerMicroShift?: boolean) => {
Expand Down
3 changes: 3 additions & 0 deletions libs/ui-components/src/types/deviceSpec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import {
ArtifactApplicationProviderSpec,
ConfigProviderSpec,
DisruptionBudget,
GitConfigProviderSpec,
Expand Down Expand Up @@ -87,6 +88,8 @@ export const isInlineAppProvider = (app: ApplicationProviderSpecFixed): app is I
'inline' in app;
export const isImageAppProvider = (app: ApplicationProviderSpecFixed): app is ImageApplicationProviderSpec =>
'image' in app;
export const isArtifactAppProvider = (app: ApplicationProviderSpecFixed): app is ArtifactApplicationProviderSpec =>
'artifact' in app;

export const isImageAppForm = (app: AppBase): app is ImageAppForm => app.specType === AppSpecType.OCI_IMAGE;
export const isInlineAppForm = (app: AppBase): app is InlineAppForm => app.specType === AppSpecType.INLINE;
Expand Down
3 changes: 2 additions & 1 deletion libs/ui-components/src/types/extraTypes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import {
AppType,
ApplicationEnvVars,
ApplicationVolumeProviderSpec,
ArtifactApplicationProviderSpec,
ConditionType,
Device,
EnrollmentRequest,
Expand Down Expand Up @@ -45,7 +46,7 @@ export type ApplicationProviderSpecFixed = ApplicationEnvVars &
ApplicationVolumeProviderSpec & {
name?: string;
appType?: AppType;
} & (ImageApplicationProviderSpec | { inline: InlineApplicationFileFixed[] });
} & (ImageApplicationProviderSpec | ArtifactApplicationProviderSpec | { inline: InlineApplicationFileFixed[] });
Comment thread
celdrake marked this conversation as resolved.

type CliArtifact = {
os: string;
Expand Down