app/helpers/ems_cloud_helper/textual_summary.rb
module EmsCloudHelper::TextualSummary
include TextualMixins::TextualRefreshStatus
include TextualMixins::TextualCustomButtonEvents
include TextualMixins::TextualZone
include TextualMixins::EmsCommon
#
# Groups
#
def textual_group_properties
TextualGroup.new(
_("Properties"),
%i[description hostname ipaddress type port guid region keystone_v3_domain_id]
)
end
def textual_group_relationships
TextualGroup.new(
_("Relationships"),
%i[
ems_infra network_manager availability_zones host_aggregates cloud_tenants flavors
security_groups placement_groups instances images cloud_volumes orchestration_stacks storage_managers cloud_databases
custom_button_events tenant
]
)
end
def textual_group_status
TextualGroup.new(_("Status"), textual_authentications(@record.authentication_for_summary) + %i[refresh_status refresh_date])
end
def textual_group_smart_management
TextualTags.new(_("Smart Management"), %i[zone tags])
end
#
# Items
#
def textual_description
return nil if @record.try(:description).blank?
{:label => _("Description"), :value => @record.description}
end
def textual_region
return nil if @record.provider_region.blank?
label_val = _('Region')
{:label => label_val, :value => @record.provider_region}
end
def textual_keystone_v3_domain_id
return nil if !@record.respond_to?(:keystone_v3_domain_id) || @record.keystone_v3_domain_id.nil?
label_val = _("Keystone V3 Domain ID")
{:label => label_val, :value => @record.keystone_v3_domain_id}
end
def textual_hostname
@record.hostname
end
def textual_ipaddress
@record.ipaddress.present? ? {:label => _("Discovered IP Address"), :value => @record.ipaddress} : nil
end
def textual_type
{:label => _('Type'), :value => @record.emstype_description}
end
def textual_port
@record.port.present? ? {:label => _("API Port"), :value => @record.port} : nil
end
def textual_guid
{:label => _("Management Engine GUID"), :value => @record.guid}
end
def textual_instances
num = @record.number_of(:vms)
h = {:label => _('Instances'), :icon => "pficon pficon-virtual-machine", :value => num}
if num.positive? && role_allows?(:feature => "vm_show_list")
h[:link] = ems_cloud_path(@record.id, :display => 'instances')
h[:title] = _("Show all Instances")
end
h
end
def textual_images
num = @record.number_of(:miq_templates)
h = {:label => _('Images'), :icon => "pficon pficon-virtual-machine", :value => num}
if num.positive? && role_allows?(:feature => "miq_template_show_list")
h[:link] = ems_cloud_path(@record.id, :display => 'images')
h[:title] = _("Show all Images")
end
h
end
def textual_cloud_volumes
num = @record.number_of(:cloud_volumes)
h = {:label => _('Cloud Volumes'), :icon => "pficon pficon-volume", :value => num}
if num.positive? && role_allows?(:feature => "cloud_volume_show_list")
h[:link] = ems_cloud_path(@record.id, :display => 'cloud_volumes')
h[:title] = _("Show Cloud Volumes")
end
h
end
def textual_ems_infra
textual_link(@record.try(:provider).try(:infra_ems))
end
def textual_network_manager
textual_link(@record.ext_management_system.try(:network_manager))
end
def textual_storage_managers
num = @record.try(:storage_managers) ? @record.number_of(:storage_managers) : 0
h = {:label => _('Storage Managers'), :icon => "fa fa-database", :value => num}
if num.positive? && role_allows?(:feature => "ems_storage_show_list")
h[:title] = _("Show all Storage Managers")
h[:link] = ems_cloud_path(@record.id, :display => 'storage_managers')
end
h
end
def textual_placement_groups
num = @record.try(:placement_groups) ? @record.number_of(:placement_groups) : 0
h = {:label => _('Placement Groups'), :icon => "fa fa-database", :value => num}
if num.positive?
h[:title] = _("Show all Placement Groups")
h[:link] = ems_cloud_path(@record.id, :display => 'placement_groups')
end
h
end
def textual_cloud_databases
num = @record.try(:cloud_databases) ? @record.number_of(:cloud_databases) : 0
h = {:label => _('Cloud Databases'), :icon => "fa fa-database", :value => num}
if num.positive? && role_allows?(:feature => "cloud_database_show_list")
h[:title] = _("Show all Cloud Databases")
h[:link] = ems_cloud_path(@record.id, :display => 'cloud_databases')
end
h
end
def textual_availability_zones
textual_link(@record.availability_zones, :label => _('Availability Zones'))
end
def textual_host_aggregates
textual_link(@record.host_aggregates, :label => _('Host Aggregates'))
end
def textual_cloud_tenants
textual_link(@record.cloud_tenants, :label => _('Cloud Tenants'))
end
def textual_orchestration_stacks
textual_link(@record.orchestration_stacks, :label => _('Orchestration Stacks'))
end
def textual_flavors
textual_link(@record.flavors, :label => _('Flavors'))
end
def textual_security_groups
num = @record.number_of(:security_groups)
h = {:label => _('Security Groups'), :icon => "pficon pficon-cloud-security", :value => num}
if num.positive? && role_allows?(:feature => "security_group_show_list")
h[:link] = ems_cloud_path(@record.id, :display => 'security_groups')
h[:title] = _("Show all Security Groups")
end
h
end
def textual_tenant
return nil unless User.current_user.super_admin_user?
{:label => _('Tenant'), :value => @record.tenant.name}
end
end