@@ -1,7 +1,7 @@
 module Beaker
   class Platform < String
     #supported platforms
-    PLATFORMS = /^(centos|fedora|debian|oracle|redhat|scientific|sles|ubuntu|windows|solaris|aix|el)\-.+\-.+$/
+    PLATFORMS = /^(centos|fedora|debian|oracle|redhat|scientific|sles|ubuntu|windows|solaris|aix|el|opensuse)\-.+\-.+$/
 
     PLATFORM_VERSION_CODES = 
       { :debian => { "wheezy"  => "7",
module Beaker
  class Platform < String
    #supported platforms
    PLATFORMS = /^(centos|fedora|debian|oracle|redhat|scientific|sles|ubuntu|windows|solaris|aix|el)\-.+\-.+$/

    PLATFORM_VERSION_CODES = 
      { :debian => { "wheezy"  => "7",
                     "squeeze" => "6",
                   },
        :ubuntu => { "trusty"  => "1404", 
                     "saucy"   => "1310",
                     "raring"  => "1304",
                     "quantal" => "1210",
                     "precise" => "1204",
                   },
      }

    def initialize(name)
      if name !~ PLATFORMS
        raise ArgumentError, "Unsupported platform name #{name}"
      end
      super
    end

    def with_version_codename
      name, version, extra = self.split('-', 3)
      PLATFORM_VERSION_CODES.each_key do |platform|
        if name =~ /#{platform}/
          PLATFORM_VERSION_CODES[platform].each do |version_codename, version_number|
            #remove '.' from version number
            if version.delete('.') =~ /#{version_number}/
              version = version_codename
              break
            end
          end
          break
        end
      end
      [name, version, extra].join('-')
    end

    def with_version_number
      name, version, extra = self.split('-', 3)
      PLATFORM_VERSION_CODES.each_key do |platform|
        if name =~ /#{platform}/
          PLATFORM_VERSION_CODES[platform].each do |version_codename, version_number|
            if version =~ /#{version_codename}/
              version = version_number
              break
            end
          end
          break
        end
      end
      [name, version, extra].join('-')
    end

  end
end

Considering that opensuse and sles are using the same steps I don't believe that we need to add 'opensuse' as a platform - you can just define your opensuse boxes as being 'sles'. If there was some difference in operation/commands/execution I could see splitting it out, but for now I think that it just add clutter.