blob: 784930725d3602e6405dd852de499fa1610832ed [file] [view]
<!--
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
-->
## Administrative Operations
The `wskadmin-next` utility is handy for performing various administrative operations against an OpenWhisk deployment.
It allows you to create a new subject, manage their namespaces, to block a subject or delete their record entirely.
This is a Scala based implementation of `wskadmin` utility and is meant to be DB agnostic.
### Build
To build the tool run
$./gradlew :tools:admin:build
This creates a jar at `tools/admin/build/libs/openwhisk-admin-tools-1.0.0-SNAPSHOT-cli.jar` and install it as an executable script at
`bin/wskadmin-next`.
### Setup
Build task creates an executable at `bin/wskadmin-next`. By default, the config related to `ArtifactStore` for accessing database will read the `$OPENWHISK_HOME/whisk.conf`, which was generated by Ansible `properties` deployment. Alternatively, the required config can be also passed by an overwritten config file. For example to access user details from default CouchDB setup create a file `application-cli.conf`.
include classpath("application.conf")
whisk {
couchdb {
protocol = "http"
host = "172.17.0.1"
port = "5984"
username = "whisk_admin"
password = "some_passw0rd"
provider = "CouchDB"
databases {
WhiskAuth = "whisk_local_subjects"
WhiskEntity = "whisk_local_whisks"
WhiskActivation = "whisk_local_activations"
}
}
}
And pass that to command via `-c` option.
$./wskadmin-next -c application-cli.conf user get guest
### Managing Users (subjects)
The `wskadmin-next user -h` command prints the help message for working with subject records. You can create and delete a
new user, list all their namespaces or keys for a specific namespace, identify a user by their key, block/unblock a subject,
and list all keys that have access to a particular namespace.
Some examples:
```bash
# create a new user
$ wskadmin-next user create userA
<prints key>
# add user to a specific namespace
$ wskadmin-next user create --namespace space1 userA
<prints new key specific to userA and space1>
# add second user to same space
$ wskadmin-next user create --namespace space1 userB
<prints new key specific to userB and space1>
# force update a user with new uuid:key
$ wskadmin-next user create -f userA
<prints new UUID and new key>
# revoke auth key of a user and regenerate a new key
$ wskadmin-next user create -r userA
<prints old UUID and new key>
# list all users sharing a space
$ wskadmin-next user list -a space1
<key for userA> userA
<key for userB> userB
# remove user access to a namespace
$ wskadmin-next user delete --namespace space1 userB
Namespace deleted
# get key for userA default namespaces
$ wskadmin-next user get userA
<prints key specific to userA default namespace>
# block a user
$ wskadmin-next user block userA
"userA" blocked successfully
# unblock a user
$ wskadmin-next user unblock userA
"userA" unblocked successfully
# delete user
$ wskadmin-next user delete userB
Subject deleted
```
The `wskadmin-next limits` commands allow you set action and trigger throttles per namespace.
```bash
# see if custom limits are set for a namespace
$ wskadmin-next limits get space1
No limits found, default system limits apply
# set limits on invocationsPerMinute
$ wskadmin-next limits set --invocationsPerMinute 1 space1
Limits successfully set for "space1"
# set limits on allowedKinds
$ wskadmin-next limits set --allowedKinds nodejs:6 python space1
Limits successfully set for "space1"
# set limits to disable saving of activations in activationstore
$ wskadmin-next limits set --storeActivations false space1
Limits successfully set for "space1"
```
Note that limits apply to a namespace and will survive even if all users that share a namespace are deleted. You must manually delete them.
```bash
$ wskadmin-next limits delete space1
Limits deleted
```