glazed 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +19 -0
  3. data/lib/glazed/collector.rb +10 -6
  4. data/lib/glazed/command/base.rb +3 -18
  5. data/lib/glazed/command/orchestrate.rb +1 -1
  6. data/lib/glazed/command/run.rb +1 -1
  7. data/lib/glazed/command/send_signal.rb +21 -13
  8. data/lib/glazed/config.rb +50 -0
  9. data/lib/glazed/coordinator/task_runner.rb +189 -0
  10. data/lib/glazed/coordinator.rb +252 -0
  11. data/lib/glazed/dialect/run.rb +9 -3
  12. data/lib/glazed/dialect/sensitive_pattern.rb +7 -2
  13. data/lib/glazed/orchestrator/policy.rb +28 -0
  14. data/lib/glazed/orchestrator.rb +15 -65
  15. data/lib/glazed/proto.rb +1 -0
  16. data/lib/glazed/redactor.rb +65 -26
  17. data/lib/glazed/secret.rb +12 -37
  18. data/lib/glazed/secrets/command.rb +66 -0
  19. data/lib/glazed/secrets.rb +27 -5
  20. data/lib/glazed/secrets_resolver.rb +85 -0
  21. data/lib/glazed/shell_command.rb +41 -6
  22. data/lib/glazed/sources/command.rb +11 -8
  23. data/lib/glazed/state_backends/base.rb +11 -1
  24. data/lib/glazed/state_backends/sqlite.rb +38 -1
  25. data/lib/glazed/step_context.rb +26 -8
  26. data/lib/glazed/steps/{batch_shell.rb → batch_command.rb} +15 -15
  27. data/lib/glazed/steps/{shell.rb → command.rb} +21 -18
  28. data/lib/glazed/steps/fetch.rb +1 -1
  29. data/lib/glazed/steps/redact.rb +3 -1
  30. data/lib/glazed/storage_context.rb +22 -0
  31. data/lib/glazed/storages/base.rb +3 -2
  32. data/lib/glazed/storages/filesystem.rb +3 -2
  33. data/lib/glazed/storages/git.rb +25 -8
  34. data/lib/glazed/storages/github.rb +22 -8
  35. data/lib/glazed/storages/memory.rb +3 -2
  36. data/lib/glazed/storages.rb +6 -4
  37. data/lib/glazed/transports/base.rb +14 -2
  38. data/lib/glazed/transports/ssh.rb +55 -2
  39. data/lib/glazed/transports/telnet.rb +4 -2
  40. data/lib/glazed/v1/config_pb.rb +2 -1
  41. data/lib/glazed/v1/coordinator_pb.rb +34 -0
  42. data/lib/glazed/v1/inventory_pb.rb +5 -1
  43. data/lib/glazed/v1/orchestrator_pb.rb +1 -1
  44. data/lib/glazed/v1/redaction_pb.rb +2 -1
  45. data/lib/glazed/v1/secret_pb.rb +3 -1
  46. data/lib/glazed/v1/state_pb.rb +2 -1
  47. data/lib/glazed/v1/storage_pb.rb +1 -1
  48. data/lib/glazed/v1/workflow_pb.rb +3 -3
  49. data/lib/glazed/version.rb +1 -1
  50. metadata +10 -3
@@ -4,6 +4,7 @@
4
4
  # SPDX-License-Identifier: Apache-2.0
5
5
 
6
6
  require 'net/ssh'
7
+ require 'net/ssh/proxy/command'
7
8
  require 'glazed'
8
9
  require 'glazed/must'
9
10
  require 'glazed/transports/base'
@@ -18,14 +19,25 @@ module Glazed
18
19
  DEFAULT_PTY_OPTIONS = {term: 'vt100', chars_wide: 512}.freeze #: Hash[Symbol, untyped]
19
20
  # Seconds {#close} waits for the device to acknowledge closing channels.
20
21
  CLOSE_TIMEOUT = 5 #: Integer
22
+ # net-ssh verify_host_key values by {Proto::V1::SshOptions::HostKeyVerification}.
23
+ VERIFY_HOST_KEY = {
24
+ HOST_KEY_VERIFICATION_NEVER: :never,
25
+ HOST_KEY_VERIFICATION_ACCEPT_NEW: :accept_new,
26
+ HOST_KEY_VERIFICATION_ACCEPT_NEW_OR_LOCAL_TUNNEL: :accept_new_or_local_tunnel,
27
+ HOST_KEY_VERIFICATION_ALWAYS: :always,
28
+ }.freeze #: Hash[Symbol, Symbol]
29
+ # Repeated string fields of {Proto::V1::SshOptions} that are net-ssh options of the same name.
30
+ LIST_OPTIONS = %i[auth_methods user_known_hosts_file global_known_hosts_file host_key kex encryption hmac].freeze #: Array[Symbol]
21
31
 
22
32
  # @param host [String] hostname or address
23
33
  # @param port [Integer, nil] port, or nil for 22
24
34
  # @param username [String] login user name
25
35
  # @param password [Secret, nil] login password
26
36
  # @param connect_timeout [Numeric] seconds to wait for a connection
27
- #: (host: String, port: Integer?, username: String, password: Secret?, ?connect_timeout: Numeric) -> void
28
- def initialize(host:, port:, username:, password:, connect_timeout: DEFAULT_CONNECT_TIMEOUT)
37
+ # @param transport_options [Proto::V1::TransportOptions, nil] per-transport connection options
38
+ # @param secrets [SecretsResolver] reads secrets in the transport options
39
+ #: (host: String, port: Integer?, username: String, password: Secret?, ?connect_timeout: Numeric, ?transport_options: Proto::V1::TransportOptions?, ?secrets: SecretsResolver) -> void
40
+ def initialize(host:, port:, username:, password:, connect_timeout: DEFAULT_CONNECT_TIMEOUT, transport_options: nil, secrets: SecretsResolver.new)
29
41
  super
30
42
  @session = nil #: Net::SSH::Connection::Session?
31
43
  @shell = nil #: Net::SSH::Connection::Channel?
@@ -41,6 +53,7 @@ module Glazed
41
53
  def open
42
54
  @session = Net::SSH.start(
43
55
  host, username,
56
+ **ssh_options,
44
57
  port: port || DEFAULT_PORT,
45
58
  password: password&.value,
46
59
  timeout: connect_timeout,
@@ -48,6 +61,46 @@ module Glazed
48
61
  )
49
62
  end
50
63
 
64
+ # Builds Net::SSH.start options from the node, resolving secrets.
65
+ #
66
+ # @return [Hash{Symbol => Object}] net-ssh options, with only the fields the node sets
67
+ # @raise [Secret::Unavailable] when a referenced secret cannot be read
68
+ #: () -> Hash[Symbol, untyped]
69
+ private def ssh_options
70
+ ssh = transport_options&.ssh
71
+ return {} unless ssh
72
+
73
+ options = {} #: Hash[Symbol, untyped]
74
+ options[:config] = ssh.use_ssh_config if ssh.has_use_ssh_config?
75
+ LIST_OPTIONS.each do |name|
76
+ values = ssh.public_send(name).to_a
77
+ options[name] = values unless values.empty?
78
+ end
79
+ key_options(ssh, options)
80
+ options[:keys_only] = true if ssh.keys_only
81
+ options[:passphrase] = secrets.maybe(ssh.passphrase)&.value if ssh.passphrase
82
+ options[:number_of_password_prompts] = ssh.number_of_password_prompts if ssh.number_of_password_prompts.positive?
83
+ verification = Must.be_a(ssh.verify_host_key, Symbol)
84
+ options[:verify_host_key] = VERIFY_HOST_KEY.fetch(verification) unless verification == :HOST_KEY_VERIFICATION_UNSPECIFIED
85
+ options[:compression] = true if ssh.compression
86
+ options[:forward_agent] = true if ssh.forward_agent
87
+ options[:proxy] = Net::SSH::Proxy::Command.new(ssh.proxy_command) unless ssh.proxy_command.empty?
88
+ options
89
+ end
90
+
91
+ # Sets the keys and key_data options from the keys of the node.
92
+ #
93
+ # @param ssh [Proto::V1::SshOptions] options of the node
94
+ # @param options [Hash{Symbol => Object}] net-ssh options to add to
95
+ # @return [void]
96
+ # @raise [Secret::Unavailable] when a referenced secret cannot be read
97
+ #: (Proto::V1::SshOptions ssh, Hash[Symbol, untyped] options) -> void
98
+ private def key_options(ssh, options)
99
+ paths, raws = ssh.keys.partition { _1.source == :path }
100
+ options[:keys] = paths.map(&:path) unless paths.empty?
101
+ options[:key_data] = raws.map { secrets.maybe(_1.raw)&.value } unless raws.empty?
102
+ end
103
+
51
104
  # Sends data to the shell, opening it on first use.
