|
|
|
@ -21,7 +21,7 @@ from envoy.config.filter.network.http_connection_manager.v2 import http_connecti |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Convert an arbitrary proto object to its Struct proto representation. |
|
|
|
|
def ProtoToStruct(proto): |
|
|
|
|
def proto_to_struct(proto): |
|
|
|
|
json_rep = json_format.MessageToJson(proto) |
|
|
|
|
parsed_msg = struct_pb2.Struct() |
|
|
|
|
json_format.Parse(json_rep, parsed_msg) |
|
|
|
@ -29,7 +29,7 @@ def ProtoToStruct(proto): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Parse a proto from the filesystem. |
|
|
|
|
def ParseProto(path, filter_name): |
|
|
|
|
def parse_proto(path, filter_name): |
|
|
|
|
# We only know about some filter config protos ahead of time. |
|
|
|
|
KNOWN_FILTERS = { |
|
|
|
|
'http_connection_manager': lambda: http_connection_manager_pb2.HttpConnectionManager() |
|
|
|
@ -40,14 +40,14 @@ def ParseProto(path, filter_name): |
|
|
|
|
return filter_config |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def GenerateListeners(listeners_pb_path, output_pb_path, output_json_path, fragments): |
|
|
|
|
def generate_listeners(listeners_pb_path, output_pb_path, output_json_path, fragments): |
|
|
|
|
listener = lds_pb2.Listener() |
|
|
|
|
with open(listeners_pb_path, 'r') as f: |
|
|
|
|
text_format.Merge(f.read(), listener) |
|
|
|
|
|
|
|
|
|
for filter_chain in listener.filter_chains: |
|
|
|
|
for f in filter_chain.filters: |
|
|
|
|
f.config.CopyFrom(ProtoToStruct(ParseProto(next(fragments), f.name))) |
|
|
|
|
f.config.CopyFrom(proto_to_struct(parse_proto(next(fragments), f.name))) |
|
|
|
|
|
|
|
|
|
with open(output_pb_path, 'w') as f: |
|
|
|
|
f.write(str(listener)) |
|
|
|
@ -62,4 +62,4 @@ if __name__ == '__main__': |
|
|
|
|
'listeners.json> <filter config fragment paths>') % sys.argv[0] |
|
|
|
|
sys.exit(1) |
|
|
|
|
|
|
|
|
|
GenerateListeners(sys.argv[1], sys.argv[2], sys.argv[3], iter(sys.argv[4:])) |
|
|
|
|
generate_listeners(sys.argv[1], sys.argv[2], sys.argv[3], iter(sys.argv[4:])) |
|
|
|
|