Skip to content

Commit 793b4f1

Browse files
committed
Add categories to container and package parsing
1 parent 49f94e5 commit 793b4f1

7 files changed

Lines changed: 23 additions & 2 deletions

File tree

packages/dockerApi/src/list/parseContainerInfo.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ export function parseContainerInfo(container: ContainerInfo): PackageContainer {
3434
}));
3535
// Declared here for reusability purposes
3636
const isDnp = Boolean(labels.dnpName) || containerName.includes(CONTAINER_NAME_PREFIX);
37-
const isCore = typeof labels.isCore === "boolean" ? labels.isCore : containerName.includes(CONTAINER_CORE_NAME_PREFIX);
37+
const isCore =
38+
typeof labels.isCore === "boolean" ? labels.isCore : containerName.includes(CONTAINER_CORE_NAME_PREFIX);
3839

3940
return {
4041
// Identification
@@ -72,6 +73,7 @@ export function parseContainerInfo(container: ContainerInfo): PackageContainer {
7273
avatarUrl: resolveAvatarUrl(labels.avatar, dnpName, isCore),
7374
origin: labels.origin,
7475
chain: labels.chain,
76+
categories: labels.categories,
7577
canBeFullnode: allowedFullnodeDnpNames.includes(dnpName),
7678
isMain: labels.isMain,
7779
// Default settings on the original package version's docker-compose

packages/dockerApi/src/list/parsePackageFromContainer.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ export function groupPackagesFromContainers(containers: PackageContainer[]): Ins
2020
"avatarUrl",
2121
"origin",
2222
"chain",
23+
"categories",
2324
"domainAlias",
2425
"canBeFullnode"
2526
]),

