2023

Slowly starting a new year, and with that new paths and goals.

Six year pause and a lot of new adventures, challenges and goal set. Plan now is to take them one-by-one and just go at them. One of these goals is to be a better writer and experience with thought organization and presentation. No better way to do that that just work at it.

Some updated goals for this site are to focus on technical aspects. When I started this blog, there was no Kubernetes and the entire industry looked quite different. Now we are moving into more modular and smaller services that will be broken down into discrete components, managed by different teams. Not like the old IBM or Cisco models that was a one-stop-shop.

Learning the new stack and navigating it is more challenging as there is no prescribed path that is easy to follow. This blog is an instrument that I am using to collect and publish my findings along this path. I also want to share other topics in travel, nature and adventures that are there to inspire and add to the narrative of this blog.

REST API on F5 with Transactions

It’s possible to group commands together and then have the F5 process them, if one fails, then the config is rolled back the the transaction in voided.  Here’s an example from the documentation:

Create a transaction that will group commands together:

POST https://192.168.25.42/mgmt/tm/transaction

Then the POST with the transaction ID:

POST https://192.168.25.42/mgmt/tm/ltm/poolX-F5-REST-Coordination-Id:1389812351{   "name":"tcb-xact-pool",   "members": [ {"name":"192.168.25.32:80","description":"First pool for transactions"} ]}

Commit transaction:

PATCH https://localhost/mgmt/tm/transaction/1389812351{ "state":"VALIDATING” }

F5 301B LTM Review

As part of work, I need to keep up with certification exams and stay current.  While I dislike exams, it’s part of the job and I do learn new things especially during the exam when I stumble upon a question that forces me to learn something and may even cost me the passing mark.

The LTM-B is the second part exam, while I originally took it a while back, I was up for re-certification and had my notes from back then that I review.

To note the exam is based on 12.2, so keep that in mind as some of the questions are dated and newer released fix the issues presented.

Some things to know:

  • Alerting and reporting
  • AVR
  • HA
  • iRules – you should have a good understanding of TCL and the event model used on F5
  • HTTP and headers
  • How connections flow and persistence, especially cookies

Might be worthwhile reading the old documentation from 12.2 and not the newer ones as the software is evolving quite a bit now.

PyStone

A nifty way to benchmark a machine using Python (and it’s built in)

MacAir:~ raf$ python3 /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/test/pystone.py
Pystone(1.2) time for 50000 passes = 0.614033
This machine benchmarks at 81428.9 pystones/second
MacAir:~ raf$

And my Mac Pro:

FLD-ML-00020763:GIT kruczkowski$ python3 /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/test/pystone.py
Pystone(1.2) time for 50000 passes = 0.39734
This machine benchmarks at 125837 pystones/second
FLD-ML-00020763:GIT kruczkowski$

And my new Thinkpad:

raf@thinkpad:~$ /usr/lib/python3.5/test/pystone.py
Pystone(1.2) time for 50000 passes = 0.216861
This machine benchmarks at 230562 pystones/second

Back to Python

Reviewing Python studies after a break on doing other things such as moves, work projects and life.  Here’s some of my notes from the past reviews and notebooks.

Data Objects

object.attribute
function(argument)
object.method(argument)
list = ['a', 'b', 'c']
dictionary = {'key':'value','key':'value'}
tuple = ('bob',40)
for target in object:
    statement
else:
    statement

Files

f = open ('foo.txt', 'rU')
for line in f:
    print(line),
f.close()

Classes

def myclass(mylocallist):
   print(mylocallist)

myclass(mylist)