@@ -26,6 +26,8 @@ import { stringify } from "yaml";
2626import { versions } from "../../../../versions.js" ;
2727import { ajv , validationErrorToString } from "../../../ajvInstance.js" ;
2828import { commandObj } from "../../../commandObj.js" ;
29+ import { CLI_NAME_FULL } from "../../../const.js" ;
30+ // import { getReadonlyContracts } from "../../../dealClient.js";
2931import { stringifyUnknown } from "../../../helpers/stringifyUnknown.js" ;
3032import { numToStr } from "../../../helpers/typesafeStringify.js" ;
3133import { splitErrorsAndResults } from "../../../helpers/utils.js" ;
@@ -1039,6 +1041,10 @@ export enum OnChainResourceType {
10391041 GPU ,
10401042}
10411043
1044+ function isOnChainResourceType ( value : unknown ) : value is OnChainResourceType {
1045+ return typeof value === "number" && value in OnChainResourceType ;
1046+ }
1047+
10421048export const resourceTypeToOnChainResourceType : Record <
10431049 ResourceType ,
10441050 OnChainResourceType
@@ -1488,62 +1494,53 @@ const resourcesMock = [
14881494 ty : OnChainResourceType . VCPU ,
14891495 metadata :
14901496 '{"manufacturer":"Intel","brand":"Xeon","architecture":"x86_64","generation":"Skylake"}' ,
1491- resourceId :
1492- "0x111122223333444455556666777788889999AAAABBBBCCCCDDDDEEEEFFFFCCC1" ,
1497+ id : "0x111122223333444455556666777788889999AAAABBBBCCCCDDDDEEEEFFFFCCC1" ,
14931498 } ,
14941499 {
14951500 ty : OnChainResourceType . VCPU ,
14961501 metadata :
14971502 '{"manufacturer":"AMD","brand":"EPYC","architecture":"x86_64","generation":"Rome"}' ,
1498- resourceId :
1499- "0x211122223333444455556666777788889999AAAABBBBCCCCDDDDEEEEFFFFCCC1" ,
1503+ id : "0x211122223333444455556666777788889999AAAABBBBCCCCDDDDEEEEFFFFCCC1" ,
15001504 } ,
15011505 {
15021506 ty : OnChainResourceType . RAM ,
15031507 metadata : '{"type":"DDR4","generation":"4"}' ,
1504- resourceId :
1505- "0x111122223333444455556666777788889999AAAABBBBCCCCDDDDEEEEFFFFCCC2" ,
1508+ id : "0x111122223333444455556666777788889999AAAABBBBCCCCDDDDEEEEFFFFCCC2" ,
15061509 } ,
15071510 {
15081511 ty : OnChainResourceType . RAM ,
15091512 metadata : '{"type":"DDR4","generation":"5"}' ,
1510- resourceId :
1511- "0x211122223333444455556666777788889999AAAABBBBCCCCDDDDEEEEFFFFCCC2" ,
1513+ id : "0x211122223333444455556666777788889999AAAABBBBCCCCDDDDEEEEFFFFCCC2" ,
15121514 } ,
15131515 {
15141516 ty : OnChainResourceType . STORAGE ,
15151517 metadata : '{"type":"SSD"}' ,
1516- resourceId :
1517- "0x111122223333444455556666777788889999AAAABBBBCCCCDDDDEEEEFFFFCCC3" ,
1518+ id : "0x111122223333444455556666777788889999AAAABBBBCCCCDDDDEEEEFFFFCCC3" ,
15181519 } ,
15191520 {
15201521 ty : OnChainResourceType . STORAGE ,
15211522 metadata : '{"type":"HDD"}' ,
1522- resourceId :
1523- "0x211122223333444455556666777788889999AAAABBBBCCCCDDDDEEEEFFFFCCC3" ,
1523+ id : "0x211122223333444455556666777788889999AAAABBBBCCCCDDDDEEEEFFFFCCC3" ,
15241524 } ,
15251525 {
15261526 ty : OnChainResourceType . NETWORK_BANDWIDTH ,
15271527 metadata : '{"type":"shared"}' ,
1528- resourceId :
1529- "0x111122223333444455556666777788889999AAAABBBBCCCCDDDDEEEEFFFFCCC4" ,
1528+ id : "0x111122223333444455556666777788889999AAAABBBBCCCCDDDDEEEEFFFFCCC4" ,
15301529 } ,
15311530 {
15321531 ty : OnChainResourceType . PUBLIC_IP ,
15331532 metadata : '{"version":"IPv4"}' ,
1534- resourceId :
1535- "0x111122223333444455556666777788889999AAAABBBBCCCCDDDDEEEEFFFFCCC5" ,
1533+ id : "0x111122223333444455556666777788889999AAAABBBBCCCCDDDDEEEEFFFFCCC5" ,
15361534 } ,
15371535 {
15381536 ty : OnChainResourceType . GPU ,
15391537 metadata : '{"manufacturer":"Nvidia","model":"RTX 3090"}' ,
1540- resourceId :
1541- "0x111122223333444455556666777788889999AAAABBBBCCCCDDDDEEEEFFFFCCC6" ,
1538+ id : "0x111122223333444455556666777788889999AAAABBBBCCCCDDDDEEEEFFFFCCC6" ,
15421539 } ,
15431540] as const satisfies {
15441541 ty : OnChainResourceType ;
15451542 metadata : string ;
1546- resourceId : string ;
1543+ id : string ;
15471544} [ ] ;
15481545
15491546async function getResources ( ) {
@@ -1565,6 +1562,7 @@ async function getResourcesFromChain(): Promise<ChainResources> {
15651562}
15661563
15671564async function getResourcesFromChainImpl ( ) : Promise < ChainResources > {
1565+ // TODO: get resources from chain
15681566 // const { readonlyContracts } = await getReadonlyContracts();
15691567 // const resources = await readonlyContracts.diamond.getResources();
15701568 const resources = await getResources ( ) ;
@@ -1577,13 +1575,21 @@ async function getResourcesFromChainImpl(): Promise<ChainResources> {
15771575 ip : { } ,
15781576 } ;
15791577
1580- for ( const { metadata, resourceId, ty } of resources ) {
1581- if ( ty === OnChainResourceType . GPU ) {
1578+ for ( const { metadata, id, ty } of resources ) {
1579+ const onChainResourceType = Number ( ty ) ;
1580+
1581+ if ( ! isOnChainResourceType ( onChainResourceType ) ) {
1582+ commandObj . error (
1583+ `Unknown resource type: ${ color . yellow ( onChainResourceType ) } . You may need to update ${ CLI_NAME_FULL } ` ,
1584+ ) ;
1585+ }
1586+
1587+ if ( onChainResourceType === OnChainResourceType . GPU ) {
15821588 continue ;
15831589 }
15841590
1585- const resourceType = onChainResourceTypeToResourceType [ ty ] ;
1586- const resourceIdWithoutPrefix = resourceId . slice ( 2 ) ;
1591+ const resourceType = onChainResourceTypeToResourceType [ onChainResourceType ] ;
1592+ const resourceIdWithoutPrefix = id . slice ( 2 ) ;
15871593
15881594 try {
15891595 const parsedMetadata = JSON . parse ( metadata ) ;
0 commit comments