-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/38865/
-----------------------------------------------------------
Review request for Ambari, Jonathan Hurley, John Speidel, and Robert Nettleton.
Bugs: AMBARI-13214
https://issues.apache.org/jira/browse/AMBARI-13214
Repository: ambari
Description
-------
Storage of the credentials is to be done using the existing _secure_
credentials provider API which already exits within Ambari.
Credential may be stored in either Ambari's persistent or temporary secure
storage facilities.
# Testing capabilities
* Request
```
GET api/v1/clusters/{CLUSTER_NAME}
```
* Responses
```
200 OK
{
...
"credential_store_properties" : {
"storage.persistent" : "true",
"storage.temporary" : "true"
},
...
}
```
# Creating credentials
* Request
```
POST /api/v1/clusters/{CLUSTER_NAME}/credentials/{ALIAS}
{
"Credential" : {
"principal" : "USERNAME",
"key" : "SECRET",
"persist" : true
}
}
Where:
** principal: the principal (or username) part of the credential to store
** key: the secret key part of the credential to store
** persist: a boolean value indicating whether to store this credential in a
persisted (true) or temporary (false) secure credential store
```
* Responses
```
200 OK
```
```
400 Bad Request
{
"status": 400,
"message": "Cannot persist credential in Ambari's secure credential store
since secure storage has not yet be configured. Use ambari-server
setup-security to enable this feature."
}
```
```
403 Forbidden
{
"status": 403,
"message": "You do not have permissions to access this resource."
}
```
# Updating credentials
* Request
```
PUT /api/v1/clusters/{CLUSTER_NAME}/credentials/{ALIAS}
{
"Credential" : {
"principal" : "USERNAME",
"key" : "SECRET1",
"persist" : true
}
}
Where:
** principal: the principal (or username) part of the credential to store
** key: the secret key part of the credential to store
** persist: a boolean value indicating whether to store this credential in a
persisted (true) or temporary (false) secure credential store
```
* Responses
```
200 OK
```
```
400 Bad Request
{
"status": 400,
"message": "Cannot persist credential in Ambari's secure credential store
since secure storage has not yet be configured. Use ambari-server
setup-security to enable this feature."
}
```
```
403 Forbidden
{
"status": 403,
"message": "You do not have permissions to access this resource."
}
```
# Removing credentials
* Request
```
DELETE /api/v1/clusters/{CLUSTER_NAME}/credentials/{ALIAS}
```
* Responses
```
200 OK
```
```
404 Not Found
{
"status": 404,
"message": "Not Found"
}
```
```403 Forbidden
{
"status": 403,
"message": "You do not have permissions to access this resource."
}
```
# Listing credentials
* Request
```
GET /api/v1/clusters/{CLUSTER_NAME}/credentials
```
* Responses
```
200 OK
{
"href" : "http://host:8080/api/v1/clusters/c1/credentials",
"items" : [
{
"href" :
"http://host:8080/api/v1/clusters/c1/credentials/kdc.admin.credentials",
"Credential" : {
"alias" : "kdc.admin.credentials",
"cluster_name" : "c1"
}
},
{
"href" :
"http://host:8080/api/v1/clusters/c1/credentials/service.admin.credentials",
"Credential" : {
"alias" : "service.admin.credentials",
"cluster_name" : "c1"
}
}
]
}
```
```
404 Not Found
{
"status": 404,
"message": "Not Found"
}
```
```
403 Forbidden
{
"status": 403,
"message": "You do not have permissions to access this resource."
}
```
# Retrieving credentials
* Request
```
GET /api/v1/clusters/{CLUSTER_NAME}/credentials/{ALIAS}
```
* Responses
```
200 OK
{
"href" :
"http://host:8080/api/v1/clusters/c1/credentials/kdc.admin.credentials",
"Credential" : {
"alias" : "kdc.admin.credentials",
"cluster_name" : "c1",
"persist" : true
}
}
```
```
404 Not Found
{
"status": 404,
"message": "Not Found"
}
```
```
403 Forbidden
{
"status": 403,
"message": "You do not have permissions to access this resource."
}
```
Diffs
-----
ambari-server/docs/api/v1/credential-create.md PRE-CREATION
ambari-server/docs/api/v1/credential-delete.md PRE-CREATION
ambari-server/docs/api/v1/credential-get.md PRE-CREATION
ambari-server/docs/api/v1/credential-list.md PRE-CREATION
ambari-server/docs/api/v1/credential-resources.md PRE-CREATION
ambari-server/docs/api/v1/credential-update.md PRE-CREATION
ambari-server/docs/api/v1/index.md c1e464c
ambari-server/src/main/java/org/apache/ambari/server/api/resources/CredentialResourceDefinition.java
PRE-CREATION
ambari-server/src/main/java/org/apache/ambari/server/api/resources/ResourceInstanceFactoryImpl.java
1e219ff
ambari-server/src/main/java/org/apache/ambari/server/api/services/ClusterService.java
7bb0a72
ambari-server/src/main/java/org/apache/ambari/server/api/services/CredentialService.java
PRE-CREATION
ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
e3686ac
ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
6ba6bac
ambari-server/src/main/java/org/apache/ambari/server/controller/ClusterResponse.java
bb6d88e
ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
a40fae6
ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelperImpl.java
a1cd5b8
ambari-server/src/main/java/org/apache/ambari/server/controller/ResourceProviderFactory.java
5d1143a
ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractControllerResourceProvider.java
9163656
ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterResourceProvider.java
7e75a75
ambari-server/src/main/java/org/apache/ambari/server/controller/internal/CredentialResourceProvider.java
PRE-CREATION
ambari-server/src/main/java/org/apache/ambari/server/controller/spi/Resource.java
1b208fb
ambari-server/src/main/java/org/apache/ambari/server/security/authorization/AmbariAuthorizationFilter.java
44c9613
ambari-server/src/main/java/org/apache/ambari/server/security/credential/Credential.java
PRE-CREATION
ambari-server/src/main/java/org/apache/ambari/server/security/credential/CredentialFactory.java
PRE-CREATION
ambari-server/src/main/java/org/apache/ambari/server/security/credential/GenericKeyCredential.java
PRE-CREATION
ambari-server/src/main/java/org/apache/ambari/server/security/credential/InvalidCredentialValueException.java
PRE-CREATION
ambari-server/src/main/java/org/apache/ambari/server/security/credential/PrincipalKeyCredential.java
PRE-CREATION
ambari-server/src/main/java/org/apache/ambari/server/security/encryption/AbstractCredentialStore.java
PRE-CREATION
ambari-server/src/main/java/org/apache/ambari/server/security/encryption/CredentialProvider.java
b812337
ambari-server/src/main/java/org/apache/ambari/server/security/encryption/CredentialStore.java
PRE-CREATION
ambari-server/src/main/java/org/apache/ambari/server/security/encryption/CredentialStoreService.java
4aa3b0a
ambari-server/src/main/java/org/apache/ambari/server/security/encryption/CredentialStoreServiceImpl.java
968e96a
ambari-server/src/main/java/org/apache/ambari/server/security/encryption/FileBasedCredentialStore.java
PRE-CREATION
ambari-server/src/main/java/org/apache/ambari/server/security/encryption/FileBasedCredentialStoreService.java
41ff71b
ambari-server/src/main/java/org/apache/ambari/server/security/encryption/InMemoryCredentialStore.java
PRE-CREATION
ambari-server/src/main/java/org/apache/ambari/server/security/encryption/InMemoryCredentialStoreService.java
08d84fc
ambari-server/src/test/java/org/apache/ambari/server/api/resources/CredentialResourceDefinitionTest.java
PRE-CREATION
ambari-server/src/test/java/org/apache/ambari/server/api/services/CredentialServiceTest.java
PRE-CREATION
ambari-server/src/test/java/org/apache/ambari/server/configuration/ConfigurationTest.java
074fbb4
ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java
23ce914
ambari-server/src/test/java/org/apache/ambari/server/controller/internal/CredentialResourceProviderTest.java
PRE-CREATION
ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UserResourceProviderTest.java
b0e1018
ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariAuthorizationFilterTest.java
1824486
ambari-server/src/test/java/org/apache/ambari/server/security/encryption/CredentialProviderTest.java
ef1a9c8
ambari-server/src/test/java/org/apache/ambari/server/security/encryption/CredentialStoreServiceImplTest.java
PRE-CREATION
ambari-server/src/test/java/org/apache/ambari/server/security/encryption/CredentialStoreServiceTest.java
9725746
ambari-server/src/test/java/org/apache/ambari/server/security/encryption/CredentialStoreTest.java
PRE-CREATION
Diff: https://reviews.apache.org/r/38865/diff/
Testing
-------
Units tests updated and passed
Manually testing in existing cluster (upgrade scenario) and new cluster
# Local test results:
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 54:46.952s
[INFO] Finished at: Tue Sep 29 18:02:43 EDT 2015
[INFO] Final Memory: 66M/1534M
[INFO] ------------------------------------------------------------------------
# Jenkins test results: PENDING
Thanks,
Robert Levas