Class: Smplkit::ManagementClient::FlagsNamespace
- Inherits:
-
Object
- Object
- Smplkit::ManagementClient::FlagsNamespace
- Defined in:
- lib/smplkit/management/client.rb
Instance Method Summary collapse
- #_create_flag(flag) ⇒ Object
- #_update_flag(flag) ⇒ Object
- #delete(id) ⇒ Object
- #fetch_flag(id) ⇒ Object
-
#flush ⇒ Object
POST pending declarations to the bulk endpoint.
- #get(id) ⇒ Object
-
#initialize(api_client) ⇒ FlagsNamespace
constructor
A new instance of FlagsNamespace.
- #list(page_number: nil, page_size: nil) ⇒ Object
-
#list_flags ⇒ Object
Runtime entry — walks every page so an account holding more than
RUNTIME_PAGE_SIZEflags still gets a complete in-memory store. - #new_boolean_flag(id, default:, name: nil, description: nil, values: nil) ⇒ Object
- #new_json_flag(id, default:, name: nil, description: nil, values: nil) ⇒ Object
- #new_number_flag(id, default:, name: nil, description: nil, values: nil) ⇒ Object
- #new_string_flag(id, default:, name: nil, description: nil, values: nil) ⇒ Object
- #pending_count ⇒ Object
- #register(declaration) ⇒ Object
Constructor Details
#initialize(api_client) ⇒ FlagsNamespace
Returns a new instance of FlagsNamespace.
706 707 708 709 |
# File 'lib/smplkit/management/client.rb', line 706 def initialize(api_client) @api = SmplkitGeneratedClient::Flags::FlagsApi.new(api_client) @buffer = Management::FlagRegistrationBuffer.new end |
Instance Method Details
#_create_flag(flag) ⇒ Object
794 795 796 797 |
# File 'lib/smplkit/management/client.rb', line 794 def _create_flag(flag) response = ErrorMapping.call { @api.create_flag(flag_body(flag)) } flag_from_resource(ResourceShim.from_model(response.data)) end |
#_update_flag(flag) ⇒ Object
799 800 801 802 |
# File 'lib/smplkit/management/client.rb', line 799 def _update_flag(flag) response = ErrorMapping.call { @api.update_flag(flag.id, flag_body(flag)) } flag_from_resource(ResourceShim.from_model(response.data)) end |
#delete(id) ⇒ Object
761 762 763 764 |
# File 'lib/smplkit/management/client.rb', line 761 def delete(id) ErrorMapping.call { @api.delete_flag(id) } true end |
#fetch_flag(id) ⇒ Object
804 805 806 807 |
# File 'lib/smplkit/management/client.rb', line 804 def fetch_flag(id) response = ErrorMapping.call { @api.get_flag(id) } Smplkit::Flags::Helpers.flag_dict_from_json(ResourceShim.from_model(response.data)) end |
#flush ⇒ Object
POST pending declarations to the bulk endpoint.
Items remain in the buffer until the request succeeds, so a flush against an unhealthy service is automatically retried by the next flush call (lazy start retry, periodic background flush, or final flush on close). Raises on failure — callers decide whether to retry.
729 730 731 732 733 734 735 736 737 738 739 740 741 742 |
# File 'lib/smplkit/management/client.rb', line 729 def flush batch = @buffer.peek return if batch.empty? flag_items = batch.map do |entry| SmplkitGeneratedClient::Flags::FlagBulkItem.new( id: entry["id"], type: entry["type"], default: entry["default"], service: entry["service"], environment: entry["environment"] ) end body = SmplkitGeneratedClient::Flags::FlagBulkRequest.new(flags: flag_items) ErrorMapping.call { @api.bulk_register_flags(body) } @buffer.commit(batch.map { |b| b["id"] }) end |
#get(id) ⇒ Object
756 757 758 759 |
# File 'lib/smplkit/management/client.rb', line 756 def get(id) response = ErrorMapping.call { @api.get_flag(id) } flag_from_resource(ResourceShim.from_model(response.data)) end |
#list(page_number: nil, page_size: nil) ⇒ Object
748 749 750 751 752 753 754 |
# File 'lib/smplkit/management/client.rb', line 748 def list(page_number: nil, page_size: nil) opts = {} opts[:page_number] = page_number unless page_number.nil? opts[:page_size] = page_size unless page_size.nil? response = ErrorMapping.call { @api.list_flags(opts) } (response.data || []).map { |r| flag_from_resource(ResourceShim.from_model(r)) } end |
#list_flags ⇒ Object
Runtime entry — walks every page so an account holding more than RUNTIME_PAGE_SIZE flags still gets a complete in-memory store.
811 812 813 814 |
# File 'lib/smplkit/management/client.rb', line 811 def list_flags rows = PaginatedFetch.collect { |opts| @api.list_flags(opts) } rows.map { |r| Smplkit::Flags::Helpers.flag_dict_from_json(ResourceShim.from_model(r)) } end |
#new_boolean_flag(id, default:, name: nil, description: nil, values: nil) ⇒ Object
766 767 768 769 770 771 |
# File 'lib/smplkit/management/client.rb', line 766 def new_boolean_flag(id, default:, name: nil, description: nil, values: nil) Smplkit::Flags::BooleanFlag.new( self, id: id, name: name || id, type: "BOOLEAN", default: default, description: description, values: values ) end |
#new_json_flag(id, default:, name: nil, description: nil, values: nil) ⇒ Object
787 788 789 790 791 792 |
# File 'lib/smplkit/management/client.rb', line 787 def new_json_flag(id, default:, name: nil, description: nil, values: nil) Smplkit::Flags::JsonFlag.new( self, id: id, name: name || id, type: "JSON", default: default, description: description, values: values ) end |
#new_number_flag(id, default:, name: nil, description: nil, values: nil) ⇒ Object
780 781 782 783 784 785 |
# File 'lib/smplkit/management/client.rb', line 780 def new_number_flag(id, default:, name: nil, description: nil, values: nil) Smplkit::Flags::NumberFlag.new( self, id: id, name: name || id, type: "NUMERIC", default: default, description: description, values: values ) end |
#new_string_flag(id, default:, name: nil, description: nil, values: nil) ⇒ Object
773 774 775 776 777 778 |
# File 'lib/smplkit/management/client.rb', line 773 def new_string_flag(id, default:, name: nil, description: nil, values: nil) Smplkit::Flags::StringFlag.new( self, id: id, name: name || id, type: "STRING", default: default, description: description, values: values ) end |
#pending_count ⇒ Object
744 745 746 |
# File 'lib/smplkit/management/client.rb', line 744 def pending_count @buffer.pending_count end |
#register(declaration) ⇒ Object
711 712 713 714 715 716 717 718 719 720 |
# File 'lib/smplkit/management/client.rb', line 711 def register(declaration) @buffer.add(declaration) return unless @buffer.pending_count >= Management::FLAG_BATCH_FLUSH_SIZE begin flush rescue StandardError => e Smplkit.debug("registration", "threshold flag flush failed: #{e.class}: #{e.}") end end |