diff --git a/lib/gitlab/gl_repository.rb b/lib/gitlab/gl_repository.rb
index a56ca1e39e729b4665a33a192fdfb30edc04ade2..04dabe423e88694c1d82c2cf1612abe8aa58fb8e 100644
--- a/lib/gitlab/gl_repository.rb
+++ b/lib/gitlab/gl_repository.rb
@@ -1,7 +1,9 @@
 # frozen_string_literal: true
 
 module Gitlab
-  module GlRepository
+  class GlRepository
+    include Singleton
+
     PROJECT = RepoType.new(
       name: :project,
       access_checker_class: Gitlab::GitAccess,
@@ -19,7 +21,7 @@ module GlRepository
     }.freeze
 
     def self.types
-      TYPES
+      instance.types
     end
 
     def self.parse(gl_repository)
@@ -39,5 +41,11 @@ def self.parse(gl_repository)
     def self.default_type
       PROJECT
     end
+
+    def types
+      TYPES
+    end
+
+    private_class_method :instance
   end
 end
diff --git a/lib/gitlab/gl_repository/repo_type.rb b/lib/gitlab/gl_repository/repo_type.rb
index 7abe6c29a254ef54b74aae464e80ea6f9dc3713e..19915980d7f9fa9723cda011e77073cfd26846dd 100644
--- a/lib/gitlab/gl_repository/repo_type.rb
+++ b/lib/gitlab/gl_repository/repo_type.rb
@@ -1,7 +1,7 @@
 # frozen_string_literal: true
 
 module Gitlab
-  module GlRepository
+  class GlRepository
     class RepoType
       attr_reader :name,
                   :access_checker_class,