flagger 2.0.7 → 2.0.8
Sign up to get free protection for your applications and to get access to all the features.
- 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
|