8295bd6882
this shall be a progressive process
218 lines
5.1 KiB
JavaScript
218 lines
5.1 KiB
JavaScript
import { find, filter } from 'lodash';
|
|
import data from './mock-data';
|
|
import { normalMetricData, leakMetricData } from './mock-data/metrics';
|
|
|
|
// TMP / Util
|
|
const datacenter = {
|
|
uuid: 'datacenter-uuid',
|
|
region: 'us-east-1'
|
|
};
|
|
const user = {
|
|
uuid: 'unique-user-id',
|
|
firstName: 'Judit',
|
|
lastName: 'Greskovits',
|
|
email: 'name@email.com',
|
|
login: 'juditgreskovits'
|
|
}
|
|
const portal = { user, host: 'dockerhost', datacenter};
|
|
const deploymentGroups = data.projects.data.map(p => {
|
|
p.slug = p.id;
|
|
return p;
|
|
});
|
|
const services = data.services.data.map(s => {
|
|
s.slug = s.id;
|
|
return s;
|
|
});
|
|
const instances = data.instances.data;
|
|
const metricTypes = data.metrics.data.types;
|
|
|
|
const count = 10;
|
|
let index = 0;
|
|
const getInstanceMetricData = (dataset, type) => {
|
|
return dataset[type].slice(index, index + count);
|
|
}
|
|
|
|
const tick = setInterval(() => index++, 15*1000);
|
|
|
|
// GraphQL
|
|
|
|
const queries = {
|
|
portal() {
|
|
return portal;
|
|
},
|
|
|
|
deploymentGroups(_, { name, slug }) {
|
|
return deploymentGroups;
|
|
},
|
|
deploymentGroup(_, { uuid, name, slug }) {
|
|
if(uuid) {
|
|
return find(deploymentGroups, { uuid: uuid });
|
|
}
|
|
if(slug) {
|
|
return find(deploymentGroups, { slug: slug });
|
|
}
|
|
return null;
|
|
},
|
|
|
|
serviceScales(_, { serviceName, versionUuid }) { // : [ServiceScale]
|
|
return [];
|
|
},
|
|
serviceScale(_, { uuid }) { // : ServiceScale
|
|
return {};
|
|
},
|
|
|
|
convergenceActions(_, { type, service, versionUuid }) { // : [ConvergenceAction]
|
|
return [];
|
|
},
|
|
convergenceAction(uuid) { // : ConvergenceAction
|
|
return {};
|
|
},
|
|
|
|
stateConvergencePlans(_, { running, versionUuid }) { // : [StateConvergencePlan]
|
|
return [];
|
|
},
|
|
stateConvergencePlan(_, { uuid }) { // : StateConvergencePlan
|
|
return [];
|
|
},
|
|
|
|
versions(_, { manifestUuid, deploymentGroupUuid }) { // : [Version]
|
|
return [];
|
|
},
|
|
version(_, { uuid, manifestUuid }) { // : Version
|
|
return null;
|
|
},
|
|
|
|
manifests(_, { type, deploymentGroupUuid }) { // : [Manifest]
|
|
return [];
|
|
},
|
|
manifest(_, { uuid }) { // : Manifest
|
|
return null;
|
|
},
|
|
|
|
services(_, { name, slug, parentUuid, deploymentGroupUuid, deploymentGroupSlug }) { // }: [Service]
|
|
if(deploymentGroupUuid) {
|
|
return filter(services, { project: deploymentGroupUuid });
|
|
}
|
|
if(deploymentGroupSlug) {
|
|
const deploymentGroup = find(deploymentGroups, { slug: deploymentGroupSlug });
|
|
if(deploymentGroup) {
|
|
if(slug) {
|
|
return filter(services, { project: deploymentGroup.uuid, slug: slug });
|
|
}
|
|
return filter(services, { project: deploymentGroup.uuid });
|
|
}
|
|
return null;
|
|
}
|
|
return services;
|
|
},
|
|
service(_, { uuid, hash }) { // : Service
|
|
if(uuid) {
|
|
return find(services, { uuid: uuid });
|
|
}
|
|
if(hash) {
|
|
return find(services, { hash: hash });
|
|
}
|
|
return null;
|
|
},
|
|
|
|
packages(_, { name, type, memory, disk, swap, lwps, vcpus, version, group }) { // : [Package]
|
|
return [];
|
|
},
|
|
package(_, { uuid }) { // : Package
|
|
return {};
|
|
},
|
|
|
|
instances(_, { name, machineId, status, serviceUuid, serviceSlug, deploymentGroupUuid, deploymentGroupSlug }) { // : [Instance]
|
|
if(serviceUuid) {
|
|
return filter(instances, { service: serviceUuid });
|
|
}
|
|
if(serviceSlug) {
|
|
const service = find(services, { slug: serviceSlug });
|
|
if(service) {
|
|
return filter(instances, { service: service.uuid });
|
|
}
|
|
return null;
|
|
}
|
|
return instances;
|
|
},
|
|
instance(_, { uuid }) { // : Instance
|
|
if(uuid) {
|
|
return find(instances, { uuid: uuid });
|
|
}
|
|
},
|
|
|
|
datacenter() {
|
|
return datacenter;
|
|
},
|
|
|
|
/*metricTypes() {
|
|
return metricTypes;
|
|
},
|
|
// tmp test
|
|
instanceMetric() {
|
|
return {
|
|
type: {
|
|
uuid: 'node_memory_rss_bytes',
|
|
id: 'node_memory_rss_bytes',
|
|
name: 'node_memory_rss_bytes',
|
|
},
|
|
data: getInstanceMetricData(leakMetricData, 'node_memory_rss_bytes')
|
|
};
|
|
}*/
|
|
}
|
|
|
|
const resolveFunctions = {
|
|
Query: queries,
|
|
Portal: {
|
|
deploymentGroups(portal, args, context) {
|
|
return deploymentGroups;
|
|
}
|
|
},
|
|
DeploymentGroup: {
|
|
services(deploymentGroup, args, context) {
|
|
const a = Object.assign({}, args, {deploymentGroupSlug: deploymentGroup.slug})
|
|
return queries.services(null, a);
|
|
}
|
|
},
|
|
Service: {
|
|
instances(service, args, context) {
|
|
return filter(instances, { service: service.uuid });
|
|
},
|
|
/*metrics(service) {
|
|
return service.metrics ?
|
|
service.metrics.map((metric) =>
|
|
find(metricTypes, { uuid: metric.type })) : [];
|
|
},*/
|
|
/*currentMetrics(service) {
|
|
// tmp
|
|
return [{
|
|
"name": "CPU",
|
|
"value": 50,
|
|
"measurement": "%",
|
|
}, {
|
|
"name": "Memory",
|
|
"value": 20,
|
|
"measurement": "%",
|
|
}, {
|
|
"name": "Network",
|
|
"value": 2.9,
|
|
"measurement": "Kb/sec",
|
|
}];
|
|
},*/
|
|
},
|
|
/*Instance: {
|
|
metrics(instance) {
|
|
return ([{
|
|
type: {
|
|
uuid: 'metric-type-uuid',
|
|
id: 'metric-type-id',
|
|
name: 'metric-type-name'
|
|
},
|
|
data: normalMetricData.node_memory_rss_bytes
|
|
}]);
|
|
}
|
|
}*/
|
|
};
|
|
|
|
export default resolveFunctions;
|