packages/dockerCompose/src/labelsDb.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ const labelParseFns: {
5757
return valueParsed as ChainDriver;
5858
return undefined;
5959
},
60+
"dappnode.dnp.categories": (value) => parseJsonSafe<string[]>(value) || undefined,
6061
"dappnode.dnp.isCore": parseBool,
6162
"dappnode.dnp.isMain": parseBool,
6263
"dappnode.dnp.dockerTimeout": parseNumber,
@@ -79,6 +80,7 @@ const labelStringifyFns: {
7980
value && chainDriversTypes.includes(value as ChainDriverType)
8081
? writeString(value as ChainDriverType)
8182
: writeJson(value as ChainDriverSpecs),
83+
"dappnode.dnp.categories": writeJson,
8284
"dappnode.dnp.isCore": writeBool,
8385
"dappnode.dnp.isMain": writeBool,
8486
"dappnode.dnp.dockerTimeout": writeNumber,
@@ -120,6 +122,7 @@ export function readContainerLabels(labelsRaw: ContainerLabelsRaw): Partial<{
120122
avatar: string;
121123
origin: string;
122124
chain: ChainDriver;
125+
categories: string[];
123126
isCore: boolean;
124127
isMain: boolean;
125128
dockerTimeout: number;
@@ -137,6 +140,7 @@ export function readContainerLabels(labelsRaw: ContainerLabelsRaw): Partial<{
137140
avatar: labelValues["dappnode.dnp.avatar"],
138141
origin: labelValues["dappnode.dnp.origin"],
139142
chain: labelValues["dappnode.dnp.chain"],
143+
categories: labelValues["dappnode.dnp.categories"],
140144
isCore: labelValues["dappnode.dnp.isCore"],
141145
isMain: labelValues["dappnode.dnp.isMain"],
142146
dockerTimeout: labelValues["dappnode.dnp.dockerTimeout"],
@@ -153,6 +157,7 @@ export function writeMetadataToLabels({
153157
dependencies,
154158
avatar,
155159
chain,
160+
categories,
156161
origin,
157162
isCore,
158163
isMain,
@@ -164,6 +169,7 @@ export function writeMetadataToLabels({
164169
dependencies?: Dependencies;
165170
avatar?: string;
166171
chain?: ChainDriver;
172+
categories?: string[];
167173
origin?: string;
168174
isCore?: boolean;
169175
isMain?: boolean;
@@ -177,6 +183,7 @@ export function writeMetadataToLabels({
177183
"dappnode.dnp.avatar": avatar,
178184
"dappnode.dnp.origin": origin,
179185
"dappnode.dnp.chain": chain,
186+
"dappnode.dnp.categories": categories,
180187
"dappnode.dnp.isCore": isCore,
181188
"dappnode.dnp.isMain": isMain,
182189
"dappnode.dnp.dockerTimeout": dockerTimeout

packages/dockerCompose/src/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ export interface ContainerLabelTypes {
1818
"dappnode.dnp.avatar": string;
1919
"dappnode.dnp.origin": string;
2020
"dappnode.dnp.chain": ChainDriver;
21+
"dappnode.dnp.categories": string[];
2122
"dappnode.dnp.isCore": boolean;
2223
"dappnode.dnp.isMain": boolean;
2324
"dappnode.dnp.dockerTimeout": number;

packages/dockerCompose/test/unit/labelDb.test.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ describe("Parse and validate manifest labels to be used in the compose", () => {
1313
avatar: "avatar-url",
1414
origin: "origin-url",
1515
chain: "ethereum2-beacon-chain-prysm",
16+
categories: undefined,
1617
isCore: true,
1718
isMain: true,
1819
dockerTimeout: 10,
@@ -54,6 +55,7 @@ describe("Parse and validate manifest labels to be used in the compose", () => {
5455
chain: {
5556
driver: "ethereum2-beacon-chain-prysm"
5657
},
58+
categories: undefined,
5759
isCore: true,
5860
isMain: true,
5961
dockerTimeout: 10,
@@ -93,6 +95,7 @@ describe("Parse and validate manifest labels to be used in the compose", () => {
9395
avatar: "avatar-url",
9496
origin: "origin-url",
9597
chain: undefined,
98+
categories: undefined,
9699
isCore: true,
97100
isMain: true,
98101
dockerTimeout: 10,

packages/installer/src/dappnodeInstaller.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,11 @@ export class DappnodeInstaller extends DappnodeRepository {
4949
super(
5050
ipfsUrl,
5151
provider,
52-
{ baseUrl: params.CONTENT_MIRROR_BASE_URL, timeoutMs: params.CONTENT_MIRROR_TIMEOUT_MS, maxBytes: params.CONTENT_MIRROR_MAX_BYTES },
52+
{
53+
baseUrl: params.CONTENT_MIRROR_BASE_URL,
54+
timeoutMs: params.CONTENT_MIRROR_TIMEOUT_MS,
55+
maxBytes: params.CONTENT_MIRROR_MAX_BYTES
56+
},
5357
() => db.mirrorProviderEnabled.get()
5458
);
5559
}
@@ -225,6 +229,7 @@ export class DappnodeInstaller extends DappnodeRepository {
225229
dependencies: sanitizeDependencies(metadata.dependencies || {}),
226230
avatar: this.fileToMultiaddress(avatarFile),
227231
chain: metadata.chain,
232+
categories: metadata.categories,
228233
origin,
229234
isCore,
230235
isMain:

packages/types/src/calls.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -523,6 +523,7 @@ export interface PackageContainer {
523523
avatarUrl: string;
524524
origin?: string;
525525
chain?: ChainDriver;
526+
categories?: string[];
526527
domainAlias?: string[];
527528
canBeFullnode?: boolean;
528529
isMain?: boolean;
@@ -546,6 +547,7 @@ export type InstalledPackageData = Pick<
546547
| "avatarUrl"
547548
| "origin"
548549
| "chain"
550+
| "categories"
549551
| "domainAlias"
550552
| "canBeFullnode"
551553
> & {

0 commit comments

Comments
 (0)