Module: Morpheus::Cli::StorageVolumesHelper

Included in:
StorageVolumeTypes, StorageVolumes
Defined in:
lib/morpheus/cli/mixins/storage_volumes_helper.rb

Overview

including storage volumes and storage volume types

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(klass) ⇒ Object



9
10
11
# File 'lib/morpheus/cli/mixins/storage_volumes_helper.rb', line 9

def self.included(klass)
  klass.send :include, Morpheus::Cli::PrintHelper
end

Instance Method Details

#format_storage_volume_source(storage_volume) ⇒ Object



115
116
117
# File 'lib/morpheus/cli/mixins/storage_volumes_helper.rb', line 115

def format_storage_volume_source(storage_volume)
  storage_volume['source']
end

#format_storage_volume_status(record, return_color = cyan) ⇒ Object



100
101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'lib/morpheus/cli/mixins/storage_volumes_helper.rb', line 100

def format_storage_volume_status(record, return_color=cyan)
  out = ""
  status_string = record['status']
  if status_string.nil? || status_string.empty? || status_string == "unknown"
    out << "#{white}UNKNOWN#{return_color}"
  elsif status_string == 'provisioned' || status_string == 'unattached'
    out << "#{cyan}#{status_string.capitalize}#{return_color}"
  elsif status_string == 'syncing'
    out << "#{yellow}#{status_string.capitalize}#{return_color}"
  else
    out << "#{red}#{status_string ? status_string.capitalize : 'N/A'}#{record['statusMessage'] ? "#{return_color} - #{record['statusMessage']}" : ''}#{return_color}"
  end
  out
end

#get_available_storage_volume_types(refresh = false) ⇒ Object



57
58
59
60
61
62
# File 'lib/morpheus/cli/mixins/storage_volumes_helper.rb', line 57

def get_available_storage_volume_types(refresh=false)
  if !@available_storage_volume_types || refresh
    @available_storage_volume_types = storage_volume_types_interface.list({max:1000})[storage_volume_type_list_key]
  end
  return @available_storage_volume_types
end

#storage_volume_labelObject



33
34
35
# File 'lib/morpheus/cli/mixins/storage_volumes_helper.rb', line 33

def storage_volume_label
  'Storage Volume'
end

#storage_volume_label_pluralObject



37
38
39
# File 'lib/morpheus/cli/mixins/storage_volumes_helper.rb', line 37

def storage_volume_label_plural
  'Storage Volume'
end

#storage_volume_list_keyObject



29
30
31
# File 'lib/morpheus/cli/mixins/storage_volumes_helper.rb', line 29

def storage_volume_list_key
  'storageVolumes'
end

#storage_volume_object_keyObject



25
26
27
# File 'lib/morpheus/cli/mixins/storage_volumes_helper.rb', line 25

def storage_volume_object_key
  'storageVolume'
end

#storage_volume_type_for_id(val) ⇒ Object



72
73
74
75
76
77
78
79
80
# File 'lib/morpheus/cli/mixins/storage_volumes_helper.rb', line 72

def storage_volume_type_for_id(val)
  record = get_available_storage_volume_types().find { |z| z['id'].to_i == val.to_i}
  label = "Storage Volume Type"
  if record.nil?
    print_red_alert "#{label} not found by id #{val}"
    return nil
  end
  return record
end

#storage_volume_type_for_name(val) ⇒ Object



82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/morpheus/cli/mixins/storage_volumes_helper.rb', line 82

def storage_volume_type_for_name(val)
  records = get_available_storage_volume_types().select { |z| z['name'].downcase == val.downcase || z['code'].downcase == val.downcase}
  label = "Storage Volume Type"
  if records.empty?
    print_red_alert "#{label} not found by name '#{val}'"
    return nil
  elsif records.size > 1
    print_red_alert "More than one #{label.downcase} found by name '#{val}'"
    print_error "\n"
    puts_error as_pretty_table(records, [:id, :name], {color:red})
    print_red_alert "Try using ID instead"
    print_error reset,"\n"
    return nil
  else
    return records[0]
  end
end

#storage_volume_type_for_name_or_id(val) ⇒ Object



64
65
66
67
68
69
70
# File 'lib/morpheus/cli/mixins/storage_volumes_helper.rb', line 64

def storage_volume_type_for_name_or_id(val)
  if val.to_s =~ /\A\d{1,}\Z/
    return storage_volume_type_for_id(val)
  else
    return storage_volume_type_for_name(val)
  end
end

#storage_volume_type_labelObject



49
50
51
# File 'lib/morpheus/cli/mixins/storage_volumes_helper.rb', line 49

def storage_volume_type_label
  'Storage Volume Type'
end

#storage_volume_type_label_pluralObject



53
54
55
# File 'lib/morpheus/cli/mixins/storage_volumes_helper.rb', line 53

def storage_volume_type_label_plural
  'Storage Volume Types'
end

#storage_volume_type_list_keyObject



45
46
47
# File 'lib/morpheus/cli/mixins/storage_volumes_helper.rb', line 45

def storage_volume_type_list_key
  'storageVolumeTypes'
end

#storage_volume_type_object_keyObject



41
42
43
# File 'lib/morpheus/cli/mixins/storage_volumes_helper.rb', line 41

def storage_volume_type_object_key
  'storageVolumeType'
end

#storage_volume_types_interfaceObject



19
20
21
22
23
# File 'lib/morpheus/cli/mixins/storage_volumes_helper.rb', line 19

def storage_volume_types_interface
  # @api_client.storage_volume_types
  raise "#{self.class} has not defined @storage_volume_types_interface" if @storage_volume_types_interface.nil?
  @storage_volume_types_interface
end

#storage_volumes_interfaceObject



13
14
15
16
17
# File 'lib/morpheus/cli/mixins/storage_volumes_helper.rb', line 13

def storage_volumes_interface
  # @api_client.storage_volumes
  raise "#{self.class} has not defined @storage_volumes_interface" if @storage_volumes_interface.nil?
  @storage_volumes_interface
end