mirror of
https://github.com/ubicloud/ubicloud.git
synced 2025-10-04 22:02:18 +08:00
DISK_LIMIT_GB is introduced in this PR which allows us to set a dynamic size for the max limit
58 lines
1.7 KiB
Ruby
Executable file
58 lines
1.7 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")
|
|
|
|
if (disk_limit_gb_env = ENV["DISK_LIMIT_GB"])
|
|
disk_limit_gb = begin
|
|
Integer(disk_limit_gb_env)
|
|
rescue
|
|
0
|
|
end
|
|
if disk_limit_gb <= 0
|
|
raise "DISK_LIMIT_GB environment variable ('#{disk_limit_gb_env}') must be a positive integer."
|
|
end
|
|
logger.info("Maximum volume size is configured to #{disk_limit_gb}GB via DISK_LIMIT_GB env var.")
|
|
end
|
|
|
|
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)
|
|
|
|
Csi::V1::NodeService.mkdir_p
|
|
|
|
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
|