# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: chromiumos/container_metadata.proto

from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
from google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)

_sym_db = _symbol_database.Default()




DESCRIPTOR = _descriptor.FileDescriptor(
  name='chromiumos/container_metadata.proto',
  package='chromiumos',
  syntax='proto3',
  serialized_options=b'\n!com.google.chrome.crosinfra.protoZ4go.chromium.org/chromiumos/infra/proto/go/chromiumos',
  serialized_pb=b'\n#chromiumos/container_metadata.proto\x12\nchromiumos\"2\n\rGcrRepository\x12\x10\n\x08hostname\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\"o\n\x12\x43ontainerImageInfo\x12-\n\nrepository\x18\x01 \x01(\x0b\x32\x19.chromiumos.GcrRepository\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0e\n\x06\x64igest\x18\x03 \x01(\t\x12\x0c\n\x04tags\x18\x04 \x03(\t\"\x9d\x01\n\x11\x43ontainerImageMap\x12\x39\n\x06images\x18\x01 \x03(\x0b\x32).chromiumos.ContainerImageMap.ImagesEntry\x1aM\n\x0bImagesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12-\n\x05value\x18\x02 \x01(\x0b\x32\x1e.chromiumos.ContainerImageInfo:\x02\x38\x01\"\xa8\x01\n\x11\x43ontainerMetadata\x12\x41\n\ncontainers\x18\x01 \x03(\x0b\x32-.chromiumos.ContainerMetadata.ContainersEntry\x1aP\n\x0f\x43ontainersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x1d.chromiumos.ContainerImageMap:\x02\x38\x01\x42Y\n!com.google.chrome.crosinfra.protoZ4go.chromium.org/chromiumos/infra/proto/go/chromiumosb\x06proto3'
)




_GCRREPOSITORY = _descriptor.Descriptor(
  name='GcrRepository',
  full_name='chromiumos.GcrRepository',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='hostname', full_name='chromiumos.GcrRepository.hostname', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=b"".decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='project', full_name='chromiumos.GcrRepository.project', index=1,
      number=2, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=b"".decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=51,
  serialized_end=101,
)


_CONTAINERIMAGEINFO = _descriptor.Descriptor(
  name='ContainerImageInfo',
  full_name='chromiumos.ContainerImageInfo',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='repository', full_name='chromiumos.ContainerImageInfo.repository', index=0,
      number=1, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='name', full_name='chromiumos.ContainerImageInfo.name', index=1,
      number=2, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=b"".decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='digest', full_name='chromiumos.ContainerImageInfo.digest', index=2,
      number=3, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=b"".decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='tags', full_name='chromiumos.ContainerImageInfo.tags', index=3,
      number=4, type=9, cpp_type=9, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=103,
  serialized_end=214,
)


_CONTAINERIMAGEMAP_IMAGESENTRY = _descriptor.Descriptor(
  name='ImagesEntry',
  full_name='chromiumos.ContainerImageMap.ImagesEntry',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='key', full_name='chromiumos.ContainerImageMap.ImagesEntry.key', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=b"".decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='value', full_name='chromiumos.ContainerImageMap.ImagesEntry.value', index=1,
      number=2, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=b'8\001',
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=297,
  serialized_end=374,
)

_CONTAINERIMAGEMAP = _descriptor.Descriptor(
  name='ContainerImageMap',
  full_name='chromiumos.ContainerImageMap',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='images', full_name='chromiumos.ContainerImageMap.images', index=0,
      number=1, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[_CONTAINERIMAGEMAP_IMAGESENTRY, ],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=217,
  serialized_end=374,
)


_CONTAINERMETADATA_CONTAINERSENTRY = _descriptor.Descriptor(
  name='ContainersEntry',
  full_name='chromiumos.ContainerMetadata.ContainersEntry',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='key', full_name='chromiumos.ContainerMetadata.ContainersEntry.key', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=b"".decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='value', full_name='chromiumos.ContainerMetadata.ContainersEntry.value', index=1,
      number=2, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=b'8\001',
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=465,
  serialized_end=545,
)

_CONTAINERMETADATA = _descriptor.Descriptor(
  name='ContainerMetadata',
  full_name='chromiumos.ContainerMetadata',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='containers', full_name='chromiumos.ContainerMetadata.containers', index=0,
      number=1, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[_CONTAINERMETADATA_CONTAINERSENTRY, ],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=377,
  serialized_end=545,
)

