# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: chromiumos/test/api/provision_cli.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()


from chromite.api.gen_sdk.chromiumos.test.lab.api import dut_pb2 as chromiumos_dot_test_dot_lab_dot_api_dot_dut__pb2
from chromite.api.gen_sdk.chromiumos.test.api import provision_state_pb2 as chromiumos_dot_test_dot_api_dot_provision__state__pb2
from chromite.api.gen_sdk.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',
  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\"\x89\x01\n\x08\x44utInput\x12+\n\x02id\x18\x01 \x01(\x0b\x32\x1f.chromiumos.test.lab.api.Dut.Id\x12\x12\n\ndocker_tag\x18\x02 \x01(\t\x12<\n\x0fprovision_state\x18\x03 \x01(\x0b\x32#.chromiumos.test.api.ProvisionState\"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,
  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),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=187,
  serialized_end=257,
)


_DUTINPUT = _descriptor.Descriptor(
  name='DutInput',
  full_name='chromiumos.test.api.DutInput',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  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),
    _descriptor.FieldDescriptor(
      name='docker_tag', full_name='chromiumos.test.api.DutInput.docker_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),
    _descriptor.FieldDescriptor(
      name='provision_state', full_name='chromiumos.test.api.DutInput.provision_state', 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),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=260,
  serialized_end=397,
)


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


_DUTOUTPUT = _descriptor.Descriptor(
  name='DutOutput',
  full_name='chromiumos.test.api.DutOutput',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  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),
    _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),
    _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),
  ],
  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, fields=[]),
  ],
  serialized_start=475,
  serialized_end=654,
)

_PROVISIONCLIINPUT.fields_by_name['dut_inputs'].message_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
_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,), {
  'DESCRIPTOR' : _DUTINPUT,
  '__module__' : 'chromiumos.test.api.provision_cli_pb2'
  # @@protoc_insertion_point(class_scope:chromiumos.test.api.DutInput)
  })
_sym_db.RegisterMessage(DutInput)

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)
