jerakia 0.0.8 → 0.0.9

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e7a0ffdcc717ef8705465da1d89d701353e31a4d
4
- data.tar.gz: a40d224bb84863097b2b1e4d877aa5b8bfbed9c7
3
+ metadata.gz: 733f3ff0ffece8cc45246f1e4e4657c6e7729618
4
+ data.tar.gz: 4a493d69a56e2cff5eea275fd38201ccfaab6261
5
5
  SHA512:
6
- metadata.gz: a1e2f422baea90e6bc37df8bd5ed1b9717b41a3968b4eb44ad50dfa80eb1defdc11461da6f57e749fd074d4a986a9f135ea9ddee6797fcd9a73ef14dcca0e9b5
7
- data.tar.gz: a6f211698de9b7286b674e76285f9720bc7c50a70f5bb9d9d121610592fae36ecf5d0bb858fdaf54ea7268d3108f93f322514a5f4cefbe8d963b02ac9c61d931
6
+ metadata.gz: b5d658a3e2ef290b4fd29ca1a0bb2571c1b604793234464b699562e4972f02d6b226006b1ec725c6b513983f96dc6017ec39792d9b1e0df382ae0fbd1d1e4792
7
+ data.tar.gz: 8415c0e24ef76f3250f430b7e3085395226ce4f2014a6cfa2e3ea1dac29926d223872ac9025fda3566aee6562716f5ec6a0e42ddf07c18b4cb68c109aeeb51e2
@@ -17,7 +17,6 @@ class Jerakia
17
17
  configfile = options[:config] || '/etc/jerakia/jerakia.yml'
18
18
  @@config = Jerakia::Config.new(configfile)
19
19
  @@filecache = {}
20
- @@cache = Jerakia::Cache.new
21
20
  loglevel = options[:loglevel] || @@config["loglevel"] || "info"
22
21
  @@log = Jerakia::Log.new(loglevel.to_sym)
23
22
  @@log.debug("Jerakia initialized")
@@ -42,10 +41,6 @@ class Jerakia
42
41
  exit 1
43
42
  end
44
43
 
45
- def self.config
46
- @@config
47
- end
48
-
49
44
  def self.filecache(name)
50
45
  @@filecache[name] ||= File.read(name)
51
46
  return @@filecache[name]
@@ -55,9 +50,15 @@ class Jerakia
55
50
  @@filecache[name] = data
56
51
  end
57
52
 
53
+ def self.config
54
+ @@config
55
+ end
56
+
57
+
58
58
  def log
59
59
  @@log
60
60
  end
61
+
61
62
 
62
63
  def self.log
63
64
  @@log
@@ -4,12 +4,14 @@
4
4
  #
5
5
  class Jerakia::Cache
6
6
 
7
+ @@bucket = {}
8
+
7
9
  def initialize
8
- @@bucket = {}
9
10
  end
10
11
 
11
- def bucket_add(index,data)
12
- @@bucket[index] = data
12
+ def add(index,data)
13
+ @@bucket[index] ||= {}
14
+ @@bucket[index][:content] = data
13
15
  data
14
16
  end
15
17
 
@@ -17,6 +19,15 @@ class Jerakia::Cache
17
19
  @@bucket.has_key?(index)
18
20
  end
19
21
 
22
+ ## default behaviour is always validate if exists.
23
+ def valid?(index)
24
+ in_bucket?(index)
25
+ end
26
+
27
+ def get(index)
28
+ @@bucket[index][:content]
29
+ end
30
+
20
31
  def bucket
21
32
  @@bucket
22
33
  end
@@ -0,0 +1,17 @@
1
+ class Jerakia::Cache::Entry
2
+
3
+ attr_accessor :key
4
+ attr_accessor :content
5
+ @@cache = Jerakia::Cache.new
6
+
7
+ def initialize(key='', content='')
8
+ @@cache.add(key, self)
9
+ end
10
+
11
+ def valid?
12
+ true
13
+ end
14
+ end
15
+
16
+
17
+
@@ -0,0 +1,33 @@
1
+ require 'jerakia/cache'
2
+
3
+ class Jerakia::Cache::File < Jerakia::Cache
4
+
5
+
6
+ def initialize
7
+ super
8
+ end
9
+
10
+
11
+ def state(filename)
12
+ if ::File.exists?(filename)
13
+ ::File.stat(filename).mtime
14
+ else
15
+ nil
16
+ end
17
+ end
18
+
19
+ def add(index,data)
20
+ @@bucket[index] ||= {}
21
+ @@bucket[index][:state] = state(index)
22
+ super
23
+ end
24
+
25
+ def valid?(index)
26
+ if in_bucket?(index)
27
+ @@bucket[index][:state] == state(index)
28
+ else
29
+ false
30
+ end
31
+ end
32
+
33
+ end
@@ -1,5 +1,5 @@
1
1
  require 'jerakia/cache'
