Plugin manager generic result for use by command line or rest interface
parent
3c03418e06
commit
40828910e7
|
@ -81,7 +81,7 @@ namespace OpenSim.Server.Handlers.Integration
|
|||
{
|
||||
case "list_plugins":
|
||||
return HandleListPlugins(request);
|
||||
|
||||
|
||||
case "list_available":
|
||||
return HandleListAvailablePlugins(request);
|
||||
|
||||
|
@ -96,7 +96,7 @@ namespace OpenSim.Server.Handlers.Integration
|
|||
|
||||
case "disable_plugin":
|
||||
return HandleDisblePlugin(request);
|
||||
|
||||
|
||||
case "plugin_info":
|
||||
return HandlePluginInfo(request);
|
||||
|
||||
|
@ -114,7 +114,7 @@ namespace OpenSim.Server.Handlers.Integration
|
|||
|
||||
case "disable_repo":
|
||||
return HandleDisableRepository(request);
|
||||
|
||||
|
||||
default:
|
||||
m_log.DebugFormat(
|
||||
"[INTEGRATION HANDLER]: unknown method {0} request {1}",
|
||||
|
@ -123,8 +123,8 @@ namespace OpenSim.Server.Handlers.Integration
|
|||
);
|
||||
return FailureResult ("IntegrationHandler: Unrecognized method requested!");
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
m_log.DebugFormat("[INTEGRATION HANDLER]: Exception {0}", e);
|
||||
}
|
||||
|
|
|
@ -29,6 +29,7 @@ using System;
|
|||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Reflection;
|
||||
using System.Linq;
|
||||
using OpenSim.Server.Base;
|
||||
using OpenSim.Services.Interfaces;
|
||||
using OpenSim.Framework;
|
||||
|
@ -130,12 +131,15 @@ namespace OpenSim.Services.IntegrationService
|
|||
|
||||
#region console handlers
|
||||
// Handle our console commands
|
||||
//
|
||||
// Install plugin from registered repository
|
||||
private void HandleConsoleInstallPlugin(string module, string[] cmd)
|
||||
{
|
||||
MainConsole.Instance.Output(m_PluginManager.InstallPlugin(cmd));
|
||||
return;
|
||||
}
|
||||
|
||||
// Remove installed plugin
|
||||
private void HandleConsoleUnInstallPlugin(string module, string[] cmd)
|
||||
{
|
||||
if (cmd.Length == 2)
|
||||
|
@ -145,18 +149,36 @@ namespace OpenSim.Services.IntegrationService
|
|||
return;
|
||||
}
|
||||
|
||||
// Check installed plugins **not working
|
||||
private void HandleConsoleCheckInstalledPlugin(string module, string[] cmd)
|
||||
{
|
||||
MainConsole.Instance.Output(m_PluginManager.CheckInstalled());
|
||||
return;
|
||||
}
|
||||
|
||||
// List installed plugins
|
||||
private void HandleConsoleListInstalledPlugin(string module, string[] cmd)
|
||||
{
|
||||
m_PluginManager.ListInstalledAddins();
|
||||
Dictionary<string, object> result = new Dictionary<string, object>();
|
||||
m_PluginManager.ListInstalledAddins(out result);
|
||||
|
||||
ArrayList s = new ArrayList();
|
||||
s.AddRange(result.Keys);
|
||||
s.Sort();
|
||||
|
||||
foreach (string k in s)
|
||||
{
|
||||
Dictionary<string, object> plugin = (Dictionary<string, object>)result[k];
|
||||
bool enabled = (bool)plugin["enabled"];
|
||||
MainConsole.Instance.OutputFormat("{0}) {1} {2} rev. {3}",
|
||||
k,
|
||||
enabled == true ? "[ ]" : "[X]",
|
||||
plugin["name"], plugin["version"]);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// List available plugins on registered repositories
|
||||
private void HandleConsoleListAvailablePlugin(string module, string[] cmd)
|
||||
{
|
||||
ArrayList list = m_PluginManager.ListAvailable();
|
||||
|
@ -166,18 +188,21 @@ namespace OpenSim.Services.IntegrationService
|
|||
return;
|
||||
}
|
||||
|
||||
// List available updates **not ready
|
||||
private void HandleConsoleListUpdates(string module, string[] cmd)
|
||||
{
|
||||
m_PluginManager.ListUpdates();
|
||||
return;
|
||||
}
|
||||
|
||||
// Update plugin **not ready
|
||||
private void HandleConsoleUpdatePlugin(string module, string[] cmd)
|
||||
{
|
||||
MainConsole.Instance.Output(m_PluginManager.Update());
|
||||
return;
|
||||
}
|
||||
|
||||
// Register repository
|
||||
private void HandleConsoleAddRepo(string module, string[] cmd)
|
||||
{
|
||||
if ( cmd.Length == 3)
|
||||
|
@ -187,12 +212,14 @@ namespace OpenSim.Services.IntegrationService
|
|||
return;
|
||||
}
|
||||
|
||||
// Get repository status **not working
|
||||
private void HandleConsoleGetRepo(string module, string[] cmd)
|
||||
{
|
||||
m_PluginManager.GetRepository();
|
||||
return;
|
||||
}
|
||||
|
||||
// Remove registered repository
|
||||
private void HandleConsoleRemoveRepo(string module, string[] cmd)
|
||||
{
|
||||
if (cmd.Length == 3)
|
||||
|
@ -200,7 +227,7 @@ namespace OpenSim.Services.IntegrationService
|
|||
return;
|
||||
}
|
||||
|
||||
// Enable repo
|
||||
// Enable repository
|
||||
private void HandleConsoleEnableRepo(string module, string[] cmd)
|
||||
{
|
||||
m_PluginManager.EnableRepository(cmd);
|
||||
|
@ -249,33 +276,6 @@ namespace OpenSim.Services.IntegrationService
|
|||
}
|
||||
#endregion
|
||||
|
||||
// #region web handlers
|
||||
// public byte[] HandleWebListPlugins(OSDMap request)
|
||||
// {
|
||||
// return Ux.FailureResult("Not Implemented");
|
||||
// }
|
||||
//
|
||||
// public byte[] HandleWebPluginInfo(OSDMap request)
|
||||
// {
|
||||
// return Ux.FailureResult("Not Implemented");
|
||||
// }
|
||||
//
|
||||
// public byte[] HandleWebListAvailablePlugins(OSDMap request)
|
||||
// {
|
||||
// return Ux.FailureResult("Not Implemented");
|
||||
// }
|
||||
//
|
||||
// public byte[] HandleWebInstallPlugin(OSDMap request)
|
||||
// {
|
||||
// return Ux.FailureResult("Not Implemented");
|
||||
// }
|
||||
//
|
||||
// public byte[] HandleWebUnInstallPlugin(OSDMap request)
|
||||
// {
|
||||
// return Ux.FailureResult("Not Implemented");
|
||||
// }
|
||||
// #endregion
|
||||
|
||||
#region IIntegrationService implementation
|
||||
public byte[] HandleWebListRepositories (OSDMap request)
|
||||
{
|
||||
|
@ -302,9 +302,12 @@ namespace OpenSim.Services.IntegrationService
|
|||
return Ux.FailureResult("Not Implemented");
|
||||
}
|
||||
|
||||
public byte[] HandleWebListPlugins (OSDMap request)
|
||||
public byte[] HandleWebListPlugins(OSDMap request)
|
||||
{
|
||||
return Ux.FailureResult("Not Implemented");
|
||||
Dictionary<string, object> result = new Dictionary<string, object>();
|
||||
m_PluginManager.ListInstalledAddins(out result);
|
||||
string json = LitJson.JsonMapper.ToJson(result);
|
||||
return Ux.DocToBytes(json);
|
||||
}
|
||||
|
||||
public byte[] HandleWebPluginInfo (OSDMap request)
|
||||
|
|
|
@ -101,6 +101,11 @@ namespace OpenSim.Services.IntegrationService
|
|||
{
|
||||
return Encoding.UTF8.GetBytes(OSDParser.SerializeJsonString(doc));
|
||||
}
|
||||
|
||||
public static byte[] DocToBytes(string json)
|
||||
{
|
||||
return Encoding.UTF8.GetBytes(json);
|
||||
}
|
||||
#endregion web utils
|
||||
|
||||
#region config utils
|
||||
|
|
|
@ -35,7 +35,6 @@ using Mono.Addins;
|
|||
using Mono.Addins.Setup;
|
||||
using Mono.Addins.Description;
|
||||
using OpenSim.Framework;
|
||||
|
||||
using Ux = OpenSim.Services.IntegrationService.IUtils;
|
||||
|
||||
namespace OpenSim.Services.IntegrationService
|
||||
|
@ -65,12 +64,12 @@ namespace OpenSim.Services.IntegrationService
|
|||
AddinRepositoryEntry[] available = GetSortedAvailbleAddins();
|
||||
|
||||
int n = Convert.ToInt16(args[1]);
|
||||
if (n > (available.Length -1))
|
||||
if (n > (available.Length - 1))
|
||||
{
|
||||
MainConsole.Instance.Output("Selection out of range");
|
||||
return "Error";
|
||||
}
|
||||
|
||||
|
||||
AddinRepositoryEntry aentry = available[n];
|
||||
|
||||
Package p = Package.FromRepository(aentry);
|
||||
|
@ -78,9 +77,13 @@ namespace OpenSim.Services.IntegrationService
|
|||
|
||||
ResolveDependencies(ps, pack, out toUninstall, out unresolved);
|
||||
|
||||
if(Install(ps, pack) == true)
|
||||
// Attempt to install the plugin disabled
|
||||
if (Install(ps, pack) == true)
|
||||
{
|
||||
m_Registry.Update(ps);
|
||||
Addin addin = m_Registry.GetAddin(aentry.Addin.Id);
|
||||
m_Registry.DisableAddin(addin.Id);
|
||||
addin.Enabled = false;
|
||||
return "Install";
|
||||
}
|
||||
else
|
||||
|
@ -116,20 +119,26 @@ namespace OpenSim.Services.IntegrationService
|
|||
}
|
||||
|
||||
// List instaled addins
|
||||
public void ListInstalledAddins()
|
||||
public void ListInstalledAddins(out Dictionary<string, object> result)
|
||||
{
|
||||
Addin[] addins = GetSortedAddinList("IntegrationPlugin");
|
||||
Dictionary<string, object> res = new Dictionary<string, object>();
|
||||
|
||||
MainConsole.Instance.Output("Installed Plugins");
|
||||
Addin[] addins = GetSortedAddinList("IntegrationPlugin");
|
||||
|
||||
int count = 0;
|
||||
foreach (Addin addin in addins)
|
||||
{
|
||||
MainConsole.Instance.OutputFormat("{0}) {1} {2} rev. {3}", count.ToString(),
|
||||
addin.Enabled == false ? "[X]" : "[ ]",
|
||||
addin.Name, addin.Version );
|
||||
Dictionary<string, object> r = new Dictionary<string, object>();
|
||||
r["enabled"] = addin.Enabled == true ? true : false;
|
||||
r["name"] = addin.LocalId;
|
||||
r["version"] = addin.Version;
|
||||
|
||||
res.Add(count.ToString(), r);
|
||||
|
||||
count++;
|
||||
}
|
||||
|
||||
result = res;
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -158,7 +167,7 @@ namespace OpenSim.Services.IntegrationService
|
|||
Repositories.UpdateAllRepositories (ps);
|
||||
Console.WriteLine ("Available add-in updates:");
|
||||
bool found = false;
|
||||
AddinRepositoryEntry[] entries = Repositories.GetAvailableUpdates ();
|
||||
AddinRepositoryEntry[] entries = Repositories.GetAvailableUpdates();
|
||||
|
||||
foreach (AddinRepositoryEntry entry in entries)
|
||||
{
|
||||
|
@ -367,7 +376,7 @@ namespace OpenSim.Services.IntegrationService
|
|||
}
|
||||
|
||||
// These will let us deal with numbered lists instead
|
||||
// of needing to type in the full ids
|
||||
// of needing to type in the full ids
|
||||
private AddinRepositoryEntry[] GetSortedAvailbleAddins()
|
||||
{
|
||||
ArrayList list = new ArrayList();
|
||||
|
|
Loading…
Reference in New Issue