Constructor for splunkjs.Service.Jobs
Constructor for splunkjs.Service.Jobs
Name | Type | Description |
---|---|---|
service | splunkjs.Service | A service instance |
namespace | Object | Namespace information (owner, app, sharing) |
init: function(service, namespace) {
this._super(service, this.path(), namespace);
// We perform the bindings so that every function works
// properly when it is passed as a callback.
this.create = utils.bind(this, this.create);
},
Create a oneshot search job
Create a oneshot search job using the specified query and parameters.
Name | Type | Description |
---|---|---|
query | String | The search query |
params | Object | A dictionary of properties for the job. |
callback | Function | A callback with the results of the job: |
var jobs = service.jobs();
jobs.oneshotSearch("search ERROR", {id: "myjob_123"}, function(err, results) {
console.log("RESULT FIELDS": results.fields);
});
oneshotSearch: function(query, params, callback) {
// If someone called us with the default style of (params, callback),
// lets make it work
if (utils.isObject(query) && utils.isFunction(params) && !callback) {
callback = params;
params = query;
query = params.search;
}
callback = callback || function() {};
params = params || {};
params.search = query;
params.exec_mode = "oneshot";
if (!params.search) {
callback("Must provide a query to create a search job");
}
var that = this;
return this.post("", params, function(err, response) {
if (err) {
callback(err);
}
else {
callback(null, response.data);
}
});
}
});
})();
Create an asyncronous search job
Create a search job using the specified query and parameters.
This method will throw an error if exec_mode=oneshot is passed in the params variable.
Name | Type | Description |
---|---|---|
query | String | The search query |
params | Object | A dictionary of properties for the job. |
callback | Function | A callback with the created job: |
var jobs = service.jobs();
jobs.search("search ERROR", {id: "myjob_123"}, function(err, newJob) {
console.log("CREATED": newJob.sid);
});
search: function(query, params, callback) {
return this.create(query, params, callback);
},
Create an asyncronous search job
Name | Type | Description |
---|---|---|
query | String | The search query |
params | Object | A dictionary of properties for the job. |
callback | Function | A callback with the created job: |
create: function(query, params, callback) {
// If someone called us with the default style of (params, callback),
// lets make it work
if (utils.isObject(query) && utils.isFunction(params) && !callback) {
callback = params;
params = query;
query = params.search;
}
callback = callback || function() {};
params = params || {};
params.search = query;
if ((params.exec_mode || "").toLowerCase() === "oneshot") {
throw new Error("Please use splunkjs.Service.Jobs.oneshotSearch for exec_mode=oneshot");
}
if (!params.search) {
callback("Must provide a query to create a search job");
}
var that = this;
return this.post("", params, function(err, response) {
if (err) {
callback(err);
}
else {
var job = new root.Job(that.service, response.data.sid, that.namespace);
callback(null, job);
}
});
},
Create a local instance of an entity
Name | Type | Description |
---|---|---|
props | Object | The properties for this entity |
instantiateEntity: function(props) {
var sid = props.content.sid;
var entityNamespace = utils.namespaceFromProperties(props);
return new root.Job(this.service, sid, entityNamespace);
},
REST path for this resource (with no namespace)
path: function() {
return Paths.jobs;
},
Retrieve the author information for this collection
paging: function() {
return this._paging;
},
Retrieve a list of all entities in the collection
Return the list of all the entities in this collection.
Name | Type | Description |
---|---|---|
callback | Function | A callback with the list of entities: |
var apps = service.apps();
apps.fetch(function(err, apps) {
var appList = apps.list();
console.log(appList.length);
});
list: function(callback) {
callback = callback || function() {};
return utils.clone(this._entities);
}
});
Whether or not to call fetch()
after an entity is created. By default we don't fetch the entity, as the endpoint will return (echo) the created entity
fetchOnEntityCreation: false,
Get a specific entity.
Return a specific entity given its name from the collection
Name | Type | Description |
---|---|---|
id | String | The name of the entity to retrieve |
namespace | Object | Namespace information (owner, app, sharing) |
var apps = service.apps();
apps.fetch(function(err, apps) {
var app = apps.item("search");
console.log("Search App Found: " + !!app);
// `app` is an Application object.
});
item: function(id, namespace) {
if (utils.isEmpty(namespace)) {
namespace = null;
}
if (!id) {
throw new Error("Must suply a non-empty name.");
}
var fullPath = null;
if (this._entitiesByName.hasOwnProperty(id)) {
var entities = this._entitiesByName[id];
if (entities.length === 1 && !namespace) {
// If there is only one entity with the
// specified name and the user did not
// specify a namespace, then we just
// return it
return entities[0];
}
else if (entities.length === 1 && namespace) {
// If we specified a namespace, then we
// only return the entity if it matches
// the full path
fullPath = this.service.fullpath(entities[0].path(), namespace);
if (entities[0].qualifiedPath === fullPath) {
return entities[0];
}
else {
return null;
}
}
else if (entities.length > 1 && !namespace) {
// If there is more than one entity and we didn't
// specify a namespace, then we return an error
// saying the match is ambiguous
throw new Error("Ambiguous match for name '" + id + "'");
}
else {
// There is more than one entity, and we do have
// a namespace, so we try and find it
for(var i = 0; i < entities.length; i++) {
var entity = entities[i];
fullPath = this.service.fullpath(entities[i].path(), namespace);
if (entity.qualifiedPath === fullPath) {
return entity;
}
}
}
}
else {
return null;
}
},
Refresh the resource
This will unconditionally fetch the object from the server and load it up.
Name | Type | Description |
---|---|---|
options | Object | Dictionary of collection filtering and pagination options |
callback | Function | A callback when the object is retrieved: |
fetch: function(options, callback) {
if (!callback && utils.isFunction(options)) {
callback = options;
options = {};
}
callback = callback || function() {};
options = options || {};
if (!options.count) {
options.count = 0;
}
var that = this;
var req = that.get("", options, function(err, response) {
if (err) {
callback(err);
}
else {
that._load(response.data);
callback(null, that);
}
});
return req;
},
Retrieve the updated time for this collection
updated: function() {
return this._updated;
},
Retrieve the links information for this collection
links: function() {
return this._links;
},
Retrieve the state for this resource
This will retrieve the current full state for this resource.
state: function() {
return this._state;
}
});
Retrieve the properties for this resource
This will retrieve the current properties for this resource.
properties: function() {
return this._properties;
},
Perform a relative DELETE request
Perform a relative DELETE request on this endpoint's path, combined with the parameters and a relative path if specified.
Name | Type | Description |
---|---|---|
relpath | String | A relative path to append at the end of the path |
params | Object | A dictionary of parameters to add to the query string |
callback | Function | A callback to be invoked when the request is complete: |
// Will make a request to {service.prefix}/search/jobs/123456
var endpoint = new splunkjs.Service.Endpoint(service, "search/jobs/12345");
endpoint.delete("", {}, function() { console.log("DELETED"))});
del: function(relpath, params, callback) {
var 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,
callback
);
}
});
Perform a relative POST request
Perform a relative POST request on this endpoint's path, combined with the parameters and a relative path if specified.
Name | Type | Description |
---|---|---|
relpath | String | A relative path to append at the end of the path |
params | Object | A dictionary of parameters to add to the body |
callback | Function | A callback to be invoked when the request is complete: |
// Will make a request to {service.prefix}/search/jobs/123456/control
var endpoint = new splunkjs.Service.Endpoint(service, "search/jobs/12345");
endpoint.post("control", {action: "cancel"}, function() { console.log("CANCELLED"))});
post: function(relpath, params, callback) {
var 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.post(
url,
params,
callback
);
},
Perform a relative GET request
Perform a relative GET request on this endpoint's path, combined with the parameters and a relative path if specified.
Name | Type | Description |
---|---|---|
relpath | String | A relative path to append at the end of the path |
params | Object | A dictionary of parameters to add to the query string |
callback | Function | A callback to be invoked when the request is complete: |
// Will make a request to {service.prefix}/search/jobs/123456/results?offset=1
var endpoint = new splunkjs.Service.Endpoint(service, "search/jobs/12345");
endpoint.get("results", {offset: 1}, function() { console.log("DONE"))});
get: function(relpath, params, callback) {
var 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.get(
url,
params,
callback
);
},