All files / utils images.ts

18.75% Statements 3/16
0% Branches 0/2
0% Functions 0/6
14.28% Lines 2/14

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49                    2x                                                                         2x  
import { DropdownItem } from '../components/selectinput';
import { ImagesMap } from '../types';
 
type SageMakerImagesApiResponse = {
  image_arn: string;
  image_display_name: string;
  image_description?: string;
  kernelspecs?: { DisplayName: string; Name: string }[];
}[];
 
const parseListSageMakerImagesAPIResponse = (apiResponse: SageMakerImagesApiResponse) => {
  Iif (apiResponse.length > 0) {
    const mapKernelSpecsToOptions = (kernelspecs: any) => {
      Iif (kernelspecs) {
        return kernelspecs.map((kernelspec: any) => ({ displayName: kernelspec.DisplayName, name: kernelspec.Name }));
      }
      return [];
    };
    return Object.fromEntries(
      apiResponse.map((imageMetadata: any) => [
        imageMetadata.image_arn,
        {
          arnEnvironment: imageMetadata.image_arn,
          displayName: imageMetadata.image_display_name,
          description: imageMetadata.image_description,
          kernelOptions: mapKernelSpecsToOptions(imageMetadata.kernelspecs),
        },
      ]),
    );
  }
  return {};
};
 
function getImageOptionsFromMap(imagesMap: ImagesMap): DropdownItem[] {
  const imageOptions: DropdownItem[] = [];
  Object.keys(imagesMap).forEach((imageArn) => {
    imageOptions.push({
      label: imagesMap[imageArn].displayName,
      value: imagesMap[imageArn].arnEnvironment,
      optionMetadata: {
        description: imagesMap[imageArn].description,
      },
    });
  });
  return imageOptions;
}
 
export { parseListSageMakerImagesAPIResponse, getImageOptionsFromMap };