Class: Dcmgr::Models::SshKeyPair
- Inherits:
-
AccountResource
- Object
- Sequel::Model
- BaseNew
- AccountResource
- Dcmgr::Models::SshKeyPair
- Defined in:
- lib/dcmgr/models/ssh_key_pair.rb
Overview
SSH Key database for account.
Constant Summary
Constants inherited from BaseNew
Class Method Summary collapse
- .entry_new(account, &blk) ⇒ Object
-
.generate_key_pair(name) ⇒ Hash
string’, :public_key=>‘pubkey string’.
Instance Method Summary collapse
Methods inherited from AccountResource
Methods inherited from BaseNew
Proxy, dataset, default_row_lock_mode=, install_data, install_data_hooks, lock!, #to_hash, unlock!, #with_timestamps?
Class Method Details
.entry_new(account, &blk) ⇒ Object
50 51 52 53 54 55 56 57 |
# File 'lib/dcmgr/models/ssh_key_pair.rb', line 50 def self.entry_new(account, &blk) raise ArgurmentError unless account.is_a?(Account) ssh = self.new &blk ssh.account_id = account.canonical_uuid ssh end |
.generate_key_pair(name) ⇒ Hash
Returns string’, :public_key=>‘pubkey string’.
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/dcmgr/models/ssh_key_pair.rb', line 19 def self.generate_key_pair(name) pkey = File.(randstr, Dir.tmpdir) pubkey = pkey + '.pub' begin system("ssh-keygen -q -t rsa -C '%s' -N '' -f %s >/dev/null" % [name, pkey]) unless $?.exitstatus == 0 raise "Failed to run ssh-keygen: exitcode=#{$?.exitstatus}" end # get finger print of pkey file fp = `ssh-keygen -l -f #{pkey}` unless $?.exitstatus == 0 raise "Failed to collect finger print value" end fp = fp.split(/\s+/)[1] {:private_key=>IO.read(pkey), :public_key=>IO.read(pubkey), :finger_print => fp} rescue # clean up tmp key files [pkey, pubkey].each { |i| File.unlink(i) if File.exist?(i) } end end |
Instance Method Details
#before_destroy ⇒ Object
10 11 12 13 14 |
# File 'lib/dcmgr/models/ssh_key_pair.rb', line 10 def before_destroy # TODO: check running instances which are associated to ssh key # pairs. reject deletion if exist. super end |
#to_api_document ⇒ Object
46 47 48 |
# File 'lib/dcmgr/models/ssh_key_pair.rb', line 46 def to_api_document super end |