flagger 2.0.7 → 2.0.8
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/lib/flagger/cloud.rb +14 -10
- data/lib/flagger/models.rb +9 -7
- data/lib/flagger/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0fa76b1a7db4fbc5d5cb1ea633ad9b80c1be88a96a72981236f9269761df48b2
|
4
|
+
data.tar.gz: e1db140f820c1d686933012ccf025be0035c2dbeb11b2f605c8e3cb3624ded27
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c03669a986cc241b36de63f1e329acf53843cda76ee946097cf4a593145da5b7511f60c4420e5eb34d9e19e04f3a637c96a46f00838fb655180b055aeb4e777f
|
7
|
+
data.tar.gz: ed7633985b7c68c9b83fed40772b759bd9c149ece3c3a7cfdaca1748296990a143befc8ce6a947e98014a2f8a065a8501c69e6344a9c72f9f23c96ae2a4016aa
|
data/lib/flagger/cloud.rb
CHANGED
@@ -351,7 +351,7 @@ module FlaggerEnvironments
|
|
351
351
|
end
|
352
352
|
return_value = flag&.treatment(entity)
|
353
353
|
|
354
|
-
if
|
354
|
+
if return_value.nil? then
|
355
355
|
return return_value
|
356
356
|
end
|
357
357
|
|
@@ -361,10 +361,11 @@ module FlaggerEnvironments
|
|
361
361
|
id: entity.id,
|
362
362
|
treatment: return_value[:treatment].codename,
|
363
363
|
method_called: 'get_treatment',
|
364
|
-
eligible: return_value[:eligible]
|
364
|
+
eligible: return_value[:eligible],
|
365
|
+
time_exposed: Time.now.iso8601
|
365
366
|
}
|
366
367
|
|
367
|
-
return_value = return_value[:treatment].codename
|
368
|
+
return_value = return_value[:treatment].is_ghost ? flag&.off_treatment&.codename : return_value[:treatment].codename
|
368
369
|
|
369
370
|
save_exposure(exposure)
|
370
371
|
|
@@ -386,7 +387,7 @@ module FlaggerEnvironments
|
|
386
387
|
end
|
387
388
|
return_value = flag&.payload(entity)
|
388
389
|
|
389
|
-
if
|
390
|
+
if return_value.nil? then
|
390
391
|
return return_value
|
391
392
|
end
|
392
393
|
|
@@ -396,10 +397,11 @@ module FlaggerEnvironments
|
|
396
397
|
id: entity.id,
|
397
398
|
treatment: return_value[:treatment].codename,
|
398
399
|
method_called: 'get_payload',
|
399
|
-
eligible: return_value[:eligible]
|
400
|
+
eligible: return_value[:eligible],
|
401
|
+
time_exposed: Time.now.iso8601
|
400
402
|
}
|
401
403
|
|
402
|
-
return_value = return_value[:treatment].payload
|
404
|
+
return_value = return_value[:treatment].is_ghost ? flag&.off_treatment&.payload : return_value[:treatment].payload
|
403
405
|
|
404
406
|
save_exposure(exposure)
|
405
407
|
|
@@ -420,7 +422,7 @@ module FlaggerEnvironments
|
|
420
422
|
end
|
421
423
|
return_value = flag&.eligible?(entity)
|
422
424
|
|
423
|
-
if
|
425
|
+
if return_value.nil? then
|
424
426
|
return return_value
|
425
427
|
end
|
426
428
|
|
@@ -430,7 +432,8 @@ module FlaggerEnvironments
|
|
430
432
|
id: entity.id,
|
431
433
|
treatment: return_value[:treatment].codename,
|
432
434
|
method_called: 'is_eligible',
|
433
|
-
eligible: return_value[:eligible]
|
435
|
+
eligible: return_value[:eligible],
|
436
|
+
time_exposed: Time.now.iso8601
|
434
437
|
}
|
435
438
|
|
436
439
|
return_value = return_value[:eligible]
|
@@ -454,7 +457,7 @@ module FlaggerEnvironments
|
|
454
457
|
end
|
455
458
|
return_value = flag&.enabled?(entity)
|
456
459
|
|
457
|
-
if
|
460
|
+
if return_value.nil? then
|
458
461
|
return return_value
|
459
462
|
end
|
460
463
|
|
@@ -464,7 +467,8 @@ module FlaggerEnvironments
|
|
464
467
|
id: entity.id,
|
465
468
|
treatment: return_value[:treatment].codename,
|
466
469
|
method_called: 'is_enabled',
|
467
|
-
eligible: return_value[:eligible]
|
470
|
+
eligible: return_value[:eligible],
|
471
|
+
time_exposed: Time.now.iso8601
|
468
472
|
}
|
469
473
|
|
470
474
|
return_value = !return_value[:treatment].is_off_treatment
|
data/lib/flagger/models.rb
CHANGED
@@ -234,6 +234,7 @@ module FlaggerModels
|
|
234
234
|
@populations = (json['populations'] || []).map {|population| Population.new(population)}
|
235
235
|
@splits = Hash[(json['splits'] || []).map {|split| [split['treatment_id'], Split.new(split)]}]
|
236
236
|
@treatments = Hash[(json['treatments'] || []).map {|treatment| [treatment['treatment_id'], Treatment.new(treatment)]}]
|
237
|
+
@off_treatment = json['treatments'].find {|treatment| treatment['is_off_treatment'] }
|
237
238
|
|
238
239
|
@env_hash_key = env_hash_key
|
239
240
|
|
@@ -258,7 +259,7 @@ module FlaggerModels
|
|
258
259
|
|
259
260
|
def eligible?(entity)
|
260
261
|
if @flag_type == 'uncategorized' or !entity then
|
261
|
-
|
262
|
+
nil
|
262
263
|
else
|
263
264
|
resolved_allocation(@env_hash_key, entity)
|
264
265
|
end
|
@@ -266,7 +267,7 @@ module FlaggerModels
|
|
266
267
|
|
267
268
|
def enabled?(entity)
|
268
269
|
if @flag_type == 'uncategorized' or !entity then
|
269
|
-
|
270
|
+
nil
|
270
271
|
else
|
271
272
|
resolved_allocation(@env_hash_key, entity)
|
272
273
|
end
|
@@ -402,13 +403,14 @@ module FlaggerModels
|
|
402
403
|
matches = @rules.all? {|rule| rule.match(entity)}
|
403
404
|
if matches then
|
404
405
|
samplingHashKey = "SAMPLING:control_#{flag.hash_key}:env_#{env_hash_key}:rule_set_#{@hash_key}:client_object_#{entity.type}_#{entity.id}"
|
405
|
-
|
406
|
+
hashedPercentage = Population.getHashedPercentage(samplingHashKey)
|
407
|
+
if hashedPercentage <= @percentage and @percentage > 0 then
|
406
408
|
|
407
409
|
allocationHashKey = "DISTRIBUTION:control_#{flag.hash_key}:env_#{env_hash_key}:client_object_#{entity.type}_#{entity.id}"
|
408
410
|
allocationHashedPercentage = Population.getHashedPercentage(allocationHashKey)
|
409
411
|
|
410
412
|
splits = if sticky then
|
411
|
-
@universes[(
|
413
|
+
@universes[[(hashedPercentage * 100).floor - 1, 0].max]
|
412
414
|
else
|
413
415
|
flag.splits
|
414
416
|
end
|
@@ -630,21 +632,21 @@ module FlaggerModels
|
|
630
632
|
class Treatment < GatingInfoModel
|
631
633
|
SCHEMA = Dry::Validation.Schema do
|
632
634
|
required(:@treatment_id) { str? }
|
633
|
-
required(:@
|
635
|
+
required(:@is_ghost) { bool? }
|
634
636
|
required(:@codename) { str? }
|
635
637
|
required(:@is_off_treatment) { bool? }
|
636
638
|
optional(:@payload) { str? | type?(Numeric) | bool? | array? | type?(Hash) }
|
637
639
|
end
|
638
640
|
|
639
641
|
attr_reader :treatment_id
|
640
|
-
attr_reader :
|
642
|
+
attr_reader :is_ghost
|
641
643
|
attr_reader :codename
|
642
644
|
attr_reader :is_off_treatment
|
643
645
|
attr_reader :payload
|
644
646
|
|
645
647
|
def initialize(json)
|
646
648
|
@treatment_id = json['treatment_id']
|
647
|
-
@
|
649
|
+
@is_ghost = json['is_ghost']
|
648
650
|
@codename = json['codename']
|
649
651
|
@is_off_treatment = json['is_off_treatment']
|
650
652
|
@payload = json['payload']
|
data/lib/flagger/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flagger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Airship Dev Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-12-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -127,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
127
127
|
version: '0'
|
128
128
|
requirements: []
|
129
129
|
rubyforge_project:
|
130
|
-
rubygems_version: 2.7.
|
130
|
+
rubygems_version: 2.7.6
|
131
131
|
signing_key:
|
132
132
|
specification_version: 4
|
133
133
|
summary: Flagger Ruby SDK
|