52
105
  #
53
106
  # @param data [String] bytes to send
@@ -22,8 +22,10 @@ module Glazed
22
22
  # @param username [String] login user name
23
23
  # @param password [Secret, nil] login password
24
24
  # @param connect_timeout [Numeric] seconds to wait for a connection
25
- #: (host: String, port: Integer?, username: String, password: Secret?, ?connect_timeout: Numeric) -> void
26
- def initialize(host:, port:, username:, password:, connect_timeout: DEFAULT_CONNECT_TIMEOUT)
25
+ # @param transport_options [Proto::V1::TransportOptions, nil] per-transport connection options
26
+ # @param secrets [SecretsResolver] reads secrets in the transport options
27
+ #: (host: String, port: Integer?, username: String, password: Secret?, ?connect_timeout: Numeric, ?transport_options: Proto::V1::TransportOptions?, ?secrets: SecretsResolver) -> void
28
+ def initialize(host:, port:, username:, password:, connect_timeout: DEFAULT_CONNECT_TIMEOUT, transport_options: nil, secrets: SecretsResolver.new)
27
29
  super
28
30
  @telnet = nil #: Net::Telnet?
29
31
  @rest = +'' #: String
@@ -7,11 +7,12 @@ require 'google/protobuf'
7
7
  require 'buf/validate/validate_pb'
8
8
  require 'glazed/v1/inventory_pb'
9
9
  require 'glazed/v1/orchestrator_pb'
10
+ require 'glazed/v1/redaction_pb'
10
11
  require 'glazed/v1/storage_pb'
11
12
  require 'glazed/v1/workflow_pb'
12
13
 
13
14
 
14
- descriptor_data = "\n\x16glazed/v1/config.proto\x12\tglazed.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x19glazed/v1/inventory.proto\x1a\x1cglazed/v1/orchestrator.proto\x1a\x17glazed/v1/storage.proto\x1a\x18glazed/v1/workflow.proto\"\x80\x04\n\x06\x43onfig\x12\x38\n\tinventory\x18\x01 \x03(\x0b\x32\x1a.glazed.v1.InventorySourceR\tinventory\x12I\n\x08storages\x18\x02 \x03(\x0b\x32\x1f.glazed.v1.Config.StoragesEntryB\x0c\xbaH\t\x9a\x01\x06\"\x04r\x02\x10\x01R\x08storages\x12L\n\tworkflows\x18\x03 \x03(\x0b\x32 .glazed.v1.Config.WorkflowsEntryB\x0c\xbaH\t\x9a\x01\x06\"\x04r\x02\x10\x01R\tworkflows\x12\x12\n\x04jobs\x18\x04 \x01(\rR\x04jobs\x12(\n\x08requires\x18\x05 \x03(\tB\x0c\xbaH\t\x92\x01\x06\"\x04r\x02\x10\x01R\x08requires\x12;\n\x0corchestrator\x18\x06 \x01(\x0b\x32\x17.glazed.v1.OrchestratorR\x0corchestrator\x1aU\n\rStoragesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x18.glazed.v1.StorageConfigR\x05value:\x02\x38\x01\x1aQ\n\x0eWorkflowsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12)\n\x05value\x18\x02 \x01(\x0b\x32\x13.glazed.v1.WorkflowR\x05value:\x02\x38\x01\x42\x14\xea\x02\x11Glazed::Proto::V1b\x06proto3"
15
+ descriptor_data = "\n\x16glazed/v1/config.proto\x12\tglazed.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x19glazed/v1/inventory.proto\x1a\x1cglazed/v1/orchestrator.proto\x1a\x19glazed/v1/redaction.proto\x1a\x17glazed/v1/storage.proto\x1a\x18glazed/v1/workflow.proto\"\xb4\x04\n\x06\x43onfig\x12\x38\n\tinventory\x18\x01 \x03(\x0b\x32\x1a.glazed.v1.InventorySourceR\tinventory\x12I\n\x08storages\x18\x02 \x03(\x0b\x32\x1f.glazed.v1.Config.StoragesEntryB\x0c\xbaH\t\x9a\x01\x06\"\x04r\x02\x10\x01R\x08storages\x12L\n\tworkflows\x18\x03 \x03(\x0b\x32 .glazed.v1.Config.WorkflowsEntryB\x0c\xbaH\t\x9a\x01\x06\"\x04r\x02\x10\x01R\tworkflows\x12\x12\n\x04jobs\x18\x04 \x01(\rR\x04jobs\x12(\n\x08requires\x18\x05 \x03(\tB\x0c\xbaH\t\x92\x01\x06\"\x04r\x02\x10\x01R\x08requires\x12;\n\x0corchestrator\x18\x06 \x01(\x0b\x32\x17.glazed.v1.OrchestratorR\x0corchestrator\x12\x32\n\tredaction\x18\x07 \x01(\x0b\x32\x14.glazed.v1.RedactionR\tredaction\x1aU\n\rStoragesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x18.glazed.v1.StorageConfigR\x05value:\x02\x38\x01\x1aQ\n\x0eWorkflowsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12)\n\x05value\x18\x02 \x01(\x0b\x32\x13.glazed.v1.WorkflowR\x05value:\x02\x38\x01\x42\x14\xea\x02\x11Glazed::Proto::V1b\x06proto3"
15
16
 
16
17
  pool = ::Google::Protobuf::DescriptorPool.generated_pool
17
18
  pool.add_serialized_file(descriptor_data)
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: glazed/v1/coordinator.proto
4
+
5
+ require 'google/protobuf'
6
+
7
+ require 'buf/validate/validate_pb'
8
+ require 'glazed/v1/orchestrator_pb'
9
+ require 'glazed/v1/steps_pb'
10
+ require 'google/protobuf/timestamp_pb'
11
+
12
+
13
+ descriptor_data = "\n\x1bglazed/v1/coordinator.proto\x12\tglazed.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x1cglazed/v1/orchestrator.proto\x1a\x15glazed/v1/steps.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xac\x02\n\x0f\x43oordinatorTask\x12,\n\x05\x63heck\x18\x01 \x01(\x0b\x32\x14.glazed.v1.CheckTaskH\x00R\x05\x63heck\x12\x32\n\x07prepare\x18\x02 \x01(\x0b\x32\x16.glazed.v1.PrepareTaskH\x00R\x07prepare\x12\x36\n\tnode_step\x18\x03 \x01(\x0b\x32\x17.glazed.v1.NodeStepTaskH\x00R\x08nodeStep\x12\x39\n\nbatch_step\x18\x04 \x01(\x0b\x32\x18.glazed.v1.BatchStepTaskH\x00R\tbatchStep\x12\x35\n\x08\x63omplete\x18\x05 \x01(\x0b\x32\x17.glazed.v1.CompleteTaskH\x00R\x08\x63ompleteB\r\n\x04task\x12\x05\xbaH\x02\x08\x01\"\xb1\x01\n\tCheckTask\x12+\n\x07signals\x18\x01 \x03(\x0b\x32\x11.glazed.v1.SignalR\x07signals\x12\x1d\n\x05token\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05token\x12\x14\n\x05\x63ycle\x18\x03 \x01(\rR\x05\x63ycle\x12#\n\rgrace_seconds\x18\x04 \x01(\rR\x0cgraceSeconds\x12\x1d\n\nmax_cycles\x18\x05 \x01(\rR\tmaxCycles\"B\n\x05\x41rmed\x12\x39\n\nwait_until\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\twaitUntil\"\r\n\x0bPrepareTask\"\xa2\x01\n\x0fPreparedBatches\x12\x41\n\x07\x62\x61tches\x18\x01 \x03(\x0b\x32\'.glazed.v1.PreparedBatches.BatchesEntryR\x07\x62\x61tches\x1aL\n\x0c\x42\x61tchesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x10.glazed.v1.BatchR\x05value:\x02\x38\x01\"\x86\x01\n\x05\x42\x61tch\x12#\n\x08workflow\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x08workflow\x12\x14\n\x05owner\x18\x02 \x01(\tR\x05owner\x12,\n\x05nodes\x18\x03 \x03(\x0b\x32\x16.glazed.v1.NodeOutcomeR\x05nodes\x12\x14\n\x05\x65rror\x18\x04 \x01(\tR\x05\x65rror\"s\n\x0bNodeOutcome\x12\x32\n\x05state\x18\x01 \x01(\x0b\x32\x14.glazed.v1.NodeStateB\x06\xbaH\x03\xc8\x01\x01R\x05state\x12\x30\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32\x16.glazed.v1.StepFailureR\x07\x66\x61ilure\"7\n\x0bStepFailure\x12\x12\n\x04step\x18\x01 \x01(\tR\x04step\x12\x14\n\x05\x65rror\x18\x02 \x01(\tR\x05\x65rror\"\x8a\x01\n\x0cNodeStepTask\x12#\n\x08workflow\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x08workflow\x12\x1b\n\x04step\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x04step\x12\x38\n\x07outcome\x18\x03 \x01(\x0b\x32\x16.glazed.v1.NodeOutcomeB\x06\xbaH\x03\xc8\x01\x01R\x07outcome\"\\\n\rBatchStepTask\x12\x1b\n\x04step\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x04step\x12.\n\x05\x62\x61tch\x18\x02 \x01(\x0b\x32\x10.glazed.v1.BatchB\x06\xbaH\x03\xc8\x01\x01R\x05\x62\x61tch\">\n\x0c\x43ompleteTask\x12.\n\x05\x62\x61tch\x18\x01 \x01(\x0b\x32\x10.glazed.v1.BatchB\x06\xbaH\x03\xc8\x01\x01R\x05\x62\x61tchB\x14\xea\x02\x11Glazed::Proto::V1b\x06proto3"
14
+
15
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
16
+ pool.add_serialized_file(descriptor_data)
17
+
18
+ module Glazed
19
+ module Proto
20
+ module V1
21
+ CoordinatorTask = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.CoordinatorTask").msgclass
22
+ CheckTask = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.CheckTask").msgclass
23
+ Armed = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.Armed").msgclass
24
+ PrepareTask = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.PrepareTask").msgclass
25
+ PreparedBatches = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.PreparedBatches").msgclass
26
+ Batch = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.Batch").msgclass
27
+ NodeOutcome = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.NodeOutcome").msgclass
28
+ StepFailure = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.StepFailure").msgclass
29
+ NodeStepTask = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.NodeStepTask").msgclass
30
+ BatchStepTask = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.BatchStepTask").msgclass
31
+ CompleteTask = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.CompleteTask").msgclass
32
+ end
33
+ end
34
+ end
@@ -9,7 +9,7 @@ require 'glazed/v1/secret_pb'
9
9
  require 'google/protobuf/any_pb'
