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