# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: test_platform/phosphorus/upload_to_gs.proto
"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import symbol_database as _symbol_database
from google.protobuf.internal import builder as _builder
# @@protoc_insertion_point(imports)

_sym_db = _symbol_database.Default()


from chromite.api.gen_sdk.test_platform.phosphorus import common_pb2 as test__platform_dot_phosphorus_dot_common__pb2


DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n+test_platform/phosphorus/upload_to_gs.proto\x12\x18test_platform.phosphorus\x1a%test_platform/phosphorus/common.proto\"~\n\x11UploadToGSRequest\x12\x34\n\x06\x63onfig\x18\x01 \x01(\x0b\x32 .test_platform.phosphorus.ConfigB\x02\x18\x01\x12\x14\n\x0cgs_directory\x18\x02 \x01(\t\x12\x17\n\x0flocal_directory\x18\x04 \x01(\tJ\x04\x08\x03\x10\x04\"$\n\x12UploadToGSResponse\x12\x0e\n\x06gs_url\x18\x01 \x01(\tBDZBgo.chromium.org/chromiumos/infra/proto/go/test_platform/phosphorusb\x06proto3')

_globals = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'test_platform.phosphorus.upload_to_gs_pb2', _globals)
if _descriptor._USE_C_DESCRIPTORS == False:

  DESCRIPTOR._options = None
  DESCRIPTOR._serialized_options = b'ZBgo.chromium.org/chromiumos/infra/proto/go/test_platform/phosphorus'
  _UPLOADTOGSREQUEST.fields_by_name['config']._options = None
  _UPLOADTOGSREQUEST.fields_by_name['config']._serialized_options = b'\030\001'
  _globals['_UPLOADTOGSREQUEST']._serialized_start=112
  _globals['_UPLOADTOGSREQUEST']._serialized_end=238
  _globals['_UPLOADTOGSRESPONSE']._serialized_start=240
  _globals['_UPLOADTOGSRESPONSE']._serialized_end=276
# @@protoc_insertion_point(module_scope)