10
10
 
11
11
 
12
- descriptor_data = "\n\x19glazed/v1/inventory.proto\x12\tglazed.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x16glazed/v1/secret.proto\x1a\x19google/protobuf/any.proto\"\xec\x04\n\x04Node\x12)\n\x04name\x18\x01 \x01(\tB\x15\xbaH\x12r\x10\x32\x07^[^/]*$Z\x01.Z\x02..R\x04name\x12\x30\n\x05group\x18\x02 \x01(\tB\x1a\xbaH\x17r\x15\x32\x13^([^/]+(/[^/]+)*)?$R\x05group\x12\x12\n\x04host\x18\x03 \x01(\tR\x04host\x12\x1d\n\x04port\x18\x04 \x01(\rB\t\xbaH\x06*\x04\x18\xff\xff\x03R\x04port\x12\x35\n\x07\x64ialect\x18\x05 \x01(\tB\x1b\xbaH\x18r\x16\x32\x14^([a-z][a-z0-9_]*)?$R\x07\x64ialect\x12\x39\n\ttransport\x18\x06 \x01(\tB\x1b\xbaH\x18r\x16\x32\x14^([a-z][a-z0-9_]*)?$R\ttransport\x12\x1a\n\x08username\x18\x07 \x01(\tR\x08username\x12\x30\n\x08password\x18\x08 \x01(\x0b\x32\x14.glazed.v1.SecretRefR\x08password\x12\x41\n\x06params\x18\t \x03(\x0b\x32\x1b.glazed.v1.Node.ParamsEntryB\x0c\xbaH\t\x9a\x01\x06\"\x04r\x02\x10\x01R\x06params\x12\x44\n\x07secrets\x18\n \x03(\x0b\x32\x1c.glazed.v1.Node.SecretsEntryB\x0c\xbaH\t\x9a\x01\x06\"\x04r\x02\x10\x01R\x07secrets\x1a\x39\n\x0bParamsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x1aP\n\x0cSecretsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12*\n\x05value\x18\x02 \x01(\x0b\x32\x14.glazed.v1.SecretRefR\x05value:\x02\x38\x01\"\x89\x04\n\rInventoryFile\x12+\n\x08\x64\x65\x66\x61ults\x18\x01 \x01(\x0b\x32\x0f.glazed.v1.NodeR\x08\x64\x65\x66\x61ults\x12%\n\x05nodes\x18\x02 \x03(\x0b\x32\x0f.glazed.v1.NodeR\x05nodes:\xa3\x03\xbaH\x9f\x03\x1aP\n\x14inventory_file.names\x12\x17\x65very node needs a name\x1a\x1fthis.nodes.all(n, n.name != \'\')\x1aV\n\x1cinventory_file.defaults_name\x12\x1c\x64\x65\x66\x61ults must not set a name\x1a\x18this.defaults.name == \'\'\x1a\\\n\x1binventory_file.unique_names\x12\x19node names must be unique\x1a\"this.nodes.map(n, n.name).unique()\x1a\x94\x01\n\x16inventory_file.dialect\x12\x37\x65very node needs a dialect, from itself or the defaults\x1a\x41this.defaults.dialect != \'\' || this.nodes.all(n, n.dialect != \'\')\"\x81\x02\n\x0fInventorySource\x12>\n\njson_files\x18\x01 \x01(\x0b\x32\x1d.glazed.v1.JsonFilesInventoryH\x00R\tjsonFiles\x12\x32\n\x06inline\x18\x02 \x01(\x0b\x32\x18.glazed.v1.InventoryFileH\x00R\x06inline\x12.\n\x06plugin\x18\x03 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00R\x06plugin\x12\x37\n\x07\x63ommand\x18\x04 \x01(\x0b\x32\x1b.glazed.v1.CommandInventoryH\x00R\x07\x63ommandB\x11\n\x08provider\x12\x05\xbaH\x02\x08\x01\"V\n\x10\x43ommandInventory\x12\x19\n\x03run\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x03run\x12\'\n\x0ftimeout_seconds\x18\x02 \x01(\rR\x0etimeoutSeconds\":\n\x12JsonFilesInventory\x12$\n\x05paths\x18\x01 \x03(\tB\x0e\xbaH\x0b\x92\x01\x08\x08\x01\"\x04r\x02\x10\x01R\x05pathsB\x14\xea\x02\x11Glazed::Proto::V1b\x06proto3"
12
+ descriptor_data = "\n\x19glazed/v1/inventory.proto\x12\tglazed.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x16glazed/v1/secret.proto\x1a\x19google/protobuf/any.proto\"\xb6\x05\n\x04Node\x12)\n\x04name\x18\x01 \x01(\tB\x15\xbaH\x12r\x10\x32\x07^[^/]*$Z\x01.Z\x02..R\x04name\x12\x30\n\x05group\x18\x02 \x01(\tB\x1a\xbaH\x17r\x15\x32\x13^([^/]+(/[^/]+)*)?$R\x05group\x12\x12\n\x04host\x18\x03 \x01(\tR\x04host\x12\x1d\n\x04port\x18\x04 \x01(\rB\t\xbaH\x06*\x04\x18\xff\xff\x03R\x04port\x12\x35\n\x07\x64ialect\x18\x05 \x01(\tB\x1b\xbaH\x18r\x16\x32\x14^([a-z][a-z0-9_]*)?$R\x07\x64ialect\x12\x39\n\ttransport\x18\x06 \x01(\tB\x1b\xbaH\x18r\x16\x32\x14^([a-z][a-z0-9_]*)?$R\ttransport\x12\x1a\n\x08username\x18\x07 \x01(\tR\x08username\x12\x30\n\x08password\x18\x08 \x01(\x0b\x32\x14.glazed.v1.SecretRefR\x08password\x12\x41\n\x06params\x18\t \x03(\x0b\x32\x1b.glazed.v1.Node.ParamsEntryB\x0c\xbaH\t\x9a\x01\x06\"\x04r\x02\x10\x01R\x06params\x12\x44\n\x07secrets\x18\n \x03(\x0b\x32\x1c.glazed.v1.Node.SecretsEntryB\x0c\xbaH\t\x9a\x01\x06\"\x04r\x02\x10\x01R\x07secrets\x12H\n\x11transport_options\x18\x0b \x01(\x0b\x32\x1b.glazed.v1.TransportOptionsR\x10transportOptions\x1a\x39\n\x0bParamsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x1aP\n\x0cSecretsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12*\n\x05value\x18\x02 \x01(\x0b\x32\x14.glazed.v1.SecretRefR\x05value:\x02\x38\x01\";\n\x10TransportOptions\x12\'\n\x03ssh\x18\x01 \x01(\x0b\x32\x15.glazed.v1.SshOptionsR\x03ssh\"\xf8\x07\n\nSshOptions\x12%\n\x04keys\x18\x01 \x03(\x0b\x32\x11.glazed.v1.SshKeyR\x04keys\x12\x34\n\npassphrase\x18\x02 \x01(\x0b\x32\x14.glazed.v1.SecretRefR\npassphrase\x12\x1b\n\tkeys_only\x18\x03 \x01(\x08R\x08keysOnly\x12/\n\x0c\x61uth_methods\x18\x04 \x03(\tB\x0c\xbaH\t\x92\x01\x06\"\x04r\x02\x10\x01R\x0b\x61uthMethods\x12;\n\x1anumber_of_password_prompts\x18\x05 \x01(\rR\x17numberOfPasswordPrompts\x12[\n\x0fverify_host_key\x18\x06 \x01(\x0e\x32).glazed.v1.SshOptions.HostKeyVerificationB\x08\xbaH\x05\x82\x01\x02\x10\x01R\rverifyHostKey\x12?\n\x15user_known_hosts_file\x18\x07 \x03(\tB\x0c\xbaH\t\x92\x01\x06\"\x04r\x02\x10\x01R\x12userKnownHostsFile\x12\x43\n\x17global_known_hosts_file\x18\x08 \x03(\tB\x0c\xbaH\t\x92\x01\x06\"\x04r\x02\x10\x01R\x14globalKnownHostsFile\x12\'\n\x08host_key\x18\t \x03(\tB\x0c\xbaH\t\x92\x01\x06\"\x04r\x02\x10\x01R\x07hostKey\x12\x1e\n\x03kex\x18\n \x03(\tB\x0c\xbaH\t\x92\x01\x06\"\x04r\x02\x10\x01R\x03kex\x12,\n\nencryption\x18\x0b \x03(\tB\x0c\xbaH\t\x92\x01\x06\"\x04r\x02\x10\x01R\nencryption\x12 \n\x04hmac\x18\x0c \x03(\tB\x0c\xbaH\t\x92\x01\x06\"\x04r\x02\x10\x01R\x04hmac\x12 \n\x0b\x63ompression\x18\r \x01(\x08R\x0b\x63ompression\x12#\n\rproxy_command\x18\x0e \x01(\tR\x0cproxyCommand\x12#\n\rforward_agent\x18\x0f \x01(\x08R\x0c\x66orwardAgent\x12)\n\x0euse_ssh_config\x18\x10 \x01(\x08H\x00R\x0cuseSshConfig\x88\x01\x01\"\xdb\x01\n\x13HostKeyVerification\x12%\n!HOST_KEY_VERIFICATION_UNSPECIFIED\x10\x00\x12\x1f\n\x1bHOST_KEY_VERIFICATION_NEVER\x10\x01\x12$\n HOST_KEY_VERIFICATION_ACCEPT_NEW\x10\x02\x12\x34\n0HOST_KEY_VERIFICATION_ACCEPT_NEW_OR_LOCAL_TUNNEL\x10\x03\x12 \n\x1cHOST_KEY_VERIFICATION_ALWAYS\x10\x04\x42\x11\n\x0f_use_ssh_config\"b\n\x06SshKey\x12\x1d\n\x04path\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x04path\x12(\n\x03raw\x18\x02 \x01(\x0b\x32\x14.glazed.v1.SecretRefH\x00R\x03rawB\x0f\n\x06source\x12\x05\xbaH\x02\x08\x01\"\x89\x04\n\rInventoryFile\x12+\n\x08\x64\x65\x66\x61ults\x18\x01 \x01(\x0b\x32\x0f.glazed.v1.NodeR\x08\x64\x65\x66\x61ults\x12%\n\x05nodes\x18\x02 \x03(\x0b\x32\x0f.glazed.v1.NodeR\x05nodes:\xa3\x03\xbaH\x9f\x03\x1aP\n\x14inventory_file.names\x12\x17\x65very node needs a name\x1a\x1fthis.nodes.all(n, n.name != \'\')\x1aV\n\x1cinventory_file.defaults_name\x12\x1c\x64\x65\x66\x61ults must not set a name\x1a\x18this.defaults.name == \'\'\x1a\\\n\x1binventory_file.unique_names\x12\x19node names must be unique\x1a\"this.nodes.map(n, n.name).unique()\x1a\x94\x01\n\x16inventory_file.dialect\x12\x37\x65very node needs a dialect, from itself or the defaults\x1a\x41this.defaults.dialect != \'\' || this.nodes.all(n, n.dialect != \'\')\"\x81\x02\n\x0fInventorySource\x12>\n\njson_files\x18\x01 \x01(\x0b\x32\x1d.glazed.v1.JsonFilesInventoryH\x00R\tjsonFiles\x12\x32\n\x06inline\x18\x02 \x01(\x0b\x32\x18.glazed.v1.InventoryFileH\x00R\x06inline\x12.\n\x06plugin\x18\x03 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00R\x06plugin\x12\x37\n\x07\x63ommand\x18\x04 \x01(\x0b\x32\x1b.glazed.v1.CommandInventoryH\x00R\x07\x63ommandB\x11\n\x08provider\x12\x05\xbaH\x02\x08\x01\"\x83\x01\n\x10\x43ommandInventory\x12\x10\n\x03run\x18\x01 \x01(\tR\x03run\x12\'\n\x0ftimeout_seconds\x18\x02 \x01(\rR\x0etimeoutSeconds\x12 \n\x04\x65xec\x18\x03 \x03(\tB\x0c\xbaH\t\x92\x01\x06\"\x04r\x02\x10\x01R\x04\x65xec:\x12\xbaH\x0f\"\r\n\x03run\n\x04\x65xec\x10\x01\":\n\x12JsonFilesInventory\x12$\n\x05paths\x18\x01 \x03(\tB\x0e\xbaH\x0b\x92\x01\x08\x08\x01\"\x04r\x02\x10\x01R\x05pathsB\x14\xea\x02\x11Glazed::Proto::V1b\x06proto3"
13
13
 
