Files
ubicloud/kubernetes/csi/bin/ubi-csi-server
mohi-kalantari 73f337d040 Add Dockerfile for the CSI project
Uses a multi-stage build: first installs deps, then assembles final.
2025-07-23 17:03:00 +02:00

45 lines
1.3 KiB
Ruby
Executable File

#!/usr/bin/env ruby
# frozen_string_literal: true
$LOAD_PATH.unshift(File.expand_path("../lib", __dir__))
require "bundler/setup"
require "ubi_csi"
require "logger"
$stdout.sync = true
logger = Logger.new($stdout)
logger.level = $VERBOSE ? Logger::DEBUG : Logger::INFO
logger.debug("Starting main function")
endpoint = ENV["CSI_ENDPOINT"].dup
raise "CSI_ENDPOINT environment variable is not set" if endpoint.nil?
endpoint.strip!
raise "CSI_ENDPOINT must have unix:// prefix" unless endpoint.start_with?("unix://")
node_id = ENV["NODE_ID"].dup
raise "NODE_ID environment variable is not set" if node_id.nil?
node_id.strip!
raise "NODE_ID cannot be nil" if node_id.empty?
logger.debug("Creating gRPC server")
server = GRPC::RpcServer.new
socket_path = endpoint.sub("unix://", "")
logger.debug("Socket path: #{socket_path}")
File.delete(socket_path) if File.exist?(socket_path)
server.add_http2_port("unix:#{socket_path}", :this_port_is_insecure)
logger.debug("Registering services")
server.handle(Csi::V1::IdentityService.new(logger:))
server.handle(Csi::V1::ControllerService.new(logger:))
server.handle(Csi::V1::NodeService.new(logger:, node_id:))
logger.debug("Starting UbiCSI server on #{endpoint}")
begin
server.run_till_terminated
rescue => e
warn("Error starting server: #{e.message}\n#{e.backtrace.join("\n")}")
raise
end