class Cabal::API::ClusterService

Attributes

private_keys[RW]
public_keys[RW]

Public Class Methods

new(public_warehouse: STORAGE[:public], private_warehouse: STORAGE[:private]) click to toggle source
# File lib/cabal/api/cluster_service.rb, line 11
def initialize(public_warehouse: STORAGE[:public], private_warehouse: STORAGE[:private])
  @public_keys = Sekrat.manager(warehouse: public_warehouse)

  @private_keys = Sekrat.manager(warehouse: private_warehouse, crypter: Sekrat::Crypter::Aes)
end

Public Instance Methods

create(name) click to toggle source
# File lib/cabal/api/cluster_service.rb, line 17
def create(name)
  sshkey = SSHKey.generate(
    type: 'RSA',
    bits: 2048,
    comment: "#{name}-cabal"
  )

  write_public_key(name, sshkey) && write_private_key(name, sshkey)
end
names() click to toggle source
# File lib/cabal/api/cluster_service.rb, line 27
def names
  public_keys.ids
end
private_key(name) click to toggle source
# File lib/cabal/api/cluster_service.rb, line 39
def private_key(name)
  begin
    private_keys.get(name, public_key(name))
  rescue
    nil
  end
end
public_key(name) click to toggle source
# File lib/cabal/api/cluster_service.rb, line 31
def public_key(name)
  begin
    public_keys.get(name, name)
  rescue
    nil
  end
end

Private Instance Methods

write_private_key(name, key) click to toggle source
# File lib/cabal/api/cluster_service.rb, line 57
def write_private_key(name, key)
  begin
    private_keys.put(
      name,
      key.ssh_public_key,
      key.private_key
    )
    true
  rescue
    false
  end
end
write_public_key(name, key) click to toggle source
# File lib/cabal/api/cluster_service.rb, line 48
def write_public_key(name, key)
  begin
    public_keys.put(name, name, key.ssh_public_key)
    true
  rescue
    return false
  end
end