Allow tiles to be split over multiple directories
authorTom Hughes <tom@compton.nu>
Thu, 8 Aug 2013 23:15:05 +0000 (00:15 +0100)
committerTom Hughes <tom@compton.nu>
Thu, 8 Aug 2013 23:24:05 +0000 (00:24 +0100)
cookbooks/tile/attributes/default.rb
cookbooks/tile/recipes/default.rb
roles/orm.rb
roles/yevaud.rb

index 79d55d10a9d7a9313dce2b4252fb87c39d56e762..7ef34a9580b7f808f6059c2901e8ed15870923c1 100644 (file)
@@ -1,3 +1,2 @@
 default[:tile][:data] = {}
 default[:tile][:styles] = {}
-default[:tile][:tile_directory] = "/srv/tile.openstreetmap.org/tiles"
index bb8b347edf506933cb167f9610e1f17f68ed5cbd..f513088cdc41d865e7631e3f0365b84f758303d5 100644 (file)
@@ -66,16 +66,10 @@ service "renderd" do
   supports :status => false, :restart => true, :reload => false
 end
 
-directory node[:tile][:tile_directory] do
+directory "/srv/tile.openstreetmap.org/tiles" do
   owner "tile"
-  group "www-data"
-  mode 0775
-end
-
-if node[:tile][:tile_directory] != "/srv/tile.openstreetmap.org/tiles"
-  link "/srv/tile.openstreetmap.org/tiles" do
-    to node[:tile][:tile_directory]
-  end
+  group "tile"
+  mode 0755
 end
 
 template "/etc/renderd.conf" do
@@ -244,8 +238,24 @@ node[:tile][:styles].each do |name,details|
 
   directory tile_directory do
     owner "tile"
-    group "www-data"
-    mode 0775
+    group "tile"
+    mode 0755
+  end
+
+  details[:tile_directories].each do |directory|
+    directory[:min_zoom].upto(directory[:max_zoom]) do |zoom|
+      directory  "#{directory[:name]}/#{zoom}" do
+        owner "www-data"
+        group "www-data"
+        mode 0755
+      end
+
+      link "#{tile_directory}/#{zoom}" do
+        to "#{directory[:name]}/#{zoom}"
+        owner "tile"
+        group "tile"
+      end
+    end
   end
 
   file "#{tile_directory}/planet-import-complete" do
index 69e002ff5c9e6a990a133a7b5c4373ec0cdfe8f8..2a834b101415d0813a0f45c16889e07e1ef4b56e 100644 (file)
@@ -113,8 +113,15 @@ default_attributes(
     }
   },
   :tile => {
-    :tile_directory => "/store/tiles",
-    :node_file => "/store/database/nodes"
+    :node_file => "/store/database/nodes",
+    :styles => {
+      :default => {
+        :tile_directories => [
+          { :name => "/store/tiles/default-low", :min_zoom => 0, :max_zoom => 17 },
+          { :name => "/store/tiles/default-high", :min_zoom => 18, :max_zoom => 19 }
+        ]
+      }
+    }
   }
 )
 
index 0489c69d2d902778daeec4270ae44ae7e0a2cc46..450baa6073b1cf6e10e11fc9c8b762c944a8faa4 100644 (file)
@@ -69,8 +69,15 @@ default_attributes(
     }
   },
   :tile => {
-    :tile_directory => "/store/tiles",
-    :node_file => "/store/database/nodes"
+    :node_file => "/store/database/nodes",
+    :styles => {
+      :default => {
+        :tile_directories => [
+          { :name => "/store/tiles/default-low", :min_zoom => 0, :max_zoom => 16 },
+          { :name => "/store/tiles/default-high", :min_zoom => 17, :max_zoom => 19 }
+        ]
+      }
+    }
   }
 )