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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +19 -0
- data/lib/glazed/collector.rb +10 -6
- data/lib/glazed/command/base.rb +3 -18
- data/lib/glazed/command/orchestrate.rb +1 -1
- data/lib/glazed/command/run.rb +1 -1
- data/lib/glazed/command/send_signal.rb +21 -13
- data/lib/glazed/config.rb +50 -0
- data/lib/glazed/coordinator/task_runner.rb +189 -0
- data/lib/glazed/coordinator.rb +252 -0
- data/lib/glazed/dialect/run.rb +9 -3
- data/lib/glazed/dialect/sensitive_pattern.rb +7 -2
- data/lib/glazed/orchestrator/policy.rb +28 -0
- data/lib/glazed/orchestrator.rb +15 -65
- data/lib/glazed/proto.rb +1 -0
- data/lib/glazed/redactor.rb +65 -26
- data/lib/glazed/secret.rb +12 -37
- data/lib/glazed/secrets/command.rb +66 -0
- data/lib/glazed/secrets.rb +27 -5
- data/lib/glazed/secrets_resolver.rb +85 -0
- data/lib/glazed/shell_command.rb +41 -6
- data/lib/glazed/sources/command.rb +11 -8
- data/lib/glazed/state_backends/base.rb +11 -1
- data/lib/glazed/state_backends/sqlite.rb +38 -1
- data/lib/glazed/step_context.rb +26 -8
- data/lib/glazed/steps/{batch_shell.rb → batch_command.rb} +15 -15
- data/lib/glazed/steps/{shell.rb → command.rb} +21 -18
- data/lib/glazed/steps/fetch.rb +1 -1
- data/lib/glazed/steps/redact.rb +3 -1
- data/lib/glazed/storage_context.rb +22 -0
- data/lib/glazed/storages/base.rb +3 -2
- data/lib/glazed/storages/filesystem.rb +3 -2
- data/lib/glazed/storages/git.rb +25 -8
- data/lib/glazed/storages/github.rb +22 -8
- data/lib/glazed/storages/memory.rb +3 -2
- data/lib/glazed/storages.rb +6 -4
- data/lib/glazed/transports/base.rb +14 -2
- data/lib/glazed/transports/ssh.rb +55 -2
- data/lib/glazed/transports/telnet.rb +4 -2
- data/lib/glazed/v1/config_pb.rb +2 -1
- data/lib/glazed/v1/coordinator_pb.rb +34 -0
- data/lib/glazed/v1/inventory_pb.rb +5 -1
- data/lib/glazed/v1/orchestrator_pb.rb +1 -1
- data/lib/glazed/v1/redaction_pb.rb +2 -1
- data/lib/glazed/v1/secret_pb.rb +3 -1
- data/lib/glazed/v1/state_pb.rb +2 -1
- data/lib/glazed/v1/storage_pb.rb +1 -1
- data/lib/glazed/v1/workflow_pb.rb +3 -3
- data/lib/glazed/version.rb +1 -1
- 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
|
-
|
|
28
|
-
|
|
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
|
-
|
|
26
|
-
|
|
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
|
data/lib/glazed/v1/config_pb.rb
CHANGED
|
@@ -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\"\
|
|
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\"\
|
|
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\"\
|
|
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\"\
|
|
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
|
data/lib/glazed/v1/secret_pb.rb
CHANGED
|
@@ -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\"\
|
|
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
|
data/lib/glazed/v1/state_pb.rb
CHANGED
|
@@ -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
|
data/lib/glazed/v1/storage_pb.rb
CHANGED
|
@@ -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\"\
|
|
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()\"\
|
|
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
|
-
|
|
26
|
-
|
|
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
|
data/lib/glazed/version.rb
CHANGED
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.
|
|
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/
|
|
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/
|
|
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
|