14
14
  pool = ::Google::Protobuf::DescriptorPool.generated_pool
15
15
  pool.add_serialized_file(descriptor_data)
@@ -18,6 +18,10 @@ module Glazed
18
18
  module Proto
19
19
  module V1
20
20
  Node = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.Node").msgclass
21
+ TransportOptions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.TransportOptions").msgclass
22
+ SshOptions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.SshOptions").msgclass
23
+ SshOptions::HostKeyVerification = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.SshOptions.HostKeyVerification").enummodule
24
+ SshKey = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.SshKey").msgclass
21
25
  InventoryFile = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.InventoryFile").msgclass
22
26
  InventorySource = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.InventorySource").msgclass
23
27
  CommandInventory = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.CommandInventory").msgclass
@@ -9,7 +9,7 @@ require 'glazed/v1/state_pb'
9
9
  require 'google/protobuf/timestamp_pb'
10
10
 
11
11
 
12
- descriptor_data = "\n\x1cglazed/v1/orchestrator.proto\x12\tglazed.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x15glazed/v1/state.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xd8\x02\n\x0cOrchestrator\x12;\n\x05state\x18\x01 \x01(\x0b\x32\x1d.glazed.v1.StateBackendConfigB\x06\xbaH\x03\xc8\x01\x01R\x05state\x12T\n\tworkflows\x18\x02 \x03(\x0b\x32&.glazed.v1.Orchestrator.WorkflowsEntryB\x0e\xbaH\x0b\x9a\x01\x08\x08\x01\"\x04r\x02\x10\x01R\tworkflows\x12!\n\x0cpoll_seconds\x18\x03 \x01(\rR\x0bpollSeconds\x12:\n\x19inventory_refresh_seconds\x18\x04 \x01(\rR\x17inventoryRefreshSeconds\x1aV\n\x0eWorkflowsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x18.glazed.v1.OrchestrationR\x05value:\x02\x38\x01\"\xb5\x01\n\rOrchestration\x12/\n\x08schedule\x18\x01 \x01(\x0b\x32\x13.glazed.v1.ScheduleR\x08schedule\x12/\n\x08\x64\x65\x62ounce\x18\x02 \x01(\x0b\x32\x13.glazed.v1.DebounceR\x08\x64\x65\x62ounce\x12\x1d\n\nbatch_size\x18\x03 \x01(\rR\tbatchSize\x12#\n\rlease_seconds\x18\x04 \x01(\rR\x0cleaseSeconds\"\x92\x01\n\x08Schedule\x12)\n\x10interval_seconds\x18\x01 \x01(\rR\x0fintervalSeconds\x12\x34\n\x16retry_interval_seconds\x18\x02 \x01(\rR\x14retryIntervalSeconds\x12%\n\x0ejitter_seconds\x18\x03 \x01(\rR\rjitterSeconds\"Y\n\x08\x44\x65\x62ounce\x12#\n\rdelay_seconds\x18\x01 \x01(\rR\x0c\x64\x65laySeconds\x12(\n\x10max_wait_seconds\x18\x02 \x01(\rR\x0emaxWaitSeconds\"\xa1\x01\n\x06Signal\x12\x1b\n\x04node\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x04node\x12\x1f\n\x06source\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06source\x12;\n\x0breceived_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\nreceivedAt\x12\x1c\n\timmediate\x18\x04 \x01(\x08R\timmediateB\x14\xea\x02\x11Glazed::Proto::V1b\x06proto3"
12
+ descriptor_data = "\n\x1cglazed/v1/orchestrator.proto\x12\tglazed.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x15glazed/v1/state.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xd8\x02\n\x0cOrchestrator\x12;\n\x05state\x18\x01 \x01(\x0b\x32\x1d.glazed.v1.StateBackendConfigB\x06\xbaH\x03\xc8\x01\x01R\x05state\x12T\n\tworkflows\x18\x02 \x03(\x0b\x32&.glazed.v1.Orchestrator.WorkflowsEntryB\x0e\xbaH\x0b\x9a\x01\x08\x08\x01\"\x04r\x02\x10\x01R\tworkflows\x12!\n\x0cpoll_seconds\x18\x03 \x01(\rR\x0bpollSeconds\x12:\n\x19inventory_refresh_seconds\x18\x04 \x01(\rR\x17inventoryRefreshSeconds\x1aV\n\x0eWorkflowsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x18.glazed.v1.OrchestrationR\x05value:\x02\x38\x01\"\xb5\x01\n\rOrchestration\x12/\n\x08schedule\x18\x01 \x01(\x0b\x32\x13.glazed.v1.ScheduleR\x08schedule\x12/\n\x08\x64\x65\x62ounce\x18\x02 \x01(\x0b\x32\x13.glazed.v1.DebounceR\x08\x64\x65\x62ounce\x12\x1d\n\nbatch_size\x18\x03 \x01(\rR\tbatchSize\x12#\n\rlease_seconds\x18\x04 \x01(\rR\x0cleaseSeconds\"\x92\x01\n\x08Schedule\x12)\n\x10interval_seconds\x18\x01 \x01(\rR\x0fintervalSeconds\x12\x34\n\x16retry_interval_seconds\x18\x02 \x01(\rR\x14retryIntervalSeconds\x12%\n\x0ejitter_seconds\x18\x03 \x01(\rR\rjitterSeconds\"Y\n\x08\x44\x65\x62ounce\x12#\n\rdelay_seconds\x18\x01 \x01(\rR\x0c\x64\x65laySeconds\x12(\n\x10max_wait_seconds\x18\x02 \x01(\rR\x0emaxWaitSeconds\"\xba\x02\n\x06Signal\x12\x12\n\x04node\x18\x01 \x01(\tR\x04node\x12\x1f\n\x06source\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06source\x12;\n\x0breceived_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\nreceivedAt\x12\x1c\n\timmediate\x18\x04 \x01(\x08R\timmediate\x12\x1b\n\tall_nodes\x18\x05 \x01(\x08R\x08\x61llNodes\x12*\n\tworkflows\x18\x06 \x03(\tB\x0c\xbaH\t\x92\x01\x06\"\x04r\x02\x10\x01R\tworkflows:W\xbaHT\x1aR\n\rsignal.target\x12\x1cset either node or all_nodes\x1a#(this.node != \'\') != this.all_nodesB\x14\xea\x02\x11Glazed::Proto::V1b\x06proto3"
13
13
 
