diff options
author | Mike Mazur | 2009-02-16 02:28:51 +0000 |
---|---|---|
committer | Mike Mazur | 2009-02-16 02:28:51 +0000 |
commit | e41f761e0d808f39d58766cb8f888cda3b5a6043 (patch) | |
tree | a00b2349f5e1fcfde0c23471fbdf0a238cc29370 | |
parent | Standardize logging messages. (diff) | |
download | opensim-SC-e41f761e0d808f39d58766cb8f888cda3b5a6043.zip opensim-SC-e41f761e0d808f39d58766cb8f888cda3b5a6043.tar.gz opensim-SC-e41f761e0d808f39d58766cb8f888cda3b5a6043.tar.bz2 opensim-SC-e41f761e0d808f39d58766cb8f888cda3b5a6043.tar.xz |
- add restrictions and error handling to plugin loading in
AssetInventoryServer
- assign shorter names to each AssetInventory plugin
- modify AssetInventoryServer.ini.example file so it works out of the
box
13 files changed, 69 insertions, 45 deletions
diff --git a/OpenSim/Grid/AssetInventoryServer/AssetInventoryServer.cs b/OpenSim/Grid/AssetInventoryServer/AssetInventoryServer.cs index 07cbade..5e8a6f1 100644 --- a/OpenSim/Grid/AssetInventoryServer/AssetInventoryServer.cs +++ b/OpenSim/Grid/AssetInventoryServer/AssetInventoryServer.cs | |||
@@ -75,15 +75,16 @@ namespace OpenSim.Grid.AssetInventoryServer | |||
75 | return false; | 75 | return false; |
76 | } | 76 | } |
77 | 77 | ||
78 | IConfig pluginConfig = ConfigFile.Configs["Plugins"]; | 78 | StorageProvider = LoadAssetInventoryServerPlugin("/OpenSim/AssetInventoryServer/AssetStorageProvider", |
79 | 79 | "asset_storage_provider", false) as IAssetStorageProvider; | |
80 | StorageProvider = LoadAssetInventoryServerPlugin("/OpenSim/AssetInventoryServer/AssetStorageProvider", pluginConfig.GetString("asset_storage_provider")) as IAssetStorageProvider; | ||
81 | m_backends.Add(StorageProvider); | 80 | m_backends.Add(StorageProvider); |
82 | 81 | ||
83 | InventoryProvider = LoadAssetInventoryServerPlugin("/OpenSim/AssetInventoryServer/InventoryStorageProvider", pluginConfig.GetString("inventory_storage_provider")) as IInventoryStorageProvider; | 82 | InventoryProvider = LoadAssetInventoryServerPlugin("/OpenSim/AssetInventoryServer/InventoryStorageProvider", |
83 | "inventory_storage_provider", false) as IInventoryStorageProvider; | ||
84 | m_backends.Add(InventoryProvider); | 84 | m_backends.Add(InventoryProvider); |
85 | 85 | ||
86 | MetricsProvider = LoadAssetInventoryServerPlugin("/OpenSim/AssetInventoryServer/MetricsProvider", pluginConfig.GetString("metrics_provider")) as IMetricsProvider; | 86 | MetricsProvider = LoadAssetInventoryServerPlugin("/OpenSim/AssetInventoryServer/MetricsProvider", |
87 | "metrics_provider", false) as IMetricsProvider; | ||
87 | m_backends.Add(MetricsProvider); | 88 | m_backends.Add(MetricsProvider); |
88 | 89 | ||
89 | try | 90 | try |
@@ -97,13 +98,19 @@ namespace OpenSim.Grid.AssetInventoryServer | |||
97 | return false; | 98 | return false; |
98 | } | 99 | } |
99 | 100 | ||
100 | AuthenticationProvider = LoadAssetInventoryServerPlugin("/OpenSim/AssetInventoryServer/AuthenticationProvider", pluginConfig.GetString("authentication_provider")) as IAuthenticationProvider; | 101 | AuthenticationProvider = LoadAssetInventoryServerPlugin("/OpenSim/AssetInventoryServer/AuthenticationProvider", |
102 | "authentication_provider", false) as IAuthenticationProvider; | ||
101 | m_backends.Add(AuthenticationProvider); | 103 | m_backends.Add(AuthenticationProvider); |
102 | 104 | ||
103 | AuthorizationProvider = LoadAssetInventoryServerPlugin("/OpenSim/AssetInventoryServer/AuthorizationProvider", pluginConfig.GetString("authorization_provider")) as IAuthorizationProvider; | 105 | AuthorizationProvider = LoadAssetInventoryServerPlugin("/OpenSim/AssetInventoryServer/AuthorizationProvider", |
106 | "authorization_provider", false) as IAuthorizationProvider; | ||
104 | m_backends.Add(AuthorizationProvider); | 107 | m_backends.Add(AuthorizationProvider); |
105 | 108 | ||
106 | m_frontends.AddRange(LoadAssetInventoryServerPlugins("/OpenSim/AssetInventoryServer/Frontend", pluginConfig.GetString("frontends"))); | 109 | m_frontends.AddRange(LoadAssetInventoryServerPlugins("/OpenSim/AssetInventoryServer/Frontend", "frontends")); |
110 | |||
111 | // Inform the user if we don't have any frontends at this point. | ||
112 | if (m_frontends.Count == 0) | ||
113 | m_log.Info("[ASSETINVENTORY]: Starting with no frontends loaded, which isn't extremely useful. Did you set the 'frontends' configuration parameter?"); | ||
107 | 114 | ||
108 | return true; | 115 | return true; |
109 | } | 116 | } |
@@ -148,32 +155,47 @@ namespace OpenSim.Grid.AssetInventoryServer | |||
148 | m_log.Info("[ASSETINVENTORY]: AssetInventory server is listening on port " + port); | 155 | m_log.Info("[ASSETINVENTORY]: AssetInventory server is listening on port " + port); |
149 | } | 156 | } |
150 | 157 | ||
151 | private IAssetInventoryServerPlugin LoadAssetInventoryServerPlugin(string addinPath, string provider) | 158 | private IAssetInventoryServerPlugin LoadAssetInventoryServerPlugin(string addinPath, string configParam, bool optional) |
152 | { | 159 | { |
153 | PluginLoader<IAssetInventoryServerPlugin> loader = new PluginLoader<IAssetInventoryServerPlugin>(new AssetInventoryServerPluginInitialiser(this)); | 160 | IAssetInventoryServerPlugin result = null; |
161 | List<IAssetInventoryServerPlugin> plugins = LoadAssetInventoryServerPlugins(addinPath, configParam); | ||
154 | 162 | ||
155 | if (provider == String.Empty) | 163 | if (plugins.Count == 1) |
156 | loader.Add(addinPath); | 164 | { |
157 | else | 165 | result = plugins[0]; |
158 | loader.Add(addinPath, new PluginIdFilter(provider)); | 166 | } |
159 | //loader.Add(addinPath, new PluginCountConstraint(1)); | 167 | else if (plugins.Count > 1) |
160 | 168 | { | |
161 | loader.Load(); | 169 | m_log.ErrorFormat("[ASSETINVENTORY]: Only 1 plugin expected for extension point '{0}', {1} plugins loaded. Check the '{2}' parameter in the config file.", |
170 | addinPath, plugins.Count, configParam); | ||
171 | Shutdown(); | ||
172 | Environment.Exit(0); | ||
173 | } | ||
174 | else if (!optional) | ||
175 | { | ||
176 | m_log.ErrorFormat("[ASSETINVENTORY]: The extension point '{0}' is not optional. Check the '{1}' parameter in the config file.", addinPath, configParam); | ||
177 | Shutdown(); | ||
178 | Environment.Exit(0); | ||
179 | } | ||
162 | 180 | ||
163 | return loader.Plugin; | 181 | return result; |
164 | } | 182 | } |
165 | 183 | ||
166 | private List<IAssetInventoryServerPlugin> LoadAssetInventoryServerPlugins(string addinPath, string provider) | 184 | private List<IAssetInventoryServerPlugin> LoadAssetInventoryServerPlugins(string addinPath, string configParam) |
167 | { | 185 | { |
168 | PluginLoader<IAssetInventoryServerPlugin> loader = new PluginLoader<IAssetInventoryServerPlugin>(new AssetInventoryServerPluginInitialiser(this)); | 186 | PluginLoader<IAssetInventoryServerPlugin> loader = new PluginLoader<IAssetInventoryServerPlugin>(new AssetInventoryServerPluginInitialiser(this)); |
187 | loader.Add(addinPath, new PluginIdFilter(ConfigFile.Configs["Plugins"].GetString(configParam))); | ||
169 | 188 | ||
170 | if (provider == String.Empty) | 189 | try |
171 | loader.Add(addinPath); | 190 | { |
172 | else | 191 | loader.Load(); |
173 | loader.Add(addinPath, new PluginIdFilter(provider)); | 192 | } |
174 | //loader.Add(addinPath, new PluginCountConstraint(1)); | 193 | catch (PluginNotInitialisedException e) |
175 | 194 | { | |
176 | loader.Load(); | 195 | m_log.ErrorFormat("[ASSETINVENTORY]: Error initialising plugin '{0}' for extension point '{1}'.", e.Message, addinPath); |
196 | Shutdown(); | ||
197 | Environment.Exit(0); | ||
198 | } | ||
177 | 199 | ||
178 | return loader.Plugins; | 200 | return loader.Plugins; |
179 | } | 201 | } |
diff --git a/OpenSim/Grid/AssetInventoryServer/Plugins/AuthorizeAllPlugin.cs b/OpenSim/Grid/AssetInventoryServer/Plugins/AuthorizeAllPlugin.cs index 9e3a421..7fd1ee8 100644 --- a/OpenSim/Grid/AssetInventoryServer/Plugins/AuthorizeAllPlugin.cs +++ b/OpenSim/Grid/AssetInventoryServer/Plugins/AuthorizeAllPlugin.cs | |||
@@ -74,7 +74,7 @@ namespace OpenSim.Grid.AssetInventoryServer.Plugins | |||
74 | 74 | ||
75 | public string Name | 75 | public string Name |
76 | { | 76 | { |
77 | get { return "AssetInventoryServer Authorize All"; } | 77 | get { return "AuthorizeAll"; } |
78 | } | 78 | } |
79 | 79 | ||
80 | #endregion IPlugin implementation | 80 | #endregion IPlugin implementation |
diff --git a/OpenSim/Grid/AssetInventoryServer/Plugins/BrowseFrontendPlugin.cs b/OpenSim/Grid/AssetInventoryServer/Plugins/BrowseFrontendPlugin.cs index 6c98612..4ed8d87 100644 --- a/OpenSim/Grid/AssetInventoryServer/Plugins/BrowseFrontendPlugin.cs +++ b/OpenSim/Grid/AssetInventoryServer/Plugins/BrowseFrontendPlugin.cs | |||
@@ -83,7 +83,7 @@ namespace OpenSim.Grid.AssetInventoryServer.Plugins | |||
83 | 83 | ||
84 | public string Name | 84 | public string Name |
85 | { | 85 | { |
86 | get { return "AssetInventoryServer Browse asset frontend"; } | 86 | get { return "BrowseFrontend"; } |
87 | } | 87 | } |
88 | 88 | ||
89 | #endregion IPlugin implementation | 89 | #endregion IPlugin implementation |
diff --git a/OpenSim/Grid/AssetInventoryServer/Plugins/NullAuthenticationPlugin.cs b/OpenSim/Grid/AssetInventoryServer/Plugins/NullAuthenticationPlugin.cs index 1fbe780..e958591 100644 --- a/OpenSim/Grid/AssetInventoryServer/Plugins/NullAuthenticationPlugin.cs +++ b/OpenSim/Grid/AssetInventoryServer/Plugins/NullAuthenticationPlugin.cs | |||
@@ -74,7 +74,7 @@ namespace OpenSim.Grid.AssetInventoryServer.Plugins | |||
74 | 74 | ||
75 | public string Name | 75 | public string Name |
76 | { | 76 | { |
77 | get { return "AssetInventoryServer Null authentication"; } | 77 | get { return "NullAuthentication"; } |
78 | } | 78 | } |
79 | 79 | ||
80 | #endregion IPlugin implementation | 80 | #endregion IPlugin implementation |
diff --git a/OpenSim/Grid/AssetInventoryServer/Plugins/NullMetricsPlugin.cs b/OpenSim/Grid/AssetInventoryServer/Plugins/NullMetricsPlugin.cs index eef98dc..84e526a 100644 --- a/OpenSim/Grid/AssetInventoryServer/Plugins/NullMetricsPlugin.cs +++ b/OpenSim/Grid/AssetInventoryServer/Plugins/NullMetricsPlugin.cs | |||
@@ -145,7 +145,7 @@ namespace OpenSim.Grid.AssetInventoryServer.Plugins | |||
145 | 145 | ||
146 | public string Name | 146 | public string Name |
147 | { | 147 | { |
148 | get { return "AssetInventoryServer Null Metrics"; } | 148 | get { return "NullMetrics"; } |
149 | } | 149 | } |
150 | 150 | ||
151 | #endregion IPlugin implementation | 151 | #endregion IPlugin implementation |
diff --git a/OpenSim/Grid/AssetInventoryServer/Plugins/OpenSim/OpenSimAssetFrontendPlugin.cs b/OpenSim/Grid/AssetInventoryServer/Plugins/OpenSim/OpenSimAssetFrontendPlugin.cs index d2a87e6..887ab68 100644 --- a/OpenSim/Grid/AssetInventoryServer/Plugins/OpenSim/OpenSimAssetFrontendPlugin.cs +++ b/OpenSim/Grid/AssetInventoryServer/Plugins/OpenSim/OpenSimAssetFrontendPlugin.cs | |||
@@ -86,7 +86,7 @@ namespace OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim | |||
86 | 86 | ||
87 | public string Name | 87 | public string Name |
88 | { | 88 | { |
89 | get { return "AssetInventoryServer OpenSim asset frontend"; } | 89 | get { return "OpenSimAssetFrontend"; } |
90 | } | 90 | } |
91 | 91 | ||
92 | #endregion IPlugin implementation | 92 | #endregion IPlugin implementation |
diff --git a/OpenSim/Grid/AssetInventoryServer/Plugins/OpenSim/OpenSimAssetStoragePlugin.cs b/OpenSim/Grid/AssetInventoryServer/Plugins/OpenSim/OpenSimAssetStoragePlugin.cs index 69dcff3..ad68c57 100644 --- a/OpenSim/Grid/AssetInventoryServer/Plugins/OpenSim/OpenSimAssetStoragePlugin.cs +++ b/OpenSim/Grid/AssetInventoryServer/Plugins/OpenSim/OpenSimAssetStoragePlugin.cs | |||
@@ -183,6 +183,7 @@ namespace OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim | |||
183 | catch (Exception e) | 183 | catch (Exception e) |
184 | { | 184 | { |
185 | m_log.WarnFormat("[OPENSIMASSETSTORAGE]: Failure loading data plugin: {0}", e.ToString()); | 185 | m_log.WarnFormat("[OPENSIMASSETSTORAGE]: Failure loading data plugin: {0}", e.ToString()); |
186 | throw new PluginNotInitialisedException(Name); | ||
186 | } | 187 | } |
187 | } | 188 | } |
188 | 189 | ||
@@ -206,7 +207,7 @@ namespace OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim | |||
206 | 207 | ||
207 | public string Name | 208 | public string Name |
208 | { | 209 | { |
209 | get { return "AssetInventoryServer OpenSim asset storage provider"; } | 210 | get { return "OpenSimAssetStorage"; } |
210 | } | 211 | } |
211 | 212 | ||
212 | #endregion IPlugin implementation | 213 | #endregion IPlugin implementation |
diff --git a/OpenSim/Grid/AssetInventoryServer/Plugins/OpenSim/OpenSimInventoryFrontendPlugin.cs b/OpenSim/Grid/AssetInventoryServer/Plugins/OpenSim/OpenSimInventoryFrontendPlugin.cs index 76d7122..5e7f0c6 100644 --- a/OpenSim/Grid/AssetInventoryServer/Plugins/OpenSim/OpenSimInventoryFrontendPlugin.cs +++ b/OpenSim/Grid/AssetInventoryServer/Plugins/OpenSim/OpenSimInventoryFrontendPlugin.cs | |||
@@ -91,7 +91,7 @@ namespace OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim | |||
91 | 91 | ||
92 | public string Name | 92 | public string Name |
93 | { | 93 | { |
94 | get { return "AssetInventoryServer OpenSim inventory frontend"; } | 94 | get { return "OpenSimInventoryFrontend"; } |
95 | } | 95 | } |
96 | 96 | ||
97 | #endregion IPlugin implementation | 97 | #endregion IPlugin implementation |
diff --git a/OpenSim/Grid/AssetInventoryServer/Plugins/OpenSim/OpenSimInventoryStoragePlugin.cs b/OpenSim/Grid/AssetInventoryServer/Plugins/OpenSim/OpenSimInventoryStoragePlugin.cs index 2f5d2ca..1ead422 100644 --- a/OpenSim/Grid/AssetInventoryServer/Plugins/OpenSim/OpenSimInventoryStoragePlugin.cs +++ b/OpenSim/Grid/AssetInventoryServer/Plugins/OpenSim/OpenSimInventoryStoragePlugin.cs | |||
@@ -815,6 +815,7 @@ namespace OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim | |||
815 | catch (Exception e) | 815 | catch (Exception e) |
816 | { | 816 | { |
817 | m_log.WarnFormat("[OPENSIMINVENTORYSTORAGE]: Failure loading data plugin: {0}", e.ToString()); | 817 | m_log.WarnFormat("[OPENSIMINVENTORYSTORAGE]: Failure loading data plugin: {0}", e.ToString()); |
818 | throw new PluginNotInitialisedException(Name); | ||
818 | } | 819 | } |
819 | } | 820 | } |
820 | 821 | ||
@@ -839,7 +840,7 @@ namespace OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim | |||
839 | 840 | ||
840 | public string Name | 841 | public string Name |
841 | { | 842 | { |
842 | get { return "AssetInventoryServer OpenSim inventory storage provider"; } | 843 | get { return "OpenSimInventoryStorage"; } |
843 | } | 844 | } |
844 | 845 | ||
845 | #endregion IPlugin implementation | 846 | #endregion IPlugin implementation |
diff --git a/OpenSim/Grid/AssetInventoryServer/Plugins/ReferenceFrontendPlugin.cs b/OpenSim/Grid/AssetInventoryServer/Plugins/ReferenceFrontendPlugin.cs index af10393..f411127 100644 --- a/OpenSim/Grid/AssetInventoryServer/Plugins/ReferenceFrontendPlugin.cs +++ b/OpenSim/Grid/AssetInventoryServer/Plugins/ReferenceFrontendPlugin.cs | |||
@@ -87,7 +87,7 @@ namespace OpenSim.Grid.AssetInventoryServer.Plugins | |||
87 | 87 | ||
88 | public string Name | 88 | public string Name |
89 | { | 89 | { |
90 | get { return "AssetInventoryServer Reference asset frontend"; } | 90 | get { return "ReferenceFrontend"; } |
91 | } | 91 | } |
92 | 92 | ||
93 | #endregion IPlugin implementation | 93 | #endregion IPlugin implementation |
diff --git a/OpenSim/Grid/AssetInventoryServer/Plugins/Simple/SimpleAssetStoragePlugin.cs b/OpenSim/Grid/AssetInventoryServer/Plugins/Simple/SimpleAssetStoragePlugin.cs index 26c34e9..4e5526b 100644 --- a/OpenSim/Grid/AssetInventoryServer/Plugins/Simple/SimpleAssetStoragePlugin.cs +++ b/OpenSim/Grid/AssetInventoryServer/Plugins/Simple/SimpleAssetStoragePlugin.cs | |||
@@ -229,7 +229,7 @@ namespace OpenSim.Grid.AssetInventoryServer.Plugins.Simple | |||
229 | 229 | ||
230 | public string Name | 230 | public string Name |
231 | { | 231 | { |
232 | get { return "AssetInventoryServer Simple asset storage provider"; } | 232 | get { return "SimpleAssetStorage"; } |
233 | } | 233 | } |
234 | 234 | ||
235 | #endregion IPlugin implementation | 235 | #endregion IPlugin implementation |
diff --git a/OpenSim/Grid/AssetInventoryServer/Plugins/Simple/SimpleInventoryStoragePlugin.cs b/OpenSim/Grid/AssetInventoryServer/Plugins/Simple/SimpleInventoryStoragePlugin.cs index fee8837..a48be2e 100644 --- a/OpenSim/Grid/AssetInventoryServer/Plugins/Simple/SimpleInventoryStoragePlugin.cs +++ b/OpenSim/Grid/AssetInventoryServer/Plugins/Simple/SimpleInventoryStoragePlugin.cs | |||
@@ -619,7 +619,7 @@ namespace OpenSim.Grid.AssetInventoryServer.Plugins.Simple | |||
619 | 619 | ||
620 | public string Name | 620 | public string Name |
621 | { | 621 | { |
622 | get { return "AssetInventoryServer Simple inventory storage provider"; } | 622 | get { return "SimpleInventoryStorage"; } |
623 | } | 623 | } |
624 | 624 | ||
625 | #endregion IPlugin implementation | 625 | #endregion IPlugin implementation |
diff --git a/bin/AssetInventoryServer.ini.example b/bin/AssetInventoryServer.ini.example index a004818..619495c 100644 --- a/bin/AssetInventoryServer.ini.example +++ b/bin/AssetInventoryServer.ini.example | |||
@@ -101,12 +101,12 @@ frontends = ReferenceFrontend,OpenSimAssetFrontend,OpenSimInventoryFrontend,Brow | |||
101 | 101 | ||
102 | ; The database provider determines which database to use. Any database backend | 102 | ; The database provider determines which database to use. Any database backend |
103 | ; supported by OpenSim is supported. | 103 | ; supported by OpenSim is supported. |
104 | ;asset_database_provider = "OpenSim.Data.SQLite.dll" | 104 | asset_database_provider = "OpenSim.Data.SQLite.dll" |
105 | asset_database_provider = "OpenSim.Data.MySQL.dll" | 105 | ;asset_database_provider = "OpenSim.Data.MySQL.dll" |
106 | ;asset_database_provider = "OpenSim.Data.NHibernate.dll" | 106 | ;asset_database_provider = "OpenSim.Data.NHibernate.dll" |
107 | 107 | ||
108 | ;inventory_database_provider = "OpenSim.Data.SQLite.dll" | 108 | inventory_database_provider = "OpenSim.Data.SQLite.dll" |
109 | inventory_database_provider = "OpenSim.Data.MySQL.dll" | 109 | ;inventory_database_provider = "OpenSim.Data.MySQL.dll" |
110 | ;inventory_database_provider = "OpenSim.Data.NHibernate.dll" | 110 | ;inventory_database_provider = "OpenSim.Data.NHibernate.dll" |
111 | 111 | ||
112 | ; Database connection string used by the OpenSim MySQL backend. If these lines | 112 | ; Database connection string used by the OpenSim MySQL backend. If these lines |
@@ -117,12 +117,12 @@ inventory_database_provider = "OpenSim.Data.MySQL.dll" | |||
117 | ; modification. | 117 | ; modification. |
118 | 118 | ||
119 | ; For SQLite | 119 | ; For SQLite |
120 | ;asset_database_connect = "URI=file:Asset.db,version=3" | 120 | asset_database_connect = "URI=file:Asset.db,version=3" |
121 | ;inventory_database_connect = "URI=file:Inventory.db,version=3" | 121 | inventory_database_connect = "URI=file:Inventory.db,version=3" |
122 | 122 | ||
123 | ; For MySQL | 123 | ; For MySQL |
124 | asset_database_connect = "Server=localhost; Database=opensim; User=changeme; Password=changeme;" | 124 | ;asset_database_connect = "Server=localhost; Database=opensim; User=changeme; Password=changeme;" |
125 | inventory_database_connect = "Server=localhost; Database=opensim; User=changeme; Password=changeme;" | 125 | ;inventory_database_connect = "Server=localhost; Database=opensim; User=changeme; Password=changeme;" |
126 | 126 | ||
127 | ; For NHibernate | 127 | ; For NHibernate |
128 | ;asset_database_connect = "SQLiteDialect;SQLite20Driver;Data Source=file:Asset.db;Version=3" | 128 | ;asset_database_connect = "SQLiteDialect;SQLite20Driver;Data Source=file:Asset.db;Version=3" |