jerakia 0.0.8 → 0.0.9

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