14
14
  pool = ::Google::Protobuf::DescriptorPool.generated_pool
15
15
  pool.add_serialized_file(descriptor_data)
@@ -8,7 +8,7 @@ require 'buf/validate/validate_pb'
8
8
  require 'glazed/v1/secret_pb'
9
9
 
10
10
 
11
- descriptor_data = "\n\x19glazed/v1/redaction.proto\x12\tglazed.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x16glazed/v1/secret.proto\"\x8e\x02\n\tRedaction\x12\x37\n\x04mode\x18\x01 \x01(\x0e\x32\x19.glazed.v1.Redaction.ModeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04mode\x12/\n\x08hmac_key\x18\x02 \x01(\x0b\x32\x14.glazed.v1.SecretRefR\x07hmacKey\"<\n\x04Mode\x12\x14\n\x10MODE_UNSPECIFIED\x10\x00\x12\x0f\n\x0bMODE_REMOVE\x10\x01\x12\r\n\tMODE_HMAC\x10\x02:Y\xbaHV\x1aT\n\x12redaction.hmac_key\x12\x18MODE_HMAC needs hmac_key\x1a$this.mode != 2 || has(this.hmac_key)B\x14\xea\x02\x11Glazed::Proto::V1b\x06proto3"
11
+ descriptor_data = "\n\x19glazed/v1/redaction.proto\x12\tglazed.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x16glazed/v1/secret.proto\"\xe5\x01\n\tRedaction\x12\x37\n\x04mode\x18\x01 \x01(\x0e\x32\x19.glazed.v1.Redaction.ModeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04mode\x12/\n\x08hmac_key\x18\x02 \x01(\x0b\x32\x14.glazed.v1.SecretRefR\x07hmacKey\x12\x30\n\x07secrets\x18\x03 \x03(\x0b\x32\x16.glazed.v1.ExtraSecretR\x07secrets\"<\n\x04Mode\x12\x14\n\x10MODE_UNSPECIFIED\x10\x00\x12\x0f\n\x0bMODE_REMOVE\x10\x01\x12\r\n\tMODE_HMAC\x10\x02\"\xa3\x01\n\x0b\x45xtraSecret\x12.\n\x03ref\x18\x01 \x01(\x0b\x32\x14.glazed.v1.SecretRefB\x06\xbaH\x03\xc8\x01\x01R\x03ref\x12\x16\n\x06regexp\x18\x02 \x01(\x08R\x06regexp\x12\x1c\n\tdelimiter\x18\x03 \x01(\tR\tdelimiter\x12.\n\x04note\x18\x04 \x01(\tB\x1a\xbaH\x17r\x15\x32\x13^[A-Za-z0-9_.@/-]*$R\x04noteB\x14\xea\x02\x11Glazed::Proto::V1b\x06proto3"
12
12
 
13
13
  pool = ::Google::Protobuf::DescriptorPool.generated_pool
14
14
  pool.add_serialized_file(descriptor_data)
@@ -18,6 +18,7 @@ module Glazed
18
18
  module V1
19
19
  Redaction = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.Redaction").msgclass
20
20
  Redaction::Mode = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.Redaction.Mode").enummodule
21
+ ExtraSecret = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.ExtraSecret").msgclass
21
22
  end
22
23
  end
23
24
  end
@@ -8,7 +8,7 @@ require 'buf/validate/validate_pb'
8
8
  require 'google/protobuf/any_pb'
9
9
 
10
10
 
11
- descriptor_data = "\n\x16glazed/v1/secret.proto\x12\tglazed.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x19google/protobuf/any.proto\"\xb8\x01\n\tSecretRef\x12\x16\n\x05value\x18\x01 \x01(\tH\x00R\x05value\x12\x33\n\x03\x65nv\x18\x02 \x01(\tB\x1f\xbaH\x1cr\x1a\x32\x18^[A-Za-z_][A-Za-z0-9_]*$H\x00R\x03\x65nv\x12\x1d\n\x04\x66ile\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x04\x66ile\x12.\n\x06plugin\x18\x04 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00R\x06pluginB\x0f\n\x06source\x12\x05\xbaH\x02\x08\x01\x42\x14\xea\x02\x11Glazed::Proto::V1b\x06proto3"
11
+ descriptor_data = "\n\x16glazed/v1/secret.proto\x12\tglazed.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x19google/protobuf/any.proto\"\x9b\x02\n\tSecretRef\x12\x16\n\x05value\x18\x01 \x01(\tH\x00R\x05value\x12\x33\n\x03\x65nv\x18\x02 \x01(\tB\x1f\xbaH\x1cr\x1a\x32\x18^[A-Za-z_][A-Za-z0-9_]*$H\x00R\x03\x65nv\x12\x1d\n\x04\x66ile\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x04\x66ile\x12.\n\x06plugin\x18\x04 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00R\x06plugin\x12+\n\x03ssm\x18\x05 \x01(\x0b\x32\x17.glazed.v1.SsmParameterH\x00R\x03ssm\x12\x34\n\x07\x63ommand\x18\x06 \x01(\x0b\x32\x18.glazed.v1.CommandSecretH\x00R\x07\x63ommandB\x0f\n\x06source\x12\x05\xbaH\x02\x08\x01\"h\n\x0cSsmParameter\x12\x1b\n\x04name\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x04name\x12\x16\n\x06region\x18\x02 \x01(\tR\x06region\x12#\n\rcache_seconds\x18\x03 \x01(\rR\x0c\x63\x61\x63heSeconds\"\x80\x01\n\rCommandSecret\x12\x10\n\x03run\x18\x01 \x01(\tR\x03run\x12\'\n\x0ftimeout_seconds\x18\x02 \x01(\rR\x0etimeoutSeconds\x12 \n\x04\x65xec\x18\x03 \x03(\tB\x0c\xbaH\t\x92\x01\x06\"\x04r\x02\x10\x01R\x04\x65xec:\x12\xbaH\x0f\"\r\n\x03run\n\x04\x65xec\x10\x01\x42\x14\xea\x02\x11Glazed::Proto::V1b\x06proto3"
12
12
 
