Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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);
            }
        }