_CONTAINERIMAGEINFO.fields_by_name['repository'].message_type = _GCRREPOSITORY
_CONTAINERIMAGEMAP_IMAGESENTRY.fields_by_name['value'].message_type = _CONTAINERIMAGEINFO
_CONTAINERIMAGEMAP_IMAGESENTRY.containing_type = _CONTAINERIMAGEMAP
_CONTAINERIMAGEMAP.fields_by_name['images'].message_type = _CONTAINERIMAGEMAP_IMAGESENTRY
_CONTAINERMETADATA_CONTAINERSENTRY.fields_by_name['value'].message_type = _CONTAINERIMAGEMAP
_CONTAINERMETADATA_CONTAINERSENTRY.containing_type = _CONTAINERMETADATA
_CONTAINERMETADATA.fields_by_name['containers'].message_type = _CONTAINERMETADATA_CONTAINERSENTRY
DESCRIPTOR.message_types_by_name['GcrRepository'] = _GCRREPOSITORY
DESCRIPTOR.message_types_by_name['ContainerImageInfo'] = _CONTAINERIMAGEINFO
DESCRIPTOR.message_types_by_name['ContainerImageMap'] = _CONTAINERIMAGEMAP
DESCRIPTOR.message_types_by_name['ContainerMetadata'] = _CONTAINERMETADATA
_sym_db.RegisterFileDescriptor(DESCRIPTOR)

GcrRepository = _reflection.GeneratedProtocolMessageType('GcrRepository', (_message.Message,), {
  'DESCRIPTOR' : _GCRREPOSITORY,
  '__module__' : 'chromiumos.container_metadata_pb2'
  # @@protoc_insertion_point(class_scope:chromiumos.GcrRepository)
  })
_sym_db.RegisterMessage(GcrRepository)

ContainerImageInfo = _reflection.GeneratedProtocolMessageType('ContainerImageInfo', (_message.Message,), {
  'DESCRIPTOR' : _CONTAINERIMAGEINFO,
  '__module__' : 'chromiumos.container_metadata_pb2'
  # @@protoc_insertion_point(class_scope:chromiumos.ContainerImageInfo)
  })
_sym_db.RegisterMessage(ContainerImageInfo)

ContainerImageMap = _reflection.GeneratedProtocolMessageType('ContainerImageMap', (_message.Message,), {

  'ImagesEntry' : _reflection.GeneratedProtocolMessageType('ImagesEntry', (_message.Message,), {
    'DESCRIPTOR' : _CONTAINERIMAGEMAP_IMAGESENTRY,
    '__module__' : 'chromiumos.container_metadata_pb2'
    # @@protoc_insertion_point(class_scope:chromiumos.ContainerImageMap.ImagesEntry)
    })
  ,
  'DESCRIPTOR' : _CONTAINERIMAGEMAP,
  '__module__' : 'chromiumos.container_metadata_pb2'
  # @@protoc_insertion_point(class_scope:chromiumos.ContainerImageMap)
  })
_sym_db.RegisterMessage(ContainerImageMap)
_sym_db.RegisterMessage(ContainerImageMap.ImagesEntry)

ContainerMetadata = _reflection.GeneratedProtocolMessageType('ContainerMetadata', (_message.Message,), {

  'ContainersEntry' : _reflection.GeneratedProtocolMessageType('ContainersEntry', (_message.Message,), {
    'DESCRIPTOR' : _CONTAINERMETADATA_CONTAINERSENTRY,
    '__module__' : 'chromiumos.container_metadata_pb2'
    # @@protoc_insertion_point(class_scope:chromiumos.ContainerMetadata.ContainersEntry)
    })
  ,
  'DESCRIPTOR' : _CONTAINERMETADATA,
  '__module__' : 'chromiumos.container_metadata_pb2'
  # @@protoc_insertion_point(class_scope:chromiumos.ContainerMetadata)
  })
_sym_db.RegisterMessage(ContainerMetadata)
_sym_db.RegisterMessage(ContainerMetadata.ContainersEntry)


DESCRIPTOR._options = None
_CONTAINERIMAGEMAP_IMAGESENTRY._options = None
_CONTAINERMETADATA_CONTAINERSENTRY._options = None
# @@protoc_insertion_point(module_scope)
