nix-kubernetes
Version:
Kubernetes deployment manager written in nix
62 lines (52 loc) • 1.33 kB
JavaScript
;
const _ = require('lodash');
const Resource = require('./resource');
/**
* Namespace model specifications
*/
class Namespace {
constructor(data) {
this.data = data;
}
/**
* Gets resources
*
* @return {Object.<string,Resource>} Mapping betwene type/name : resource
*/
get resources() {
// Transform entries in type/name : resource
return _.transform(this.data.resources, (result, element, type) => {
_.forEach(element, (resource, name) => result.push(type + '/' + name));
}, []);
}
/**
* Gets list of namespaces to garbage collect
*
* @return {Array<string>} Gets namespaces to garbage collect
*/
get gcNamespaces() {
return this.data.gcNamespaces;
}
/**
* Gets resource by path
*
* @param path string Resource path in format type/name
* @return {Resource} Resource identifed by path
*/
getResource(path) {
const type = path.split('/')[0];
const name = path.split('/')[1];
const resource = _.get(this.data.resources, [type, name]);
return resource ? new Resource(resource) : undefined;
}
/**
* Gets job by name
*
* @param name string Name of the job
* @return {Object} job kubernetes resource
*/
getJob(name) {
return _.get(this.data.jobs, name);
}
}
module.exports = Namespace;