Fix active ack's completion of the promise. While the promise's future was bounded by timeout, it in fact would not fail as expected by the controller since the promise was never completed.
Addressed by completing the promise on timeout (i.e., when active ack expiration has occurred).
diff --git a/tools/cli/wskadmin b/tools/cli/wskadmin
index 194f413..2750c41 100755
--- a/tools/cli/wskadmin
+++ b/tools/cli/wskadmin
@@ -86,6 +86,7 @@
 
     subcmd = subparser.add_parser('create', help='create a user and show authorization key')
     subcmd.add_argument('subject', help='the subject to create')
+    subcmd.add_argument('-u', '--auth', help='the uuid:key to initialize the subject authorization key with')
 
     subcmd = subparser.add_parser('delete', help='delete a user')
     subcmd.add_argument('subject', help='the subject to delete')
@@ -155,10 +156,30 @@
         print 'Subject name must be at least 5 characters'
         return 2
 
+    if args.auth:
+        try:
+            parts = args.auth.split(':')
+            try:
+                uid = str(uuid.UUID(parts[0], version = 4))
+            except ValueError:
+                print 'authorization id is not a valid UUID'
+                return 2
+
+            key = parts(1)
+            if len(key) < 64:
+                print 'authorization key must be at least 64 characters long'
+                return 2
+        except Exception as e:
+            print 'failed to determine authorization id and key: %s' % e
+            return 2
+    else:
+        uid = str(uuid.uuid4())
+        key = ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(64))
+
     doc = {
         '_id': args.subject,
-        'key': ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(64)),
-        'uuid': str(uuid.uuid4()),
+        'uuid': uid,
+        'key': key,
         'subject': subject
     }