Beispiel #1
0
        public static int DownloadImage( )
        {
            var layers = HttpRequests.AskForLayers();

            Console.WriteLine("Image with " + layers.Count() + " layers");
            Console.WriteLine("Downloading...");

            for (int i = 0; i < layers.Count(); ++i)
            {
                var layer = layers.ElementAt(i);
                Fops.WriteToFileAppend(HttpRequests.DownloadLayer(layer["digest"].ToString()), UserConfig.w_tmp_rootfs_path);
                Console.WriteLine("Downloaded " + (i + 1) + " of " + layers.Count());
            }

            Console.WriteLine("Finished! All layers downloaded.");
            return(layers.Count());
        }
Beispiel #2
0
        //string config = get_layers["config"]["digest"].ToString();
        //var blobs = GetBlobs(config, repository);
        public static string DownloadAndGenerateImage(string repo, string image, string tag, string distro_name)
        {
            string session_id = UserConfig.session_id;
            string repository = repo + "/" + image;


            SetupAuth(repository);


            string temp_rootfs_name     = Linux_Commands.TemporalRootfsName(distro_name, session_id);
            string win10_temp_file_path = UserConfig.windows_temp_path + temp_rootfs_name;



            var layers = AskForLayers(repository, tag)["layers"];

            Console.WriteLine("Image with " + layers.Count() + " layers");
            Console.WriteLine("Downloading...");
            int i = 1;

            foreach (var layer in layers)
            {
                Fops.WriteToFileAppend(DownloadLayer(layer["digest"].ToString(), repository), win10_temp_file_path);
                Console.WriteLine("Downloaded " + i++ + " of " + layers.Count());
            }
            Console.WriteLine("Downloaded.");

            var linux_temporary_folder = "/tmp/wsld/" + distro_name + session_id;

            Console.WriteLine("Generating tar...");
            GenerateTar(linux_temporary_folder, temp_rootfs_name, distro_name);
            Console.WriteLine("Generated.");
            File.Delete(win10_temp_file_path);

            return(Path.Combine(UserConfig.windows_image_path, Linux_Commands.RootfsName(distro_name, session_id)));
        }