in kernelspecs/kernelspecs.go [75:112]
func CombinedKernelSpecs(localBackend *backends.Backend, remoteBackend *backends.Backend) (*resources.KernelSpecs, error) {
var defaultKernelSpecs string
unifiedView := &resources.KernelSpecs{
KernelSpecs: make(map[string]*resources.KernelSpec),
}
localKernelSpecs, err := fetchKernelSpecs(localBackend)
if err != nil {
return unifiedView, fmt.Errorf("failure fetching the local kernelspecs: %w", err)
}
if localKernelSpecs != nil {
if localKernelSpecs.Default != "" {
defaultKernelSpecs = localBackend.UnifiedID(localKernelSpecs.Default)
unifiedView.Default = defaultKernelSpecs
}
for id, spec := range localKernelSpecs.KernelSpecs {
unifiedID := localBackend.UnifiedID(id)
unifiedView.KernelSpecs[unifiedID] = UnifiedView(spec, localBackend)
}
}
remoteKernelSpecs, err := fetchKernelSpecs(remoteBackend)
if err != nil {
log.Printf("failure fetching the remote kernelspecs %v\n", err)
// Local Kernels are populated. Return local kernelspecs.
if len(unifiedView.KernelSpecs) > 0 {
return unifiedView, nil
}
return unifiedView, fmt.Errorf("failure fetching the local+remote kernelspecs: %w", err)
}
if remoteKernelSpecs != nil && remoteKernelSpecs.Default != "" {
defaultKernelSpecs = remoteBackend.UnifiedID(remoteKernelSpecs.Default)
unifiedView.Default = defaultKernelSpecs
for id, spec := range remoteKernelSpecs.KernelSpecs {
unifiedID := remoteBackend.UnifiedID(id)
unifiedView.KernelSpecs[unifiedID] = UnifiedView(spec, remoteBackend)
}
}
return unifiedView, nil
}