app/abilities/atmosphere/appliance_ability_builder.rb
#
# Appliance abilities.
#
module Atmosphere
class ApplianceAbilityBuilder < AbilityBuilder
include Atmosphere::ApplianceAbilityBuilderExt
def add_user_abilities!
can [:read, :update, :destroy, :endpoints, :action],
Appliance, appliance_set: { user_id: user.id }
can :create, Appliance do |appl|
appl.owned_by?(user) &&
appl.appliance_type.appropriate_for?(appl.appliance_set) &&
can_start?(appl) &&
can_start_ext?(appl)
end
can :reboot, Appliance, appliance_set: {
user_id: user.id, appliance_set_type: 'development'
}
can :scale, Appliance, appliance_set: {
user_id: user.id
}
end
def add_developer_abilities!
can :save_vm_as_tmpl, Appliance,
appliance_set: { user_id: user.id, appliance_set_type: 'development' }
end
private
def can_start?(appliance)
at = appliance.appliance_type
if appliance.development?
@pdp_class.new(user).can_start_in_development?(at)
else
@pdp_class.new(user).can_start_in_production?(at)
end
end
end
end