@zombienet/orchestrator
Version:
ZombieNet aim to be a testing framework for substrate based blockchains, providing a simple cli tool that allow users to spawn and test ephemeral Substrate based networks
87 lines (86 loc) • 2.99 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ServiceResource = void 0;
const constants_1 = require("../../../constants");
class ServiceResource {
constructor(podSpec) {
this.podSpec = podSpec;
}
generateSpec() {
const ports = this.generatePorts();
const name = this.podSpec.metadata.name;
return this.generateServiceSpec(name, ports);
}
shouldExposeJaegerPorts() {
return this.podSpec.spec.containers.some((container) => container.name === "jaeger-agent");
}
generatePorts() {
let ports = [
{
name: "prometheus",
protocol: "TCP",
port: constants_1.PROMETHEUS_PORT,
targetPort: constants_1.PROMETHEUS_PORT,
},
{
name: "rpc-http",
protocol: "TCP",
port: constants_1.RPC_HTTP_PORT,
targetPort: constants_1.RPC_HTTP_PORT,
},
{
name: "rpc-ws",
protocol: "TCP",
port: constants_1.RPC_WS_PORT,
targetPort: constants_1.RPC_WS_PORT,
},
{
name: "p2p",
protocol: "TCP",
port: constants_1.P2P_PORT,
targetPort: constants_1.P2P_PORT,
},
];
if (this.shouldExposeJaegerPorts()) {
ports = ports.concat([
{
name: "jaeger-agent-zipkin-compact",
protocol: "UDP",
port: constants_1.JAEGER_AGENT_ZIPKIN_COMPACT_PORT,
targetPort: constants_1.JAEGER_AGENT_ZIPKIN_COMPACT_PORT,
},
{
name: "jaeger-agent-serve-configs",
protocol: "TCP",
port: constants_1.JAEGER_AGENT_SERVE_CONFIGS_PORT,
targetPort: constants_1.JAEGER_AGENT_SERVE_CONFIGS_PORT,
},
{
name: "jaeger-agent-thrift-compact",
protocol: "UDP",
port: constants_1.JAEGER_AGENT_THRIFT_COMPACT_PORT,
targetPort: constants_1.JAEGER_AGENT_THRIFT_COMPACT_PORT,
},
{
name: "jaeger-agent-thrift-binary",
protocol: "UDP",
port: constants_1.JAEGER_AGENT_THRIFT_BINARY_PORT,
targetPort: constants_1.JAEGER_AGENT_THRIFT_BINARY_PORT,
},
]);
}
return ports;
}
generateServiceSpec(name, ports) {
return {
apiVersion: "v1",
kind: "Service",
metadata: { name },
spec: {
selector: { "app.kubernetes.io/instance": name },
ports,
},
};
}
}
exports.ServiceResource = ServiceResource;