Skip to content

Commit 721d3d1

Browse files
Add endpoint and intercepters
1 parent 10f0d4f commit 721d3d1

File tree

5 files changed

+43
-8
lines changed

5 files changed

+43
-8
lines changed

ee/ephemeral_environments/lib/ephemeral_environments/application.ex

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,12 @@ defmodule EphemeralEnvironments.Application do
99
"Starting EphemeralEnvironments in '#{Application.get_env(:ephemeral_environments, :env)}' environment"
1010
)
1111

12-
grpc_port = Application.get_env(:ephemeral_environments, :grpc_listen_port)
13-
1412
children = [
1513
EphemeralEnvironments.Repo,
1614
{GRPC.Server.Supervisor,
17-
servers: [EphemeralEnvironments.Grpc.EphemeralEnvironmentsServer],
18-
port: Application.get_env(:ephemeral_environments, :grpc_listen_port),
19-
start_server: true,
20-
adapter_opts: [ip: {0, 0, 0, 0}]}
15+
endpoint: EphemeralEnvironments.Grpc.Endpoint,
16+
port: Application.fetch_env!(:ephemeral_environments, :grpc_listen_port),
17+
start_server: true}
2118
]
2219

2320
opts = [strategy: :one_for_one, name: EphemeralEnvironments.Supervisor]
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
defmodule EphemeralEnvironments.Grpc.Endpoint do
2+
use GRPC.Endpoint
3+
4+
run(EphemeralEnvironments.Grpc.EphemeralEnvironmentsServer,
5+
interceptors: [
6+
EphemeralEnvironments.Grpc.Interceptor.Metrics,
7+
EphemeralEnvironments.Grpc.Interceptor.ProtoConverter
8+
]
9+
)
10+
end

ee/ephemeral_environments/lib/grpc/ephemeral_environments_server.ex renamed to ee/ephemeral_environments/lib/ephemeral_environments/grpc/ephemeral_environments_server.ex

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ defmodule EphemeralEnvironments.Grpc.EphemeralEnvironmentsServer do
2424
%DescribeResponse{}
2525
end
2626

27-
def create(_request, _stream) do
27+
def create(request, _stream) do
28+
ret = EphemeralEnvironments.Service.EphemeralEnvironmentType.create(request.environment_type)
2829
%CreateResponse{}
2930
end
3031

@@ -39,4 +40,4 @@ defmodule EphemeralEnvironments.Grpc.EphemeralEnvironmentsServer do
3940
def cordon(_request, _stream) do
4041
%CordonResponse{}
4142
end
42-
end
43+
end
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
defmodule EphemeralEnvironments.Grpc.Interceptor.Metrics do
2+
@behaviour GRPC.ServerInterceptor
3+
require Logger
4+
5+
def init(options) do
6+
options
7+
end
8+
9+
def call(request, stream, next, _) do
10+
Logger.debug("Metrics intercepter #{inspect(request)}")
11+
next.(request, stream)
12+
end
13+
end
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
defmodule EphemeralEnvironments.Grpc.Interceptor.ProtoConverter do
2+
@behaviour GRPC.ServerInterceptor
3+
require Logger
4+
5+
def init(options) do
6+
options
7+
end
8+
9+
def call(request, stream, next, _) do
10+
Logger.debug("Proto intercepter #{inspect(request)}")
11+
converted = EphemeralEnvironments.Utils.Proto.to_map(request)
12+
next.(converted, stream)
13+
end
14+
end

0 commit comments

Comments
 (0)