Indicates whether to call fetch
after an update to get the updated item.
Indicates whether to call fetch
after an update to get the updated item.
fetchOnUpdate: true,
Constructor for splunkjs.Service.Application
.
Name | Type | Description |
---|---|---|
service | splunkjs.Service | A |
name | String | The name of the Splunk app. |
A new splunkjs.Service.Application
instance.
init: function(service, name) {
this.name = name;
this._super(service, this.path(), {});
this.setupInfo = utils.bind(this, this.setupInfo);
this.updateInfo = utils.bind(this, this.updateInfo);
},
Retrieves the REST endpoint path for this resource (with no namespace).
path: function() {
return Paths.apps + "/" + encodeURIComponent(this.name);
},
Retrieves the setup information for a Splunk app.
Name | Type | Description |
---|---|---|
response_timeout | Number | A timeout period for aborting a request in milisecs (0 means no timeout). |
let app = service.apps().item("app");
let search;
[info, search] = await app.setup();
console.log("SETUP INFO: ", info);
setupInfo: function(response_timeout) {
var that = this;
return this.get("setup", {}, response_timeout).then((response) => {
return [response.data.entry.content, that];
});
},
Retrieves any information for an update to a locally-installed Splunk app.
Name | Type | Description |
---|---|---|
response_timeout | Number | A timeout period for aborting a request in milisecs (0 means no timeout). |
let app = service.apps().item("MyApp");
let info;
[info, app] = await app.updateInfo();
console.log("UPDATE INFO: ", info);
updateInfo: function(response_timeout) {
var that = this;
return this.get("update", {}, response_timeout).then((response) => {
return [response.data.entry.content, that];
});
}
});
Loads the entity and stores the properties.
Name | Type | Description |
---|---|---|
properties | Object | The properties for this entity. |
_load: function(properties) {
properties = utils.isArray(properties) ? properties[0] : properties;
// Initialize the properties to
// empty values
properties = properties || {
content: {},
fields: {},
acl: {},
links: {}
};
this._super(properties);
// Take out the entity-specific content
this._properties = properties.content || {};
this._fields = properties.fields || this._fields || {};
this._acl = properties.acl || {};
this._links = properties.links || {};
this._author = properties.author || null;
this._updated = properties.updated || null;
this._published = properties.published || null;
},
Retrieves the access control list (ACL) information for this entity, which contains the permissions for accessing the entity.
The ACL.
acl: function() {
return this._acl;
},
Update the access control list (ACL) information for this entity, which contains the permissions for accessing the entity.
Name | Type | Description |
---|---|---|
options | Object | Additional entity-specific arguments (required): |
response_timeout | Number | A timeout period for aborting a request in milisecs (0 means no timeout). |
let savedSearches = svc.savedSearches({ owner: "owner-name", app: "app-name"});
let search = await searches.create({ search: "search * | head 1", name: "acl_test" });
search = await search.acl_update({sharing:"app",owner:"admin","perms.read":"admin"});
acl_update: function(options, response_timeout) {
if(!options.hasOwnProperty("sharing")) {
throw new Error("Required argument 'sharing' is missing.");
}
if(!options.hasOwnProperty("owner")) {
throw new Error("Required argument 'owner' is missing.");
}
return this.post("acl", options, response_timeout).then((res)=>{
return this.fetch({});
});
},
Retrieves the author information for this entity.
The author.
author: function() {
return this._author;
},
Create the URL for the get and post methods This is to allow v1 fallback if the service was instantiated with v2+ and a relpath v1 was provided
Name | Type | Description |
---|---|---|
qualifiedPath | String | A fully-qualified relative endpoint path (for example, "/services/search/jobs"). |
relpath | String | A relative path to append to the endpoint path. |
// Parameters
v2 example:
qualifiedPath = "/servicesNS/admin/foo/search/v2/jobs/id5_1649796951725"
qualifiedPath = "/services/search/v2/jobs/id5_1649796951725"
relpath = "search/v2/jobs/id5_1649796951725/events"
relpath = "events"
// Step 1:
Specifically for splunkjs.Service.Job method, the service endpoint may be provided
Retrieve the service prefix and suffix
servicesNS:
- servicePrefix = "/servicesNS/admin/foo"
- serviceSuffix = "foo/v2/jobs/id5_1649796951725"
services:
- servicePrefix = "/services"
- serviceSuffix = "search/v2/jobs/id5_1649796951725"
// Step 2:
Retrieve Service API version
If version can't be detected, default to 1 (v1)
qualifiedPathVersion = 2
// Step 3:
Retrieve relpath version
If version can't be detected, default to 1 (v1)
relpath = "search/v2/jobs/id5_1649796951725/events"
=> relPathVersion = 2
Check if relpath is a one segment relative path, if so, set to -1
relpath = "events"
=> relPathVersion = -1
// Step 4:
Create the URL based on set criteria
url = "/servicesNS/admin/foo/search/v2/jobs/id5_1649796951725/events"
url = "/services/search/v2/jobs/id5_1649796951725/events"
createUrl: function (qualifiedPath, relpath) {
var url = qualifiedPath,
servicePrefix = qualifiedPath.replace(/(\/services|\/servicesNS\/[^/]+\/[^/]+)\/(.*)/, "$1"),
serviceSuffix = qualifiedPath.replace(/(\/services|\/servicesNS\/[^/]+\/[^/]+)\/(.*)/, "$2"),
qualifiedPathVersionMatch = qualifiedPath.match(/\/(?:servicesNS\/[^/]+\/[^/]+|services)\/[^/]+\/v(\d+)\//),
qualifiedPathVersionMatch = qualifiedPathVersionMatch ? qualifiedPathVersionMatch.length : 0,
qualifiedPathVersion = qualifiedPathVersionMatch || 1,
relPathVersionMatch = relpath.match(/^[^/]+\/v(\d+)\//),
relPathVersionMatch = relPathVersionMatch ? relPathVersionMatch.length : 0,
relPathVersion = relPathVersionMatch || 1;
if (relpath.indexOf('/') == -1) {
relPathVersion = -1;
}
Performs a relative DELETE request on an endpoint's path, combined with the parameters and a relative path if specified.
Name | Type | Description |
---|---|---|
relpath | String | A relative path to append to the endpoint path. |
params | Object | A dictionary of entity-specific parameters to add to the query string. |
response_timeout | Number | A timeout period for aborting a request in milisecs (0 means no timeout). |
// Will make a request to {service.prefix}/search/jobs/123456
let endpoint = new splunkjs.Service.Endpoint(service, "search/jobs/12345");
let res = await endpoint.delete("", {});
console.log("DELETED");
del: function(relpath, params, response_timeout) {
let url = this.qualifiedPath;
// If we have a relative path, we will append it with a preceding
// slash.
if (relpath) {
url = url + "/" + relpath;
}
return this.service.del(
url,
params,
response_timeout
);
}
});
Disables the entity on the server.
Name | Type | Description |
---|---|---|
response_timeout | Number | A timeout period for aborting a request in milisecs (0 means no timeout). |
disable: function(response_timeout) {
var that = this;
return this.post("disable", {}, response_timeout).then((response) => {
return that;
});;
},
Enables the entity on the server.
Name | Type | Description |
---|---|---|
response_timeout | Number | A timeout period for aborting a request in milisecs (0 means no timeout). |
enable: function(response_timeout) {
var that = this;
return this.post("enable", {}, response_timeout).then((response)=>{
return that;
});
},
Refreshes the entity by fetching the object from the server and loading it.
Name | Type | Description |
---|---|---|
options | Object | An optional dictionary of collection filtering and pagination options: |
response_timeout | Number | A timeout period for aborting a request in milisecs (0 means no timeout). |
fetch: function(options, response_timeout) {
if (utils.isNumber(options) && !response_timeout) {
response_timeout = options;
options = {};
}
options = options || {};
var that = this;
return this.get("", options, response_timeout).then((res) => {
that._load(res.data ? res.data.entry : null);
return that;
});
},
Retrieves the fields information for this entity, indicating which fields are wildcards, required, and optional.
The fields information.
fields: function() {
return this._fields;
},
Performs a relative GET request on an endpoint's path, combined with the parameters and a relative path if specified.
Name | Type | Description |
---|---|---|
relpath | String | A relative path to append to the endpoint path. |
params | Object | A dictionary of entity-specific parameters to add to the query string. |
response_timeout | Number | A timeout period for aborting a request in milisecs (0 means no timeout). |
// Will make a request to {service.prefix}/search/jobs/123456/results?offset=1
let endpoint = new splunkjs.Service.Endpoint(service, "search/jobs/12345");
let res = await endpoint.get("results", {offset: 1});
console.log("DONE");
get: function(relpath, params, response_timeout, isAsync) {
let url = this.createUrl(this.qualifiedPath, relpath);
return this.service.get(
url,
params,
response_timeout,
isAsync
);
},
Retrieves the links information for this entity, which is the URI of the entity relative to the management port of a Splunk instance.
The links information.
links: function() {
return this._links;
},
Performs a relative POST request on an endpoint's path, combined with the parameters and a relative path if specified.
Name | Type | Description |
---|---|---|
relpath | String | A relative path to append to the endpoint path. |
params | Object | A dictionary of entity-specific parameters to add to the body. |
response_timeout | Number | A timeout period for aborting a request in milisecs (0 means no timeout). |
// Will make a request to {service.prefix}/search/jobs/123456/control
let endpoint = new splunkjs.Service.Endpoint(service, "search/jobs/12345");
let res = await endpoint.post("control", {action: "cancel"});
console.log("CANCELLED");
post: function(relpath, params, response_timeout) {
let url = this.createUrl(this.qualifiedPath, relpath);
return this.service.post(
url,
params,
response_timeout
);
},
Retrieves the current properties for this resource.
The properties.
properties: function() {
return this._properties;
},
Retrieves the published time for this entity.
The published time.
published: function() {
return this._published;
},
Reloads the entity on the server.
Name | Type | Description |
---|---|---|
response_timeout | Number | A timeout period for aborting a request in milisecs (0 means no timeout). |
reload: function(response_timeout) {
var that = this;
return this.post("_reload", {}, response_timeout)
.then((res) => {
return that;
});
}
});
Deletes the entity from the server.
Name | Type | Description |
---|---|---|
response_timeout | Number | A timeout period for aborting a request in milisecs (0 means no timeout). |
remove: function(response_timeout) {
return this.del("", {}, response_timeout);
},
Retrieves the current full state (properties and metadata) of this resource.
The current full state of this resource.
state: function() {
return this._state;
}
});
Updates the entity on the server.
Name | Type | Description |
---|---|---|
props | Object | The properties to update the object with. |
response_timeout | Number | A timeout period for aborting a request in milisecs (0 means no timeout). |
update: function(props, response_timeout) {
if (props.hasOwnProperty("name")) {
throw new Error("Cannot set 'name' field in 'update'");
}
var that = this;
let req = this.post("", props, response_timeout).then((response)=>{
if (!that.fetchOnUpdate){
that._load(response.data.entry);
return that;
}
else{
return that.fetch({}, response_timeout)
}
}).catch((err) => {
throw [err, that];
});
return req;
},
Retrieves the updated time for this entity.
The updated time.
updated: function() {
return this._updated;
},