# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: chromiumos/test/api/provision_cli.proto
"""Generated protocol buffer code."""
from chromite.third_party.google.protobuf import descriptor as _descriptor
from chromite.third_party.google.protobuf import message as _message
from chromite.third_party.google.protobuf import reflection as _reflection
from chromite.third_party.google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)

_sym_db = _symbol_database.Default()


from chromite.api.gen.chromiumos.test.lab.api import dut_pb2 as chromiumos_dot_test_dot_lab_dot_api_dot_dut__pb2
from chromite.api.gen.chromiumos.test.api import provision_state_pb2 as chromiumos_dot_test_dot_api_dot_provision__state__pb2
from chromite.api.gen.chromiumos.test.api import provision_service_pb2 as chromiumos_dot_test_dot_api_dot_provision__service__pb2


DESCRIPTOR = _descriptor.FileDescriptor(
  name='chromiumos/test/api/provision_cli.proto',
  package='chromiumos.test.api',
  syntax='proto3',
  serialized_options=b'Z-go.chromium.org/chromiumos/config/go/test/api',
  create_key=_descriptor._internal_create_key,
  serialized_pb=b'\n\'chromiumos/test/api/provision_cli.proto\x12\x13\x63hromiumos.test.api\x1a!chromiumos/test/lab/api/dut.proto\x1a)chromiumos/test/api/provision_state.proto\x1a+chromiumos/test/api/provision_service.proto\"F\n\x11ProvisionCliInput\x12\x31\n\ndut_inputs\x18\x01 \x03(\x0b\x32\x1d.chromiumos.test.api.DutInput\"\xb6\x02\n\x08\x44utInput\x12+\n\x02id\x18\x01 \x01(\x0b\x32\x1f.chromiumos.test.lab.api.Dut.Id\x12<\n\x0fprovision_state\x18\x03 \x01(\x0b\x32#.chromiumos.test.api.ProvisionState\x12>\n\x0b\x64ut_service\x18\x04 \x01(\x0b\x32).chromiumos.test.api.DutInput.DockerImage\x12\x44\n\x11provision_service\x18\x05 \x01(\x0b\x32).chromiumos.test.api.DutInput.DockerImage\x1a\x33\n\x0b\x44ockerImage\x12\x17\n\x0frepository_path\x18\x01 \x01(\t\x12\x0b\n\x03tag\x18\x02 \x01(\tJ\x04\x08\x02\x10\x03\"I\n\x12ProvisionCliOutput\x12\x33\n\x0b\x64ut_outputs\x18\x01 \x03(\x0b\x32\x1e.chromiumos.test.api.DutOutput\"\xb3\x01\n\tDutOutput\x12+\n\x02id\x18\x01 \x01(\x0b\x32\x1f.chromiumos.test.lab.api.Dut.Id\x12\x36\n\x07success\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.InstallSuccessH\x00\x12\x36\n\x07\x66\x61ilure\x18\x03 \x01(\x0b\x32#.chromiumos.test.api.InstallFailureH\x00\x42\t\n\x07outcomeB/Z-go.chromium.org/chromiumos/config/go/test/apib\x06proto3'
  ,
  dependencies=[chromiumos_dot_test_dot_lab_dot_api_dot_dut__pb2.DESCRIPTOR,chromiumos_dot_test_dot_api_dot_provision__state__pb2.DESCRIPTOR,chromiumos_dot_test_dot_api_dot_provision__service__pb2.DESCRIPTOR,])




_PROVISIONCLIINPUT = _descriptor.Descriptor(
  name='ProvisionCliInput',
  full_name='chromiumos.test.api.ProvisionCliInput',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='dut_inputs', full_name='chromiumos.test.api.ProvisionCliInput.dut_inputs', 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,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=187,
  serialized_end=257,
)


_DUTINPUT_DOCKERIMAGE = _descriptor.Descriptor(
  name='DockerImage',
  full_name='chromiumos.test.api.DutInput.DockerImage',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='repository_path', full_name='chromiumos.test.api.DutInput.DockerImage.repository_path', 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,  create_key=_descriptor._internal_create_key),
    _descriptor.FieldDescriptor(
      name='tag', full_name='chromiumos.test.api.DutInput.DockerImage.tag', 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,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=513,
  serialized_end=564,
)

_DUTINPUT = _descriptor.Descriptor(
  name='DutInput',
  full_name='chromiumos.test.api.DutInput',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='id', full_name='chromiumos.test.api.DutInput.id', 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,  create_key=_descriptor._internal_create_key),
    _descriptor.FieldDescriptor(
      name='provision_state', full_name='chromiumos.test.api.DutInput.provision_state', index=1,
      number=3, 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,  create_key=_descriptor._internal_create_key),
    _descriptor.FieldDescriptor(
      name='dut_service', full_name='chromiumos.test.api.DutInput.dut_service', index=2,
      number=4, 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,  create_key=_descriptor._internal_create_key),
    _descriptor.FieldDescriptor(
      name='provision_service', full_name='chromiumos.test.api.DutInput.provision_service', index=3,
      number=5, 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,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[_DUTINPUT_DOCKERIMAGE, ],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=260,
  serialized_end=570,
)


_PROVISIONCLIOUTPUT = _descriptor.Descriptor(
  name='ProvisionCliOutput',
  full_name='chromiumos.test.api.ProvisionCliOutput',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='dut_outputs', full_name='chromiumos.test.api.ProvisionCliOutput.dut_outputs', 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,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=572,
  serialized_end=645,
)


