Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
8f6f6a1
remove unused declaratives
dominiqueplante Dec 23, 2012
e57641d
refactoring - move code to output on all open channels to its own method
dominiqueplante Dec 23, 2012
cd39647
test harness now outputs information on all virtual hosts
dominiqueplante Dec 23, 2012
43dfdc3
rename methods, make it easy to prompt for parameters or use default …
dominiqueplante Dec 23, 2012
a7dc658
remove commented out code
dominiqueplante Dec 23, 2012
178495d
create and use class containing all parameters to create a HareDuClient
dominiqueplante Dec 23, 2012
9efb321
move code related to virtual hosts into correct region
dominiqueplante Dec 23, 2012
142853e
wrap code with appropriate regions
dominiqueplante Dec 23, 2012
cd589ef
Add more explicit and verbose output around virtual host output
dominiqueplante Dec 23, 2012
026bad1
prompt for a virtual host to delete
dominiqueplante Dec 23, 2012
87d71d4
prompt for a virtual host to delete
dominiqueplante Dec 23, 2012
93eba2c
add a simple markdown-flavored readme
dominiqueplante Dec 23, 2012
e4c9761
add a simple markdown-flavored readme
dominiqueplante Dec 23, 2012
1000aad
Merge remote-tracking branch 'origin/master'
dominiqueplante Dec 23, 2012
12d4786
wrap api/whoami
dominiqueplante Dec 23, 2012
564c218
wrap api/whoami
dominiqueplante Dec 23, 2012
da3e868
add basic support for api/permissions
dominiqueplante Dec 23, 2012
194a4d7
add basic support for api/permissions
dominiqueplante Dec 23, 2012
e0ae613
Merge remote-tracking branch 'remote/master'
dominiqueplante Dec 23, 2012
abeb48b
clean up for merge
dominiqueplante Dec 23, 2012
c5e0227
add basic support for api/overview
dominiqueplante Dec 24, 2012
10b2191
add basic support for api/overview
dominiqueplante Dec 24, 2012
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
HareDu
======

HareDu is a .NET based library that consumes the RabbitMQ REST API, which is itself used to manage and monitor a RabbitMQ server or cluster.

Assumptions
===========
You have RabbitMQ running in some environment.
You know the port URL and port to access the RabbitMQ REST API you want to interact with
You know some valid credentials to communite with the RabbitMQ REST API (by default user id:guest, password: guest works)
220 changes: 178 additions & 42 deletions src/HareDu.TestHarness/Program.cs
Original file line number Diff line number Diff line change
@@ -1,56 +1,192 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Reflection;
using System.Threading.Tasks;
using HareDu.Model;

