public static async Task <List <uint> > GetAvailableVersionsFromRegistry(MLModelConfig config) { try { using (var docker = new Docker.Docker()) { var versions = new List <uint>(); var tags = await docker.GetTagsFromDockerRegistry(config.Image.Name); foreach (var t in tags) { try { var rex = new Regex($"{config.ApiVersion}\\.[0-9]+-{config.GetTagSuffix()}"); if (!rex.IsMatch(t)) { continue; } versions.Add(uint.Parse(t.Split('.').Last().Split('-').First())); } catch { Log.Warning($"Cannot parse tag {t}."); } } return(versions); } } catch (Exception e) { throw new Exception("Unable to get available ml model versions from registry.", e); } }
public static async Task <List <uint> > GetInstalledVersions(MLModelConfig config) { try { using (var docker = new Docker.Docker()) { var versions = new List <uint>(); var tags = await docker.GetInstalledTags(config.Image.Name); foreach (var t in tags) { try { var rex = new Regex($"{config.ApiVersion}\\.[0-9]+-{config.GetTagSuffix()}"); if (!rex.IsMatch(t)) { Log.Warning($"WARN: local model with tag {t} installed but not used.\n" + $"You can remove it by using command `docker rmi -f {config.Image.Name}:{t}`"); continue; } versions.Add(uint.Parse(t.Split('.').Last().Split('-').First())); } catch { Log.Warning($"Cannot parse tag {t}."); } } return(versions); } } catch (Exception e) { throw new Exception("Unable to get installed ml model versions.", e); } }
public static async Task <List <MLModelConfig> > GetAvailableModelsFromRegistry(string repo) { try { using (var docker = new Docker.Docker()) { var result = new List <MLModelConfig>(); var tags = await docker.GetTagsFromDockerRegistry(repo); foreach (var t in tags) { try { var rex = new Regex($"[0-9]+\\.[0-9]+\\-[a-z]+"); if (!rex.IsMatch(t)) { continue; } var model = new MLModelConfig(); model.Image.Name = repo; model.Image.Tag = t; model.GetConfigFromImage(); result.Add(model); } catch { Log.Warning($"Cannot parse tag {t}."); } } return(result); } } catch (Exception e) { throw new Exception("Unable to get available ml model versions from registry.", e); } }
public static async Task <List <MLModelConfig> > GetInstalledModels() { try { using (var docker = new Docker.Docker()) { var result = new List <MLModelConfig>(); var images = await docker.GetInstalledImages(); foreach (var image in images) { try { var rex = new Regex($"[a-z-]+\\:[0-9]+\\.[0-9]+\\-[a-z]+"); if (rex.IsMatch(image)) { var model = new MLModelConfig(); model.Image.Name = image.Split(':').First(); model.Image.Tag = image.Split(':').Last(); model.GetConfigFromImage(); result.Add(model); } } catch { Log.Warning($"Cannot parse tag {image}."); } } return(result); } } catch (Exception e) { throw new Exception("Unable to get installed ml model versions.", e); } }
public MLModel(MLModelConfig config) { _docker = new Docker.Docker(); _id = ""; _config = config; }