opentelemetry-api 0.3.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.yardopts +2 -2
- data/CHANGELOG.md +19 -0
- data/LICENSE +1 -1
- data/{OVERVIEW.md → README.md} +0 -0
- data/lib/opentelemetry.rb +11 -11
- data/lib/opentelemetry/baggage.rb +16 -0
- data/lib/opentelemetry/{correlation_context → baggage}/builder.rb +2 -2
- data/lib/opentelemetry/{correlation_context → baggage}/manager.rb +8 -3
- data/lib/opentelemetry/baggage/propagation.rb +57 -0
- data/lib/opentelemetry/baggage/propagation/context_keys.rb +27 -0
- data/lib/opentelemetry/{correlation_context/propagation/text_extractor.rb → baggage/propagation/text_map_extractor.rb} +14 -14
- data/lib/opentelemetry/baggage/propagation/text_map_injector.rb +55 -0
- data/lib/opentelemetry/context/propagation/composite_propagator.rb +8 -12
- data/lib/opentelemetry/instrumentation.rb +2 -2
- data/lib/opentelemetry/instrumentation/{adapter.rb → base.rb} +54 -53
- data/lib/opentelemetry/instrumentation/registry.rb +32 -32
- data/lib/opentelemetry/trace.rb +13 -16
- data/lib/opentelemetry/trace/propagation/trace_context.rb +11 -11
- data/lib/opentelemetry/trace/propagation/trace_context/{text_extractor.rb → text_map_extractor.rb} +5 -4
- data/lib/opentelemetry/trace/propagation/trace_context/{text_injector.rb → text_map_injector.rb} +4 -5
- data/lib/opentelemetry/trace/propagation/trace_context/trace_parent.rb +9 -5
- data/lib/opentelemetry/trace/span.rb +10 -18
- data/lib/opentelemetry/trace/span_context.rb +25 -1
- data/lib/opentelemetry/trace/status.rb +7 -65
- data/lib/opentelemetry/trace/tracer.rb +20 -28
- data/lib/opentelemetry/trace/util/http_to_status.rb +4 -23
- data/lib/opentelemetry/version.rb +1 -1
- metadata +15 -17
- data/lib/opentelemetry/correlation_context.rb +0 -16
- data/lib/opentelemetry/correlation_context/propagation.rb +0 -57
- data/lib/opentelemetry/correlation_context/propagation/context_keys.rb +0 -27
- data/lib/opentelemetry/correlation_context/propagation/text_injector.rb +0 -55
- data/lib/opentelemetry/internal.rb +0 -22
- data/lib/opentelemetry/trace/event.rb +0 -46
@@ -7,79 +7,79 @@
|
|
7
7
|
module OpenTelemetry
|
8
8
|
module Instrumentation
|
9
9
|
# The instrumentation Registry contains information about instrumentation
|
10
|
-
#
|
10
|
+
# available and facilitates discovery, installation and
|
11
11
|
# configuration. This functionality is primarily useful for SDK
|
12
12
|
# implementors.
|
13
13
|
class Registry
|
14
14
|
def initialize
|
15
15
|
@lock = Mutex.new
|
16
|
-
@
|
16
|
+
@instrumentation = []
|
17
17
|
end
|
18
18
|
|
19
19
|
# @api private
|
20
|
-
def register(
|
20
|
+
def register(instrumentation)
|
21
21
|
@lock.synchronize do
|
22
|
-
@
|
22
|
+
@instrumentation << instrumentation
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
-
# Lookup an
|
26
|
+
# Lookup an instrumentation definition by name. Returns nil if +instrumentation_name+
|
27
27
|
# is not found.
|
28
28
|
#
|
29
|
-
# @param [String]
|
30
|
-
# @return [
|
31
|
-
def lookup(
|
29
|
+
# @param [String] instrumentation_name A stringified class name for an instrumentation
|
30
|
+
# @return [Instrumentation]
|
31
|
+
def lookup(instrumentation_name)
|
32
32
|
@lock.synchronize do
|
33
|
-
|
33
|
+
find_instrumentation(instrumentation_name)
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
-
# Install the specified
|
37
|
+
# Install the specified instrumentation with optionally specified configuration.
|
38
38
|
#
|
39
|
-
# @param [Array<String>]
|
39
|
+
# @param [Array<String>] instrumentation_names An array of instrumentation names to
|
40
40
|
# install
|
41
|
-
# @param [optional Hash<String, Hash>]
|
42
|
-
#
|
43
|
-
# passed for as many or as few
|
44
|
-
def install(
|
41
|
+
# @param [optional Hash<String, Hash>] instrumentation_config_map A map of
|
42
|
+
# instrumentation_name to config. This argument is optional and config can be
|
43
|
+
# passed for as many or as few instrumentations as desired.
|
44
|
+
def install(instrumentation_names, instrumentation_config_map = {})
|
45
45
|
@lock.synchronize do
|
46
|
-
|
47
|
-
|
48
|
-
OpenTelemetry.logger.warn "Could not install #{
|
46
|
+
instrumentation_names.each do |instrumentation_name|
|
47
|
+
instrumentation = find_instrumentation(instrumentation_name)
|
48
|
+
OpenTelemetry.logger.warn "Could not install #{instrumentation_name} because it was not found" unless instrumentation
|
49
49
|
|
50
|
-
|
50
|
+
install_instrumentation(instrumentation, instrumentation_config_map[instrumentation.name])
|
51
51
|
end
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
55
55
|
# Install all instrumentation available and installable in this process.
|
56
56
|
#
|
57
|
-
# @param [optional Hash<String, Hash>]
|
58
|
-
#
|
59
|
-
# passed for as many or as few
|
60
|
-
def install_all(
|
57
|
+
# @param [optional Hash<String, Hash>] instrumentation_config_map A map of
|
58
|
+
# instrumentation_name to config. This argument is optional and config can be
|
59
|
+
# passed for as many or as few instrumentations as desired.
|
60
|
+
def install_all(instrumentation_config_map = {})
|
61
61
|
@lock.synchronize do
|
62
|
-
@
|
63
|
-
|
62
|
+
@instrumentation.map(&:instance).each do |instrumentation|
|
63
|
+
install_instrumentation(instrumentation, instrumentation_config_map[instrumentation.name])
|
64
64
|
end
|
65
65
|
end
|
66
66
|
end
|
67
67
|
|
68
68
|
private
|
69
69
|
|
70
|
-
def
|
71
|
-
@
|
70
|
+
def find_instrumentation(instrumentation_name)
|
71
|
+
@instrumentation.detect { |a| a.instance.name == instrumentation_name }
|
72
72
|
&.instance
|
73
73
|
end
|
74
74
|
|
75
|
-
def
|
76
|
-
if
|
77
|
-
OpenTelemetry.logger.info "
|
75
|
+
def install_instrumentation(instrumentation, config)
|
76
|
+
if instrumentation.install(config)
|
77
|
+
OpenTelemetry.logger.info "Instrumentation: #{instrumentation.name} was successfully installed"
|
78
78
|
else
|
79
|
-
OpenTelemetry.logger.warn "
|
79
|
+
OpenTelemetry.logger.warn "Instrumentation: #{instrumentation.name} failed to install"
|
80
80
|
end
|
81
81
|
rescue => e # rubocop:disable Style/RescueStandardError
|
82
|
-
OpenTelemetry.logger.warn "
|
82
|
+
OpenTelemetry.logger.warn "Instrumentation: #{instrumentation.name} unhandled exception" \
|
83
83
|
"during install #{e}: #{e.backtrace}"
|
84
84
|
end
|
85
85
|
end
|
data/lib/opentelemetry/trace.rb
CHANGED
@@ -9,45 +9,42 @@ module OpenTelemetry
|
|
9
9
|
# single logical operation, consolidated across various components of an
|
10
10
|
# application.
|
11
11
|
module Trace
|
12
|
-
# An invalid trace identifier, a 16-byte
|
13
|
-
|
14
|
-
INVALID_TRACE_ID = ('0' * 32).freeze
|
12
|
+
# An invalid trace identifier, a 16-byte string with all zero bytes.
|
13
|
+
INVALID_TRACE_ID = ("\0" * 16).b
|
15
14
|
|
16
|
-
# An invalid span identifier, an 8-byte
|
17
|
-
|
18
|
-
INVALID_SPAN_ID = ('0' * 16).freeze
|
15
|
+
# An invalid span identifier, an 8-byte string with all zero bytes.
|
16
|
+
INVALID_SPAN_ID = ("\0" * 8).b
|
19
17
|
|
20
|
-
# Generates a valid trace identifier, a 16-byte
|
21
|
-
# non-zero byte
|
18
|
+
# Generates a valid trace identifier, a 16-byte string with at least one
|
19
|
+
# non-zero byte.
|
22
20
|
#
|
23
|
-
# @return [String] a
|
21
|
+
# @return [String] a valid trace ID.
|
24
22
|
def self.generate_trace_id
|
25
23
|
loop do
|
26
|
-
id = Random::DEFAULT.bytes(16)
|
24
|
+
id = Random::DEFAULT.bytes(16)
|
27
25
|
return id unless id == INVALID_TRACE_ID
|
28
26
|
end
|
29
27
|
end
|
30
28
|
|
31
|
-
# Generates a valid span identifier, an 8-byte
|
32
|
-
# non-zero byte
|
29
|
+
# Generates a valid span identifier, an 8-byte string with at least one
|
30
|
+
# non-zero byte.
|
33
31
|
#
|
34
|
-
# @return [String] a
|
32
|
+
# @return [String] a valid span ID.
|
35
33
|
def self.generate_span_id
|
36
34
|
loop do
|
37
|
-
id = Random::DEFAULT.bytes(8)
|
35
|
+
id = Random::DEFAULT.bytes(8)
|
38
36
|
return id unless id == INVALID_SPAN_ID
|
39
37
|
end
|
40
38
|
end
|
41
39
|
end
|
42
40
|
end
|
43
41
|
|
44
|
-
require 'opentelemetry/trace/event'
|
45
42
|
require 'opentelemetry/trace/link'
|
46
|
-
require 'opentelemetry/trace/propagation'
|
47
43
|
require 'opentelemetry/trace/trace_flags'
|
48
44
|
require 'opentelemetry/trace/span_context'
|
49
45
|
require 'opentelemetry/trace/span_kind'
|
50
46
|
require 'opentelemetry/trace/span'
|
51
47
|
require 'opentelemetry/trace/status'
|
48
|
+
require 'opentelemetry/trace/propagation'
|
52
49
|
require 'opentelemetry/trace/tracer'
|
53
50
|
require 'opentelemetry/trace/tracer_provider'
|
@@ -5,8 +5,8 @@
|
|
5
5
|
# SPDX-License-Identifier: Apache-2.0
|
6
6
|
|
7
7
|
require 'opentelemetry/trace/propagation/trace_context/trace_parent'
|
8
|
-
require 'opentelemetry/trace/propagation/trace_context/
|
9
|
-
require 'opentelemetry/trace/propagation/trace_context/
|
8
|
+
require 'opentelemetry/trace/propagation/trace_context/text_map_extractor'
|
9
|
+
require 'opentelemetry/trace/propagation/trace_context/text_map_injector'
|
10
10
|
|
11
11
|
module OpenTelemetry
|
12
12
|
module Trace
|
@@ -16,30 +16,30 @@ module OpenTelemetry
|
|
16
16
|
module TraceContext
|
17
17
|
extend self
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
RACK_EXTRACTOR =
|
19
|
+
TEXT_MAP_EXTRACTOR = TextMapExtractor.new
|
20
|
+
TEXT_MAP_INJECTOR = TextMapInjector.new
|
21
|
+
RACK_EXTRACTOR = TextMapExtractor.new(
|
22
22
|
traceparent_key: 'HTTP_TRACEPARENT',
|
23
23
|
tracestate_key: 'HTTP_TRACESTATE'
|
24
24
|
)
|
25
|
-
RACK_INJECTOR =
|
25
|
+
RACK_INJECTOR = TextMapInjector.new(
|
26
26
|
traceparent_key: 'HTTP_TRACEPARENT',
|
27
27
|
tracestate_key: 'HTTP_TRACESTATE'
|
28
28
|
)
|
29
29
|
|
30
|
-
private_constant :
|
30
|
+
private_constant :TEXT_MAP_INJECTOR, :TEXT_MAP_EXTRACTOR,
|
31
31
|
:RACK_INJECTOR, :RACK_EXTRACTOR
|
32
32
|
|
33
33
|
# Returns an extractor that extracts context using the W3C Trace Context
|
34
34
|
# format
|
35
|
-
def
|
36
|
-
|
35
|
+
def text_map_extractor
|
36
|
+
TEXT_MAP_EXTRACTOR
|
37
37
|
end
|
38
38
|
|
39
39
|
# Returns an injector that injects context using the W3C Trace Context
|
40
40
|
# format
|
41
|
-
def
|
42
|
-
|
41
|
+
def text_map_injector
|
42
|
+
TEXT_MAP_INJECTOR
|
43
43
|
end
|
44
44
|
|
45
45
|
# Returns an extractor that extracts context using the W3C Trace Context
|
data/lib/opentelemetry/trace/propagation/trace_context/{text_extractor.rb → text_map_extractor.rb}
RENAMED
@@ -8,15 +8,15 @@ module OpenTelemetry
|
|
8
8
|
module Propagation
|
9
9
|
module TraceContext
|
10
10
|
# Extracts context from carriers in the W3C Trace Context format
|
11
|
-
class
|
11
|
+
class TextMapExtractor
|
12
12
|
include Context::Propagation::DefaultGetter
|
13
13
|
|
14
|
-
# Returns a new
|
14
|
+
# Returns a new TextMapExtractor that extracts context using the
|
15
15
|
# specified header keys
|
16
16
|
#
|
17
17
|
# @param [String] traceparent_key The traceparent header key used in the carrier
|
18
18
|
# @param [String] tracestate_key The tracestate header key used in the carrier
|
19
|
-
# @return [
|
19
|
+
# @return [TextMapExtractor]
|
20
20
|
def initialize(traceparent_key: 'traceparent',
|
21
21
|
tracestate_key: 'tracestate')
|
22
22
|
@traceparent_key = traceparent_key
|
@@ -47,7 +47,8 @@ module OpenTelemetry
|
|
47
47
|
trace_flags: tp.flags,
|
48
48
|
tracestate: tracestate,
|
49
49
|
remote: true)
|
50
|
-
|
50
|
+
span = Trace::Span.new(span_context: span_context)
|
51
|
+
context.set_value(ContextKeys.current_span_key, span)
|
51
52
|
rescue OpenTelemetry::Error
|
52
53
|
context
|
53
54
|
end
|
data/lib/opentelemetry/trace/propagation/trace_context/{text_injector.rb → text_map_injector.rb}
RENAMED
@@ -8,15 +8,15 @@ module OpenTelemetry
|
|
8
8
|
module Propagation
|
9
9
|
module TraceContext
|
10
10
|
# Injects context into carriers using the W3C Trace Context format
|
11
|
-
class
|
11
|
+
class TextMapInjector
|
12
12
|
include Context::Propagation::DefaultSetter
|
13
13
|
|
14
|
-
# Returns a new
|
14
|
+
# Returns a new TextMapInjector that injects context using the
|
15
15
|
# specified header keys
|
16
16
|
#
|
17
17
|
# @param [String] traceparent_key The traceparent header key used in the carrier
|
18
18
|
# @param [String] tracestate_key The tracestate header key used in the carrier
|
19
|
-
# @return [
|
19
|
+
# @return [TextMapInjector]
|
20
20
|
def initialize(traceparent_key: 'traceparent',
|
21
21
|
tracestate_key: 'tracestate')
|
22
22
|
@traceparent_key = traceparent_key
|
@@ -45,8 +45,7 @@ module OpenTelemetry
|
|
45
45
|
private
|
46
46
|
|
47
47
|
def span_context_from(context)
|
48
|
-
context[ContextKeys.current_span_key]&.context
|
49
|
-
context[ContextKeys.extracted_span_context_key]
|
48
|
+
context[ContextKeys.current_span_key]&.context
|
50
49
|
end
|
51
50
|
end
|
52
51
|
end
|
@@ -25,6 +25,10 @@ module OpenTelemetry
|
|
25
25
|
REGEXP = /^(?<version>[A-Fa-f0-9]{2})-(?<trace_id>[A-Fa-f0-9]{32})-(?<span_id>[A-Fa-f0-9]{16})-(?<flags>[A-Fa-f0-9]{2})(?<ignored>-.*)?$/.freeze
|
26
26
|
private_constant :REGEXP
|
27
27
|
|
28
|
+
INVALID_TRACE_ID = OpenTelemetry::Trace::SpanContext::INVALID.hex_trace_id
|
29
|
+
INVALID_SPAN_ID = OpenTelemetry::Trace::SpanContext::INVALID.hex_span_id
|
30
|
+
private_constant :INVALID_TRACE_ID, :INVALID_SPAN_ID
|
31
|
+
|
28
32
|
class << self
|
29
33
|
# Creates a new {TraceParent} from a supplied {Trace::SpanContext}
|
30
34
|
# @param [SpanContext] ctx The context
|
@@ -71,17 +75,17 @@ module OpenTelemetry
|
|
71
75
|
end
|
72
76
|
|
73
77
|
def parse_trace_id(string)
|
74
|
-
raise InvalidTraceIDError, string if string ==
|
78
|
+
raise InvalidTraceIDError, string if string == INVALID_TRACE_ID
|
75
79
|
|
76
80
|
string.downcase!
|
77
|
-
string
|
81
|
+
Array(string).pack('H*')
|
78
82
|
end
|
79
83
|
|
80
84
|
def parse_span_id(string)
|
81
|
-
raise InvalidSpanIDError, string if string ==
|
85
|
+
raise InvalidSpanIDError, string if string == INVALID_SPAN_ID
|
82
86
|
|
83
87
|
string.downcase!
|
84
|
-
string
|
88
|
+
Array(string).pack('H*')
|
85
89
|
end
|
86
90
|
|
87
91
|
def parse_flags(string)
|
@@ -102,7 +106,7 @@ module OpenTelemetry
|
|
102
106
|
# converts this object into a string according to the w3c spec
|
103
107
|
# @return [String] the serialized trace_parent
|
104
108
|
def to_s
|
105
|
-
"00-#{trace_id}-#{span_id}-#{flag_string}"
|
109
|
+
"00-#{trace_id.unpack1('H*')}-#{span_id.unpack1('H*')}-#{flag_string}"
|
106
110
|
end
|
107
111
|
|
108
112
|
private
|
@@ -50,7 +50,7 @@ module OpenTelemetry
|
|
50
50
|
# meanings.
|
51
51
|
#
|
52
52
|
# @param [String] key
|
53
|
-
# @param [String, Boolean, Numeric] value
|
53
|
+
# @param [String, Boolean, Numeric, Array<String, Numeric, Boolean>] value
|
54
54
|
#
|
55
55
|
# @return [self] returns itself
|
56
56
|
def set_attribute(key, value)
|
@@ -58,44 +58,36 @@ module OpenTelemetry
|
|
58
58
|
end
|
59
59
|
alias []= set_attribute
|
60
60
|
|
61
|
-
# Add an
|
62
|
-
# Lazy evaluation is useful when the event attributes are expensive to
|
63
|
-
# build and where the cost can be avoided for an unsampled {Span}.
|
61
|
+
# Add an event to a {Span}.
|
64
62
|
#
|
65
|
-
#
|
63
|
+
# Example:
|
66
64
|
#
|
67
|
-
# span.add_event(
|
68
|
-
#
|
69
|
-
# Lazy example:
|
70
|
-
#
|
71
|
-
# span.add_event { tracer.create_event(name: 'event', attributes: {'eager' => false}) }
|
65
|
+
# span.add_event('event', attributes: {'eager' => true})
|
72
66
|
#
|
73
67
|
# Note that the OpenTelemetry project
|
74
68
|
# {https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/data-semantic-conventions.md
|
75
69
|
# documents} certain "standard event names and keys" which have
|
76
70
|
# prescribed semantic meanings.
|
77
71
|
#
|
78
|
-
# @param [
|
79
|
-
# required if a block is not given.
|
72
|
+
# @param [String] name Name of the event.
|
80
73
|
# @param [optional Hash{String => String, Numeric, Boolean, Array<String, Numeric, Boolean>}]
|
81
74
|
# attributes One or more key:value pairs, where the keys must be
|
82
75
|
# strings and the values may be (array of) string, boolean or numeric
|
83
|
-
# type.
|
76
|
+
# type.
|
84
77
|
# @param [optional Time] timestamp Optional timestamp for the event.
|
85
|
-
# This argument should only be used when passing in a name.
|
86
78
|
#
|
87
79
|
# @return [self] returns itself
|
88
|
-
def add_event(name
|
80
|
+
def add_event(name, attributes: nil, timestamp: nil)
|
89
81
|
self
|
90
82
|
end
|
91
83
|
|
92
|
-
# Record an
|
84
|
+
# Record an exception during the execution of this span. Multiple exceptions
|
93
85
|
# can be recorded on a span.
|
94
86
|
#
|
95
|
-
# @param [Exception]
|
87
|
+
# @param [Exception] exception The exception to recorded
|
96
88
|
#
|
97
89
|
# @return [void]
|
98
|
-
def
|
90
|
+
def record_exception(exception); end
|
99
91
|
|
100
92
|
# Sets the Status to the Span
|
101
93
|
#
|
@@ -11,7 +11,7 @@ module OpenTelemetry
|
|
11
11
|
# {TraceFlags}, a system-specific tracestate, and a boolean indicating that the SpanContext was
|
12
12
|
# extracted from the wire.
|
13
13
|
class SpanContext
|
14
|
-
attr_reader :
|
14
|
+
attr_reader :trace_flags, :tracestate
|
15
15
|
|
16
16
|
# Returns a new {SpanContext}.
|
17
17
|
#
|
@@ -35,6 +35,30 @@ module OpenTelemetry
|
|
35
35
|
@remote = remote
|
36
36
|
end
|
37
37
|
|
38
|
+
# Returns the lowercase [hex encoded](https://tools.ietf.org/html/rfc4648#section-8) trace ID.
|
39
|
+
#
|
40
|
+
# @return [String] A 32-hex-character lowercase string.
|
41
|
+
def hex_trace_id
|
42
|
+
@trace_id.unpack1('H*')
|
43
|
+
end
|
44
|
+
|
45
|
+
# Returns the lowercase [hex encoded](https://tools.ietf.org/html/rfc4648#section-8) span ID.
|
46
|
+
#
|
47
|
+
# @return [String] A 16-hex-character lowercase string.
|
48
|
+
def hex_span_id
|
49
|
+
@span_id.unpack1('H*')
|
50
|
+
end
|
51
|
+
|
52
|
+
# Returns the binary representation of the trace ID.
|
53
|
+
#
|
54
|
+
# @return [String] A 16-byte binary string.
|
55
|
+
attr_reader :trace_id
|
56
|
+
|
57
|
+
# Returns the binary representation of the span ID.
|
58
|
+
#
|
59
|
+
# @return [String] An 8-byte binary string.
|
60
|
+
attr_reader :span_id
|
61
|
+
|
38
62
|
# Returns true if the {SpanContext} has a non-zero trace ID and non-zero span ID.
|
39
63
|
#
|
40
64
|
# @return [Boolean]
|
@@ -26,7 +26,7 @@ module OpenTelemetry
|
|
26
26
|
|
27
27
|
# Initialize a Status.
|
28
28
|
#
|
29
|
-
# @param [Integer] canonical_code One of the
|
29
|
+
# @param [Integer] canonical_code One of the canonical status codes below
|
30
30
|
# @param [String] description
|
31
31
|
def initialize(canonical_code, description: '')
|
32
32
|
@canonical_code = canonical_code
|
@@ -37,78 +37,20 @@ module OpenTelemetry
|
|
37
37
|
#
|
38
38
|
# @return [Boolean]
|
39
39
|
def ok?
|
40
|
-
@canonical_code
|
40
|
+
@canonical_code != ERROR
|
41
41
|
end
|
42
42
|
|
43
43
|
# The following represents the canonical set of status codes of a
|
44
|
-
# finished {Span}
|
45
|
-
# https://github.com/grpc/grpc/blob/master/doc/statuscodes.md
|
44
|
+
# finished {Span}
|
46
45
|
|
47
46
|
# The operation completed successfully.
|
48
47
|
OK = 0
|
49
48
|
|
50
|
-
# The
|
51
|
-
|
49
|
+
# The default status.
|
50
|
+
UNSET = 1
|
52
51
|
|
53
|
-
# An
|
54
|
-
|
55
|
-
|
56
|
-
# Client specified an invalid argument. Note that this differs from
|
57
|
-
# {FAILED_PRECONDITION}. {INVALID_ARGUMENT} indicates arguments that are
|
58
|
-
# problematic regardless of the state of the system.
|
59
|
-
INVALID_ARGUMENT = 3
|
60
|
-
|
61
|
-
# Deadline expired before operation could complete. For operations that
|
62
|
-
# change the state of the system, this error may be returned even if the
|
63
|
-
# operation has completed successfully.
|
64
|
-
DEADLINE_EXCEEDED = 4
|
65
|
-
|
66
|
-
# Some requested entity (e.g., file or directory) was not found.
|
67
|
-
NOT_FOUND = 5
|
68
|
-
|
69
|
-
# Some entity that we attempted to create (e.g., file or directory)
|
70
|
-
# already exists.
|
71
|
-
ALREADY_EXISTS = 6
|
72
|
-
|
73
|
-
# The caller does not have permission to execute the specified operation.
|
74
|
-
# {PERMISSION_DENIED} must not be used if the caller cannot be identified
|
75
|
-
# (use {UNAUTHENTICATED} instead for those errors).
|
76
|
-
PERMISSION_DENIED = 7
|
77
|
-
|
78
|
-
# Some resource has been exhausted, perhaps a per-user quota, or perhaps
|
79
|
-
# the entire file system is out of space.
|
80
|
-
RESOURCE_EXHAUSTED = 8
|
81
|
-
|
82
|
-
# Operation was rejected because the system is not in a state required
|
83
|
-
# for the operation's execution.
|
84
|
-
FAILED_PRECONDITION = 9
|
85
|
-
|
86
|
-
# The operation was aborted, typically due to a concurrency issue like
|
87
|
-
# sequencer check failures, transaction aborts, etc.
|
88
|
-
ABORTED = 10
|
89
|
-
|
90
|
-
# Operation was attempted past the valid range. E.g., seeking or reading
|
91
|
-
# past end of file. Unlike {INVALID_ARGUMENT}, this error indicates a
|
92
|
-
# problem that may be fixed if the system state changes.
|
93
|
-
OUT_OF_RANGE = 11
|
94
|
-
|
95
|
-
# Operation is not implemented or not supported/enabled in this service.
|
96
|
-
UNIMPLEMENTED = 12
|
97
|
-
|
98
|
-
# Internal errors. Means some invariants expected by underlying system
|
99
|
-
# has been broken.
|
100
|
-
INTERNAL_ERROR = 13
|
101
|
-
|
102
|
-
# The service is currently unavailable. This is a most likely a transient
|
103
|
-
# condition and may be corrected by retrying with a backoff.
|
104
|
-
UNAVAILABLE = 14
|
105
|
-
|
106
|
-
# Unrecoverable data loss or corruption.
|
107
|
-
DATA_LOSS = 15
|
108
|
-
|
109
|
-
# The request does not have valid authentication credentials for the
|
110
|
-
# operation.
|
111
|
-
UNAUTHENTICATED = 16
|
52
|
+
# An error.
|
53
|
+
ERROR = 2
|
112
54
|
end
|
113
55
|
end
|
114
56
|
end
|