namespace HareDu.TestHarness
{
using Model;

class Program
internal class Program
{
static void Main(string[] args)
private static void Main(string[] args)
{
Console.WriteLine("HareDu Test Harness");
string url;
string username;
string password;
string hostToDelete;
const int port = 55672;
const bool promptForParameters = true;
if (promptForParameters)
{
Console.Write("URL: ");
url = Console.ReadLine();

Console.Write("Username: ");
username = Console.ReadLine();

Console.Write("Password: ");
password = Console.ReadLine();

Console.Write("Host To Delete: ");
hostToDelete = Console.ReadLine();
}
else
{
url = "http://localhost";
username = "guest";
password = "guest";
}

var hareDuClientParameters = new HareDuClientParameters(url, port, username, password);

DumpInfoToConsole(hareDuClientParameters);

deleteVirtualHost(hareDuClientParameters, hostToDelete);
}

private static void DumpInfoToConsole(HareDuClientParameters hareDuClientParameters)
{
Console.Write("URL: ");
string url = Console.ReadLine();
Console.Write("Username: ");
string username = Console.ReadLine();
Console.Write("Password: ");
string password = Console.ReadLine();
outputOverviewInfo(hareDuClientParameters);

outputWhoAmIInfo(hareDuClientParameters);

outputPermissionInfo(hareDuClientParameters);

url = "http://localhost";
var client = new HareDuClient(url, 55672, username, password);
outputVirtualHostInfo(hareDuClientParameters);

outputOpenChannelInfo(hareDuClientParameters);
}

private static void outputOverviewInfo(HareDuClientParameters hareDuClientParameters)
{
Console.WriteLine("************ Overview *************");
var client = CreateHareDuClient(hareDuClientParameters);
var myrequestTask = client.Overview();
var responseTask = myrequestTask.ContinueWith((requestTask) =>
{
HttpResponseMessage response = requestTask.Result;
response.EnsureSuccessStatusCode();

var r = response.GetResponse<Overview>();
Console.WriteLine(r.queue_totals.messages);
});
responseTask.Wait();
}

private static void outputWhoAmIInfo(HareDuClientParameters hareDuClientParameters)
{
Console.WriteLine("************ WhoAmI *************");
var client = CreateHareDuClient(hareDuClientParameters);
var myrequestTask = client.WhoAmI();
var responseTask = myrequestTask.ContinueWith((requestTask) =>
{
HttpResponseMessage response = requestTask.Result;
response.EnsureSuccessStatusCode();

var r = response.GetResponse<WhoAmI>();
Console.WriteLine("Name:" + r.Name);
Console.WriteLine("Tags:" + r.Tags);
Console.WriteLine("AuthBackend:" + r.AuthBackend);
});
responseTask.Wait();
}

private static void outputPermissionInfo(HareDuClientParameters hareDuClientParameters)
{
Console.WriteLine("************ API/PERMISSIONS *************");
var client = CreateHareDuClient(hareDuClientParameters);
var myrequestTask = client.Permissions();
var responseTask = myrequestTask.ContinueWith((requestTask) =>
{
HttpResponseMessage response = requestTask.Result;
response.EnsureSuccessStatusCode();

var r = response.GetResponse < IEnumerable<Permission>>();
foreach (var permission in r )
{
Console.WriteLine("-------------------");
Console.WriteLine("START");
Console.WriteLine("User:" + permission.User);
Console.WriteLine("Virtual Host:" + permission.VirtualHost);
Console.WriteLine("Configure:" + permission.Configure);
Console.WriteLine("Write:" + permission.Write);
Console.WriteLine("Read:" + permission.Read);
Console.WriteLine("END");

}
});
responseTask.Wait();
}

private static HareDuClient CreateHareDuClient(HareDuClientParameters hareDuClientParameters)
{
var client = new HareDuClient(hareDuClientParameters.Url, hareDuClientParameters.Port,
hareDuClientParameters.Username, hareDuClientParameters.Password);
return client;
}

private static void deleteVirtualHost(HareDuClientParameters hareDuClientParameters, string hostToDelete)
{
if (string.IsNullOrWhiteSpace(hostToDelete))
{
Console.WriteLine("No virtual host to delete specified - deleting skipped");
return;
}
var client = CreateHareDuClient(hareDuClientParameters);
var requestTask = client.DeleteVirtualHost(hostToDelete);
var responseTask = requestTask.ContinueWith(x =>
{
HttpResponseMessage response = x.Result;
Console.WriteLine("response.IsSuccessStatusCode" +
response.IsSuccessStatusCode);
});
responseTask.Wait();
}

public static void outputVirtualHostInfo(HareDuClientParameters hareDuClientParameters)
{
Console.WriteLine("************ VIRTUAL HOSTS *************");
var client = CreateHareDuClient(hareDuClientParameters);
var requestTask = client.GetListOfVirtualHosts();
var responseTask = requestTask.ContinueWith(x =>
{
var response = x.Result;

foreach (
var virtualHost in
response.GetResponse<IEnumerable<VirtualHost>>()
)
{
Console.WriteLine("-------------------");
Console.WriteLine("START");
Console.WriteLine("Virtual Host Name:" +
virtualHost.Name);
Console.WriteLine("Virtual Host tracingflag: " +
virtualHost.Tracing);
Console.WriteLine("END");
}
});
responseTask.Wait();
}

public static void outputOpenChannelInfo(HareDuClientParameters hareDuClientParameters)
{
Console.WriteLine("************ Open Channels *************");
var client = CreateHareDuClient(hareDuClientParameters);
var requestTask = client.GetListOfAllOpenChannels();
var responseTask = requestTask.ContinueWith(x =>
{
var response = x.Result;

foreach (var channel in response.GetResponse<IEnumerable<Channel>>())
{
Console.WriteLine(channel.Name);
Console.WriteLine(channel.Node);
}
});
var responseTask = requestTask.ContinueWith(x =>
{
var response = x.Result;

foreach (
var channel in
response.GetResponse<IEnumerable<Channel>>())
{
Console.WriteLine(channel.Name);
Console.WriteLine(channel.Node);
}
});
responseTask.Wait();
//Task.Factory.StartNew(() => requestTask);
//Task.Factory.StartNew(() => responseTask);
//.Result.Content.ReadAsAsync<IEnumerable<Channel>>().Result;

//foreach (var channelInfo in channels)
//{
// Console.WriteLine(channelInfo.MessageStats.Published);
// Console.WriteLine(channelInfo.MessageStats.Acknowledged);
// Console.WriteLine(channelInfo.MessageStats.Delivered);
// Console.WriteLine(channelInfo.MessageStats.DeliveredOrGet);
// Console.WriteLine(channelInfo.MessageStats.Unacknowledged);
// Console.WriteLine(channelInfo.MessageStats.Unconfirmed);
// Console.WriteLine(channelInfo.MessageStats.Uncommitted);
// Console.WriteLine(channelInfo.MessageStats.AcknowledgesUncommitted);
//}
}
}
}
5 changes: 5 additions & 0 deletions src/HareDu/HareDu.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@
<Compile Include="Contracts\CreateExchangeArgs.cs" />
<Compile Include="Extensions\HttpExtensions.cs" />
<Compile Include="HareDuBase.cs" />
<Compile Include="HareDuClientParameters.cs" />
<Compile Include="Internal\CreateExchangeArgsImpl.cs" />
<Compile Include="Model\Channel.cs" />
<Compile Include="HareDuClient.cs" />
Expand All @@ -68,6 +69,10 @@
<Compile Include="Model\ExchangeRoutingType.cs" />
<Compile Include="Model\MessageStats.cs" />
<Compile Include="Extensions\PrimitiveValueExtensions.cs" />
<Compile Include="Model\Overview.cs" />
<Compile Include="Model\Permission.cs" />
<Compile Include="Model\VirtualHost.cs" />
<Compile Include="Model\WhoAmI.cs" />
<Compile Include="Model\Queue.cs" />
<Compile Include="Model\UserPermissions.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
Expand Down
35 changes: 34 additions & 1 deletion src/HareDu/HareDuClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,41 @@ public HareDuClient(string hostUrl, int port, string username, string password)
{
}

