diff --git a/lib/sidecar/grpc/code_generator.ex b/lib/sidecar/grpc/code_generator.ex index ab900a7b..d0978c49 100644 --- a/lib/sidecar/grpc/code_generator.ex +++ b/lib/sidecar/grpc/code_generator.ex @@ -273,6 +273,8 @@ defmodule Sidecar.GRPC.CodeGenerator do files -> files + # Exclude files that contains google folder + |> Enum.reject(&String.contains?(&1, "google/")) |> Enum.filter(&String.ends_with?(&1, extension)) |> Enum.sort() end diff --git a/lib/sidecar/grpc/generators/actor_invoker_generator.ex b/lib/sidecar/grpc/generators/actor_invoker_generator.ex index 97fb2b3f..2261cbd9 100644 --- a/lib/sidecar/grpc/generators/actor_invoker_generator.ex +++ b/lib/sidecar/grpc/generators/actor_invoker_generator.ex @@ -10,6 +10,7 @@ defmodule Sidecar.GRPC.Generators.ActorInvoker do @impl true def template do """ + <%= if @render do %> defmodule <%= @module %> do @moduledoc "This module provides helper functions for invoking the methods on the <%= @service_name %> actor." @@ -113,11 +114,12 @@ defmodule Sidecar.GRPC.Generators.ActorInvoker do end <% end %> end + <% end %> """ end @impl true - def generate(ctx, %Google.Protobuf.FileDescriptorProto{service: svcs} = _desc) do + def generate(ctx, %Google.Protobuf.FileDescriptorProto{service: [_ | _] = svcs} = _desc) do for svc <- svcs do mod_name = Util.mod_name(ctx, [Macro.camelize(svc.name)]) actor_name = Macro.camelize(svc.name) @@ -143,11 +145,16 @@ defmodule Sidecar.GRPC.Generators.ActorInvoker do actor_name: actor_name, service_name: mod_name, methods: methods, - version: Util.version() + version: Util.version(), + render: true ]} end end + def generate(_ctx, _opts), do: {"unknown", [render: false]} + + defp opts(nil), do: %{} + defp opts(%Google.Protobuf.MethodOptions{__pb_extensions__: extensions}) when extensions == %{} do %{} diff --git a/lib/sidecar/grpc/generators/generator_accumulator.ex b/lib/sidecar/grpc/generators/generator_accumulator.ex index f99cd9ec..b4ca33e3 100644 --- a/lib/sidecar/grpc/generators/generator_accumulator.ex +++ b/lib/sidecar/grpc/generators/generator_accumulator.ex @@ -17,7 +17,7 @@ defmodule Sidecar.GRPC.Generators.GeneratorAccumulator do end @impl true - def generate(ctx, %Google.Protobuf.FileDescriptorProto{service: svcs} = _desc) do + def generate(ctx, %Google.Protobuf.FileDescriptorProto{service: [_ | _] = svcs} = _desc) do current_services = :persistent_term.get(:grpc_services, []) descriptors = (:persistent_term.get(:proto_file_descriptors, []) ++ svcs) |> Enum.uniq() @@ -26,12 +26,11 @@ defmodule Sidecar.GRPC.Generators.GeneratorAccumulator do :persistent_term.put(:grpc_services, services) :persistent_term.put(:proto_file_descriptors, descriptors) - {"ProxyEndpoint", - [ - services: services - ]} + {"ProxyEndpoint", [render: true]} end + def generate(_ctx, _opts), do: {"unknown", [render: false]} + defp services_to_module(_ctx, nil, current_services), do: current_services defp services_to_module(_ctx, [], current_services), do: current_services diff --git a/lib/sidecar/grpc/generators/grpc_with_custom_options.ex b/lib/sidecar/grpc/generators/grpc_with_custom_options.ex index b9535e81..f1c99b23 100644 --- a/lib/sidecar/grpc/generators/grpc_with_custom_options.ex +++ b/lib/sidecar/grpc/generators/grpc_with_custom_options.ex @@ -12,29 +12,31 @@ defmodule Sidecar.GRPC.Generators.GRPCWithCustomOptions do @impl true def template do """ - defmodule <%= @module %>.Service do - use GRPC.Service, name: <%= inspect(@service_name) %>, protoc_gen_elixir_version: "<%= @version %>" - - <%= if @descriptor_fun_body do %> - def descriptor do - # credo:disable-for-next-line - <%= @descriptor_fun_body %> - end - <% end %> - - <%= for {method_name, input, output, options} <- @methods do %> - rpc :<%= method_name %>, <%= input %>, <%= output %>, <%= options %> - <% end %> - end + <%= if @render do %> + defmodule <%= @module %>.Service do + use GRPC.Service, name: <%= inspect(@service_name) %>, protoc_gen_elixir_version: "<%= @version %>" - defmodule <%= @module %>.Stub do - use GRPC.Stub, service: <%= @module %>.Service - end + <%= if @descriptor_fun_body do %> + def descriptor do + # credo:disable-for-next-line + <%= @descriptor_fun_body %> + end + <% end %> + + <%= for {method_name, input, output, options} <- @methods do %> + rpc :<%= method_name %>, <%= input %>, <%= output %>, <%= options %> + <% end %> + end + + defmodule <%= @module %>.Stub do + use GRPC.Stub, service: <%= @module %>.Service + end + <% end %> """ end @impl true - def generate(ctx, %Google.Protobuf.FileDescriptorProto{service: svcs} = desc) do + def generate(ctx, %Google.Protobuf.FileDescriptorProto{service: [_ | _] = svcs} = desc) do for svc <- svcs do mod_name = Util.mod_name(ctx, [Macro.camelize(svc.name)]) name = Util.prepend_package_prefix(ctx.package, svc.name) @@ -61,6 +63,7 @@ defmodule Sidecar.GRPC.Generators.GRPCWithCustomOptions do {mod_name, [ + render: true, module: mod_name, service_name: name, methods: methods, @@ -70,9 +73,13 @@ defmodule Sidecar.GRPC.Generators.GRPCWithCustomOptions do end end + def generate(_ctx, _opts), do: {"unknown", [render: false]} + defp service_arg(type, _streaming? = true), do: "stream(#{type})" defp service_arg(type, _streaming?), do: type + defp opts(nil), do: %{} + defp opts(%Google.Protobuf.MethodOptions{__pb_extensions__: extensions}) when extensions == %{} do %{} diff --git a/lib/sidecar/grpc/generators/handler_generator.ex b/lib/sidecar/grpc/generators/handler_generator.ex index f9dc9448..7ef82987 100644 --- a/lib/sidecar/grpc/generators/handler_generator.ex +++ b/lib/sidecar/grpc/generators/handler_generator.ex @@ -14,6 +14,7 @@ defmodule Sidecar.GRPC.Generators.HandlerGenerator do @impl true def template do """ + <%= if @render do %> defmodule <%= @module %>.ActorDispatcher do use GRPC.Server, service: <%= @service_name %> @@ -33,13 +34,13 @@ defmodule Sidecar.GRPC.Generators.HandlerGenerator do Dispatcher.dispatch(request) end <% end %> - end + <% end %> """ end @impl true - def generate(ctx, %Google.Protobuf.FileDescriptorProto{service: svcs} = _desc) do + def generate(ctx, %Google.Protobuf.FileDescriptorProto{service: [_ | _] = svcs} = _desc) do for svc <- svcs do mod_name = Util.mod_name(ctx, [Macro.camelize(svc.name)]) actor_name = Macro.camelize(svc.name) @@ -65,14 +66,19 @@ defmodule Sidecar.GRPC.Generators.HandlerGenerator do actor_name: actor_name, service_name: mod_name, methods: methods, - version: Util.version() + version: Util.version(), + render: true ]} end end + def generate(_ctx, _opts), do: {"unknown", [render: false]} + defp service_arg(type, _streaming? = true), do: "stream(#{type})" defp service_arg(type, _streaming?), do: type + defp opts(nil), do: %{} + defp opts(%Google.Protobuf.MethodOptions{__pb_extensions__: extensions}) when extensions == %{} do %{} diff --git a/lib/sidecar/grpc/generators/handler_transcoding_generator.ex b/lib/sidecar/grpc/generators/handler_transcoding_generator.ex index 48414258..6f945981 100644 --- a/lib/sidecar/grpc/generators/handler_transcoding_generator.ex +++ b/lib/sidecar/grpc/generators/handler_transcoding_generator.ex @@ -41,27 +41,7 @@ defmodule Sidecar.GRPC.Generators.HandlerTranscodingGenerator do end @impl true - def generate(ctx, %Google.Protobuf.FileDescriptorProto{service: svcs} = _desc) do - do_generate(ctx, svcs) - end - - defp do_generate(_ctx, nil), - do: - {"unknown", - [ - render: false, - module: "Unknown" - ]} - - defp do_generate(_ctx, []), - do: - {"unknown", - [ - render: false, - module: "Unknown" - ]} - - defp do_generate(ctx, svcs) do + def generate(ctx, %Google.Protobuf.FileDescriptorProto{service: [_ | _] = svcs} = _desc) do for svc <- svcs do mod_name = Util.mod_name(ctx, [Macro.camelize(svc.name)]) actor_name = Macro.camelize(svc.name) @@ -93,9 +73,13 @@ defmodule Sidecar.GRPC.Generators.HandlerTranscodingGenerator do end end + def generate(_ctx, _opts), do: {"unknown", [render: false]} + defp service_arg(type, _streaming? = true), do: "stream(#{type})" defp service_arg(type, _streaming?), do: type + defp opts(nil), do: %{} + defp opts(%Google.Protobuf.MethodOptions{__pb_extensions__: extensions}) when extensions == %{} do %{} diff --git a/spawn_operator/spawn_operator/lib/spawn_operator.ex b/spawn_operator/spawn_operator/lib/spawn_operator.ex index 5e8926b7..88b57ea9 100644 --- a/spawn_operator/spawn_operator/lib/spawn_operator.ex +++ b/spawn_operator/spawn_operator/lib/spawn_operator.ex @@ -92,7 +92,8 @@ defmodule SpawnOperator do Map.get(annotations, "spawn-eigr.io/actors-global-backpressure-min-demand", "-1"), actors_global_backpressure_enabled: Map.get(annotations, "spawn-eigr.io/actors-global-backpressure-enabled", "true"), - grpc_include_protos_path: Map.get(annotations, "spawn-eigr.io/grpc-include-protos-path", "/shared/protos"), + grpc_include_protos_path: + Map.get(annotations, "spawn-eigr.io/grpc-include-protos-path", "/shared/protos") } end end diff --git a/spawn_operator/spawn_operator/lib/spawn_operator/k8s/proxy/configmap/sidecar_configmap.ex b/spawn_operator/spawn_operator/lib/spawn_operator/k8s/proxy/configmap/sidecar_configmap.ex index 00da8a5b..a7f96c0d 100644 --- a/spawn_operator/spawn_operator/lib/spawn_operator/k8s/proxy/configmap/sidecar_configmap.ex +++ b/spawn_operator/spawn_operator/lib/spawn_operator/k8s/proxy/configmap/sidecar_configmap.ex @@ -160,7 +160,7 @@ defmodule SpawnOperator.K8s.Proxy.CM.Configmap do "ACTORS_GLOBAL_BACKPRESSURE_MIN_DEMAND" => annotations.actors_global_backpressure_min_demand, "ACTORS_GLOBAL_BACKPRESSURE_ENABLED" => annotations.actors_global_backpressure_enabled, - "PROXY_GRPC_INCLUDE_PROTOS_PATH" => annotations.grpc_include_protos_path, + "PROXY_GRPC_INCLUDE_PROTOS_PATH" => annotations.grpc_include_protos_path } } end diff --git a/spawn_operator/spawn_operator/lib/spawn_operator/k8s/proxy/deployment.ex b/spawn_operator/spawn_operator/lib/spawn_operator/k8s/proxy/deployment.ex index 26516c66..42bb460f 100644 --- a/spawn_operator/spawn_operator/lib/spawn_operator/k8s/proxy/deployment.ex +++ b/spawn_operator/spawn_operator/lib/spawn_operator/k8s/proxy/deployment.ex @@ -66,7 +66,6 @@ defmodule SpawnOperator.K8s.Proxy.Deployment do "name" => "shared-volume", "emptyDir" => %{} } - @default_certs_volume %{ "name" => "certs",