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); } }