summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzul <azul@riseup.net>2012-12-31 15:14:08 +0100
committerAzul <azul@riseup.net>2012-12-31 15:14:08 +0100
commit4aa9a677ca40113d10929e5f060d9676fe93d296 (patch)
tree52a38dfa63e839e6d2dd2329354b414f2454c448
parent66286e53c7cbee8608fc7a4b3beced1b70a07b4e (diff)
include functions for retrieving certs from couch
-rw-r--r--lib/leap_ca/cert.rb16
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/leap_ca/cert.rb b/lib/leap_ca/cert.rb
index 0587a54..8f1c9e9 100644
--- a/lib/leap_ca/cert.rb
+++ b/lib/leap_ca/cert.rb
@@ -32,6 +32,22 @@ module LeapCA
view :by_random
end
+ class << self
+ def sample
+ self.by_random.startkey(rand).first || self.by_random.first
+ end
+
+ def pick_from_pool
+ cert = self.sample
+ raise RECORD_NOT_FOUND unless cert
+ cert.destroy
+ return cert
+ rescue RESOURCE_NOT_FOUND
+ retry if self.by_random.count > 0
+ raise RECORD_NOT_FOUND
+ end
+ end
+
#
# generate the private key and client certificate
#