Class: GDK::PortManager
- Inherits:
-
Object
- Object
- GDK::PortManager
- Defined in:
- lib/gdk/port_manager.rb
Direct Known Subclasses
Constant Summary collapse
- ServiceUnknownError =
Class.new(StandardError)
- PortAlreadyAllocated =
Class.new(StandardErrorWithMessage)
- PortInUseError =
Class.new(StandardError)
- DEFAULT_PORTS_FOR_SERVICES =
{ 2222 => 'sshd', 3000 => 'gdk', 3005 => 'gitlab_docs', 3010 => 'gitlab_pages', 3030 => 'gitlab_docs_https', 3038 => 'vite', 3333 => 'workhorse', 3444 => 'smartcard_nginx', 3807 => 'sidekiq_exporter', 3808 => 'webpack', 3907 => 'sidekiq_health_check', 4000 => 'grafana', 5000 => 'registry', 5052 => 'gitlab_ai_gateway', 5431 => 'postgresql_geo', 5432 => 'postgresql', 6000 => 'redis_cluster_dev_1', 6001 => 'redis_cluster_dev_2', 6002 => 'redis_cluster_dev_3', 6003 => 'redis_cluster_test_1', 6004 => 'redis_cluster_test_2', 6005 => 'redis_cluster_test_3', 6060 => 'gitlab-zoekt-indexer-test', 6070 => 'zoekt-webserver-test', 6080 => 'gitlab-zoekt-indexer-development-1', 6081 => 'gitlab-zoekt-indexer-development-2', 6090 => 'zoekt-webserver-development-1', 6091 => 'zoekt-webserver-development-2', 6432 => 'pgbouncer_replica-1', 6433 => 'pgbouncer_replica-2', 6434 => 'pgbouncer_replica-2-1', 6435 => 'pgbouncer_replica-2-2', 8001 => 'gitlab_spamcheck', 8065 => 'mattermost', 8080 => 'nginx', 8081 => 'gitlab_spamcheck_external', # was 8080 8082 => 'gitlab_ai_gateway_exporter', 8123 => 'clickhouse_http', 8200 => 'vault', 8201 => 'openbao_cluster', 9000 => 'object_store', 9001 => 'clickhouse_tcp', 9002 => 'object_store_console', 9009 => 'clickhouse_interserver', 9090 => 'prometheus', 9091 => 'snowplow_micro', 9095 => 'gitlab_topology_service_grpc', 9096 => 'gitlab_topology_service_rest', 9122 => 'gitlab_shell_exporter', 9229 => 'workhorse_exporter', 9236 => 'gitaly_exporter', 9393 => 'gitlab_http_router', 10101 => 'praefect_exporter', 50052 => 'duo-workflow-service' }.freeze
Instance Attribute Summary collapse
-
#claimed_ports_and_services ⇒ Object
readonly
Returns the value of attribute claimed_ports_and_services.
Class Method Summary collapse
Instance Method Summary collapse
- #claim(port, service_name) ⇒ Object
- #claimed_service_for_port(port) ⇒ Object
- #default_port_for_service(name) ⇒ Object
-
#initialize(config:) ⇒ PortManager
constructor
A new instance of PortManager.
- #resolve_service(name) ⇒ Object protected
Constructor Details
#initialize(config:) ⇒ PortManager
Returns a new instance of PortManager.
79 80 81 82 |
# File 'lib/gdk/port_manager.rb', line 79 def initialize(config:) @claimed_ports_and_services = {} @config = config end |
Instance Attribute Details
#claimed_ports_and_services ⇒ Object
Returns the value of attribute claimed_ports_and_services.
71 72 73 |
# File 'lib/gdk/port_manager.rb', line 71 def claimed_ports_and_services @claimed_ports_and_services end |
Class Method Details
.new_from_config(config: GDK.config) ⇒ Object
73 74 75 76 77 |
# File 'lib/gdk/port_manager.rb', line 73 def self.new_from_config(config: GDK.config) return GDK::CellsPortManager.new(config: config) if CellManager.are_we_in_a_cell?(config: config) GDK::PortManager.new(config: config) end |
Instance Method Details
#claim(port, service_name) ⇒ Object
84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/gdk/port_manager.rb', line 84 def claim(port, service_name) existing_service_name = claimed_service_for_port(port) if existing_service_name return true if existing_service_name == service_name raise PortAlreadyAllocated, "Port #{port} is already allocated for service '#{existing_service_name}'" end claimed_ports_and_services[port] = service_name true end |
#claimed_service_for_port(port) ⇒ Object
98 99 100 |
# File 'lib/gdk/port_manager.rb', line 98 def claimed_service_for_port(port) claimed_ports_and_services[port] end |
#default_port_for_service(name) ⇒ Object
102 103 104 |
# File 'lib/gdk/port_manager.rb', line 102 def default_port_for_service(name) resolve_service(name)[:port] end |
#resolve_service(name) ⇒ Object (protected)
108 109 110 111 112 113 114 115 116 117 118 |
# File 'lib/gdk/port_manager.rb', line 108 def resolve_service(name) services = DEFAULT_PORTS_FOR_SERVICES.to_a index = services.index { |service| service[1] == name } raise ServiceUnknownError, "Service '#{name}' is unknown, please add to GDK::PortManager::DEFAULT_PORTS_FOR_SERVICES" unless index { index: index, port: services[index][0] } end |