Feature Administration Service
{ urn:com.soa.admin.service.features.jaxrs } FeatureService
This API is used to administer the installation, removal, and resolution of features.
GETGet Installed Features
Get all installed features.
Reponse
featureInfo {
link {
GET/installedGet Installed Features
Fetch information on all installed features.
Sample Request
GET /admin/features HTTP/1.1
Accept: application/json
Sample Response
HTTP/1.1 200 OK
Content-Type:application/json; charset=UTF-8
{
"links": [
{
"href": "http://localhost:9900/admin/features/available",
"rel": "available"
},
{
"href": "http://localhost:9900/admin/features/resolve",
"rel": "resolve"
},
{
"href": "http://localhost:9900/admin/features/install",
"rel": "install"
},
{
"href": "http://localhost:9900/admin/features",
"rel": "self"
}
],
"features": [
{
"name": "Akana Admin Console",
"description": "The Admin Console is used to manage...",
"version": "8.3.0",
"symbolicName": "com.soa.admin.console",
"category": "x-soa-feature",
"links": [
{
"href": "http://localhost:9900/admin/features/com.soa.admin.console",
"rel": "self"
}
]
}
]
}
Reponse
featureInfo {
link {
GET/categoriesGet Feature Categories
Get all feature categories.
Sample Request
GET /admin/features/categories HTTP/1.1
Accept: application/json
Sample Response
HTTP/1.1 200 OK
Content-Type:application/json; charset=UTF-8
[
{
"name": "Plug-in",
"value": "x-soa-plugin"
},
{
"name": "Feature",
"value": "x-soa-feature"
},
{
"name": "Tool",
"value": "x-soa-tool"
}
]
Reponse
GET/resolveGet Outstanding Resolutions
Get information on any current resolutions
Reponse
resourceInfo {
nameValuePair {
resourceRequirements {
link {
GET/updatesGet Available Updates
Fetch information on any updates available for installed features.
Sample Request
GET /admin/features/updates HTTP/1.1
Accept: application/json
Sample Response
The response is a resolution report that calls out any new dependencies that need to be installed for the deployed features set.
HTTP/1.1 200 OK
Content-Type:application/json; charset=UTF-8
{
"unsatisfiedRequirements": [
...
],
"requiredResources": [
...
],
"optionalResources": [
...
],
"addedResources": [
...
],
"status": "RESOLVED",
"id": "ResolutionReport-1",
"links": [
{
"href": "http://localhost:9900/admin/features/resolve/ResolutionReport-1",
"rel": "self"
},
{
"href": "http://localhost:9900/admin/features/install",
"rel": "install"
}
]
}
Reponse
resourceInfo {
nameValuePair {
resourceRequirements {
link {
GET/availableGet Available Features
Get all features that are available for deployment.
Sample Request
GET /admin/features/available HTTP/1.1
Accept: application/json
Sample Response
The following example has been truncated for brevity. The resolve link provides the location for client to perform a resolve of a set of selected features.
HTTP/1.1 200 OK
Content-Type:application/json; charset=UTF-8
{
"links": [
{
"href": "http://localhost:9900/admin/features/available?filter=(symbolicname%3D*)",
"rel": "self"
},
{
"href": "http://localhost:9900/admin/features/resolve",
"rel": "resolve"
}
],
"features": [
{
"name": "Akana Network Director",
"description": "This feature enables a Container to host Virtual Services. The Virtual Services are defined in the Akana Management Console. When the Network Director feature is enabled, the Container's metadata is updated to reflect this support. The metadata must be updated in the Akana Management Console so that it is aware that Virtual Services can be hosted on the Container. The feature also enables support for default Bindings and Policies. The default Bindings are SOAP and HTTP (REST and POX). The default Policies are WS-Addressing, WS-Auditing, WS-Security, HTTP Security, Authentication, and Authorization.",
"version": "8.3.0",
"symbolicName": "com.soa.feature.network.director",
"category": "x-soa-feature"
},
{
"name": "Akana Community Manager",
"description": "This feature includes the complete Community Manager developers portal including the APIs that can be used by applications wanting to integrate with Community Manager. This feature should be configured with the same database that Policy Manager services feature is configured with though Policy Manager services feature and Community Manager need not be deployed in the same container.",
"version": "8.3.0",
"symbolicName": "com.soa.atmosphere.feature",
"category": "x-soa-feature"
},
{
"name": "Akana Kerberos Impersonation",
"description": "This plug-in enables kerberos constrained delegation, or impersonation. Requires Java 1.8.",
"version": "8.3.0",
"symbolicName": "com.soa.feature.kerberos.impersonation",
"category": "x-soa-plugin"
},
{
"name": "Akana Policy Manager Console",
"description": "This feature includes a web based user interface for the central Policy Manager governance application. The user interface provides a dashboard and the primary interface for configuration, management and administration of Policy Manager and Service Manager. The console must interact with a Container (may be the same container) configured with the Akana Policy Manager Services to fulfill the core central governance application requirements.",
"version": "8.3.0",
"symbolicName": "com.soa.feature.console",
"category": "x-soa-feature"
},
...
]
}
Parameters
Reponse
featureInfo {
link {
POST/installInstall Features
Install a set of features represented by the result of a resolve operation.
Sample Request
POST /admin/features/install HTTP/1.1
Content-Type: application/json
Accept: application/json
{
"unsatisfiedRequirements" : [ ],
"requiredResources" : [ {
"id" : "com.soa.platform.j2ee/8.3.0",
"symbolicName" : "com.soa.platform.j2ee",
...
}, {
"id" : "com.soa.grid/8.3.0",
"symbolicName" : "com.soa.grid",
...
}, {
"id" : "org.bitbucket.b_c.jose4j/0.4.4",
"symbolicName" : "org.bitbucket.b_c.jose4j",
...
}, {
"id" : "com.soa.security/8.3.0",
"symbolicName" : "com.soa.security",
...
}, {
"id" : "com.google.guava/18.0.0",
"symbolicName" : "com.google.guava",
...
}, {
"id" : "com.google.gson/2.5.0",
"symbolicName" : "com.google.gson",
...
}, {
"id" : "com.netflix.rxjava.core/0.20.0",
"symbolicName" : "com.netflix.rxjava.core",
...
}, {
"id" : "com.soa.persistence/8.3.0",
"symbolicName" : "com.soa.persistence",
...
}, {
"id" : "jcifs/0.9.4",
"symbolicName" : "jcifs",
...
}
...
],
"optionalResources" : [ {
"id" : "org.freemarker.freemarker/2.3.25.stable-incubating",
"symbolicName" : "org.freemarker.freemarker",
...
}, {
"id" : "org.apache.velocity/1.7.0",
"symbolicName" : "org.apache.velocity",
...
} ],
"addedResources" : [ {
"id" : "com.soa.feature.console/8.3.0",
"symbolicName" : "com.soa.feature.console",
...
}, {
"id" : "com.soa.feature.subsystems/8.3.0",
"symbolicName" : "com.soa.feature.subsystems",
...
} ]
}
Sample Response
HTTP/1.1 200 OK
Content-Type:application/json; charset=UTF-8
{
"id" : "c8e29be1-19c0-4132-a6bb-01b2a3a3efc6",
"total" : 213,
"installed" : 211,
"status" : "INSTALLING",
"links" : [ {
"href" : "http://localhost:9900/admin/features/install/c8e29be1-19c0-4132-a6bb-01b2a3a3efc6",
"rel" : "self"
} ]
}
Parameters
resourceInfo {
nameValuePair {
resourceRequirements {
link {
Reponse
resolutionReport {
resourceInfo {
nameValuePair {
resourceRequirements {
link {
POST/resolveResolve Features
Resolve a feature set.
Sample Request
{
"features":[
{"name":"Akana Community Manager","version":"8.3.0","symbolicName":"com.soa.atmosphere.feature"}
]
}
Sample Response
The following response is for an ongoing reolve operation. Once completed, the response will also contain a resolution report listing all added, optional, and required resources that should be installed to deploy the selected feature set.
HTTP/1.1 200 OK
Content-Type:application/json; charset=UTF-8
{
"status" : "RESOLVING",
"id" : "ResolutionReport-1",
"links" : [ {
"href" : "http://localhost:9900/admin/features/resolve/ResolutionReport-1",
"rel" : "self"
} ]
}
Parameters
featureInfo {
link {
Reponse
resourceInfo {
nameValuePair {
resourceRequirements {
link {
DELETE/installed/{id}Remove a Feature
Remove a specific feature and its dependencies from the system.
Sample Request
DELETE /admin/features/installed/{id} HTTP/1.1
Parameters
Reponse
GET/resolve/{id}Get Resolution Detail
As with the installation process, resolution can take some time. Feature resolution is performed asynchronously by an internal "job".
The normal sequence of states for a resolve job are: UNKNOWN -> RESOLVING -> RESOLVED
These states have the following meaning:
- UNKNOWN Indicates that the job is queued but has not started.
- RESOLVING Features are actively being resolved.
- RESOLVED When the resolve operation completes successfully.
Sample Request
GET /admin/features/resolve/ResolutionReport-1 HTTP/1.1
Accept: application/json
Sample Response
The sample response below has been truncated for brevity.
HTTP/1.1 200 OK
Content-Type:application/json; charset=UTF-8
{
"unsatisfiedRequirements" : [ ],
"requiredResources" : [ {
"id" : "com.soa.platform.j2ee/8.3.0",
"symbolicName" : "com.soa.platform.j2ee",
...
}, {
"id" : "com.soa.grid/8.3.0",
"symbolicName" : "com.soa.grid",
...
}, {
"id" : "org.bitbucket.b_c.jose4j/0.4.4",
"symbolicName" : "org.bitbucket.b_c.jose4j",
...
}, {
"id" : "com.soa.security/8.3.0",
"symbolicName" : "com.soa.security",
...
}, {
"id" : "com.google.guava/18.0.0",
"symbolicName" : "com.google.guava",
...
}, {
"id" : "com.google.gson/2.5.0",
"symbolicName" : "com.google.gson",
...
}, {
"id" : "com.netflix.rxjava.core/0.20.0",
"symbolicName" : "com.netflix.rxjava.core",
...
}, {
"id" : "com.soa.persistence/8.3.0",
"symbolicName" : "com.soa.persistence",
...
}, {
"id" : "jcifs/0.9.4",
"symbolicName" : "jcifs",
...
}
...
],
"optionalResources" : [ {
"id" : "org.freemarker.freemarker/2.3.25.stable-incubating",
"symbolicName" : "org.freemarker.freemarker",
...
}, {
"id" : "org.apache.velocity/1.7.0",
"symbolicName" : "org.apache.velocity",
...
} ],
"addedResources" : [ {
"id" : "com.soa.feature.console/8.3.0",
"symbolicName" : "com.soa.feature.console",
...
}, {
"id" : "com.soa.feature.subsystems/8.3.0",
"symbolicName" : "com.soa.feature.subsystems",
...
} ],
"status" : "RESOLVED",
"id" : "ResolutionReport-1",
"links" : [{
"href" : "http://localhost:9900/admin/features/install",
"rel" : "install"
}, {
"href" : "http://localhost:9900/admin/features/resolve/ResolutionReport-1",
"rel" : "self"
}]
}
Parameters
Reponse
resourceInfo {
nameValuePair {
resourceRequirements {
link {
GET/install/{id}Get Install Status
Get the status of an install job. When an install is started using the install() operation,
a "job" is created that performs the actual work of resolving and installing the selected
features and their dependencies. Because this can take some time, the job is executed asynchronously.
This operation allows the status of a background install job to be retrieved.
The normal sequence of states for an install job are: UNKNOWN -> RESOLVING -> RESOLVED -> INSTALLING -> COMPLETING -> COMPLETE
These states have the following meaning:
- UNKNOWN Indicates that the installation job is queued but has not started.
- RESOLVING Even if the features to be installed have been resolved earlier, the install job performs a resolve before starting installation.
- RESOLVED When the resolve operation completes successfully.
- INSTALLING Bundles and features are actively being installed to the system. The returned status object contains a count of the total number of bundles to be installed, and the number successfully installed so far.
- COMPLETING All bundles have been installed, and the job is gathering any configuration tasks.
- COMPLETE The install has completed successfully and all features are now available for configuration, if necessary. The returned status contains a final report on the installation.
Sample Request
GET /admin/features/install/c8e29be1-19c0-4132-a6bb-01b2a3a3efc6 HTTP/1.1
Accept: application/json
Sample Response
The following response shows an installation in progress.
HTTP/1.1 200 OK
Content-Type:application/json; charset=UTF-8
{
"id" : "c8e29be1-19c0-4132-a6bb-01b2a3a3efc6",
"total" : 213,
"installed" : 211,
"status" : "INSTALLING",
"links" : [ {
"href" : "http://localhost:9900/admin/features/install/c8e29be1-19c0-4132-a6bb-01b2a3a3efc6",
"rel" : "self"
} ]
}
Parameters
Reponse
resolutionReport {
resourceInfo {
nameValuePair {
resourceRequirements {
link {
GET/installed/{id}Get Feature Detail
Fetch detailed information for an installed feature.
Sample Request
GET /admin/features/installed/com.soa.admin.console HTTP/1.1
Accept: application/json
Sample Response
HTTP/1.1 200 OK
Content-Type:application/json; charset=UTF-8
{
"name": "Akana Admin Console",
"description": "The Admin Console is used to manage...",
"version": "8.3.0",
"symbolicName": "com.soa.admin.console",
"category": "x-soa-feature",
"links": [
{
"href": "http://localhost:9900/admin/features/com.soa.admin.console",
"rel": "self"
}
]
}
Parameters
Reponse
link {