Class: OsCtl::Image::Operations::Image::Export
- Includes:
- Lib::Utils::Log
- Defined in:
- lib/osctl/image/operations/image/export.rb
Instance Attribute Summary collapse
- #build ⇒ Operations::Image::Build readonly
-
#container_config ⇒ Object
readonly
protected
Returns the value of attribute container_config.
Instance Method Summary collapse
- #execute ⇒ Object
- #export_archive ⇒ Object protected
- #export_stream ⇒ Object protected
-
#initialize(build) ⇒ Export
constructor
A new instance of Export.
Methods inherited from Base
Constructor Details
#initialize(build) ⇒ Export
Returns a new instance of Export.
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/osctl/image/operations/image/export.rb', line 13 def initialize(build) super() @build = build @container_config = ContainerConfig.new container_config.distribution = build.image.distribution container_config.version = build.image.version container_config.arch = build.image.arch container_config.vendor = build.image.vendor container_config.variant = build.image.variant container_config.dataset = OsCtl::Lib::Zfs::Dataset.new( build.output_dataset, base: build.output_dataset ) container_config.rootfs = build.install_dir return unless build.has_config_file? container_config.override_with(build.read_config_file) end |
Instance Attribute Details
#build ⇒ Operations::Image::Build (readonly)
10 11 12 |
# File 'lib/osctl/image/operations/image/export.rb', line 10 def build @build end |
#container_config ⇒ Object (readonly, protected)
Returns the value of attribute container_config.
41 42 43 |
# File 'lib/osctl/image/operations/image/export.rb', line 41 def container_config @container_config end |
Instance Method Details
#execute ⇒ Object
34 35 36 37 |
# File 'lib/osctl/image/operations/image/export.rb', line 34 def execute export_archive if build.output_tar export_stream end |
#export_archive ⇒ Object (protected)
43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/osctl/image/operations/image/export.rb', line 43 def export_archive f = File.open(build.output_tar, 'w') exporter = OsCtl::Lib::Exporter::Tar.new( container_config, f, compression: :auto ) exporter.('full') exporter.dump_configs exporter.pack_rootfs ensure f && f.close end |
#export_stream ⇒ Object (protected)
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/osctl/image/operations/image/export.rb', line 58 def export_stream f = File.open(build.output_stream, 'w') exporter = OsCtl::Lib::Exporter::Zfs.new( container_config, f, compression: :gzip, compressed_send: false ) exporter.('full') exporter.dump_configs exporter.dump_rootfs do exporter.dump_base end ensure f && f.close end |