_DUTOUTPUT = _descriptor.Descriptor(
  name='DutOutput',
  full_name='chromiumos.test.api.DutOutput',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='id', full_name='chromiumos.test.api.DutOutput.id', 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,  create_key=_descriptor._internal_create_key),
    _descriptor.FieldDescriptor(
      name='success', full_name='chromiumos.test.api.DutOutput.success', 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,  create_key=_descriptor._internal_create_key),
    _descriptor.FieldDescriptor(
      name='failure', full_name='chromiumos.test.api.DutOutput.failure', index=2,
      number=3, 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,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
    _descriptor.OneofDescriptor(
      name='outcome', full_name='chromiumos.test.api.DutOutput.outcome',
      index=0, containing_type=None,
      create_key=_descriptor._internal_create_key,
    fields=[]),
  ],
  serialized_start=648,
  serialized_end=827,
)

_PROVISIONCLIINPUT.fields_by_name['dut_inputs'].message_type = _DUTINPUT
_DUTINPUT_DOCKERIMAGE.containing_type = _DUTINPUT
_DUTINPUT.fields_by_name['id'].message_type = chromiumos_dot_test_dot_lab_dot_api_dot_dut__pb2._DUT_ID
_DUTINPUT.fields_by_name['provision_state'].message_type = chromiumos_dot_test_dot_api_dot_provision__state__pb2._PROVISIONSTATE
_DUTINPUT.fields_by_name['dut_service'].message_type = _DUTINPUT_DOCKERIMAGE
_DUTINPUT.fields_by_name['provision_service'].message_type = _DUTINPUT_DOCKERIMAGE
_PROVISIONCLIOUTPUT.fields_by_name['dut_outputs'].message_type = _DUTOUTPUT
_DUTOUTPUT.fields_by_name['id'].message_type = chromiumos_dot_test_dot_lab_dot_api_dot_dut__pb2._DUT_ID
_DUTOUTPUT.fields_by_name['success'].message_type = chromiumos_dot_test_dot_api_dot_provision__service__pb2._INSTALLSUCCESS
_DUTOUTPUT.fields_by_name['failure'].message_type = chromiumos_dot_test_dot_api_dot_provision__service__pb2._INSTALLFAILURE
_DUTOUTPUT.oneofs_by_name['outcome'].fields.append(
  _DUTOUTPUT.fields_by_name['success'])
_DUTOUTPUT.fields_by_name['success'].containing_oneof = _DUTOUTPUT.oneofs_by_name['outcome']
_DUTOUTPUT.oneofs_by_name['outcome'].fields.append(
  _DUTOUTPUT.fields_by_name['failure'])
_DUTOUTPUT.fields_by_name['failure'].containing_oneof = _DUTOUTPUT.oneofs_by_name['outcome']
DESCRIPTOR.message_types_by_name['ProvisionCliInput'] = _PROVISIONCLIINPUT
DESCRIPTOR.message_types_by_name['DutInput'] = _DUTINPUT
DESCRIPTOR.message_types_by_name['ProvisionCliOutput'] = _PROVISIONCLIOUTPUT
DESCRIPTOR.message_types_by_name['DutOutput'] = _DUTOUTPUT
_sym_db.RegisterFileDescriptor(DESCRIPTOR)

ProvisionCliInput = _reflection.GeneratedProtocolMessageType('ProvisionCliInput', (_message.Message,), {
  'DESCRIPTOR' : _PROVISIONCLIINPUT,
  '__module__' : 'chromiumos.test.api.provision_cli_pb2'
  # @@protoc_insertion_point(class_scope:chromiumos.test.api.ProvisionCliInput)
  })
_sym_db.RegisterMessage(ProvisionCliInput)

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

  'DockerImage' : _reflection.GeneratedProtocolMessageType('DockerImage', (_message.Message,), {
    'DESCRIPTOR' : _DUTINPUT_DOCKERIMAGE,
    '__module__' : 'chromiumos.test.api.provision_cli_pb2'
    # @@protoc_insertion_point(class_scope:chromiumos.test.api.DutInput.DockerImage)
    })
  ,
  'DESCRIPTOR' : _DUTINPUT,
  '__module__' : 'chromiumos.test.api.provision_cli_pb2'
  # @@protoc_insertion_point(class_scope:chromiumos.test.api.DutInput)
  })
_sym_db.RegisterMessage(DutInput)
_sym_db.RegisterMessage(DutInput.DockerImage)

ProvisionCliOutput = _reflection.GeneratedProtocolMessageType('ProvisionCliOutput', (_message.Message,), {
  'DESCRIPTOR' : _PROVISIONCLIOUTPUT,
  '__module__' : 'chromiumos.test.api.provision_cli_pb2'
  # @@protoc_insertion_point(class_scope:chromiumos.test.api.ProvisionCliOutput)
  })
_sym_db.RegisterMessage(ProvisionCliOutput)

DutOutput = _reflection.GeneratedProtocolMessageType('DutOutput', (_message.Message,), {
  'DESCRIPTOR' : _DUTOUTPUT,
  '__module__' : 'chromiumos.test.api.provision_cli_pb2'
  # @@protoc_insertion_point(class_scope:chromiumos.test.api.DutOutput)
  })
_sym_db.RegisterMessage(DutOutput)


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