app/helpers/cloud_tenant_helper/textual_summary.rb
module CloudTenantHelper::TextualSummary
include TextualMixins::TextualEmsCloud
include TextualMixins::TextualGroupTags
include TextualMixins::TextualCustomButtonEvents
#
# Groups
#
def textual_group_properties
TextualGroup.new(_("Properties"), %i[name description])
end
def textual_group_relationships
TextualGroup.new(
_("Relationships"),
%i[
ems_cloud instances images cloud_object_store_containers
cloud_volumes cloud_volume_snapshots cloud_networks cloud_subnets
network_routers network_services security_groups security_policies
floating_ips network_ports custom_button_events
]
)
end
def textual_name
@record.name
end
def textual_description
@record.description
end
def textual_group_quotas
quotas = @record.cloud_resource_quotas.order(:service_name, :name)
q = quotas.collect { |quota| textual_quotas(quota) }
TextualGroup.new(_("Quotas"), q)
end
#
# Items
#
def textual_instances
num = @record.number_of(:vms)
h = {:label => _('Instances'), :icon => "pficon pficon-virtual-machine", :value => num}
if num > 0 && role_allows?(:feature => "vm_show_list")
h[:link] = url_for_only_path(:action => 'show', :id => @record, :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 > 0 && role_allows?(:feature => "miq_template_show_list")
h[:link] = url_for_only_path(:action => 'show', :id => @record, :display => 'images')
h[:title] = _("Show all Images")
end
h
end
def textual_quotas(quota)
label = quota_label(quota.service_name, quota.name)
num = quota.value.to_i
used = quota.used.to_i < 0 ? "Unknown" : quota.used
value = num < 0 ? "Unlimited" : "#{used} used of #{quota.value}"
{:label => label, :value => value}
end
def quota_label(service_name, quota_name)
"#{service_name.titleize} - #{quota_name.titleize}"
end
def textual_cloud_volumes
label = _('Volumes')
num = @record.number_of(:cloud_volumes)
h = {:label => label, :icon => "pficon pficon-volume", :value => num}
if num > 0 && role_allows?(:feature => "cloud_volume_show_list")
h[:title] = _("Show all %{label}") % {:label => label}
h[:link] = url_for_only_path(:action => 'show', :id => @record, :display => "cloud_volumes")
end
h
end
def textual_cloud_volume_snapshots
label = _('Volume Snapshots')
num = @record.number_of(:cloud_volume_snapshots)
h = {:label => label, :icon => "fa fa-camera", :value => num}
if num > 0 && role_allows?(:feature => "cloud_volume_snapshot_show_list")
h[:title] = _("Show all %{label}") % {:label => label}
h[:link] = url_for_only_path(:action => 'show', :id => @record, :display => "cloud_volume_snapshots")
end
h
end
def textual_cloud_object_store_containers
num = @record.number_of(:cloud_object_store_containers)
h = {:label => _('Cloud Object Store Containers'), :icon => "ff ff-cloud-object-store", :value => num}
if num > 0 && role_allows?(:feature => "cloud_object_store_container_show_list")
h[:link] = url_for_only_path(:action => 'show', :id => @record, :display => 'cloud_object_store_containers')
h[:title] = _("Show all Cloud Object Store Containers")
end
h
end
def textual_security_groups
textual_link(@record.security_groups, :label => _('Security Groups'))
end
def textual_security_policies
textual_link(@record.security_policies, :label => _('Security Policies'))
end
def textual_floating_ips
textual_link(@record.floating_ips, :label => _('Floating IPs'))
end
def textual_network_routers
textual_link(@record.network_routers, :label => _('Network Routers'))
end
def textual_network_services
textual_link(@record.network_services, :label => _('Network Services'))
end
def textual_network_ports
textual_link(@record.network_ports, :label => _('Network Ports'))
end
def textual_cloud_networks
textual_link(@record.cloud_networks, :label => _('Cloud Networks'))
end
def textual_cloud_subnets
textual_link(@record.cloud_subnets, :label => _('Cloud Subnets'))
end
end