module Providers Ec2 = 'ec2' Openstack = 'openstack' Static = 'static' def self.available [Ec2, Openstack, Static] end def self.functionalities { images: [Ec2, Openstack], stack_templates: [Ec2, Openstack], stacks: [Ec2, Openstack] } end def self.has_functionality?(provider, functionality) functionalities.fetch(functionality).include?(provider.to_s) end end