From 5467b9134c1fb97c49beaf4cc304937641e03f2d Mon Sep 17 00:00:00 2001 From: sophia Date: Thu, 20 May 2021 16:26:30 -0500 Subject: [PATCH] Extract network info from Vagrantfile into proto --- Vagrantfile | 5 +- .../proto/ruby_vagrant/ruby-server.pb.go | 1134 ++++++++++++++--- .../proto/ruby_vagrant/ruby-server.proto | 45 +- .../proto/ruby_vagrant/ruby-server_pb.rb | 45 +- parse_vagrantfile.rb | 33 +- 5 files changed, 994 insertions(+), 268 deletions(-) diff --git a/Vagrantfile b/Vagrantfile index 114553dff..c8d01f5e7 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -14,7 +14,10 @@ Vagrant.configure("2") do |config| ["a", "b"].each do |m| config.vm.define m do |c| c.vm.box = "hashicorp/bionic64" - c.vm.network "private_network", ip: "192.168.50.4" + c.vm.network "forwarded_port", guest: 80, host: 8080 + + c.vm.network "private_network", ip: "192.168.50.4", thing: "what" + c.vm.network "public_network" c.vm.synced_folder "../tm", "/tm", type: "rsync", rsync__exclude: ".git/" end end diff --git a/internal/server/proto/ruby_vagrant/ruby-server.pb.go b/internal/server/proto/ruby_vagrant/ruby-server.pb.go index 85eb60296..4659eed6c 100644 --- a/internal/server/proto/ruby_vagrant/ruby-server.pb.go +++ b/internal/server/proto/ruby_vagrant/ruby-server.pb.go @@ -1,17 +1,17 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.17.3 +// protoc-gen-go v1.23.0 +// protoc v3.13.0 // source: proto/ruby_vagrant/ruby-server.proto package ruby_vagrant import ( proto "github.com/golang/protobuf/proto" + any "github.com/golang/protobuf/ptypes/any" + empty "github.com/golang/protobuf/ptypes/empty" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - anypb "google.golang.org/protobuf/types/known/anypb" - emptypb "google.golang.org/protobuf/types/known/emptypb" reflect "reflect" sync "sync" ) @@ -249,7 +249,7 @@ type ParseVagrantfileResponse struct { unknownFields protoimpl.UnknownFields // Vagrantfile representation - Vagrantfile *Vagrantfile `protobuf:"bytes,1,opt,name=vagrantfile,proto3" json:"vagrantfile,omitempty"` + Vagrantfile *VagrantfileComponents_Vagrantfile `protobuf:"bytes,1,opt,name=vagrantfile,proto3" json:"vagrantfile,omitempty"` } func (x *ParseVagrantfileResponse) Reset() { @@ -284,25 +284,21 @@ func (*ParseVagrantfileResponse) Descriptor() ([]byte, []int) { return file_proto_ruby_vagrant_ruby_server_proto_rawDescGZIP(), []int{3} } -func (x *ParseVagrantfileResponse) GetVagrantfile() *Vagrantfile { +func (x *ParseVagrantfileResponse) GetVagrantfile() *VagrantfileComponents_Vagrantfile { if x != nil { return x.Vagrantfile } return nil } -// TODO: Review what needs to be sent here -type Provisioner struct { +type VagrantfileComponents struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Config *anypb.Any `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` } -func (x *Provisioner) Reset() { - *x = Provisioner{} +func (x *VagrantfileComponents) Reset() { + *x = VagrantfileComponents{} if protoimpl.UnsafeEnabled { mi := &file_proto_ruby_vagrant_ruby_server_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -310,13 +306,13 @@ func (x *Provisioner) Reset() { } } -func (x *Provisioner) String() string { +func (x *VagrantfileComponents) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Provisioner) ProtoMessage() {} +func (*VagrantfileComponents) ProtoMessage() {} -func (x *Provisioner) ProtoReflect() protoreflect.Message { +func (x *VagrantfileComponents) ProtoReflect() protoreflect.Message { mi := &file_proto_ruby_vagrant_ruby_server_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -328,38 +324,29 @@ func (x *Provisioner) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Provisioner.ProtoReflect.Descriptor instead. -func (*Provisioner) Descriptor() ([]byte, []int) { +// Deprecated: Use VagrantfileComponents.ProtoReflect.Descriptor instead. +func (*VagrantfileComponents) Descriptor() ([]byte, []int) { return file_proto_ruby_vagrant_ruby_server_proto_rawDescGZIP(), []int{4} } -func (x *Provisioner) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *Provisioner) GetConfig() *anypb.Any { - if x != nil { - return x.Config - } - return nil -} - -// TODO: Review what needs to be sent here -type MachineConfig struct { +type VagrantfileComponents_ConfigVM struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Box string `protobuf:"bytes,2,opt,name=box,proto3" json:"box,omitempty"` - Provisioners []*Provisioner `protobuf:"bytes,3,rep,name=provisioners,proto3" json:"provisioners,omitempty"` + AllowFstabModification bool `protobuf:"varint,1,opt,name=allow_fstab_modification,json=allowFstabModification,proto3" json:"allow_fstab_modification,omitempty"` + AllowHostsModificaion bool `protobuf:"varint,2,opt,name=allow_hosts_modificaion,json=allowHostsModificaion,proto3" json:"allow_hosts_modificaion,omitempty"` + Box string `protobuf:"bytes,3,opt,name=box,proto3" json:"box,omitempty"` + // TODO: CloudInit = 4 (Experimental) + Provider *VagrantfileComponents_Provider `protobuf:"bytes,5,opt,name=provider,proto3" json:"provider,omitempty"` + // TODO: Disks = 6 (Experimental) + Networks []*VagrantfileComponents_Network `protobuf:"bytes,7,rep,name=networks,proto3" json:"networks,omitempty"` + Provisioners []*VagrantfileComponents_Provisioner `protobuf:"bytes,8,rep,name=provisioners,proto3" json:"provisioners,omitempty"` + SyncedFolders []*VagrantfileComponents_SyncedFolder `protobuf:"bytes,9,rep,name=synced_folders,json=syncedFolders,proto3" json:"synced_folders,omitempty"` } -func (x *MachineConfig) Reset() { - *x = MachineConfig{} +func (x *VagrantfileComponents_ConfigVM) Reset() { + *x = VagrantfileComponents_ConfigVM{} if protoimpl.UnsafeEnabled { mi := &file_proto_ruby_vagrant_ruby_server_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -367,13 +354,13 @@ func (x *MachineConfig) Reset() { } } -func (x *MachineConfig) String() string { +func (x *VagrantfileComponents_ConfigVM) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MachineConfig) ProtoMessage() {} +func (*VagrantfileComponents_ConfigVM) ProtoMessage() {} -func (x *MachineConfig) ProtoReflect() protoreflect.Message { +func (x *VagrantfileComponents_ConfigVM) ProtoReflect() protoreflect.Message { mi := &file_proto_ruby_vagrant_ruby_server_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -385,47 +372,71 @@ func (x *MachineConfig) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MachineConfig.ProtoReflect.Descriptor instead. -func (*MachineConfig) Descriptor() ([]byte, []int) { - return file_proto_ruby_vagrant_ruby_server_proto_rawDescGZIP(), []int{5} +// Deprecated: Use VagrantfileComponents_ConfigVM.ProtoReflect.Descriptor instead. +func (*VagrantfileComponents_ConfigVM) Descriptor() ([]byte, []int) { + return file_proto_ruby_vagrant_ruby_server_proto_rawDescGZIP(), []int{4, 0} } -func (x *MachineConfig) GetName() string { +func (x *VagrantfileComponents_ConfigVM) GetAllowFstabModification() bool { if x != nil { - return x.Name + return x.AllowFstabModification } - return "" + return false } -func (x *MachineConfig) GetBox() string { +func (x *VagrantfileComponents_ConfigVM) GetAllowHostsModificaion() bool { + if x != nil { + return x.AllowHostsModificaion + } + return false +} + +func (x *VagrantfileComponents_ConfigVM) GetBox() string { if x != nil { return x.Box } return "" } -func (x *MachineConfig) GetProvisioners() []*Provisioner { +func (x *VagrantfileComponents_ConfigVM) GetProvider() *VagrantfileComponents_Provider { + if x != nil { + return x.Provider + } + return nil +} + +func (x *VagrantfileComponents_ConfigVM) GetNetworks() []*VagrantfileComponents_Network { + if x != nil { + return x.Networks + } + return nil +} + +func (x *VagrantfileComponents_ConfigVM) GetProvisioners() []*VagrantfileComponents_Provisioner { if x != nil { return x.Provisioners } return nil } -// TODO: Review what needs to be sent here -type Communicator struct { +func (x *VagrantfileComponents_ConfigVM) GetSyncedFolders() []*VagrantfileComponents_SyncedFolder { + if x != nil { + return x.SyncedFolders + } + return nil +} + +type VagrantfileComponents_ConfigSSH struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // This is the config that belongs to the communicator. - // Should be a message type from the core plugin or defined - // by a plugin author - Config *anypb.Any `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` + Compresssion bool `protobuf:"varint,1,opt,name=compresssion,proto3" json:"compresssion,omitempty"` + ConnectTimeout int64 `protobuf:"varint,2,opt,name=connect_timeout,json=connectTimeout,proto3" json:"connect_timeout,omitempty"` // TODO } -func (x *Communicator) Reset() { - *x = Communicator{} +func (x *VagrantfileComponents_ConfigSSH) Reset() { + *x = VagrantfileComponents_ConfigSSH{} if protoimpl.UnsafeEnabled { mi := &file_proto_ruby_vagrant_ruby_server_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -433,13 +444,13 @@ func (x *Communicator) Reset() { } } -func (x *Communicator) String() string { +func (x *VagrantfileComponents_ConfigSSH) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Communicator) ProtoMessage() {} +func (*VagrantfileComponents_ConfigSSH) ProtoMessage() {} -func (x *Communicator) ProtoReflect() protoreflect.Message { +func (x *VagrantfileComponents_ConfigSSH) ProtoReflect() protoreflect.Message { mi := &file_proto_ruby_vagrant_ruby_server_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -451,40 +462,36 @@ func (x *Communicator) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Communicator.ProtoReflect.Descriptor instead. -func (*Communicator) Descriptor() ([]byte, []int) { - return file_proto_ruby_vagrant_ruby_server_proto_rawDescGZIP(), []int{6} +// Deprecated: Use VagrantfileComponents_ConfigSSH.ProtoReflect.Descriptor instead. +func (*VagrantfileComponents_ConfigSSH) Descriptor() ([]byte, []int) { + return file_proto_ruby_vagrant_ruby_server_proto_rawDescGZIP(), []int{4, 1} } -func (x *Communicator) GetName() string { +func (x *VagrantfileComponents_ConfigSSH) GetCompresssion() bool { if x != nil { - return x.Name + return x.Compresssion } - return "" + return false } -func (x *Communicator) GetConfig() *anypb.Any { +func (x *VagrantfileComponents_ConfigSSH) GetConnectTimeout() int64 { if x != nil { - return x.Config + return x.ConnectTimeout } - return nil + return 0 } -// TODO: Review what needs to be sent here -type Vagrantfile struct { +type VagrantfileComponents_ConfigWinRM struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` - Raw string `protobuf:"bytes,2,opt,name=raw,proto3" json:"raw,omitempty"` - CurrentVersion string `protobuf:"bytes,3,opt,name=current_version,json=currentVersion,proto3" json:"current_version,omitempty"` - MachineConfigs []*MachineConfig `protobuf:"bytes,4,rep,name=machine_configs,json=machineConfigs,proto3" json:"machine_configs,omitempty"` - Communicators []*Communicator `protobuf:"bytes,5,rep,name=communicators,proto3" json:"communicators,omitempty"` + Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` + Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` // TODO } -func (x *Vagrantfile) Reset() { - *x = Vagrantfile{} +func (x *VagrantfileComponents_ConfigWinRM) Reset() { + *x = VagrantfileComponents_ConfigWinRM{} if protoimpl.UnsafeEnabled { mi := &file_proto_ruby_vagrant_ruby_server_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -492,13 +499,13 @@ func (x *Vagrantfile) Reset() { } } -func (x *Vagrantfile) String() string { +func (x *VagrantfileComponents_ConfigWinRM) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Vagrantfile) ProtoMessage() {} +func (*VagrantfileComponents_ConfigWinRM) ProtoMessage() {} -func (x *Vagrantfile) ProtoReflect() protoreflect.Message { +func (x *VagrantfileComponents_ConfigWinRM) ProtoReflect() protoreflect.Message { mi := &file_proto_ruby_vagrant_ruby_server_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -510,46 +517,623 @@ func (x *Vagrantfile) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Vagrantfile.ProtoReflect.Descriptor instead. -func (*Vagrantfile) Descriptor() ([]byte, []int) { - return file_proto_ruby_vagrant_ruby_server_proto_rawDescGZIP(), []int{7} +// Deprecated: Use VagrantfileComponents_ConfigWinRM.ProtoReflect.Descriptor instead. +func (*VagrantfileComponents_ConfigWinRM) Descriptor() ([]byte, []int) { + return file_proto_ruby_vagrant_ruby_server_proto_rawDescGZIP(), []int{4, 2} } -func (x *Vagrantfile) GetPath() string { +func (x *VagrantfileComponents_ConfigWinRM) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *VagrantfileComponents_ConfigWinRM) GetPassword() string { + if x != nil { + return x.Password + } + return "" +} + +type VagrantfileComponents_ConfigWinssh struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ForwardAgent bool `protobuf:"varint,1,opt,name=forward_agent,json=forwardAgent,proto3" json:"forward_agent,omitempty"` + ForwardEnv []string `protobuf:"bytes,2,rep,name=forward_env,json=forwardEnv,proto3" json:"forward_env,omitempty"` // TODO +} + +func (x *VagrantfileComponents_ConfigWinssh) Reset() { + *x = VagrantfileComponents_ConfigWinssh{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_ruby_vagrant_ruby_server_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VagrantfileComponents_ConfigWinssh) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VagrantfileComponents_ConfigWinssh) ProtoMessage() {} + +func (x *VagrantfileComponents_ConfigWinssh) ProtoReflect() protoreflect.Message { + mi := &file_proto_ruby_vagrant_ruby_server_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VagrantfileComponents_ConfigWinssh.ProtoReflect.Descriptor instead. +func (*VagrantfileComponents_ConfigWinssh) Descriptor() ([]byte, []int) { + return file_proto_ruby_vagrant_ruby_server_proto_rawDescGZIP(), []int{4, 3} +} + +func (x *VagrantfileComponents_ConfigWinssh) GetForwardAgent() bool { + if x != nil { + return x.ForwardAgent + } + return false +} + +func (x *VagrantfileComponents_ConfigWinssh) GetForwardEnv() []string { + if x != nil { + return x.ForwardEnv + } + return nil +} + +type VagrantfileComponents_ConfigVagrant struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"` + Plugins []string `protobuf:"bytes,2,rep,name=plugins,proto3" json:"plugins,omitempty"` // TODO +} + +func (x *VagrantfileComponents_ConfigVagrant) Reset() { + *x = VagrantfileComponents_ConfigVagrant{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_ruby_vagrant_ruby_server_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VagrantfileComponents_ConfigVagrant) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VagrantfileComponents_ConfigVagrant) ProtoMessage() {} + +func (x *VagrantfileComponents_ConfigVagrant) ProtoReflect() protoreflect.Message { + mi := &file_proto_ruby_vagrant_ruby_server_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VagrantfileComponents_ConfigVagrant.ProtoReflect.Descriptor instead. +func (*VagrantfileComponents_ConfigVagrant) Descriptor() ([]byte, []int) { + return file_proto_ruby_vagrant_ruby_server_proto_rawDescGZIP(), []int{4, 4} +} + +func (x *VagrantfileComponents_ConfigVagrant) GetHost() string { + if x != nil { + return x.Host + } + return "" +} + +func (x *VagrantfileComponents_ConfigVagrant) GetPlugins() []string { + if x != nil { + return x.Plugins + } + return nil +} + +// TODO: Review what needs to be sent here +type VagrantfileComponents_MachineConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + ConfigVm *VagrantfileComponents_ConfigVM `protobuf:"bytes,2,opt,name=config_vm,json=configVm,proto3" json:"config_vm,omitempty"` + ConfigSsh *VagrantfileComponents_ConfigSSH `protobuf:"bytes,3,opt,name=config_ssh,json=configSsh,proto3" json:"config_ssh,omitempty"` + ConfigWinrm *VagrantfileComponents_ConfigWinRM `protobuf:"bytes,4,opt,name=config_winrm,json=configWinrm,proto3" json:"config_winrm,omitempty"` + ConfigWinssh *VagrantfileComponents_ConfigWinssh `protobuf:"bytes,5,opt,name=config_winssh,json=configWinssh,proto3" json:"config_winssh,omitempty"` + ConfigVagrant *VagrantfileComponents_ConfigVagrant `protobuf:"bytes,6,opt,name=config_vagrant,json=configVagrant,proto3" json:"config_vagrant,omitempty"` +} + +func (x *VagrantfileComponents_MachineConfig) Reset() { + *x = VagrantfileComponents_MachineConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_ruby_vagrant_ruby_server_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VagrantfileComponents_MachineConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VagrantfileComponents_MachineConfig) ProtoMessage() {} + +func (x *VagrantfileComponents_MachineConfig) ProtoReflect() protoreflect.Message { + mi := &file_proto_ruby_vagrant_ruby_server_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VagrantfileComponents_MachineConfig.ProtoReflect.Descriptor instead. +func (*VagrantfileComponents_MachineConfig) Descriptor() ([]byte, []int) { + return file_proto_ruby_vagrant_ruby_server_proto_rawDescGZIP(), []int{4, 5} +} + +func (x *VagrantfileComponents_MachineConfig) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *VagrantfileComponents_MachineConfig) GetConfigVm() *VagrantfileComponents_ConfigVM { + if x != nil { + return x.ConfigVm + } + return nil +} + +func (x *VagrantfileComponents_MachineConfig) GetConfigSsh() *VagrantfileComponents_ConfigSSH { + if x != nil { + return x.ConfigSsh + } + return nil +} + +func (x *VagrantfileComponents_MachineConfig) GetConfigWinrm() *VagrantfileComponents_ConfigWinRM { + if x != nil { + return x.ConfigWinrm + } + return nil +} + +func (x *VagrantfileComponents_MachineConfig) GetConfigWinssh() *VagrantfileComponents_ConfigWinssh { + if x != nil { + return x.ConfigWinssh + } + return nil +} + +func (x *VagrantfileComponents_MachineConfig) GetConfigVagrant() *VagrantfileComponents_ConfigVagrant { + if x != nil { + return x.ConfigVagrant + } + return nil +} + +type VagrantfileComponents_Provisioner struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + Before string `protobuf:"bytes,3,opt,name=before,proto3" json:"before,omitempty"` + After string `protobuf:"bytes,4,opt,name=after,proto3" json:"after,omitempty"` + CommunicatorRequired bool `protobuf:"varint,5,opt,name=communicator_required,json=communicatorRequired,proto3" json:"communicator_required,omitempty"` + // A Provisioner plugin defines it's own configuration, + // that gets added in here + Config *any.Any `protobuf:"bytes,6,opt,name=config,proto3" json:"config,omitempty"` +} + +func (x *VagrantfileComponents_Provisioner) Reset() { + *x = VagrantfileComponents_Provisioner{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_ruby_vagrant_ruby_server_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VagrantfileComponents_Provisioner) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VagrantfileComponents_Provisioner) ProtoMessage() {} + +func (x *VagrantfileComponents_Provisioner) ProtoReflect() protoreflect.Message { + mi := &file_proto_ruby_vagrant_ruby_server_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VagrantfileComponents_Provisioner.ProtoReflect.Descriptor instead. +func (*VagrantfileComponents_Provisioner) Descriptor() ([]byte, []int) { + return file_proto_ruby_vagrant_ruby_server_proto_rawDescGZIP(), []int{4, 6} +} + +func (x *VagrantfileComponents_Provisioner) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *VagrantfileComponents_Provisioner) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *VagrantfileComponents_Provisioner) GetBefore() string { + if x != nil { + return x.Before + } + return "" +} + +func (x *VagrantfileComponents_Provisioner) GetAfter() string { + if x != nil { + return x.After + } + return "" +} + +func (x *VagrantfileComponents_Provisioner) GetCommunicatorRequired() bool { + if x != nil { + return x.CommunicatorRequired + } + return false +} + +func (x *VagrantfileComponents_Provisioner) GetConfig() *any.Any { + if x != nil { + return x.Config + } + return nil +} + +type VagrantfileComponents_Provider struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + Config *any.Any `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` +} + +func (x *VagrantfileComponents_Provider) Reset() { + *x = VagrantfileComponents_Provider{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_ruby_vagrant_ruby_server_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VagrantfileComponents_Provider) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VagrantfileComponents_Provider) ProtoMessage() {} + +func (x *VagrantfileComponents_Provider) ProtoReflect() protoreflect.Message { + mi := &file_proto_ruby_vagrant_ruby_server_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VagrantfileComponents_Provider.ProtoReflect.Descriptor instead. +func (*VagrantfileComponents_Provider) Descriptor() ([]byte, []int) { + return file_proto_ruby_vagrant_ruby_server_proto_rawDescGZIP(), []int{4, 7} +} + +func (x *VagrantfileComponents_Provider) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *VagrantfileComponents_Provider) GetConfig() *any.Any { + if x != nil { + return x.Config + } + return nil +} + +type VagrantfileComponents_Network struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + Config *any.Any `protobuf:"bytes,3,opt,name=config,proto3" json:"config,omitempty"` +} + +func (x *VagrantfileComponents_Network) Reset() { + *x = VagrantfileComponents_Network{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_ruby_vagrant_ruby_server_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VagrantfileComponents_Network) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VagrantfileComponents_Network) ProtoMessage() {} + +func (x *VagrantfileComponents_Network) ProtoReflect() protoreflect.Message { + mi := &file_proto_ruby_vagrant_ruby_server_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VagrantfileComponents_Network.ProtoReflect.Descriptor instead. +func (*VagrantfileComponents_Network) Descriptor() ([]byte, []int) { + return file_proto_ruby_vagrant_ruby_server_proto_rawDescGZIP(), []int{4, 8} +} + +func (x *VagrantfileComponents_Network) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *VagrantfileComponents_Network) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *VagrantfileComponents_Network) GetConfig() *any.Any { + if x != nil { + return x.Config + } + return nil +} + +type VagrantfileComponents_SyncedFolder struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Source string `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` + Destination string `protobuf:"bytes,2,opt,name=destination,proto3" json:"destination,omitempty"` + // A SyncedFolder plugin defines it's own configuration, + // that gets added in here + Config *any.Any `protobuf:"bytes,3,opt,name=config,proto3" json:"config,omitempty"` + Create bool `protobuf:"varint,4,opt,name=create,proto3" json:"create,omitempty"` + Disabled bool `protobuf:"varint,5,opt,name=disabled,proto3" json:"disabled,omitempty"` + Group string `protobuf:"bytes,6,opt,name=group,proto3" json:"group,omitempty"` + Id string `protobuf:"bytes,7,opt,name=id,proto3" json:"id,omitempty"` + MountOptions []string `protobuf:"bytes,8,rep,name=mount_options,json=mountOptions,proto3" json:"mount_options,omitempty"` + Owner string `protobuf:"bytes,9,opt,name=owner,proto3" json:"owner,omitempty"` + Type string `protobuf:"bytes,10,opt,name=type,proto3" json:"type,omitempty"` +} + +func (x *VagrantfileComponents_SyncedFolder) Reset() { + *x = VagrantfileComponents_SyncedFolder{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_ruby_vagrant_ruby_server_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VagrantfileComponents_SyncedFolder) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VagrantfileComponents_SyncedFolder) ProtoMessage() {} + +func (x *VagrantfileComponents_SyncedFolder) ProtoReflect() protoreflect.Message { + mi := &file_proto_ruby_vagrant_ruby_server_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VagrantfileComponents_SyncedFolder.ProtoReflect.Descriptor instead. +func (*VagrantfileComponents_SyncedFolder) Descriptor() ([]byte, []int) { + return file_proto_ruby_vagrant_ruby_server_proto_rawDescGZIP(), []int{4, 9} +} + +func (x *VagrantfileComponents_SyncedFolder) GetSource() string { + if x != nil { + return x.Source + } + return "" +} + +func (x *VagrantfileComponents_SyncedFolder) GetDestination() string { + if x != nil { + return x.Destination + } + return "" +} + +func (x *VagrantfileComponents_SyncedFolder) GetConfig() *any.Any { + if x != nil { + return x.Config + } + return nil +} + +func (x *VagrantfileComponents_SyncedFolder) GetCreate() bool { + if x != nil { + return x.Create + } + return false +} + +func (x *VagrantfileComponents_SyncedFolder) GetDisabled() bool { + if x != nil { + return x.Disabled + } + return false +} + +func (x *VagrantfileComponents_SyncedFolder) GetGroup() string { + if x != nil { + return x.Group + } + return "" +} + +func (x *VagrantfileComponents_SyncedFolder) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *VagrantfileComponents_SyncedFolder) GetMountOptions() []string { + if x != nil { + return x.MountOptions + } + return nil +} + +func (x *VagrantfileComponents_SyncedFolder) GetOwner() string { + if x != nil { + return x.Owner + } + return "" +} + +func (x *VagrantfileComponents_SyncedFolder) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +// TODO: Review what needs to be sent here +type VagrantfileComponents_Vagrantfile struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + Raw string `protobuf:"bytes,2,opt,name=raw,proto3" json:"raw,omitempty"` + CurrentVersion string `protobuf:"bytes,3,opt,name=current_version,json=currentVersion,proto3" json:"current_version,omitempty"` + MachineConfigs []*VagrantfileComponents_MachineConfig `protobuf:"bytes,4,rep,name=machine_configs,json=machineConfigs,proto3" json:"machine_configs,omitempty"` +} + +func (x *VagrantfileComponents_Vagrantfile) Reset() { + *x = VagrantfileComponents_Vagrantfile{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_ruby_vagrant_ruby_server_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VagrantfileComponents_Vagrantfile) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VagrantfileComponents_Vagrantfile) ProtoMessage() {} + +func (x *VagrantfileComponents_Vagrantfile) ProtoReflect() protoreflect.Message { + mi := &file_proto_ruby_vagrant_ruby_server_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VagrantfileComponents_Vagrantfile.ProtoReflect.Descriptor instead. +func (*VagrantfileComponents_Vagrantfile) Descriptor() ([]byte, []int) { + return file_proto_ruby_vagrant_ruby_server_proto_rawDescGZIP(), []int{4, 10} +} + +func (x *VagrantfileComponents_Vagrantfile) GetPath() string { if x != nil { return x.Path } return "" } -func (x *Vagrantfile) GetRaw() string { +func (x *VagrantfileComponents_Vagrantfile) GetRaw() string { if x != nil { return x.Raw } return "" } -func (x *Vagrantfile) GetCurrentVersion() string { +func (x *VagrantfileComponents_Vagrantfile) GetCurrentVersion() string { if x != nil { return x.CurrentVersion } return "" } -func (x *Vagrantfile) GetMachineConfigs() []*MachineConfig { +func (x *VagrantfileComponents_Vagrantfile) GetMachineConfigs() []*VagrantfileComponents_MachineConfig { if x != nil { return x.MachineConfigs } return nil } -func (x *Vagrantfile) GetCommunicators() []*Communicator { - if x != nil { - return x.Communicators - } - return nil -} - var File_proto_ruby_vagrant_ruby_server_proto protoreflect.FileDescriptor var file_proto_ruby_vagrant_ruby_server_proto_rawDesc = []byte{ @@ -579,46 +1163,149 @@ var file_proto_ruby_vagrant_ruby_server_proto_rawDesc = []byte{ 0x4e, 0x43, 0x45, 0x44, 0x5f, 0x46, 0x4f, 0x4c, 0x44, 0x45, 0x52, 0x10, 0x06, 0x22, 0x2d, 0x0a, 0x17, 0x50, 0x61, 0x72, 0x73, 0x65, 0x56, 0x61, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x5c, 0x0a, 0x18, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x72, 0x0a, 0x18, 0x50, 0x61, 0x72, 0x73, 0x65, 0x56, 0x61, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x66, 0x69, 0x6c, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x76, 0x61, 0x67, 0x72, - 0x61, 0x6e, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x0b, 0x76, 0x61, 0x67, 0x72, + 0x61, 0x6e, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x76, 0x61, 0x67, 0x72, 0x61, 0x6e, - 0x74, 0x2e, 0x56, 0x61, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x0b, 0x76, - 0x61, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x22, 0x4f, 0x0a, 0x0b, 0x50, 0x72, - 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, - 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x41, 0x6e, 0x79, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x79, 0x0a, 0x0d, 0x4d, - 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x10, 0x0a, 0x03, 0x62, 0x6f, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x62, - 0x6f, 0x78, 0x12, 0x42, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, - 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, - 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x76, 0x61, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x6f, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x73, 0x22, 0x50, 0x0a, 0x0c, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, - 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, - 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xee, 0x01, 0x0a, 0x0b, 0x56, 0x61, 0x67, - 0x72, 0x61, 0x6e, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x03, - 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x72, 0x61, 0x77, 0x12, 0x27, - 0x0a, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x49, 0x0a, 0x0f, 0x6d, 0x61, 0x63, 0x68, 0x69, - 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x20, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x76, 0x61, 0x67, - 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x0e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x73, 0x12, 0x45, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x74, - 0x6f, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x68, 0x61, 0x73, 0x68, - 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x76, 0x61, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6f, - 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, - 0x75, 0x6e, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x32, 0xc7, 0x01, 0x0a, 0x0b, 0x52, 0x75, + 0x74, 0x2e, 0x56, 0x61, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x6d, + 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x56, 0x61, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x66, + 0x69, 0x6c, 0x65, 0x52, 0x0b, 0x76, 0x61, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x66, 0x69, 0x6c, 0x65, + 0x22, 0xe6, 0x10, 0x0a, 0x15, 0x56, 0x61, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x66, 0x69, 0x6c, 0x65, + 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0xe3, 0x03, 0x0a, 0x08, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x4d, 0x12, 0x38, 0x0a, 0x18, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x5f, 0x66, 0x73, 0x74, 0x61, 0x62, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x46, 0x73, 0x74, 0x61, 0x62, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x36, 0x0a, 0x17, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x73, + 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x63, 0x61, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x15, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x4d, 0x6f, + 0x64, 0x69, 0x66, 0x69, 0x63, 0x61, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x6f, 0x78, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x62, 0x6f, 0x78, 0x12, 0x4d, 0x0a, 0x08, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, + 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x76, 0x61, 0x67, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x56, 0x61, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x6d, + 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x4c, 0x0a, 0x08, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x68, + 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x76, 0x61, 0x67, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x56, 0x61, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x70, + 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x08, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x58, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, + 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x76, 0x61, 0x67, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x6f, + 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x65, 0x72, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, + 0x72, 0x73, 0x12, 0x5c, 0x0a, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x66, 0x6f, 0x6c, + 0x64, 0x65, 0x72, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x68, 0x61, 0x73, + 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x76, 0x61, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, + 0x61, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, + 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x65, 0x64, 0x46, 0x6f, 0x6c, 0x64, 0x65, + 0x72, 0x52, 0x0d, 0x73, 0x79, 0x6e, 0x63, 0x65, 0x64, 0x46, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, + 0x1a, 0x58, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x53, 0x48, 0x12, 0x22, 0x0a, + 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x1a, 0x45, 0x0a, 0x0b, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x57, 0x69, 0x6e, 0x52, 0x4d, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, + 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, + 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x1a, 0x54, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x57, 0x69, 0x6e, 0x73, 0x73, + 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, + 0x64, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, + 0x64, 0x5f, 0x65, 0x6e, 0x76, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x6f, 0x72, + 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x76, 0x1a, 0x3d, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x56, 0x61, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x70, + 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x1a, 0xda, 0x03, 0x0a, 0x0d, 0x4d, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4e, 0x0a, 0x09, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x76, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x31, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x76, 0x61, 0x67, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x43, + 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x56, 0x4d, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x6d, 0x12, 0x51, 0x0a, 0x0a, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x73, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x32, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x76, 0x61, 0x67, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x66, 0x69, 0x6c, 0x65, + 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x53, 0x53, 0x48, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x73, 0x68, 0x12, + 0x57, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x77, 0x69, 0x6e, 0x72, 0x6d, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, + 0x70, 0x2e, 0x76, 0x61, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x67, 0x72, 0x61, 0x6e, + 0x74, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2e, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x57, 0x69, 0x6e, 0x52, 0x4d, 0x52, 0x0b, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x57, 0x69, 0x6e, 0x72, 0x6d, 0x12, 0x5a, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x5f, 0x77, 0x69, 0x6e, 0x73, 0x73, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x35, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x76, 0x61, 0x67, 0x72, + 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x43, + 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x57, 0x69, 0x6e, 0x73, 0x73, 0x68, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x57, 0x69, + 0x6e, 0x73, 0x73, 0x68, 0x12, 0x5d, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x76, + 0x61, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x68, + 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x76, 0x61, 0x67, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x56, 0x61, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x70, + 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x61, 0x67, + 0x72, 0x61, 0x6e, 0x74, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x61, 0x67, 0x72, + 0x61, 0x6e, 0x74, 0x1a, 0xc6, 0x01, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, + 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x65, 0x66, + 0x6f, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, 0x33, 0x0a, 0x15, 0x63, 0x6f, 0x6d, + 0x6d, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, + 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, + 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x2c, + 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x4c, 0x0a, 0x08, + 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x06, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, + 0x6e, 0x79, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x5b, 0x0a, 0x07, 0x4e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, + 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x9f, 0x02, 0x0a, 0x0c, 0x53, 0x79, 0x6e, 0x63, + 0x65, 0x64, 0x46, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x12, 0x16, 0x0a, 0x06, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x06, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x6f, + 0x75, 0x6e, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x0c, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x1a, 0xbd, 0x01, 0x0a, 0x0b, 0x56, 0x61, + 0x67, 0x72, 0x61, 0x6e, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, + 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x10, 0x0a, + 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x72, 0x61, 0x77, 0x12, + 0x27, 0x0a, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x5f, 0x0a, 0x0f, 0x6d, 0x61, 0x63, 0x68, + 0x69, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x36, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x76, 0x61, + 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x61, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x66, 0x69, 0x6c, + 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x4d, 0x61, 0x63, 0x68, + 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x6d, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x32, 0xc7, 0x01, 0x0a, 0x0b, 0x52, 0x75, 0x62, 0x79, 0x56, 0x61, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x12, 0x4b, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, @@ -651,38 +1338,55 @@ func file_proto_ruby_vagrant_ruby_server_proto_rawDescGZIP() []byte { } var file_proto_ruby_vagrant_ruby_server_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_proto_ruby_vagrant_ruby_server_proto_msgTypes = make([]protoimpl.MessageInfo, 8) +var file_proto_ruby_vagrant_ruby_server_proto_msgTypes = make([]protoimpl.MessageInfo, 16) var file_proto_ruby_vagrant_ruby_server_proto_goTypes = []interface{}{ - (Plugin_Type)(0), // 0: hashicorp.vagrant.Plugin.Type - (*GetPluginsResponse)(nil), // 1: hashicorp.vagrant.GetPluginsResponse - (*Plugin)(nil), // 2: hashicorp.vagrant.Plugin - (*ParseVagrantfileRequest)(nil), // 3: hashicorp.vagrant.ParseVagrantfileRequest - (*ParseVagrantfileResponse)(nil), // 4: hashicorp.vagrant.ParseVagrantfileResponse - (*Provisioner)(nil), // 5: hashicorp.vagrant.Provisioner - (*MachineConfig)(nil), // 6: hashicorp.vagrant.MachineConfig - (*Communicator)(nil), // 7: hashicorp.vagrant.Communicator - (*Vagrantfile)(nil), // 8: hashicorp.vagrant.Vagrantfile - (*anypb.Any)(nil), // 9: google.protobuf.Any - (*emptypb.Empty)(nil), // 10: google.protobuf.Empty + (Plugin_Type)(0), // 0: hashicorp.vagrant.Plugin.Type + (*GetPluginsResponse)(nil), // 1: hashicorp.vagrant.GetPluginsResponse + (*Plugin)(nil), // 2: hashicorp.vagrant.Plugin + (*ParseVagrantfileRequest)(nil), // 3: hashicorp.vagrant.ParseVagrantfileRequest + (*ParseVagrantfileResponse)(nil), // 4: hashicorp.vagrant.ParseVagrantfileResponse + (*VagrantfileComponents)(nil), // 5: hashicorp.vagrant.VagrantfileComponents + (*VagrantfileComponents_ConfigVM)(nil), // 6: hashicorp.vagrant.VagrantfileComponents.ConfigVM + (*VagrantfileComponents_ConfigSSH)(nil), // 7: hashicorp.vagrant.VagrantfileComponents.ConfigSSH + (*VagrantfileComponents_ConfigWinRM)(nil), // 8: hashicorp.vagrant.VagrantfileComponents.ConfigWinRM + (*VagrantfileComponents_ConfigWinssh)(nil), // 9: hashicorp.vagrant.VagrantfileComponents.ConfigWinssh + (*VagrantfileComponents_ConfigVagrant)(nil), // 10: hashicorp.vagrant.VagrantfileComponents.ConfigVagrant + (*VagrantfileComponents_MachineConfig)(nil), // 11: hashicorp.vagrant.VagrantfileComponents.MachineConfig + (*VagrantfileComponents_Provisioner)(nil), // 12: hashicorp.vagrant.VagrantfileComponents.Provisioner + (*VagrantfileComponents_Provider)(nil), // 13: hashicorp.vagrant.VagrantfileComponents.Provider + (*VagrantfileComponents_Network)(nil), // 14: hashicorp.vagrant.VagrantfileComponents.Network + (*VagrantfileComponents_SyncedFolder)(nil), // 15: hashicorp.vagrant.VagrantfileComponents.SyncedFolder + (*VagrantfileComponents_Vagrantfile)(nil), // 16: hashicorp.vagrant.VagrantfileComponents.Vagrantfile + (*any.Any)(nil), // 17: google.protobuf.Any + (*empty.Empty)(nil), // 18: google.protobuf.Empty } var file_proto_ruby_vagrant_ruby_server_proto_depIdxs = []int32{ 2, // 0: hashicorp.vagrant.GetPluginsResponse.plugins:type_name -> hashicorp.vagrant.Plugin 0, // 1: hashicorp.vagrant.Plugin.type:type_name -> hashicorp.vagrant.Plugin.Type - 8, // 2: hashicorp.vagrant.ParseVagrantfileResponse.vagrantfile:type_name -> hashicorp.vagrant.Vagrantfile - 9, // 3: hashicorp.vagrant.Provisioner.config:type_name -> google.protobuf.Any - 5, // 4: hashicorp.vagrant.MachineConfig.provisioners:type_name -> hashicorp.vagrant.Provisioner - 9, // 5: hashicorp.vagrant.Communicator.config:type_name -> google.protobuf.Any - 6, // 6: hashicorp.vagrant.Vagrantfile.machine_configs:type_name -> hashicorp.vagrant.MachineConfig - 7, // 7: hashicorp.vagrant.Vagrantfile.communicators:type_name -> hashicorp.vagrant.Communicator - 10, // 8: hashicorp.vagrant.RubyVagrant.GetPlugins:input_type -> google.protobuf.Empty - 3, // 9: hashicorp.vagrant.RubyVagrant.ParseVagrantfile:input_type -> hashicorp.vagrant.ParseVagrantfileRequest - 1, // 10: hashicorp.vagrant.RubyVagrant.GetPlugins:output_type -> hashicorp.vagrant.GetPluginsResponse - 4, // 11: hashicorp.vagrant.RubyVagrant.ParseVagrantfile:output_type -> hashicorp.vagrant.ParseVagrantfileResponse - 10, // [10:12] is the sub-list for method output_type - 8, // [8:10] is the sub-list for method input_type - 8, // [8:8] is the sub-list for extension type_name - 8, // [8:8] is the sub-list for extension extendee - 0, // [0:8] is the sub-list for field type_name + 16, // 2: hashicorp.vagrant.ParseVagrantfileResponse.vagrantfile:type_name -> hashicorp.vagrant.VagrantfileComponents.Vagrantfile + 13, // 3: hashicorp.vagrant.VagrantfileComponents.ConfigVM.provider:type_name -> hashicorp.vagrant.VagrantfileComponents.Provider + 14, // 4: hashicorp.vagrant.VagrantfileComponents.ConfigVM.networks:type_name -> hashicorp.vagrant.VagrantfileComponents.Network + 12, // 5: hashicorp.vagrant.VagrantfileComponents.ConfigVM.provisioners:type_name -> hashicorp.vagrant.VagrantfileComponents.Provisioner + 15, // 6: hashicorp.vagrant.VagrantfileComponents.ConfigVM.synced_folders:type_name -> hashicorp.vagrant.VagrantfileComponents.SyncedFolder + 6, // 7: hashicorp.vagrant.VagrantfileComponents.MachineConfig.config_vm:type_name -> hashicorp.vagrant.VagrantfileComponents.ConfigVM + 7, // 8: hashicorp.vagrant.VagrantfileComponents.MachineConfig.config_ssh:type_name -> hashicorp.vagrant.VagrantfileComponents.ConfigSSH + 8, // 9: hashicorp.vagrant.VagrantfileComponents.MachineConfig.config_winrm:type_name -> hashicorp.vagrant.VagrantfileComponents.ConfigWinRM + 9, // 10: hashicorp.vagrant.VagrantfileComponents.MachineConfig.config_winssh:type_name -> hashicorp.vagrant.VagrantfileComponents.ConfigWinssh + 10, // 11: hashicorp.vagrant.VagrantfileComponents.MachineConfig.config_vagrant:type_name -> hashicorp.vagrant.VagrantfileComponents.ConfigVagrant + 17, // 12: hashicorp.vagrant.VagrantfileComponents.Provisioner.config:type_name -> google.protobuf.Any + 17, // 13: hashicorp.vagrant.VagrantfileComponents.Provider.config:type_name -> google.protobuf.Any + 17, // 14: hashicorp.vagrant.VagrantfileComponents.Network.config:type_name -> google.protobuf.Any + 17, // 15: hashicorp.vagrant.VagrantfileComponents.SyncedFolder.config:type_name -> google.protobuf.Any + 11, // 16: hashicorp.vagrant.VagrantfileComponents.Vagrantfile.machine_configs:type_name -> hashicorp.vagrant.VagrantfileComponents.MachineConfig + 18, // 17: hashicorp.vagrant.RubyVagrant.GetPlugins:input_type -> google.protobuf.Empty + 3, // 18: hashicorp.vagrant.RubyVagrant.ParseVagrantfile:input_type -> hashicorp.vagrant.ParseVagrantfileRequest + 1, // 19: hashicorp.vagrant.RubyVagrant.GetPlugins:output_type -> hashicorp.vagrant.GetPluginsResponse + 4, // 20: hashicorp.vagrant.RubyVagrant.ParseVagrantfile:output_type -> hashicorp.vagrant.ParseVagrantfileResponse + 19, // [19:21] is the sub-list for method output_type + 17, // [17:19] is the sub-list for method input_type + 17, // [17:17] is the sub-list for extension type_name + 17, // [17:17] is the sub-list for extension extendee + 0, // [0:17] is the sub-list for field type_name } func init() { file_proto_ruby_vagrant_ruby_server_proto_init() } @@ -740,7 +1444,7 @@ func file_proto_ruby_vagrant_ruby_server_proto_init() { } } file_proto_ruby_vagrant_ruby_server_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Provisioner); i { + switch v := v.(*VagrantfileComponents); i { case 0: return &v.state case 1: @@ -752,7 +1456,7 @@ func file_proto_ruby_vagrant_ruby_server_proto_init() { } } file_proto_ruby_vagrant_ruby_server_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MachineConfig); i { + switch v := v.(*VagrantfileComponents_ConfigVM); i { case 0: return &v.state case 1: @@ -764,7 +1468,7 @@ func file_proto_ruby_vagrant_ruby_server_proto_init() { } } file_proto_ruby_vagrant_ruby_server_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Communicator); i { + switch v := v.(*VagrantfileComponents_ConfigSSH); i { case 0: return &v.state case 1: @@ -776,7 +1480,103 @@ func file_proto_ruby_vagrant_ruby_server_proto_init() { } } file_proto_ruby_vagrant_ruby_server_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Vagrantfile); i { + switch v := v.(*VagrantfileComponents_ConfigWinRM); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_ruby_vagrant_ruby_server_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VagrantfileComponents_ConfigWinssh); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_ruby_vagrant_ruby_server_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VagrantfileComponents_ConfigVagrant); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_ruby_vagrant_ruby_server_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VagrantfileComponents_MachineConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_ruby_vagrant_ruby_server_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VagrantfileComponents_Provisioner); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_ruby_vagrant_ruby_server_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VagrantfileComponents_Provider); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_ruby_vagrant_ruby_server_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VagrantfileComponents_Network); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_ruby_vagrant_ruby_server_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VagrantfileComponents_SyncedFolder); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_ruby_vagrant_ruby_server_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VagrantfileComponents_Vagrantfile); i { case 0: return &v.state case 1: @@ -794,7 +1594,7 @@ func file_proto_ruby_vagrant_ruby_server_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_proto_ruby_vagrant_ruby_server_proto_rawDesc, NumEnums: 1, - NumMessages: 8, + NumMessages: 16, NumExtensions: 0, NumServices: 1, }, diff --git a/internal/server/proto/ruby_vagrant/ruby-server.proto b/internal/server/proto/ruby_vagrant/ruby-server.proto index 62c4450ef..7f08fe6b0 100644 --- a/internal/server/proto/ruby_vagrant/ruby-server.proto +++ b/internal/server/proto/ruby_vagrant/ruby-server.proto @@ -124,49 +124,8 @@ message VagrantfileComponents { message Network { string type = 1; - oneof config { - ForwardedPort forwarded_port = 2; - PrivateNetwork private_network = 3; - PublicNetwork public_network = 4; - } - } - - message ForwardedPort { - bool auto_correct = 1; - int32 guest = 2; - string guest_ip = 3; - int32 host = 4; - string host_ip = 5; - string id = 6; - string protocol = 7; - } - - message PrivateNetwork { - string type = 1; - bool auto_config = 2; - oneof config { - DHCP dhcp = 3; - StaticIp static_ip = 4; - } - } - - message PublicNetwork { - string type = 1; - bool auto_config = 2; - repeated string bridge = 3; - oneof config { - DHCP dhcp = 4; - StaticIp static_ip = 5; - } - } - - message DHCP { - bool use_dhcp_assigned_default_route = 1; - } - - message StaticIp { - string ip = 1; - string netmask = 2; + string id = 2; + google.protobuf.Any config = 3; } message SyncedFolder { diff --git a/lib/vagrant/protobufs/proto/ruby_vagrant/ruby-server_pb.rb b/lib/vagrant/protobufs/proto/ruby_vagrant/ruby-server_pb.rb index a977987a5..658328a5a 100644 --- a/lib/vagrant/protobufs/proto/ruby_vagrant/ruby-server_pb.rb +++ b/lib/vagrant/protobufs/proto/ruby_vagrant/ruby-server_pb.rb @@ -78,44 +78,8 @@ Google::Protobuf::DescriptorPool.generated_pool.build do end add_message "hashicorp.vagrant.VagrantfileComponents.Network" do optional :type, :string, 1 - oneof :config do - optional :forwarded_port, :message, 2, "hashicorp.vagrant.VagrantfileComponents.ForwardedPort" - optional :private_network, :message, 3, "hashicorp.vagrant.VagrantfileComponents.PrivateNetwork" - optional :public_network, :message, 4, "hashicorp.vagrant.VagrantfileComponents.PublicNetwork" - end - end - add_message "hashicorp.vagrant.VagrantfileComponents.ForwardedPort" do - optional :auto_correct, :bool, 1 - optional :guest, :int32, 2 - optional :guest_ip, :string, 3 - optional :host, :int32, 4 - optional :host_ip, :string, 5 - optional :id, :string, 6 - optional :protocol, :string, 7 - end - add_message "hashicorp.vagrant.VagrantfileComponents.PrivateNetwork" do - optional :type, :string, 1 - optional :auto_config, :bool, 2 - oneof :config do - optional :dhcp, :message, 3, "hashicorp.vagrant.VagrantfileComponents.DHCP" - optional :static_ip, :message, 4, "hashicorp.vagrant.VagrantfileComponents.StaticIp" - end - end - add_message "hashicorp.vagrant.VagrantfileComponents.PublicNetwork" do - optional :type, :string, 1 - optional :auto_config, :bool, 2 - repeated :bridge, :string, 3 - oneof :config do - optional :dhcp, :message, 4, "hashicorp.vagrant.VagrantfileComponents.DHCP" - optional :static_ip, :message, 5, "hashicorp.vagrant.VagrantfileComponents.StaticIp" - end - end - add_message "hashicorp.vagrant.VagrantfileComponents.DHCP" do - optional :use_dhcp_assigned_default_route, :bool, 1 - end - add_message "hashicorp.vagrant.VagrantfileComponents.StaticIp" do - optional :ip, :string, 1 - optional :netmask, :string, 2 + optional :id, :string, 2 + optional :config, :message, 3, "google.protobuf.Any" end add_message "hashicorp.vagrant.VagrantfileComponents.SyncedFolder" do optional :source, :string, 1 @@ -155,11 +119,6 @@ module Hashicorp VagrantfileComponents::Provisioner = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("hashicorp.vagrant.VagrantfileComponents.Provisioner").msgclass VagrantfileComponents::Provider = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("hashicorp.vagrant.VagrantfileComponents.Provider").msgclass VagrantfileComponents::Network = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("hashicorp.vagrant.VagrantfileComponents.Network").msgclass - VagrantfileComponents::ForwardedPort = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("hashicorp.vagrant.VagrantfileComponents.ForwardedPort").msgclass - VagrantfileComponents::PrivateNetwork = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("hashicorp.vagrant.VagrantfileComponents.PrivateNetwork").msgclass - VagrantfileComponents::PublicNetwork = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("hashicorp.vagrant.VagrantfileComponents.PublicNetwork").msgclass - VagrantfileComponents::DHCP = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("hashicorp.vagrant.VagrantfileComponents.DHCP").msgclass - VagrantfileComponents::StaticIp = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("hashicorp.vagrant.VagrantfileComponents.StaticIp").msgclass VagrantfileComponents::SyncedFolder = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("hashicorp.vagrant.VagrantfileComponents.SyncedFolder").msgclass VagrantfileComponents::Vagrantfile = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("hashicorp.vagrant.VagrantfileComponents.Vagrantfile").msgclass end diff --git a/parse_vagrantfile.rb b/parse_vagrantfile.rb index d74360e7c..05126d782 100644 --- a/parse_vagrantfile.rb +++ b/parse_vagrantfile.rb @@ -10,12 +10,10 @@ require_relative "./plugins/commands/serve/command" vagrantfile_path = "/Users/sophia/project/vagrant-ruby/Vagrantfile" +PROVIDER_PROTO_CLS = Hashicorp::Vagrant::VagrantfileComponents::Provisioner PROVISION_PROTO_CLS = Hashicorp::Vagrant::VagrantfileComponents::Provisioner SYNCED_FOLDER_PROTO_CLS = Hashicorp::Vagrant::VagrantfileComponents::SyncedFolder NETWORK_PROTO_CLS = Hashicorp::Vagrant::VagrantfileComponents::Network -NETWORK_FORWARDED_PORT_PROTO_CLS = Hashicorp::Vagrant::VagrantfileComponents::ForwardedPort -NETWORK_PRIVATE_PROTO_CLS = Hashicorp::Vagrant::VagrantfileComponents::PrivateNetwork -NETWORK_PUBLIC_PROTO_CLS = Hashicorp::Vagrant::VagrantfileComponents::PrivateNetwork def extract_component(target_cls, target, vagrant_config) vagrant_config.each do |c| @@ -40,22 +38,28 @@ def extract_component(target_cls, target, vagrant_config) end end +# Network configs take the form +# [ +# [:type, {:id=>"tcp8080", ...}], ... +# ] def extract_network(target, networks) networks.each do |n| - network_proto = NETWORK_PROTO_CLS.new() - network_proto.type = n[0] - case n[0] - when :forwarded_port - network_proto.forwarded_port = NETWORK_FORWARDED_PORT_PROTO_CLS.new(n[1]) - when :private - network_proto.private_network = NETWORK_PRIVATE_PROTO_CLS.new(n[1]) - when :public - network_proto.public_network = NETWORK_PUBLIC_PROTO_CLS.new(n[1]) - end + type = n[0] + opts = n[1] + network_proto = NETWORK_PROTO_CLS.new(type: type, id: opts.fetch(:id, "")) + opts.delete(:id) + opts.transform_keys!(&:to_s) + config_struct = Google::Protobuf::Struct.from_hash(opts) + config_any = Google::Protobuf::Any.pack(config_struct) + network_proto.config = config_any target << network_proto end end +# Synced folders take the form of a hash map +# { +# "name"=>{:type=>:rsync, ...}, ... +# }, def extract_synced_folders(target, synced_folders) synced_folders.each do |k,v| sf_proto = SYNCED_FOLDER_PROTO_CLS.new() @@ -121,6 +125,7 @@ def parse_vagrantfile(path) # have a config variable for one of the instance methods. This is ok. end end + extract_component(PROVISION_PROTO_CLS, config_vm_proto.provisioners, vm_config.provisioners) extract_network(config_vm_proto.networks, vm_config.networks) extract_synced_folders(config_vm_proto.synced_folders, vm_config.synced_folders) @@ -130,7 +135,7 @@ def parse_vagrantfile(path) config_vm: config_vm_proto, ) end - + vagrantfile = Hashicorp::Vagrant::VagrantfileComponents::Vagrantfile.new( path: path, # raw: raw,