Projects
home:rottame:rubygems
rubygem-ygg_provisioner_prev
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 2
View file
rubygem-ygg_provisioner.changes
Changed
@@ -1,4 +1,9 @@ ------------------------------------------------------------------- +Thu Jun 4 07:17:48 UTC 2026 - Angelo Grossini <rottame@intercom.it> + +- bugfixes + +------------------------------------------------------------------- Mon Dec 1 16:51:03 UTC 2025 - Angelo Grossini <rottame@intercom.it> - update to 1.5.0
View file
ygg_provisioner-1.5.0.gem/checksums.yaml.gz
Changed
@@ -1,7 +1,7 @@ --- SHA256: - metadata.gz: 5848ee3c07f250b2417e0f0e7b759eb1fbaea2fe0da60c7c2342f47144a0014b - data.tar.gz: 342c05c1df38b2aa6c5f47677c0dd1fdf471e77f2b726ddd1b088396ba4fb1fd + metadata.gz: e888d2217808318744cc4dac4f60b589e9277d8b09f9f8a9ff5fe0d8313de872 + data.tar.gz: 183b1337e0bb4213ffcceadd2dbb1c49882a5f33799ba5de68d8845226c67087 SHA512: - metadata.gz: 17926a8885236290a164fee4d4febc8e68471a716af68df57e18842740a4e50c32ec0948b1c06b0da58811e9bf18ce9259313aebde7999eeeefb0b6add5fb93d - data.tar.gz: 5e5027fda497785ee720a6e591d4d88eca6e59dacb2ddce45da9f64d5b8a70374aae8a14d9b791a95d4de99b58cab60b5a91bdd6f05e478ca713f6b3725e456c + metadata.gz: 3d9e769550754f0fc20717abb0ba07d2f8f1fb146ebdfef411b3d75c05dc8c77df3799faea825a1dd193d82cc74e2dd5162fbefce9dc406b581849e696d78bf7 + data.tar.gz: e9248f673ba74bbb05401a5aaf6744dc1a90084557c16d923790ad723ba94567f2575b5bb4a5ea968ad86a5829caf1220707c0a1577c942f5511852e4494e071
View file
ygg_provisioner-1.5.0.gem/data/build/gem2rpm.yml
Added
@@ -0,0 +1,4 @@ +--- +:disable_docs: true +:patches: +:sources: \ No newline at end of file
View file
ygg_provisioner-1.5.0.gem/data/build/rubygem-ygg_provisioner.changes
Added
@@ -0,0 +1,14 @@ +------------------------------------------------------------------- +Mon Dec 1 16:51:03 UTC 2025 - Angelo Grossini <rottame@intercom.it> + +- update to 1.5.0 + +------------------------------------------------------------------- +Tue Sep 12 09:04:44 UTC 2023 - Angelo Grossini <rottame@intercom.it> + +- revert test + +------------------------------------------------------------------- +Tue Sep 12 08:49:03 UTC 2023 - Angelo Grossini <rottame@intercom.it> + +- test
View file
ygg_provisioner-1.5.0.gem/data/build/rubygem-ygg_provisioner.spec
Added
@@ -0,0 +1,35 @@ +%define mod_name ygg_provisioner +%define mod_full_name %{mod_name}-%{version} +Name: rubygem-ygg_provisioner +Version: 1.5.0 +Release: 0 +Summary: Yggdra base provisioner +License: Apache-2.0 +Group: Development/Languages/Ruby +URL: https://intercom.it +Source: https://gems.intercom.it/gems/%{mod_full_name}.gem +Source1: gem2rpm.yml +BuildRequires: %{ruby >= 1.9} +BuildRequires: %{rubygem gem2rpm} +BuildRequires: ruby-macros >= 5 +Suggests: %{rubygem sqlite3} +Suggests: %{rubygem kyotocabinet} +Suggests: %{rubygem lmdb} + +%description +Yggdra base provisioner + +%prep + +%build + +%install +%gem_install \ + --symlink-binaries \ + --no-ri --no-rdoc \ + --doc-files="README" \ + -f + +%gem_packages + +%changelog
View file
ygg_provisioner-1.5.0.gem/data/lib/ygg/provisioner/model_store.rb
Changed
@@ -7,12 +7,11 @@ class << self def instantiate(spec) - case spec - when spec.is_a?(String) && spec.end_with?('.kch') + if spec.is_a?(String) && spec.end_with?('.kch') Kyotocabinet.new(spec) - when spec.is_a?(String) && spec.end_with?('.sqlite3', '.sqlite', '.db') + elsif spec.is_a?(String) && spec.end_with?('.sqlite3', '.sqlite', '.db') Sqlite3.new(spec) - when spec.is_a?(String) && spec.end_with?('.lmdb', '.mdb') + elsif spec.is_a?(String) && spec.end_with?('.lmdb', '.mdb') Lmdb.new(spec) else raise ArgumentError, "Unsupported store specification: #{spec.inspect}"
View file
ygg_provisioner-1.5.0.gem/data/lib/ygg/provisioner/model_store/lmdb.rb
Changed
@@ -12,6 +12,8 @@ # l'interfaccia {Ygg::Provisioner::ModelStore::Base}, memorizzando # un semplice key/value con valori marshal‑izzati. class Lmdb < Base + MAPSIZE = 4.kilobytes * 255 + def initialize(spec) super @env = nil @@ -20,24 +22,32 @@ # Restituisce il valore opaco associato a +key+ o +nil+ se assente. def get(key) + key = key.to_s with_db do |db| - raw = dbkey.to_s + raw = dbkey raw && unmarshal(raw) end end # Imposta il valore opaco associato a +key+. def put(key, value) + key = key.to_s with_db do |db| - dbkey.to_s = marshal(value) + transaction do + db.delete(key) if db.has?(key) + dbkey = marshal(value) + end end end # Elimina la chiave indicata, restituendo true se esisteva. def delete(key) + key = key.to_s with_db do |db| - existed = db.has?(key.to_s) - db.delete(key.to_s) if existed + existed = db.has?(key) + transaction do + db.delete(key) if existed + end existed end end @@ -57,7 +67,9 @@ db.cursor do |cursor| record = cursor.first while record do - block.call(*record) + transaction do + block.call(*record) + end record = cursor.next end end @@ -67,25 +79,31 @@ private + def open_lmdb_env(mapsize = nil) + # Crea la directory se non esiste + db_path = database_configuration + FileUtils.mkdir_p(db_path) unless File.directory?(db_path) + options = { maxdbs: 1 } + options:mapsize = mapsize if mapsize + LMDB.new(db_path, options) + end + # Apre il DB, esegue il blocco e lo chiude. - def with_db + def with_db(&block) if @db - @env.transaction do - yield @db - end + yield @db else - # Crea la directory se non esiste - db_path = database_configuration - FileUtils.mkdir_p(db_path) unless File.directory?(db_path) - - # Apri l'ambiente LMDB - @env = LMDB.new(db_path, maxdbs: 1) + @env = open_lmdb_env + usage = lmdb_usage(@env.info, @env.stat) + if usage:used_bytes + MAPSIZE >= usage:map_size + new_size = usage:map_size + MAPSIZE + @env.close + @env = open_lmdb_env(new_size) + end @db = @env.database begin - @env.transaction do - yield @db - end + yield @db ensure @env.close if @env @db = nil @@ -93,6 +111,23 @@ end end end + + def transaction(&block) + @env.transaction do + yield + end + end + + def lmdb_usage(info, stat) + info = @env.info + stat = @env.stat + { + map_size: info:mapsize, + page_size: stat:psize, + last_page_number: info:last_pgno + 1, + used_bytes: stat:psize * (info:last_pgno + 1), + } + end end end
View file
ygg_provisioner-1.5.0.gem/data/lib/ygg/provisioner/model_store/sqlite3.rb
Changed
@@ -19,7 +19,7 @@ # Restituisce il valore opaco associato a +key+ o +nil+ se assente. def get(key) with_db do |db| - raw = db.get_first_value('SELECT value FROM kv_store WHERE key = ?', key) + raw = db.get_first_value('SELECT value FROM kv_store WHERE key = ?', normalize_key(key)) raw && unmarshal(raw) end end @@ -29,7 +29,7 @@ with_db do |db| db.execute( 'INSERT OR REPLACE INTO kv_store(key, value) VALUES(?, ?)', - key, + normalize_key(key), SQLite3::Blob.new(marshal(value)), ) end @@ -38,7 +38,7 @@ # Elimina la chiave indicata, restituendo true se esisteva. def delete(key) with_db do |db| - db.execute('DELETE FROM kv_store WHERE key = ?', key) + db.execute('DELETE FROM kv_store WHERE key = ?', normalize_key(key)) db.changes > 0 end end @@ -57,6 +57,7 @@ with_db do |db| db.execute('SELECT key, value FROM kv_store') do |row| key, raw = row + key = key.to_s.b block.call(key, raw) end end @@ -90,6 +91,10 @@ end end end + + def normalize_key(key) + SQLite3::Blob.new(key.to_s.b) + end end end
View file
ygg_provisioner-1.5.0.gem/metadata.gz
Changed
@@ -5,10 +5,10 @@ platform: ruby authors: - Daniele Orlandi -autorequire: +autorequire: bindir: bin cert_chain: -date: 2025-12-01 00:00:00.000000000 Z +date: 2026-06-03 00:00:00.000000000 Z dependencies: - !ruby/object:Gem::Dependency name: tomte-agents @@ -121,6 +121,9 @@ - README - Rakefile - bin/ygg_provisioner_convert_store +- build/gem2rpm.yml +- build/rubygem-ygg_provisioner.changes +- build/rubygem-ygg_provisioner.spec - lib/tomte/agents/skel_provisioner.rb - lib/ygg/provisioner.rb - lib/ygg/provisioner/internals/colon_delimited_file.rb @@ -147,7 +150,7 @@ homepage: http://www.yggdra.it/ licenses: metadata: {} -post_install_message: +post_install_message: rdoc_options: require_paths: - lib @@ -162,8 +165,15 @@ - !ruby/object:Gem::Version version: '0' requirements: -rubygems_version: 3.5.22 -signing_key: +rubyforge_project: ygg_provisioner +rubygems_version: 2.7.6.3 +signing_key: specification_version: 4 summary: Provisioner base classes and helpers -test_files: +test_files: +- spec/spec_helper.rb +- spec/ygg/provisioner/model_spec.rb +- spec/ygg/provisioner/model_store/kyotocabinet_spec.rb +- spec/ygg/provisioner/model_store/lmdb_spec.rb +- spec/ygg/provisioner/model_store/sqlite3_spec.rb +- spec/ygg/provisioner/model_store_shared_examples.rb
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.