13
13
  pool = ::Google::Protobuf::DescriptorPool.generated_pool
14
14
  pool.add_serialized_file(descriptor_data)
@@ -17,6 +17,8 @@ module Glazed
17
17
  module Proto
18
18
  module V1
19
19
  SecretRef = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.SecretRef").msgclass
20
+ SsmParameter = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.SsmParameter").msgclass
21
+ CommandSecret = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.CommandSecret").msgclass
20
22
  end
21
23
  end
22
24
  end
@@ -9,7 +9,7 @@ require 'google/protobuf/any_pb'
9
9
  require 'google/protobuf/timestamp_pb'
10
10
 
11
11
 
12
- descriptor_data = "\n\x15glazed/v1/state.proto\x12\tglazed.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x19google/protobuf/any.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\x99\x05\n\x0cNodeSchedule\x12#\n\x08workflow\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x08workflow\x12\x1b\n\x04node\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x04node\x12\x39\n\x06\x64ue_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x06\xbaH\x03\xc8\x01\x01R\x05\x64ueAt\x12\x1d\n\ndue_reason\x18\x04 \x01(\tR\tdueReason\x12S\n\x18signal_window_started_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x15signalWindowStartedAt\x12\x42\n\x0flast_started_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\rlastStartedAt\x12\x44\n\x10last_finished_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0elastFinishedAt\x12\x1f\n\x0blast_failed\x18\x08 \x01(\x08R\nlastFailed\x12\x31\n\x14\x63onsecutive_failures\x18\t \x01(\rR\x13\x63onsecutiveFailures\x12\x1d\n\nlast_error\x18\n \x01(\tR\tlastError\x12\x1f\n\x0blease_owner\x18\x0b \x01(\tR\nleaseOwner\x12;\n\x0blease_until\x18\x0c \x01(\x0b\x32\x1a.google.protobuf.TimestampR\nleaseUntil\x12=\n\x0cscheduled_at\x18\r \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0bscheduledAt\"\x8f\x01\n\x12StateBackendConfig\x12\x37\n\x06sqlite\x18\x01 \x01(\x0b\x32\x1d.glazed.v1.SqliteStateBackendH\x00R\x06sqlite\x12.\n\x06plugin\x18\x02 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00R\x06pluginB\x10\n\x07\x62\x61\x63kend\x12\x05\xbaH\x02\x08\x01\"\x8b\x02\n\x12SqliteStateBackend\x12\x12\n\x04path\x18\x01 \x01(\tR\x04path\x12\x18\n\x07storage\x18\x02 \x01(\tR\x07storage\x12\x10\n\x03key\x18\x03 \x01(\tR\x03key:\xb4\x01\xbaH\xb0\x01\x1a\xad\x01\n\x1dsqlite_state_backend.location\x12#set either path, or storage and key\x1ag(this.path != \'\') != (this.storage != \'\' && this.key != \'\') && (this.storage == \'\') == (this.key == \'\')B\x14\xea\x02\x11Glazed::Proto::V1b\x06proto3"
12
+ descriptor_data = "\n\x15glazed/v1/state.proto\x12\tglazed.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x19google/protobuf/any.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\x99\x05\n\x0cNodeSchedule\x12#\n\x08workflow\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x08workflow\x12\x1b\n\x04node\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x04node\x12\x39\n\x06\x64ue_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x06\xbaH\x03\xc8\x01\x01R\x05\x64ueAt\x12\x1d\n\ndue_reason\x18\x04 \x01(\tR\tdueReason\x12S\n\x18signal_window_started_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x15signalWindowStartedAt\x12\x42\n\x0flast_started_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\rlastStartedAt\x12\x44\n\x10last_finished_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0elastFinishedAt\x12\x1f\n\x0blast_failed\x18\x08 \x01(\x08R\nlastFailed\x12\x31\n\x14\x63onsecutive_failures\x18\t \x01(\rR\x13\x63onsecutiveFailures\x12\x1d\n\nlast_error\x18\n \x01(\tR\tlastError\x12\x1f\n\x0blease_owner\x18\x0b \x01(\tR\nleaseOwner\x12;\n\x0blease_until\x18\x0c \x01(\x0b\x32\x1a.google.protobuf.TimestampR\nleaseUntil\x12=\n\x0cscheduled_at\x18\r \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0bscheduledAt\"\xa7\x01\n\x06Wakeup\x12\x1d\n\x05owner\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05owner\x12;\n\x07wake_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x06\xbaH\x03\xc8\x01\x01R\x06wakeAt\x12\x41\n\nexpires_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x06\xbaH\x03\xc8\x01\x01R\texpiresAt\"\x8f\x01\n\x12StateBackendConfig\x12\x37\n\x06sqlite\x18\x01 \x01(\x0b\x32\x1d.glazed.v1.SqliteStateBackendH\x00R\x06sqlite\x12.\n\x06plugin\x18\x02 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00R\x06pluginB\x10\n\x07\x62\x61\x63kend\x12\x05\xbaH\x02\x08\x01\"\x8b\x02\n\x12SqliteStateBackend\x12\x12\n\x04path\x18\x01 \x01(\tR\x04path\x12\x18\n\x07storage\x18\x02 \x01(\tR\x07storage\x12\x10\n\x03key\x18\x03 \x01(\tR\x03key:\xb4\x01\xbaH\xb0\x01\x1a\xad\x01\n\x1dsqlite_state_backend.location\x12#set either path, or storage and key\x1ag(this.path != \'\') != (this.storage != \'\' && this.key != \'\') && (this.storage == \'\') == (this.key == \'\')B\x14\xea\x02\x11Glazed::Proto::V1b\x06proto3"
13
13
 
14
14
  pool = ::Google::Protobuf::DescriptorPool.generated_pool
15
15
  pool.add_serialized_file(descriptor_data)
@@ -18,6 +18,7 @@ module Glazed
18
18
  module Proto
19
19
  module V1
20
20
  NodeSchedule = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.NodeSchedule").msgclass
21
+ Wakeup = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.Wakeup").msgclass
21
22
  StateBackendConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.StateBackendConfig").msgclass
22
23
  SqliteStateBackend = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.SqliteStateBackend").msgclass
23
24
  end
@@ -9,7 +9,7 @@ require 'glazed/v1/secret_pb'
9
9
  require 'google/protobuf/any_pb'
10
10
 
11
11
 