2
- class Jerakia::Datasource < Jerakia::Cache
2
+ class Jerakia::Datasource
3
3
 
4
4
  require 'jerakia/response'
5
5
  attr_reader :response
@@ -1,7 +1,12 @@
1
+ require 'jerakia/cache/file'
2
+
3
+
1
4
  class Jerakia::Datasource
2
5
  module File
3
6
 
4
7
  attr_reader :file_format
8
+ @@cache = Jerakia::Cache::File.new
9
+
5
10
  def load_format_handler
6
11
  format = options[:format] || :yaml
7
12
  class_name=format.to_s.capitalize
@@ -9,29 +14,33 @@ class Jerakia::Datasource
9
14
  @file_format = eval "Jerakia::Datasource::File::#{class_name}"
10
15
  end
11
16
 
17
+
18
+ def cache
19
+ @@cache
20
+ end
21
+
12
22
  def read_from_file(fname)
13
23
  fpath = []
14
24
  fpath << options[:docroot] unless fname[0] == '/'
15
25
  fpath << [ fname, lookup.request.namespace ]
16
- diskname = ::File.join(fpath.flatten).gsub(/\/$/, '')
17
26
 
18
- Jerakia.log.debug("read_from_file() #{fname} using diskname #{diskname}")
27
+ extension = options[:extension] || @file_format::EXTENSION
28
+ diskname = "#{::File.join(fpath.flatten).gsub(/\/$/, '')}.#{extension}"
29
+
19
30
 
20
- import_args=[]
21
- import_args << diskname
22
- import_args << options[:extension] if options[:extension]
31
+ Jerakia.log.debug("read_from_file() #{diskname}")
23
32
 
24
- cache_index={ :diskname => diskname, :format => options[:format] }
33
+
25
34
  if options[:enable_caching]
26
- if in_bucket?(cache_index)
27
- Jerakia.log.debug("returning cached data #{bucket[cache_index]}")
28
- bucket[cache_index]
35
+ if cache.valid?(diskname)
36
+ Jerakia.log.debug("Returning cached data")
37
+ cache.get(diskname)
29
38
  else
30
- Jerakia.log.debug("adding to cache #{@file_format.import_file(*import_args)}")
31
- bucket_add(cache_index,@file_format.import_file(*import_args))
39
+ Jerakia.log.debug("Adding contents of #{diskname} to cache")
40
+ cache.add(diskname,@file_format.import_file(diskname))
32
41
  end
33
42
  else
34
- @file_format.import_file(*import_args)
43
+ @file_format.import_file(diskname)
35
44
  end
36
45
  end
37
46
 
@@ -1,13 +1,15 @@
1
1
  class Jerakia::Datasource
2
2
  module File
3
3
  class Yaml
4
+
5
+ EXTENSION='yaml'
6
+
4
7
  class << self
5
8
  require 'yaml'
6
- def import_file(fname, extension='yml')
7
- diskfile="#{fname}.#{extension}"
8
- Jerakia.log.debug("scanning file #{diskfile}")
9
- return {} unless ::File.exists?(diskfile)
10
- data=::File.read(diskfile)
9
+ def import_file(fname)
10
+ Jerakia.log.debug("scanning file #{fname}")
11
+ return {} unless ::File.exists?(fname)
12
+ data=::File.read(fname)
11
13
  YAML.load(data)
12
14
  end
13
15
  end
@@ -37,9 +37,9 @@ class Jerakia::Log < Jerakia
37
37
  # self.new.error msg
38
38
  # end
39
39
  #
40
- def self.debug(msg)
41
- self.new.debug msg
42
- end
40
+ # def self.debug(msg)
41
+ # self.new.debug msg
42
+ # end
43
43
  #
44
44
  ## def self.info(msg)
45
45
  # puts @@logger
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jerakia
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Craig Dunn
@@ -22,6 +22,8 @@ files:
22
22
  - lib/jerakia.rb
23
23
  - lib/jerakia/answer.rb
24
24
  - lib/jerakia/cache.rb
25
+ - lib/jerakia/cache/entry.rb
26
+ - lib/jerakia/cache/file.rb
25
27
  - lib/jerakia/config.rb
26
28
  - lib/jerakia/datamodel.rb
27
29
  - lib/jerakia/datasource.rb