#region api/overview

public Task<HttpResponseMessage> Overview()
{
return Get("api/overview");
}

#endregion

#region api/whoami

public Task<HttpResponseMessage> WhoAmI()
{
return Get("api/whoami");
}

#endregion

#region Permissions

public Task<HttpResponseMessage> Permissions()
{
return Get("api/permissions");
}

#endregion

#region Connectivity

//old
public Task<HttpResponseMessage> GetListOfAllOpenConnections()
{
return Get("api/connections");
}

public Task<HttpResponseMessage> GetListOfAllOpenConnections(CancellationToken cancellationToken =
default(CancellationToken))
{
Expand Down Expand Up @@ -270,7 +303,7 @@ public virtual Task<HttpResponseMessage> DeleteQueue(string virtualHostName, str
return cancellationToken == default(CancellationToken) ? Delete(url) : Delete(url, cancellationToken);
}

#endregion
#endregion

#region Exchanges

Expand Down
38 changes: 38 additions & 0 deletions src/HareDu/HareDuClientParameters.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
namespace HareDu
{
public class HareDuClientParameters
{
private readonly string _url;
private readonly int _port;
private readonly string _username;
private readonly string _password;

public HareDuClientParameters(string url, int port, string username, string password)
{
_url = url;
_port = port;
_username = username;
_password = password;
}

public string Url
{
get { return _url; }
}

public int Port
{
get { return _port; }
}

public string Username
{
get { return _username; }
}

public string Password
{
get { return _password; }
}
}
}
Loading