12
- descriptor_data = "\n\x17glazed/v1/storage.proto\x12\tglazed.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x16glazed/v1/secret.proto\x1a\x19google/protobuf/any.proto\"\xcc\x02\n\rStorageConfig\x12)\n\x03git\x18\x01 \x01(\x0b\x32\x15.glazed.v1.GitStorageH\x00R\x03git\x12\x32\n\x06github\x18\x02 \x01(\x0b\x32\x18.glazed.v1.GithubStorageH\x00R\x06github\x12&\n\x02s3\x18\x03 \x01(\x0b\x32\x14.glazed.v1.S3StorageH\x00R\x02s3\x12>\n\nfilesystem\x18\x04 \x01(\x0b\x32\x1c.glazed.v1.FilesystemStorageH\x00R\nfilesystem\x12.\n\x06plugin\x18\x05 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00R\x06plugin\x12\x32\n\x06memory\x18\x06 \x01(\x0b\x32\x18.glazed.v1.MemoryStorageH\x00R\x06memoryB\x10\n\x07\x62\x61\x63kend\x12\x05\xbaH\x02\x08\x01\"0\n\x11\x46ilesystemStorage\x12\x1b\n\x04path\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x04path\"\x0f\n\rMemoryStorage\"\x9d\x01\n\nGitStorage\x12\x1b\n\x04path\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x04path\x12\x16\n\x06\x62ranch\x18\x02 \x01(\tR\x06\x62ranch\x12\x16\n\x06remote\x18\x03 \x01(\tR\x06remote\x12\x1f\n\x0b\x61uthor_name\x18\x04 \x01(\tR\nauthorName\x12!\n\x0c\x61uthor_email\x18\x05 \x01(\tR\x0b\x61uthorEmail\"\xb9\x02\n\rGithubStorage\x12H\n\nrepository\x18\x01 \x01(\tB(\xbaH%r#2!^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$R\nrepository\x12\x1f\n\x06\x62ranch\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06\x62ranch\x12\x1f\n\x0b\x62\x61se_branch\x18\x03 \x01(\tR\nbaseBranch\x12\x32\n\x05token\x18\x04 \x01(\x0b\x32\x14.glazed.v1.SecretRefB\x06\xbaH\x03\xc8\x01\x01R\x05token\x12$\n\x07\x61pi_url\x18\x05 \x01(\tB\x0b\xbaH\x08r\x03\x88\x01\x01\xd8\x01\x01R\x06\x61piUrl\x12\x1f\n\x0b\x61uthor_name\x18\x06 \x01(\tR\nauthorName\x12!\n\x0c\x61uthor_email\x18\x07 \x01(\tR\x0b\x61uthorEmail\"^\n\tS3Storage\x12!\n\x06\x62ucket\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x03\x18?R\x06\x62ucket\x12\x16\n\x06prefix\x18\x02 \x01(\tR\x06prefix\x12\x16\n\x06region\x18\x03 \x01(\tR\x06region\"C\n\x07Pointer\x12\x38\n\x08location\x18\x01 \x01(\x0b\x32\x14.google.protobuf.AnyB\x06\xbaH\x03\xc8\x01\x01R\x08location\"9\n\x0bGitLocation\x12\x12\n\x04path\x18\x01 \x01(\tR\x04path\x12\x16\n\x06\x63ommit\x18\x02 \x01(\tR\x06\x63ommit\"\\\n\x0eGithubLocation\x12\x1e\n\nrepository\x18\x01 \x01(\tR\nrepository\x12\x12\n\x04path\x18\x02 \x01(\tR\x04path\x12\x16\n\x06\x63ommit\x18\x03 \x01(\tR\x06\x63ommit\"U\n\nS3Location\x12\x16\n\x06\x62ucket\x18\x01 \x01(\tR\x06\x62ucket\x12\x10\n\x03key\x18\x02 \x01(\tR\x03key\x12\x1d\n\nversion_id\x18\x03 \x01(\tR\tversionId\"@\n\x12\x46ilesystemLocation\x12\x12\n\x04path\x18\x01 \x01(\tR\x04path\x12\x16\n\x06sha256\x18\x02 \x01(\tR\x06sha256\":\n\x0eMemoryLocation\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x16\n\x06sha256\x18\x02 \x01(\tR\x06sha256B\x14\xea\x02\x11Glazed::Proto::V1b\x06proto3"
12
+ descriptor_data = "\n\x17glazed/v1/storage.proto\x12\tglazed.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x16glazed/v1/secret.proto\x1a\x19google/protobuf/any.proto\"\xcc\x02\n\rStorageConfig\x12)\n\x03git\x18\x01 \x01(\x0b\x32\x15.glazed.v1.GitStorageH\x00R\x03git\x12\x32\n\x06github\x18\x02 \x01(\x0b\x32\x18.glazed.v1.GithubStorageH\x00R\x06github\x12&\n\x02s3\x18\x03 \x01(\x0b\x32\x14.glazed.v1.S3StorageH\x00R\x02s3\x12>\n\nfilesystem\x18\x04 \x01(\x0b\x32\x1c.glazed.v1.FilesystemStorageH\x00R\nfilesystem\x12.\n\x06plugin\x18\x05 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00R\x06plugin\x12\x32\n\x06memory\x18\x06 \x01(\x0b\x32\x18.glazed.v1.MemoryStorageH\x00R\x06memoryB\x10\n\x07\x62\x61\x63kend\x12\x05\xbaH\x02\x08\x01\"0\n\x11\x46ilesystemStorage\x12\x1b\n\x04path\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x04path\"\x0f\n\rMemoryStorage\"\xc1\x01\n\nGitStorage\x12\x1b\n\x04path\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x04path\x12\x16\n\x06\x62ranch\x18\x02 \x01(\tR\x06\x62ranch\x12\x16\n\x06remote\x18\x03 \x01(\tR\x06remote\x12\x1f\n\x0b\x61uthor_name\x18\x04 \x01(\tR\nauthorName\x12!\n\x0c\x61uthor_email\x18\x05 \x01(\tR\x0b\x61uthorEmail\x12\"\n\x0csubdirectory\x18\x06 \x01(\tR\x0csubdirectory\"\xdd\x02\n\rGithubStorage\x12H\n\nrepository\x18\x01 \x01(\tB(\xbaH%r#2!^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$R\nrepository\x12\x1f\n\x06\x62ranch\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06\x62ranch\x12\x1f\n\x0b\x62\x61se_branch\x18\x03 \x01(\tR\nbaseBranch\x12\x32\n\x05token\x18\x04 \x01(\x0b\x32\x14.glazed.v1.SecretRefB\x06\xbaH\x03\xc8\x01\x01R\x05token\x12$\n\x07\x61pi_url\x18\x05 \x01(\tB\x0b\xbaH\x08r\x03\x88\x01\x01\xd8\x01\x01R\x06\x61piUrl\x12\x1f\n\x0b\x61uthor_name\x18\x06 \x01(\tR\nauthorName\x12!\n\x0c\x61uthor_email\x18\x07 \x01(\tR\x0b\x61uthorEmail\x12\"\n\x0csubdirectory\x18\x08 \x01(\tR\x0csubdirectory\"^\n\tS3Storage\x12!\n\x06\x62ucket\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x03\x18?R\x06\x62ucket\x12\x16\n\x06prefix\x18\x02 \x01(\tR\x06prefix\x12\x16\n\x06region\x18\x03 \x01(\tR\x06region\"C\n\x07Pointer\x12\x38\n\x08location\x18\x01 \x01(\x0b\x32\x14.google.protobuf.AnyB\x06\xbaH\x03\xc8\x01\x01R\x08location\"9\n\x0bGitLocation\x12\x12\n\x04path\x18\x01 \x01(\tR\x04path\x12\x16\n\x06\x63ommit\x18\x02 \x01(\tR\x06\x63ommit\"\\\n\x0eGithubLocation\x12\x1e\n\nrepository\x18\x01 \x01(\tR\nrepository\x12\x12\n\x04path\x18\x02 \x01(\tR\x04path\x12\x16\n\x06\x63ommit\x18\x03 \x01(\tR\x06\x63ommit\"U\n\nS3Location\x12\x16\n\x06\x62ucket\x18\x01 \x01(\tR\x06\x62ucket\x12\x10\n\x03key\x18\x02 \x01(\tR\x03key\x12\x1d\n\nversion_id\x18\x03 \x01(\tR\tversionId\"@\n\x12\x46ilesystemLocation\x12\x12\n\x04path\x18\x01 \x01(\tR\x04path\x12\x16\n\x06sha256\x18\x02 \x01(\tR\x06sha256\":\n\x0eMemoryLocation\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x16\n\x06sha256\x18\x02 \x01(\tR\x06sha256B\x14\xea\x02\x11Glazed::Proto::V1b\x06proto3"
13
13
 
14
14
  pool = ::Google::Protobuf::DescriptorPool.generated_pool
15
15
  pool.add_serialized_file(descriptor_data)
@@ -9,7 +9,7 @@ require 'glazed/v1/redaction_pb'
9
9
  require 'google/protobuf/any_pb'
10
10
 
11
11
 
