コード例 #1
0
ファイル: MLModel.cs プロジェクト: ru-sh/lacmus-app
        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);
            }
        }
コード例 #2
0
ファイル: MLModel.cs プロジェクト: ru-sh/lacmus-app
        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);
            }
        }
コード例 #3
0
ファイル: MLModel.cs プロジェクト: ru-sh/lacmus-app
        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);
            }
        }
コード例 #4
0
ファイル: MLModel.cs プロジェクト: ru-sh/lacmus-app
        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);
            }
        }
コード例 #5
0
ファイル: MLModel.cs プロジェクト: ru-sh/lacmus-app
 public MLModel(MLModelConfig config)
 {
     _docker = new Docker.Docker();
     _id     = "";
     _config = config;
 }