Module: Central::Cli::Common
- Included in:
- Apps::BuildCommand, Apps::DeployCommand, Apps::InitCommand, Apps::ListCommand, Apps::LogsCommand, Apps::MonitorCommand, Apps::RemoveCommand, Apps::RestartCommand, Apps::ScaleCommand, Apps::ShowCommand, Apps::StartCommand, Apps::StopCommand, Auth::Aws::CreateCommand, Auth::ListCommand, Central::Cli::Containers::ExecCommand, Central::Cli::Containers::InspectCommand, Etcd::GetCommand, Etcd::ListCommand, Etcd::MkdirCommand, Etcd::RemoveCommand, Etcd::SetCommand, ExternalRegistries::AddCommand, ExternalRegistries::DeleteCommand, ExternalRegistries::ListCommand, ExternalRegistries::RemoveCommand, LoginCommand, LogoutCommand, Master::Aws::CreateCommand, Master::Azure::CreateCommand, Master::DigitalOcean::CreateCommand, Master::ListCommand, Master::UseCommand, Master::Users::AddRoleCommand, Master::Users::InviteCommand, Master::Users::ListCommand, Master::Users::RemoveCommand, Master::Users::RemoveRoleCommand, Master::Vagrant::CreateCommand, Master::Vagrant::RestartCommand, Master::Vagrant::SshCommand, Master::Vagrant::StartCommand, Master::Vagrant::StopCommand, Master::Vagrant::TerminateCommand, Nodes::AddLabelCommand, Nodes::Aws::CreateCommand, Nodes::Aws::RestartCommand, Nodes::Aws::TerminateCommand, Nodes::Azure::CreateCommand, Nodes::Azure::RestartCommand, Nodes::Azure::TerminateCommand, Nodes::DigitalOcean::CreateCommand, Nodes::DigitalOcean::RestartCommand, Nodes::DigitalOcean::TerminateCommand, Nodes::Labels::AddCommand, Nodes::Labels::RemoveCommand, Nodes::ListCommand, Nodes::RemoveCommand, Nodes::RemoveLabelCommand, Nodes::ShowCommand, Nodes::SshCommand, Nodes::UpdateCommand, Nodes::Vagrant::CreateCommand, Nodes::Vagrant::RestartCommand, Nodes::Vagrant::SshCommand, Nodes::Vagrant::StartCommand, Nodes::Vagrant::StopCommand, Nodes::Vagrant::TerminateCommand, RegisterCommand, Registry::CreateCommand, Registry::DeleteCommand, Registry::RemoveCommand, Services::AddEnvCommand, Services::AddSecretCommand, Services::ContainersCommand, Services::CreateCommand, Services::DeleteCommand, Services::DeployCommand, Services::Envs::AddCommand, Services::Envs::ListCommand, Services::Envs::RemoveCommand, Services::EnvsCommand, Services::LinkCommand, Services::ListCommand, Services::LogsCommand, Services::MonitorCommand, Services::RemoveCommand, Services::RemoveEnvCommand, Services::RemoveSecretCommand, Services::RestartCommand, Services::ScaleCommand, Services::Secrets::LinkCommand, Services::Secrets::UnlinkCommand, Services::ServicesHelper, Services::ShowCommand, Services::StartCommand, Services::StatsCommand, Services::StopCommand, Services::UnlinkCommand, Services::UpdateCommand, Stacks::AddUserCommand, Stacks::AuditLogCommand, Stacks::CloudConfigCommand, Stacks::CreateCommand, Stacks::CurrentCommand, Stacks::EnvCommand, Stacks::ListCommand, Stacks::ListUsersCommand, Stacks::LogsCommand, Stacks::RemoveCommand, Stacks::RemoveUserCommand, Stacks::ShowCommand, Stacks::TrustedSubnets::AddCommand, Stacks::TrustedSubnets::ListCommand, Stacks::TrustedSubnets::RemoveCommand, Stacks::UpdateCommand, Stacks::UseCommand, Stacks::Users::AddCommand, Stacks::Users::ListCommand, Stacks::Users::RemoveCommand, User::ForgotPasswordCommand, User::ResetPasswordCommand, User::VerifyCommand, Vault::ListCommand, Vault::ReadCommand, Vault::RemoveCommand, Vault::UpdateCommand, Vault::WriteCommand, VersionCommand, Vpn::ConfigCommand, Vpn::CreateCommand, Vpn::DeleteCommand, Vpn::RemoveCommand, WhoamiCommand
- Defined in:
- lib/central/cli/common.rb
Instance Method Summary collapse
- #access_token=(token) ⇒ Object
- #add_master(server_name, master_info) ⇒ Object
- #api_url ⇒ Object
- #api_url=(api_url) ⇒ Object
- #clear_current_stack ⇒ Object
- #client(token = nil) ⇒ Object
- #current_master ⇒ Object
- #current_master=(master_alias) ⇒ Object
- #current_master_index ⇒ Object
- #current_stack ⇒ Object
- #current_stack=(stack) ⇒ Object
- #ensure_custom_ssl_ca(url) ⇒ Object
- #require_api_url ⇒ Object
- #require_current_stack ⇒ Object
- #require_token ⇒ Object
- #reset_client ⇒ Object
- #save_settings ⇒ Object
- #settings ⇒ Object
- #settings_filename ⇒ Object
Instance Method Details
#access_token=(token) ⇒ Object
126 127 128 129 |
# File 'lib/central/cli/common.rb', line 126 def access_token=(token) settings['servers'][current_master_index]['token'] = token save_settings end |
#add_master(server_name, master_info) ⇒ Object
131 132 133 134 135 136 137 138 139 140 141 |
# File 'lib/central/cli/common.rb', line 131 def add_master(server_name, master_info) server_name ||= 'default' index = settings['servers'].find_index { |m| m['name'] == server_name } if index settings['servers'][index] = master_info else settings['servers'] << master_info end settings['current_server'] = server_name save_settings end |
#api_url ⇒ Object
60 61 62 63 64 65 66 67 |
# File 'lib/central/cli/common.rb', line 60 def api_url url = ENV['CENTRAL_URL'] || current_master['url'] unless url fail ArgumentError.new("It seem's that you are not logged into Central master, please login with: cm login") end ensure_custom_ssl_ca(url) url end |
#api_url=(api_url) ⇒ Object
121 122 123 124 |
# File 'lib/central/cli/common.rb', line 121 def api_url=(api_url) settings['servers'][current_master_index]['url'] = api_url save_settings end |
#clear_current_stack ⇒ Object
88 89 90 91 |
# File 'lib/central/cli/common.rb', line 88 def clear_current_stack settings['servers'][current_master_index].delete('stack') save_settings end |
#client(token = nil) ⇒ Object
19 20 21 22 23 24 25 26 27 |
# File 'lib/central/cli/common.rb', line 19 def client(token = nil) if @client.nil? headers = {} headers['Authorization'] = "Bearer #{token}" unless token.nil? @client = Central::Client.new(api_url, headers) end @client end |
#current_master ⇒ Object
108 109 110 111 112 113 114 |
# File 'lib/central/cli/common.rb', line 108 def current_master index = current_master_index unless index fail ArgumentError.new("It seem's that you are not logged into ANY Central master, please login with: cm login") end settings['servers'][index] end |
#current_master=(master_alias) ⇒ Object
116 117 118 119 |
# File 'lib/central/cli/common.rb', line 116 def current_master=(master_alias) settings['current_server'] = master_alias save_settings end |
#current_master_index ⇒ Object
103 104 105 106 |
# File 'lib/central/cli/common.rb', line 103 def current_master_index current_server = settings['current_server'] || 'default' settings['servers'].find_index { |m| m['name'] == current_server } end |
#current_stack ⇒ Object
93 94 95 96 97 98 99 100 101 |
# File 'lib/central/cli/common.rb', line 93 def current_stack if respond_to?(:stack) ENV['CENTRAL_STACK'] || stack || current_master['stack'] else ENV['CENTRAL_STACK'] || current_master['stack'] end rescue ArgumentError => e nil end |
#current_stack=(stack) ⇒ Object
77 78 79 80 |
# File 'lib/central/cli/common.rb', line 77 def current_stack=(stack) settings['servers'][current_master_index]['stack'] = stack['id'] save_settings end |
#ensure_custom_ssl_ca(url) ⇒ Object
69 70 71 72 73 74 75 |
# File 'lib/central/cli/common.rb', line 69 def ensure_custom_ssl_ca(url) return if Excon.defaults[:ssl_ca_file] uri = URI.parse(url) cert_file = File.join(Dir.home, "/.central/certs/#{uri.host}.pem") Excon.defaults[:ssl_ca_file] = cert_file if File.exist?(cert_file) end |
#require_api_url ⇒ Object
7 8 9 |
# File 'lib/central/cli/common.rb', line 7 def require_api_url api_url end |
#require_current_stack ⇒ Object
82 83 84 85 86 |
# File 'lib/central/cli/common.rb', line 82 def require_current_stack if current_stack.nil? fail ArgumentError.new('Please select stack first using: cm stack use <stack name>') end end |
#require_token ⇒ Object
11 12 13 14 15 16 17 |
# File 'lib/central/cli/common.rb', line 11 def require_token token = ENV['CENTRAL_TOKEN'] || current_master['token'] unless token fail ArgumentError.new('Please login first using: cm login') end token end |
#reset_client ⇒ Object
29 30 31 |
# File 'lib/central/cli/common.rb', line 29 def reset_client @client = nil end |
#save_settings ⇒ Object
143 144 145 |
# File 'lib/central/cli/common.rb', line 143 def save_settings File.write(settings_filename, JSON.pretty_generate(settings)) end |
#settings ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/central/cli/common.rb', line 37 def settings if @settings.nil? if File.exist?(settings_filename) @settings = JSON.parse(File.read(settings_filename)) unless @settings['current_server'] # Let's migrate the old settings model to new @settings['server']['name'] = 'default' @settings = { 'current_server' => 'default', 'servers' => [@settings['server']] } save_settings end else @settings = { 'current_server' => 'default', 'servers' => [{}] } end end @settings end |
#settings_filename ⇒ Object
33 34 35 |
# File 'lib/central/cli/common.rb', line 33 def settings_filename File.join(Dir.home, '/.central_client.json') end |