12
- descriptor_data = "\n\x18glazed/v1/workflow.proto\x12\tglazed.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x19glazed/v1/redaction.proto\x1a\x19google/protobuf/any.proto\"\x9d\x01\n\x08Workflow\x12/\n\x05steps\x18\x01 \x03(\x0b\x32\x0f.glazed.v1.StepB\x08\xbaH\x05\x92\x01\x02\x08\x01R\x05steps:`\xbaH]\x1a[\n\x1aworkflow.unique_step_names\x12\x19step names must be unique\x1a\"this.steps.map(s, s.name).unique()\"\xe3\x02\n\x04Step\x12\x1b\n\x04name\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x04name\x12,\n\x05\x66\x65tch\x18\x02 \x01(\x0b\x32\x14.glazed.v1.FetchStepH\x00R\x05\x66\x65tch\x12/\n\x06redact\x18\x03 \x01(\x0b\x32\x15.glazed.v1.RedactStepH\x00R\x06redact\x12\x32\n\x07publish\x18\x04 \x01(\x0b\x32\x16.glazed.v1.PublishStepH\x00R\x07publish\x12,\n\x05shell\x18\x05 \x01(\x0b\x32\x14.glazed.v1.ShellStepH\x00R\x05shell\x12<\n\x0b\x62\x61tch_shell\x18\x06 \x01(\x0b\x32\x19.glazed.v1.BatchShellStepH\x00R\nbatchShell\x12.\n\x06plugin\x18\x07 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00R\x06pluginB\x0f\n\x06\x61\x63tion\x12\x05\xbaH\x02\x08\x01\"x\n\tFetchStep\x12\x1f\n\x06output\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06output\x12!\n\x07storage\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x07storage\x12\'\n\x0ftimeout_seconds\x18\x03 \x01(\rR\x0etimeoutSeconds\"\xa3\x01\n\nRedactStep\x12\x1d\n\x05input\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05input\x12\x1f\n\x06output\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06output\x12!\n\x07storage\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x07storage\x12\x32\n\tredaction\x18\x04 \x01(\x0b\x32\x14.glazed.v1.RedactionR\tredaction\"g\n\x0bPublishStep\x12\x1d\n\x05input\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05input\x12!\n\x07storage\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x07storage\x12\x16\n\x06output\x18\x03 \x01(\tR\x06output\"\x86\x02\n\tShellStep\x12\x19\n\x03run\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x03run\x12\x14\n\x05input\x18\x02 \x01(\tR\x05input\x12\x16\n\x06output\x18\x03 \x01(\tR\x06output\x12\x18\n\x07storage\x18\x04 \x01(\tR\x07storage\x12\'\n\x0ftimeout_seconds\x18\x05 \x01(\rR\x0etimeoutSeconds:m\xbaHj\x1ah\n\x19shell_step.output_storage\x12\x1eoutput and storage go together\x1a+(this.output == \'\') == (this.storage == \'\')\"T\n\x0e\x42\x61tchShellStep\x12\x19\n\x03run\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x03run\x12\'\n\x0ftimeout_seconds\x18\x02 \x01(\rR\x0etimeoutSecondsB\x14\xea\x02\x11Glazed::Proto::V1b\x06proto3"
12
+ descriptor_data = "\n\x18glazed/v1/workflow.proto\x12\tglazed.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x19glazed/v1/redaction.proto\x1a\x19google/protobuf/any.proto\"\x9d\x01\n\x08Workflow\x12/\n\x05steps\x18\x01 \x03(\x0b\x32\x0f.glazed.v1.StepB\x08\xbaH\x05\x92\x01\x02\x08\x01R\x05steps:`\xbaH]\x1a[\n\x1aworkflow.unique_step_names\x12\x19step names must be unique\x1a\"this.steps.map(s, s.name).unique()\"\xef\x02\n\x04Step\x12\x1b\n\x04name\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x04name\x12,\n\x05\x66\x65tch\x18\x02 \x01(\x0b\x32\x14.glazed.v1.FetchStepH\x00R\x05\x66\x65tch\x12/\n\x06redact\x18\x03 \x01(\x0b\x32\x15.glazed.v1.RedactStepH\x00R\x06redact\x12\x32\n\x07publish\x18\x04 \x01(\x0b\x32\x16.glazed.v1.PublishStepH\x00R\x07publish\x12\x32\n\x07\x63ommand\x18\x05 \x01(\x0b\x32\x16.glazed.v1.CommandStepH\x00R\x07\x63ommand\x12\x42\n\rbatch_command\x18\x06 \x01(\x0b\x32\x1b.glazed.v1.BatchCommandStepH\x00R\x0c\x62\x61tchCommand\x12.\n\x06plugin\x18\x07 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00R\x06pluginB\x0f\n\x06\x61\x63tion\x12\x05\xbaH\x02\x08\x01\"x\n\tFetchStep\x12\x1f\n\x06output\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06output\x12!\n\x07storage\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x07storage\x12\'\n\x0ftimeout_seconds\x18\x03 \x01(\rR\x0etimeoutSeconds\"\xa3\x01\n\nRedactStep\x12\x1d\n\x05input\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05input\x12\x1f\n\x06output\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06output\x12!\n\x07storage\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x07storage\x12\x32\n\tredaction\x18\x04 \x01(\x0b\x32\x14.glazed.v1.RedactionR\tredaction\"g\n\x0bPublishStep\x12\x1d\n\x05input\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05input\x12!\n\x07storage\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x07storage\x12\x16\n\x06output\x18\x03 \x01(\tR\x06output\"\xb2\x02\n\x0b\x43ommandStep\x12\x10\n\x03run\x18\x01 \x01(\tR\x03run\x12\x14\n\x05input\x18\x02 \x01(\tR\x05input\x12\x16\n\x06output\x18\x03 \x01(\tR\x06output\x12\x18\n\x07storage\x18\x04 \x01(\tR\x07storage\x12\'\n\x0ftimeout_seconds\x18\x05 \x01(\rR\x0etimeoutSeconds\x12 \n\x04\x65xec\x18\x06 \x03(\tB\x0c\xbaH\t\x92\x01\x06\"\x04r\x02\x10\x01R\x04\x65xec:~\xbaH{\x1aj\n\x1b\x63ommand_step.output_storage\x12\x1eoutput and storage go together\x1a+(this.output == \'\') == (this.storage == \'\')\"\r\n\x03run\n\x04\x65xec\x10\x01\"\x83\x01\n\x10\x42\x61tchCommandStep\x12\x10\n\x03run\x18\x01 \x01(\tR\x03run\x12\'\n\x0ftimeout_seconds\x18\x02 \x01(\rR\x0etimeoutSeconds\x12 \n\x04\x65xec\x18\x03 \x03(\tB\x0c\xbaH\t\x92\x01\x06\"\x04r\x02\x10\x01R\x04\x65xec:\x12\xbaH\x0f\"\r\n\x03run\n\x04\x65xec\x10\x01\x42\x14\xea\x02\x11Glazed::Proto::V1b\x06proto3"
13
13
 
14
14
  pool = ::Google::Protobuf::DescriptorPool.generated_pool
15
15
  pool.add_serialized_file(descriptor_data)
@@ -22,8 +22,8 @@ module Glazed
22
22
  FetchStep = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.FetchStep").msgclass
23
23
  RedactStep = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.RedactStep").msgclass
24
24
  PublishStep = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.PublishStep").msgclass
25
- ShellStep = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.ShellStep").msgclass
26
- BatchShellStep = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.BatchShellStep").msgclass
25
+ CommandStep = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.CommandStep").msgclass
26
+ BatchCommandStep = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("glazed.v1.BatchCommandStep").msgclass
27
27
  end
28
28
  end
29
29
  end
@@ -5,5 +5,5 @@
5
5
 
6
6
  module Glazed
7
7
  # Gem version.
8
- VERSION = '0.1.0' #: String
8
+ VERSION = '0.2.0' #: String
9
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glazed
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sorah Fukumori
@@ -153,6 +153,9 @@ files:
153
153
  - lib/glazed/command/status.rb
154
154
  - lib/glazed/command/version.rb
155
155
  - lib/glazed/command_result.rb
156
+ - lib/glazed/config.rb
157
+ - lib/glazed/coordinator.rb
158
+ - lib/glazed/coordinator/task_runner.rb
156
159
  - lib/glazed/dialect.rb
157
160
  - lib/glazed/dialect/actions.rb
158
161
  - lib/glazed/dialect/communication_config.rb
@@ -178,6 +181,8 @@ files:
178
181
  - lib/glazed/runner.rb
179
182
  - lib/glazed/secret.rb
180
183
  - lib/glazed/secrets.rb
184
+ - lib/glazed/secrets/command.rb
185
+ - lib/glazed/secrets_resolver.rb
181
186
  - lib/glazed/shell_command.rb
182
187
  - lib/glazed/sources.rb
183
188
  - lib/glazed/sources/base.rb
@@ -190,11 +195,12 @@ files:
190
195
  - lib/glazed/step_context.rb
191
196
  - lib/glazed/steps.rb
192
197
  - lib/glazed/steps/base.rb
193
- - lib/glazed/steps/batch_shell.rb
198
+ - lib/glazed/steps/batch_command.rb
199
+ - lib/glazed/steps/command.rb
194
200
  - lib/glazed/steps/fetch.rb
195
201
  - lib/glazed/steps/publish.rb
196
202
  - lib/glazed/steps/redact.rb
197
- - lib/glazed/steps/shell.rb
203
+ - lib/glazed/storage_context.rb
198
204
  - lib/glazed/storages.rb
199
205
  - lib/glazed/storages/base.rb
200
206
  - lib/glazed/storages/filesystem.rb
@@ -206,6 +212,7 @@ files:
206
212
  - lib/glazed/transports/ssh.rb
207
213
  - lib/glazed/transports/telnet.rb
208
214
  - lib/glazed/v1/config_pb.rb
215
+ - lib/glazed/v1/coordinator_pb.rb
209
216
  - lib/glazed/v1/inventory_pb.rb
210
217
  - lib/glazed/v1/orchestrator_pb.rb
211
218
  - lib/glazed/v1/redaction_pb.rb