Class: Pvectl::Commands::EditDns
- Inherits:
-
Object
- Object
- Pvectl::Commands::EditDns
- Defined in:
- lib/pvectl/commands/edit_dns.rb
Overview
Handler for the ‘pvectl edit dns` command.
Opens the DNS resolver configuration for a node in a YAML editor. On save, applies the changes via PUT /nodes/node/dns.
The node identifier may be supplied either as a positional argument (matching ‘pvectl edit node NAME` semantics) or via the –node flag.
Class Method Summary collapse
-
.execute(args, options, global_options) ⇒ Integer
Executes the edit dns command.
Instance Method Summary collapse
-
#execute ⇒ Integer
Executes the edit flow.
-
#initialize(args, options, global_options) ⇒ EditDns
constructor
Initializes the command.
Constructor Details
#initialize(args, options, global_options) ⇒ EditDns
Initializes the command.
36 37 38 39 40 |
# File 'lib/pvectl/commands/edit_dns.rb', line 36 def initialize(args, , ) @args = args @options = @global_options = end |
Class Method Details
.execute(args, options, global_options) ⇒ Integer
Executes the edit dns command.
27 28 29 |
# File 'lib/pvectl/commands/edit_dns.rb', line 27 def self.execute(args, , ) new(args, , ).execute end |
Instance Method Details
#execute ⇒ Integer
Executes the edit flow.
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/pvectl/commands/edit_dns.rb', line 45 def execute node_name = @args.first || @options[:node] return usage_error("NODE is required (positional argument or --node flag)") unless node_name && !node_name.empty? load_config connection = Pvectl::Connection.new(@config) service = build_edit_service(connection) result = service.execute(node_name: node_name) if result.nil? $stdout.puts "Edit cancelled, no changes made." return ExitCodes::SUCCESS end if result.successful? display_diff(result) if @options[:"dry-run"] $stdout.puts "(dry-run mode — no changes applied)" else $stdout.puts "DNS configuration for node #{node_name} updated successfully." end ExitCodes::SUCCESS else $stderr.puts "Error: #{result.error}" ExitCodes::GENERAL_ERROR end rescue Pvectl::Config::ConfigNotFoundError, Pvectl::Config::InvalidConfigError, Pvectl::Config::ContextNotFoundError, Pvectl::Config::ClusterNotFoundError, Pvectl::Config::UserNotFoundError raise rescue StandardError => e $stderr.puts "Error: #{e.}" ExitCodes::GENERAL_ERROR end |