mirror of
https://github.com/yldio/copilot.git
synced 2024-11-28 06:00:06 +02:00
feat(cp-gql-mock-server, cp-gql-schema): Metrics to be a filed on instances (#607)
This commit is contained in:
parent
06fe7e1312
commit
ce31f505a0
@ -40,8 +40,36 @@ const find = (query = {}) => item =>
|
|||||||
|
|
||||||
const cleanQuery = (q = {}) => JSON.parse(JSON.stringify(q));
|
const cleanQuery = (q = {}) => JSON.parse(JSON.stringify(q));
|
||||||
|
|
||||||
|
const getMetrics = query => {
|
||||||
|
const {
|
||||||
|
names,
|
||||||
|
start,
|
||||||
|
end
|
||||||
|
} = query;
|
||||||
|
|
||||||
|
const metrics = names.reduce((metrics, name) =>
|
||||||
|
metrics.concat(metricData.filter(md =>
|
||||||
|
md.name === name)), []);
|
||||||
|
|
||||||
|
return Promise.resolve(metrics);
|
||||||
|
}
|
||||||
|
|
||||||
const getInstances = query => {
|
const getInstances = query => {
|
||||||
return Promise.resolve(instances.filter(find(cleanQuery(query))));
|
const metricsResolver = ({ id }) => query =>
|
||||||
|
getMetrics(
|
||||||
|
Object.assign({}, query, {
|
||||||
|
instanceId: id
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
const addNestedResolvers = instance =>
|
||||||
|
Object.assign({}, instance, {
|
||||||
|
metrics: metricsResolver(instance)
|
||||||
|
});
|
||||||
|
|
||||||
|
return Promise.resolve(
|
||||||
|
instances.filter(find(cleanQuery(query))).map(addNestedResolvers)
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const getUnfilteredServices = query => {
|
const getUnfilteredServices = query => {
|
||||||
@ -528,10 +556,6 @@ const config = ({
|
|||||||
return _plain ? config : Promise.resolve(config);
|
return _plain ? config : Promise.resolve(config);
|
||||||
};
|
};
|
||||||
|
|
||||||
const getMetrics = () => {
|
|
||||||
return Promise.resolve(metricData);
|
|
||||||
};
|
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
portal: getPortal,
|
portal: getPortal,
|
||||||
deploymentGroups: getDeploymentGroups,
|
deploymentGroups: getDeploymentGroups,
|
||||||
@ -554,6 +578,5 @@ module.exports = {
|
|||||||
restartServices: (options, request, fn) => fn(null, restartServices(options)),
|
restartServices: (options, request, fn) => fn(null, restartServices(options)),
|
||||||
stopServices: (options, request, fn) => fn(null, stopServices(options)),
|
stopServices: (options, request, fn) => fn(null, stopServices(options)),
|
||||||
startServices: (options, request, fn) => fn(null, startServices(options)),
|
startServices: (options, request, fn) => fn(null, startServices(options)),
|
||||||
config,
|
config
|
||||||
metrics: getMetrics
|
|
||||||
};
|
};
|
||||||
|
@ -167,6 +167,23 @@ enum HealthyStatus {
|
|||||||
UNAVAILABLE
|
UNAVAILABLE
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type Metric {
|
||||||
|
time: String!
|
||||||
|
value: Float!
|
||||||
|
}
|
||||||
|
|
||||||
|
enum MetricName {
|
||||||
|
AVG_MEM_BYTES
|
||||||
|
AVG_LOAD_PERCENT
|
||||||
|
AGG_NETWORK_BYTES
|
||||||
|
}
|
||||||
|
|
||||||
|
type InstanceMetric {
|
||||||
|
instance: String!
|
||||||
|
name: MetricName!
|
||||||
|
metrics: [Metric]
|
||||||
|
}
|
||||||
|
|
||||||
type Instance {
|
type Instance {
|
||||||
id: ID!
|
id: ID!
|
||||||
name: String!
|
name: String!
|
||||||
@ -175,6 +192,7 @@ type Instance {
|
|||||||
healthy: HealthyStatus
|
healthy: HealthyStatus
|
||||||
watches: [String]
|
watches: [String]
|
||||||
jobs: [String]
|
jobs: [String]
|
||||||
|
metrics(names: [MetricName]!, start: String!, end: String!): [InstanceMetric]!
|
||||||
}
|
}
|
||||||
|
|
||||||
type Datacenter {
|
type Datacenter {
|
||||||
@ -184,24 +202,6 @@ type Datacenter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
type Metric {
|
|
||||||
time: String!
|
|
||||||
value: Float!
|
|
||||||
}
|
|
||||||
|
|
||||||
enum MetricName {
|
|
||||||
AVG_MEM_BYTES,
|
|
||||||
AVG_LOAD_PERCENT,
|
|
||||||
AGG_NETWORK_BYTES
|
|
||||||
}
|
|
||||||
|
|
||||||
type InstanceMetric {
|
|
||||||
instance: String!
|
|
||||||
name: MetricName!
|
|
||||||
metrics: [Metric]
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# we probably wont use some of these queries or arguments
|
# we probably wont use some of these queries or arguments
|
||||||
# but this way we expose the entire db through gql
|
# but this way we expose the entire db through gql
|
||||||
type Query {
|
type Query {
|
||||||
|
Loading…
Reference in New Issue
Block a user