Module: AzureDiskCommon
- Included in:
- AzureBlobDisk, AzureManagedDisk
- Defined in:
- lib/disk/modules/AzureDiskCommon.rb
Constant Summary collapse
- MAX_READ_LEN =
The maximum read length that supports MD5 return.
1024 * 1024 * 4
- SECTOR_LENGTH =
512
Instance Method Summary collapse
- #blob_properties ⇒ Object
- #blob_read(start_byte, length) ⇒ Object
- #d_close_common ⇒ Object
- #d_init_blob_disk(d_info) ⇒ Object
- #d_init_common(d_info) ⇒ Object
- #d_init_managed_disk(d_info) ⇒ Object
- #d_read_common(pos, len) ⇒ Object
- #key ⇒ Object
- #managed_disk ⇒ Object
Instance Method Details
#blob_properties ⇒ Object
71 72 73 74 75 76 |
# File 'lib/disk/modules/AzureDiskCommon.rb', line 71 def blob_properties @blob_properties ||= begin = @snapshot ? {:date => @snapshot} : {} @storage_acct.blob_properties(@container, @blob, key, ) end end |
#blob_read(start_byte, length) ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/disk/modules/AzureDiskCommon.rb', line 78 def blob_read(start_byte, length) $log.debug("#{@my_class}#blob_read(#{start_byte}, #{length})") = { :start_byte => start_byte, :length => length } if @storage_acct [:date] = @snapshot if @snapshot ret = @storage_acct.get_blob_raw(@container, @blob, key, ) else ret = managed_disk.read() end @reads += 1 @bytes += ret.body.length ret.body end |
#d_close_common ⇒ Object
45 46 47 48 49 50 51 52 53 54 |
# File 'lib/disk/modules/AzureDiskCommon.rb', line 45 def d_close_common @managed_disk&.close return nil unless $log.debug? t1 = Time.now.to_i $log.debug("#{@my_class}: close(#{@disk_path})") $log.debug("#{@my_class}: (#{@disk_path}) time: #{t1 - @t0}") $log.debug("#{@my_class}: (#{@disk_path}) reads: #{@reads}, split_reads: #{@split_reads}") $log.debug("#{@my_class}: (#{@disk_path}) bytes: #{@bytes}") nil end |
#d_init_blob_disk(d_info) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/disk/modules/AzureDiskCommon.rb', line 23 def d_init_blob_disk(d_info) @blob_uri = d_info.blob_uri @storage_acct_svc = d_info.storage_acct_svc @my_class = "AzureBlobDisk" uri_info = @storage_acct_svc.parse_uri(@blob_uri) @container = uri_info[:container] @blob = uri_info[:blob] @acct_name = uri_info[:account_name] @snapshot = uri_info[:snapshot] @storage_acct = @storage_acct_svc.accounts_by_name[@acct_name] @disk_path = @blob_uri raise "AzureBlob: Storage account #{@acct_name} not found." unless @storage_acct end |
#d_init_common(d_info) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/disk/modules/AzureDiskCommon.rb', line 9 def d_init_common(d_info) @blockSize = SECTOR_LENGTH if d_info.blob_uri d_init_blob_disk(d_info) else d_init_managed_disk(d_info) end $log.debug("#{@class}: open(#{@disk_path})") @t0 = Time.now.to_i @reads = 0 @bytes = 0 @split_reads = 0 end |
#d_init_managed_disk(d_info) ⇒ Object
37 38 39 40 41 42 43 |
# File 'lib/disk/modules/AzureDiskCommon.rb', line 37 def d_init_managed_disk(d_info) @disk_name = d_info.disk_name @storage_disk_svc = d_info.storage_disk_svc @resource_group = d_info.resource_group @my_class = "AzureManagedDisk" @disk_path = @disk_name end |
#d_read_common(pos, len) ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/disk/modules/AzureDiskCommon.rb', line 56 def d_read_common(pos, len) return blob_read(pos, len) unless len > MAX_READ_LEN @split_reads += 1 ret = "" blocks, rem = len.divmod(MAX_READ_LEN) blocks.times do ret << blob_read(pos, MAX_READ_LEN) end ret << blob_read(pos, rem) if rem > 0 ret end |
#key ⇒ Object
97 98 99 |
# File 'lib/disk/modules/AzureDiskCommon.rb', line 97 def key @key ||= @storage_acct_svc.list_account_keys(@storage_acct.name, @storage_acct.resource_group).fetch('key1') end |
#managed_disk ⇒ Object
101 102 103 |
# File 'lib/disk/modules/AzureDiskCommon.rb', line 101 def managed_disk @managed_disk ||= @storage_disk_svc.open(@disk_name, @resource_group) end |