Note to self: F5 config editing

F5 LTM has a very cool web interface, but when it comes to bulk- editing or copying the cli is the fastest.

Config location
/config/bigip.conf
/config/partition/partitionname/bigip.conf

Verify config
tmsh load sys config verify partitions all

Load config
tmsh load sys config partitions all.

Factor Exponent Prefix

---------------------------------------------------
1 000 000 000 000 000 000 000 000...10^24....yotta
1 000 000 000 000 000 000 000...10^21....zetta
1 000 000 000 000 000 000...10^18....exa
1 000 000 000 000 000...10^15....peta
1 000 000 000 000...10^12....tera
1 000 000 000...10^9.....giga
1 000 000...10^6.....mega
1 000...10^3.....kilo
100...10^2.....hecto
10...10^1.....deka
0.1...10^-1....deci
0.01...10^-2....centi
0.001...10^-3....milli
0.000 001...10^-6....micro
0.000 000 001...10^-9....nano
0.000 000 000 001...10^-12...pico
0.000 000 000 000 001...10^-15...femto
0.000 000 000 000 000 001...10^-18...atto
0.000 000 000 000 000 000 001...10^-21...zepto
0.000 000 000 000 000 000 000 001...10^-24...yocto
---------------------------------------------------

.

OnApp API .NET Wrapper

OnAppI needed to interface the OnApp API at some of our installments at Solido Hosting. Sadly there is no official .NET wrapper to the API so I decided to make my own.

By design OnApp returns two-dimensional records-sets making .NET de-serialization a bit messy.

Currently its supporting the following methods:

  • Virtual Machines
  • Hypervisor
  • Hypervisor Groups
  • Image Template
  • Logs
  • Transactions
  • Network

Check it out on my Github page

Samples:

List: 

           
Client.Instance.Host = "http://controlpanel/";
Client.Instance.Username = "admin";
Client.Instance.Password = "changeme";

Console.WriteLine("");
Console.WriteLine("VIRTUAL MACHINES");
Console.WriteLine("-----------");
var virtualMachines = new VirtualMachine();

var machines = virtualMachines.GetAll();
foreach (var h in machines)
{
    Console.WriteLine(h.Id + " - " + h.Label + " - " + h.Built + " - " + h.Booted);
}

Console.WriteLine("");
Console.WriteLine("HYPERVISORS GROUPS");
Console.WriteLine("-----------");
var hypervisorGroup = new HypervisorGroup();
foreach (var h in hypervisorGroup.GetAll())
{

    Console.WriteLine(h.Id + " - " + h.Label);

    Console.WriteLine("- Members in group");
    foreach (var hyper in h.GetHypervisorsInZone())
    {
        Console.WriteLine("- " + hyper.Id + " - " + hyper.Label);
    }
}

Console.WriteLine("");
Console.WriteLine("HYPERVISORS");
Console.WriteLine("-----------");
var hypervisors = new Hypervisor();
foreach (var h in hypervisors.GetAll())
{

    Console.WriteLine(h.Id + " - " + h.Label);
}

Console.WriteLine("");
Console.WriteLine("DATA STORES");
Console.WriteLine("-----------");
var datastores = new DataStoreGroup();

foreach (var d in datastores.GetAll())
{
    Console.WriteLine(d.Id + " - " + d.Label);
}

Console.WriteLine("");
Console.WriteLine("NETWORK");
Console.WriteLine("-----------");
var networks = new Network();

foreach (var n in networks.GetAll())
{
    Console.WriteLine(n.Id + " - " + n.Label);
}

Check it out on my Github page.