[prev in list] [next in list] [prev in thread] [next in thread] 

List:       cisco-voip
Subject:    Re: [cisco-voip] Consolidating access to Cisco CUCM APIs via Service Mesh
From:       Pete Brown <jpb () chykn ! com>
Date:       2020-06-17 23:41:11
Message-ID: BN6PR05MB2866269AD6237B59FFF30D98BA9A0 () BN6PR05MB2866 ! namprd05 ! prod ! outlook ! com
[Download RAW message or body]

[Attachment #2 (text/plain)]

Stephen, good to hear from you.  Thanks for the advice, will focus on device \
inventories to begin with.  But don't be surprised if I have to ping you off list for \
a little guidance.  Again.  😉

I forgot that I already have a presentation planned on July 7th.  It's being hosted \
by DevMemphis, but anyone is welcome to join.  I'll try to make it as engineer \
friendly as possible. \
https://www.meetup.com/memphis-technology-user-groups/events/wvmklrybckbkb/

We've been using this specific mesh in production for a little while now.  So far the \
app owners seem to love it; makes their lives much easier when it comes to automating \
infrastructure changes.  And we don't have to give them direct access to all the \
backend systems, so that's a plus!

-Pete

From: Stephen Welsh<mailto:stephen.welsh@unifiedfx.com>
Sent: Wednesday, June 17, 2020 12:55 PM
To: Pete Brown<mailto:jpb@chykn.com>
Cc: Pawlowski, Adam<mailto:ajp26@buffalo.edu>; Anthony \
Holloway<mailto:avholloway+cisco-voip@gmail.com>; \
                cisco-voip@puck.nether.net<mailto:cisco-voip@puck.nether.net>
Subject: Re: [cisco-voip] Consolidating access to Cisco CUCM APIs via Service Mesh

Hi All,

Just noticed this thread, been busy drinking the cool-aid of dotnet core recently ;)

Pete, as always, great work, it's never a simple project you end up chewing on ;)
Only had a brief look, but that is a big problem you are solving and looks like a \
powerful approach that has legs. I guess my main suggestion would be to start with \
one area first, i.e. asset/inventory or configuration management/provisioning etc. \
Like Anthony I have little to no knowledge of service meshes, so yes if you are kind \
enough to share some knowledge I'm down.

Anthony, thank you for highlighting AutomationFX, hope all is well.

Adam, no worries, happy to have a wee call to take you through \
PhoneView/AutomationFX, although it may help me more than you I suspect ;)

In terms of AutomationFX (the API side we brand as AutomationFX SDK) I'd class it as \
middleware, consolidating the varied and complex UCM integrations into a \
single/simple REST API and using web hooks for eventing. So where possible trying to \
normalise to a very pervasive API pattern to maximise developer reach. In addition we \
have some plans on a UI (beyond swagger) that should provide a suitable balance \
between complexity and flexibility that should be acceptable for UC engineers with \
minimal dev experience.

As AutomationFX is built on .Net (moving to dotnet core ;) it already has and uses \
SignalR (a Microsoft wrapper on Web Sockets) and therefore capable of realtime events \
without the need to register web hooks. However I've not come across a common pattern \
for real-time/eventing api's beyond web hooks so-far that I want to explore yet. The \
dotnet core version of SignalR has quite an impressive set of capabilities, including \
streaming support, so may look at a way to leverage that at some point in the future \
for developer access.

One of the key areas we are focusing on with AutomationFX is JTAPI as that has the \
greatest middleware benefit and has very careful scaling considerations on larger \
systems. In addition JTAPI is incredibly chatty, 10+ events for a single call etc. so \
we have also figured out how to consolidate events to reduce the chatter without \
compromising latency.

We believe testing (not just with hard phones) is something that will be more \
important moving forward as complexity increases with more integrated services and \
hybrid deployments etc.

Thanks

Stephen Welsh
Founder & CTO
UnifiedFX

On 17 Jun 2020, at 17:24, Pete Brown <jpb@chykn.com<mailto:jpb@chykn.com>> wrote:

That's a respectable amount of work you've put into that!  One of the reasons I'm \
taking the service mesh route is to maximize reusability of existing code like yours. \
I spent years writing Perl scripts for ETL and automation functions.  I wouldn't say \
that time was "wasted" because it got the job done, but now most of those scripts are \
useless.  They weren't written in a way that allowed their functions to be called by \
other processes.

Last night I spent a few hours trying to find a quick intro on service meshes & API \
gateways.  Most assumed a bit of development experience; couldn't find anything that \
would be useful for most UC folks.  I wouldn't mind throwing a presentation together \
if someone has a BrightTalk account.  And there's interest, of course!

-Pete


From: Pawlowski, Adam<mailto:ajp26@buffalo.edu>
Sent: Tuesday, June 16, 2020 7:55 PM
To: Anthony Holloway<mailto:avholloway+cisco-voip@gmail.com>; Pete \
                Brown<mailto:jpb@chykn.com>
Cc: cisco-voip@puck.nether.net<mailto:cisco-voip@puck.nether.net>
Subject: RE: [cisco-voip] Consolidating access to Cisco CUCM APIs via Service Mesh

This is more or less what I had been doing internally at a very primitive level, and \
its been very valuable but quickly consuming of a ton of time to try and account for \
the items and interactions between them.  I have to more or less abandon Ruby at this \
point given that gems are not being updated and things are starting to be a problem \
to maintain for me, oh well.

The Ruby gem I coked up abstracts a user object with details pulled from LDAP, UCM, \
Unity Connection, and lets me interface with local resources or write simple reports. \
It is what I used to write a basic CSV Jabber import (stripped way down to just \
basically AXL) tool, though no one took me up on it for import over BAT. I think \
they're nuts to use that.

I am still unclear on what a service mesh is, but, my overall vision was to have some \
sort of abstracted layer that monitors some level of object history, but allowed me \
to tether business rules and systems to actions in the data systems. It became pretty \
quickly obvious a job engine, call brokering and buffering, intermediate database \
with reconciliation and clean up jobs, etc would be needed on top of trying to define \
the way the objects actually interact with each other. I don't have the time.

I did not look into AutomationFX, and I'll earn some ire for this, but, we have used \
both PhoneView and MigrationFX. PhoneView I have largely gotten past internally with \
my own tooling but it is great for the rest of the team looking to do a quick data \
dump or get some data for reporting and with it's built in data cache it's pretty \
good. MigrationFX seems to be built on top of AutomatioFX, but, while better than \
going to each phone and configuring a new one, has had a clunky interface that \
doesn't appear to be possible to secure when using older phones, at least per my \
coworkers, and I don't want to invest my efforts into that.

I'd love to see something like this, but I wonder how complicated it would have to be \
to be ubiquitously useful.

Adam

From: cisco-voip <cisco-voip-bounces@puck.nether.net<mailto:cisco-voip-bounces@puck.nether.net>> \
                On Behalf Of Anthony Holloway
Sent: Tuesday, June 16, 2020 8:34 PM
To: Pete Brown <jpb@chykn.com<mailto:jpb@chykn.com>>
Cc: cisco-voip@puck.nether.net<mailto:cisco-voip@puck.nether.net>
Subject: Re: [cisco-voip] Consolidating access to Cisco CUCM APIs via Service Mesh

Yeah....still lost.  Possibly even more than I was before.  I'll just see myself out \
now.

On Tue, Jun 16, 2020 at 6:44 PM Pete Brown <jpb@chykn.com<mailto:jpb@chykn.com>> \
wrote: Thanks for mentioning AutomationFX.  That's exactly the sort of API \
consolidation I was thinking of.  Should've guessed the guys at UnifiedFX had already \
done something along these lines!  I'll probably still build a CUCM mesh agent just \
to demo the marrying of access to objects & their associated data streams.  But it \
won't be near as complete as AutomationFX.

Wouldn't say ignorant at all.  Service meshes (Istio, etc) in their current form have \
only been around a few years.  Even most developers I talk to haven't really touched \
them beyond POCs.  Mainly due to the complexity since they all require the use of \
Kubernetes.  The concept has never really been applied to infrastructure sources \
before, especially in a vendor agnostic way.  In infrastructure we're dealing with a \
federation of loosely coupled data sets instead of something that a single \
architecture group came up with.

To answer the question of "why" regarding the mesh I'm working on, it's to eliminate \
a bunch of the common pitfalls in traditional integrations.  Instead of finding and \
calling each source directly using different client libraries, the mesh provides a \
single method of executing RPC & pub/sub operations against backend services.  You \
can even navigate the resources like a directory structure.

In this mesh, the backend services register themselves and declare their functions, \
object schemas, etc.  That's why I say it's sort of a hybrid between a service mesh \
and a data mesh; you can call service functions or search on object class attributes \
regardless of source.  Clients who need to access sources make calls to the Brokers.  \
Very roughly analogous to a "meshified" version of SNMP.

Here's a before and after of what an Ansible script might look like calling \
difference sources.


<image001.png>


Sent from Mail<https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgo.mi \
crosoft.com%2Ffwlink%2F%3FLinkId%3D550986&data=02%7C01%7C%7C55197a9c5e0042afe7c908d812 \
e79718%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637280133363097765&sdata=oboe33t%2FvUZ3Sd6uYEY%2Fo1G9ug59myyjXKtyqE1m2oM%3D&reserved=0> \
for Windows 10

From: Anthony Holloway<mailto:avholloway+cisco-voip@gmail.com>
Sent: Tuesday, June 16, 2020 3:02 PM
To: Pete Brown<mailto:jpb@chykn.com>
Cc: cisco-voip@puck.nether.net<mailto:cisco-voip@puck.nether.net>
Subject: Re: [cisco-voip] Consolidating access to Cisco CUCM APIs via Service Mesh

You lost me there, as I'm too ignorant to understand what an API mesh is, but this \
sounds very familiar to what UnifiedFX is/was doing with AutomationFX, is it not?  Or \
am I again showing my ignorance?

On Tue, Jun 16, 2020 at 12:32 PM Pete Brown <jpb@chykn.com<mailto:jpb@chykn.com>> \
wrote: TLDR – Developing a hybrid service/data mesh for interacting with \
infrastructure services.  Thinking about what a modern, consolidated API might look \
like for CUCM.

I was scheduled to give this talk at DevNet Create until everything was shut down…
https://github.com/adhdtech/DRP/blob/master/DevNet%20Create%202020%20-%20Making%20a%20 \
Mesh%20of%20the%20Infrastructure.pdf<https://eur01.safelinks.protection.outlook.com/?u \
rl=https%3A%2F%2Fgithub.com%2Fadhdtech%2FDRP%2Fblob%2Fmaster%2FDevNet%2520Create%25202 \
020%2520-%2520Making%2520a%2520Mesh%2520of%2520the%2520Infrastructure.pdf&data=02%7C01 \
%7C%7C55197a9c5e0042afe7c908d812e79718%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C63 \
7280133363107768&sdata=lJ3OIZewckxh%2BthJoN9s%2FEms6BEz%2BBznCnSdz%2FgvB%2F0%3D&reserved=0>


For the demo I had data from a few of the CUCM APIs being piped into a consolidated \
logical model.  Nothing too complex; just users, devices and associated JTAPI \
streams.  It got me to thinking, though.  If you could snap your fingers and have a \
modern, consolidated API for interacting with CUCM services, what would it look like? \
Not just RPC operations, but pub/sub as well.

I'm considering creating a mesh service agent for CUCM.  Instead of leveraging the \
existing APIs, the goal would be to effectively replace them and inject their \
capabilities into the mesh.  Before I do, I'm trying to figure out what some of the \
"must have" features would be for a POC.

The project README needs some updating, but it does give a general idea of how \
everything works.  Recently added a command shell; need to get that documented. \
https://github.com/adhdtech/DRP<https://eur01.safelinks.protection.outlook.com/?url=ht \
tps%3A%2F%2Fgithub.com%2Fadhdtech%2FDRP&data=02%7C01%7C%7C55197a9c5e0042afe7c908d812e7 \
9718%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637280133363117755&sdata=sAjnWJXNMqWQkal3BurPJKFYbeHBbyPj745XyVSUEC4%3D&reserved=0>


-Pete

_______________________________________________
cisco-voip mailing list
cisco-voip@puck.nether.net<mailto:cisco-voip@puck.nether.net>
https://puck.nether.net/mailman/listinfo/cisco-voip<https://eur01.safelinks.protection \
.outlook.com/?url=https%3A%2F%2Fpuck.nether.net%2Fmailman%2Flistinfo%2Fcisco-voip&data \
=02%7C01%7C%7C55197a9c5e0042afe7c908d812e79718%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1% \
7C0%7C637280133363127750&sdata=bXZ234UVhecvcHTNxPASPd1WiW0Eg%2FOsIqQFKeTqZPg%3D&reserved=0>



_______________________________________________
cisco-voip mailing list
cisco-voip@puck.nether.net<mailto:cisco-voip@puck.nether.net>
https://puck.nether.net/mailman/listinfo/cisco-voip<https://eur01.safelinks.protection \
.outlook.com/?url=https%3A%2F%2Fpuck.nether.net%2Fmailman%2Flistinfo%2Fcisco-voip&data \
=02%7C01%7C%7C55197a9c5e0042afe7c908d812e79718%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1% \
7C0%7C637280133363137750&sdata=MCe7KwdL%2FnOI0Vbg9gV5xE0XI6QZm5AV8vwdc4pQBdM%3D&reserved=0>



[Attachment #3 (text/html)]

<html xmlns:o="urn:schemas-microsoft-com:office:office" \
xmlns:w="urn:schemas-microsoft-com:office:word" \
xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" \
xmlns="http://www.w3.org/TR/REC-html40"> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
	{font-family:Helvetica;
	panose-1:2 11 5 4 2 2 2 2 2 4;}
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0in;
	margin-bottom:.0001pt;
	font-size:11.0pt;
	font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
span.apple-converted-space
	{mso-style-name:apple-converted-space;}
.MsoChpDefault
	{mso-style-type:export-only;}
@page WordSection1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
	{page:WordSection1;}
--></style>
</head>
<body lang="EN-US" link="blue" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">Stephen, good to hear from you.&nbsp; Thanks for the advice, \
will focus on device inventories to begin with.&nbsp; But don't be surprised if I \
have to ping you off list for a little guidance.&nbsp; Again.&nbsp; <span \
style="font-family:&quot;Segoe UI Emoji&quot;,sans-serif">&#128521;</span></p> <p \
class="MsoNormal"><o:p>&nbsp;</o:p></p> <p class="MsoNormal">I forgot that I already \
have a presentation planned on July 7th.&nbsp; It's being hosted by DevMemphis, but \
anyone is welcome to join.&nbsp; I'll try to make it as engineer friendly as \
possible.</p> <p class="MsoNormal"><a \
href="https://www.meetup.com/memphis-technology-user-groups/events/wvmklrybckbkb/">htt \
ps://www.meetup.com/memphis-technology-user-groups/events/wvmklrybckbkb/</a><o:p></o:p></p>
 <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">We've been using this specific mesh in production for a little \
while now.&nbsp; So far the app owners seem to love it; makes their lives much easier \
when it comes to automating infrastructure changes.&nbsp; And we don't have to give \
them direct access  to all the backend systems, so that's a plus!</p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">-Pete</p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<div style="mso-element:para-border-div;border:none;border-top:solid #E1E1E1 \
1.0pt;padding:3.0pt 0in 0in 0in"> <p class="MsoNormal" \
style="border:none;padding:0in"><b>From: </b><a \
href="mailto:stephen.welsh@unifiedfx.com">Stephen Welsh</a><br> <b>Sent: \
</b>Wednesday, June 17, 2020 12:55 PM<br> <b>To: </b><a \
href="mailto:jpb@chykn.com">Pete Brown</a><br> <b>Cc: </b><a \
href="mailto:ajp26@buffalo.edu">Pawlowski, Adam</a>; <a \
href="mailto:avholloway&#43;cisco-voip@gmail.com"> Anthony Holloway</a>; <a \
href="mailto:cisco-voip@puck.nether.net">cisco-voip@puck.nether.net</a><br> \
<b>Subject: </b>Re: [cisco-voip] Consolidating access to Cisco CUCM APIs via Service \
Mesh</p> </div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">Hi All, <o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal">Just noticed this thread, been busy drinking the cool-aid of \
dotnet core recently ;)<o:p></o:p></p> </div>
<div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal">Pete, as always, great work, it's never a simple project you end \
up chewing on ;)<o:p></o:p></p> </div>
<div>
<p class="MsoNormal">Only had a brief look, but that is a big problem you are solving \
and looks like a powerful approach that has legs. I guess my main suggestion would be \
to start with one area first, i.e. asset/inventory or configuration \
management/provisioning  etc.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Like Anthony I have little to no knowledge of service meshes, so \
yes if you are kind enough to share some knowledge I'm down.<o:p></o:p></p> </div>
<div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal">Anthony, thank you for highlighting AutomationFX, hope all is \
well.<o:p></o:p></p> </div>
<div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal">Adam, no worries, happy to have a wee call to take you through \
PhoneView/AutomationFX, although it may help me more than you I suspect \
;)<o:p></o:p></p> </div>
<div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal">In terms of AutomationFX (the API side we brand as AutomationFX \
SDK) I'd class it as middleware, consolidating the varied and complex UCM \
integrations into a single/simple REST API and using web hooks for eventing. So where \
possible trying  to normalise to a very pervasive API pattern to maximise developer \
reach. In addition we have some plans on a UI (beyond swagger) that should provide a \
suitable balance between complexity and flexibility that should be acceptable for UC \
engineers with minimal  dev experience.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal">As AutomationFX is built on .Net (moving to dotnet core ;) it \
already has and uses SignalR (a Microsoft wrapper on Web Sockets) and therefore \
capable of realtime events without the need to register web hooks. However I've not \
come across  a common pattern for real-time/eventing api's beyond web hooks so-far \
that I want to explore yet. The dotnet core version of SignalR has quite an \
impressive set of capabilities, including streaming support, so may look at a way to \
leverage that at some point  in the future for developer access.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal">One of the key areas we are focusing on with AutomationFX is \
JTAPI as that has the greatest middleware benefit and has very careful scaling \
considerations on larger systems. In addition JTAPI is incredibly chatty, 10&#43; \
events for a single  call etc. so we have also figured out how to consolidate events \
to reduce the chatter without compromising latency.<o:p></o:p></p> </div>
<div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal">We believe testing (not just with hard phones) is something that \
will be more important moving forward as complexity increases with more integrated \
services and hybrid deployments etc.<o:p></o:p></p> </div>
<div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal">Thanks<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal">Stephen Welsh<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Founder &amp; CTO<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">UnifiedFX<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal">On 17 Jun 2020, at 17:24, Pete Brown &lt;<a \
href="mailto:jpb@chykn.com">jpb@chykn.com</a>&gt; wrote:<o:p></o:p></p> </div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<div>
<div>
<p class="MsoNormal">That's a respectable amount of work you've put into that!&nbsp; \
One of the reasons I'm taking the service mesh route is to maximize reusability of \
existing code like yours.&nbsp; I spent years writing Perl scripts for ETL and \
automation functions.&nbsp;  I wouldn't say that time was "wasted" because it got the \
job done, but now most of those scripts are useless.&nbsp; They weren't written in a \
way that allowed their functions to be called by other processes.<o:p></o:p></p> \
</div> <div>
<p class="MsoNormal">&nbsp;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Last night I spent a few hours trying to find a quick intro on \
service meshes &amp; API gateways.&nbsp; Most assumed a bit of development \
experience; couldn't find anything that would be useful for most UC folks.&nbsp; I \
wouldn't mind throwing a presentation  together if someone has a BrightTalk \
account.&nbsp; And there's interest, of course!<o:p></o:p></p> </div>
<div>
<p class="MsoNormal">&nbsp;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">-Pete<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">&nbsp;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">&nbsp;<o:p></o:p></p>
</div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<div>
<p class="MsoNormal"><b>From:<span class="apple-converted-space">&nbsp;</span></b><a \
href="mailto:ajp26@buffalo.edu">Pawlowski, Adam</a><br> <b>Sent:<span \
class="apple-converted-space">&nbsp;</span></b>Tuesday, June 16, 2020 7:55 PM<br> \
<b>To:<span class="apple-converted-space">&nbsp;</span></b><a \
href="mailto:avholloway&#43;cisco-voip@gmail.com">Anthony Holloway</a>;<span \
class="apple-converted-space">&nbsp;</span><a href="mailto:jpb@chykn.com">Pete \
Brown</a><br> <b>Cc:<span class="apple-converted-space">&nbsp;</span></b><a \
href="mailto:cisco-voip@puck.nether.net">cisco-voip@puck.nether.net</a><br> \
<b>Subject:<span class="apple-converted-space">&nbsp;</span></b>RE: [cisco-voip] \
Consolidating access to Cisco CUCM APIs via Service Mesh<o:p></o:p></p> </div>
</div>
<div>
<p class="MsoNormal">&nbsp;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">This is more or less what I had been doing internally at a very \
primitive level, and its been very valuable but quickly consuming of a ton of time to \
try and account for the items and interactions between them. &nbsp;I have to more or \
less abandon  Ruby at this point given that gems are not being updated and things are \
starting to be a problem to maintain for me, oh well.<o:p></o:p></p> </div>
<div>
<p class="MsoNormal">&nbsp;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">The Ruby gem I coked up abstracts a user object with details \
pulled from LDAP, UCM, Unity Connection, and lets me interface with local resources \
or write simple reports. It is what I used to write a basic CSV Jabber import \
(stripped way  down to just basically AXL) tool, though no one took me up on it for \
import over BAT. I think they're nuts to use that.<o:p></o:p></p> </div>
<div>
<p class="MsoNormal">&nbsp;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">I am still unclear on what a service mesh is, but, my overall \
vision was to have some sort of abstracted layer that monitors some level of object \
history, but allowed me to tether business rules and systems to actions in the data \
systems.  It became pretty quickly obvious a job engine, call brokering and \
buffering, intermediate database with reconciliation and clean up jobs, etc would be \
needed on top of trying to define the way the objects actually interact with each \
other. I don't have the  time.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">&nbsp;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">I did not look into AutomationFX, and I'll earn some ire for \
this, but, we have used both PhoneView and MigrationFX. PhoneView I have largely \
gotten past internally with my own tooling but it is great for the rest of the team \
looking to  do a quick data dump or get some data for reporting and with it's built \
in data cache it's pretty good. MigrationFX seems to be built on top of AutomatioFX, \
but, while better than going to each phone and configuring a new one, has had a \
clunky interface that  doesn't appear to be possible to secure when using older \
phones, at least per my coworkers, and I don't want to invest my efforts into \
that.<o:p></o:p></p> </div>
<div>
<p class="MsoNormal">&nbsp;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">I'd love to see something like this, but I wonder how \
complicated it would have to be to be ubiquitously useful.<o:p></o:p></p> </div>
<div>
<p class="MsoNormal">&nbsp;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Adam<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">&nbsp;<o:p></o:p></p>
</div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<div>
<p class="MsoNormal"><b>From:</b><span \
class="apple-converted-space">&nbsp;</span>cisco-voip &lt;<a \
href="mailto:cisco-voip-bounces@puck.nether.net">cisco-voip-bounces@puck.nether.net</a>&gt;<span \
class="apple-converted-space">&nbsp;</span><b>On Behalf Of<span \
class="apple-converted-space">&nbsp;</span></b>Anthony  Holloway<br>
<b>Sent:</b><span class="apple-converted-space">&nbsp;</span>Tuesday, June 16, 2020 \
8:34 PM<br> <b>To:</b><span class="apple-converted-space">&nbsp;</span>Pete Brown \
&lt;<a href="mailto:jpb@chykn.com">jpb@chykn.com</a>&gt;<br> <b>Cc:</b><span \
class="apple-converted-space">&nbsp;</span><a \
href="mailto:cisco-voip@puck.nether.net">cisco-voip@puck.nether.net</a><br> \
<b>Subject:</b><span class="apple-converted-space">&nbsp;</span>Re: [cisco-voip] \
Consolidating access to Cisco CUCM APIs via Service Mesh<o:p></o:p></p> </div>
</div>
<div>
<p class="MsoNormal">&nbsp;<o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal">Yeah....still lost.&nbsp; Possibly even more than I was \
before.&nbsp; I'll just see myself out now.<o:p></o:p></p> </div>
</div>
<div>
<p class="MsoNormal">&nbsp;<o:p></o:p></p>
</div>
<div>
<div>
<div>
<p class="MsoNormal">On Tue, Jun 16, 2020 at 6:44 PM Pete Brown &lt;<a \
href="mailto:jpb@chykn.com">jpb@chykn.com</a>&gt; wrote:<o:p></o:p></p> </div>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in \
6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt"> <div>
<div>
<div style="margin-left:4.8pt">
<p class="MsoNormal">Thanks for mentioning AutomationFX.&nbsp; That's exactly the \
sort of API consolidation I was thinking of.&nbsp; Should've guessed the guys at \
UnifiedFX had already done something along these lines!&nbsp; I'll probably still \
build a CUCM mesh agent just  to demo the marrying of access to objects &amp; their \
associated data streams.&nbsp; But it won't be near as complete as \
AutomationFX.<o:p></o:p></p> </div>
<div style="margin-left:4.8pt">
<p class="MsoNormal">&nbsp;<o:p></o:p></p>
</div>
<div style="margin-left:4.8pt">
<p class="MsoNormal">Wouldn't say ignorant at all.&nbsp; Service meshes (Istio, etc) \
in their current form have only been around a few years.&nbsp; Even most developers I \
talk to haven't really touched them beyond POCs.&nbsp; Mainly due to the complexity \
since they all require  the use of Kubernetes.&nbsp; The concept has never really \
been applied to infrastructure sources before, especially in a vendor agnostic \
way.&nbsp; In infrastructure we're dealing with a federation of loosely coupled data \
sets instead of something that a single architecture  group came up \
with.<o:p></o:p></p> </div>
<div style="margin-left:4.8pt">
<p class="MsoNormal">&nbsp;<o:p></o:p></p>
</div>
<div style="margin-left:4.8pt">
<p class="MsoNormal">To answer the question of "why" regarding the mesh I'm working \
on, it's to eliminate a bunch of the common pitfalls in traditional \
integrations.&nbsp; Instead of finding and calling each source directly using \
different client libraries, the  mesh provides a single method of executing RPC &amp; \
pub/sub operations against backend services.&nbsp; You can even navigate the \
resources like a directory structure.<o:p></o:p></p> </div>
<div style="margin-left:4.8pt">
<p class="MsoNormal">&nbsp;<o:p></o:p></p>
</div>
<div style="margin-left:4.8pt">
<p class="MsoNormal">In this mesh, the backend services register themselves and \
declare their functions, object schemas, etc.&nbsp; That's why I say it's sort of a \
hybrid between a service mesh and a data mesh; you can call service functions or \
search on object  class attributes regardless of source.&nbsp; Clients who need to \
access sources make calls to the Brokers.&nbsp; Very roughly analogous to a \
"meshified" version of SNMP.<o:p></o:p></p> </div>
<div style="margin-left:4.8pt">
<p class="MsoNormal">&nbsp;<o:p></o:p></p>
</div>
<div style="margin-left:4.8pt">
<p class="MsoNormal">Here's a before and after of what an Ansible script might look \
like calling difference sources.<o:p></o:p></p> </div>
<div style="margin-left:4.8pt">
<p class="MsoNormal">&nbsp;<o:p></o:p></p>
</div>
<div style="margin-left:4.8pt">
<p class="MsoNormal">&nbsp;<o:p></o:p></p>
</div>
<div style="margin-left:4.8pt">
<p class="MsoNormal">&lt;image001.png&gt;<o:p></o:p></p>
</div>
<div style="margin-left:4.8pt">
<p class="MsoNormal">&nbsp;<o:p></o:p></p>
</div>
<div style="margin-left:4.8pt">
<p class="MsoNormal">&nbsp;<o:p></o:p></p>
</div>
<div style="margin-left:4.8pt">
<p class="MsoNormal">Sent from<span class="apple-converted-space">&nbsp;</span><a \
href="https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgo.microsoft.c \
om%2Ffwlink%2F%3FLinkId%3D550986&amp;data=02%7C01%7C%7C55197a9c5e0042afe7c908d812e7971 \
8%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637280133363097765&amp;sdata=oboe33t%2FvUZ3Sd6uYEY%2Fo1G9ug59myyjXKtyqE1m2oM%3D&amp;reserved=0" \
target="_blank">Mail</a><span class="apple-converted-space">&nbsp;</span>for  Windows \
10<o:p></o:p></p> </div>
<div style="margin-left:4.8pt">
<p class="MsoNormal">&nbsp;<o:p></o:p></p>
</div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<div style="margin-left:4.8pt">
<p class="MsoNormal"><b>From:<span class="apple-converted-space">&nbsp;</span></b><a \
href="mailto:avholloway&#43;cisco-voip@gmail.com" target="_blank">Anthony \
Holloway</a><br> <b>Sent:<span \
class="apple-converted-space">&nbsp;</span></b>Tuesday, June 16, 2020 3:02 PM<br> \
<b>To:<span class="apple-converted-space">&nbsp;</span></b><a \
href="mailto:jpb@chykn.com" target="_blank">Pete Brown</a><br> <b>Cc:<span \
class="apple-converted-space">&nbsp;</span></b><a \
href="mailto:cisco-voip@puck.nether.net" \
target="_blank">cisco-voip@puck.nether.net</a><br> <b>Subject:<span \
class="apple-converted-space">&nbsp;</span></b>Re: [cisco-voip] Consolidating access \
to Cisco CUCM APIs via Service Mesh<o:p></o:p></p> </div>
</div>
<div style="margin-left:4.8pt">
<p class="MsoNormal">&nbsp;<o:p></o:p></p>
</div>
<div>
<div style="margin-left:4.8pt">
<p class="MsoNormal">You lost me there, as I'm too ignorant to understand what an API \
mesh is, but this sounds very familiar to what UnifiedFX is/was doing with \
AutomationFX, is it not?&nbsp; Or am I again showing my ignorance?<o:p></o:p></p> \
</div> </div>
<div style="margin-left:4.8pt">
<p class="MsoNormal">&nbsp;<o:p></o:p></p>
</div>
<div>
<div>
<div style="margin-left:4.8pt">
<p class="MsoNormal">On Tue, Jun 16, 2020 at 12:32 PM Pete Brown &lt;<a \
href="mailto:jpb@chykn.com" target="_blank">jpb@chykn.com</a>&gt; \
wrote:<o:p></o:p></p> </div>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in \
6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt"> <div>
<div>
<div style="margin-left:9.6pt">
<p class="MsoNormal">TLDR – Developing a hybrid service/data mesh for interacting \
with infrastructure services.&nbsp; Thinking about what a modern, consolidated API \
might look like for CUCM.<o:p></o:p></p> </div>
<div style="margin-left:9.6pt">
<p class="MsoNormal">&nbsp;<o:p></o:p></p>
</div>
<div style="margin-left:9.6pt">
<p class="MsoNormal">I was scheduled to give this talk at DevNet Create until \
everything was shut down…<o:p></o:p></p> </div>
<div style="margin-left:9.6pt">
<p class="MsoNormal"><a \
href="https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fa \
dhdtech%2FDRP%2Fblob%2Fmaster%2FDevNet%2520Create%25202020%2520-%2520Making%2520a%2520 \
Mesh%2520of%2520the%2520Infrastructure.pdf&amp;data=02%7C01%7C%7C55197a9c5e0042afe7c90 \
8d812e79718%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637280133363107768&amp;sdata=lJ3OIZewckxh%2BthJoN9s%2FEms6BEz%2BBznCnSdz%2FgvB%2F0%3D&amp;reserved=0" \
target="_blank">https://github.com/adhdtech/DRP/blob/master/DevNet%20Create%202020%20-%20Making%20a%20Mesh%20of%20the%20Infrastructure.pdf</a><o:p></o:p></p>
 </div>
<div style="margin-left:9.6pt">
<p class="MsoNormal">&nbsp;<o:p></o:p></p>
</div>
<div style="margin-left:9.6pt">
<p class="MsoNormal">For the demo I had data from a few of the CUCM APIs being piped \
into a consolidated logical model.&nbsp; Nothing too complex; just users, devices and \
associated JTAPI streams.&nbsp; It got me to thinking, though.&nbsp; If you could \
snap your fingers and  have a modern, consolidated API for interacting with CUCM \
services, what would it look like?&nbsp; Not just RPC operations, but pub/sub as \
well.<o:p></o:p></p> </div>
<div style="margin-left:9.6pt">
<p class="MsoNormal">&nbsp;<o:p></o:p></p>
</div>
<div style="margin-left:9.6pt">
<p class="MsoNormal">I'm considering creating a mesh service agent for CUCM.&nbsp; \
Instead of leveraging the existing APIs, the goal would be to effectively replace \
them and inject their capabilities into the mesh.&nbsp; Before I do, I'm trying to \
figure out what some  of the "must have" features would be for a POC.<o:p></o:p></p>
</div>
<div style="margin-left:9.6pt">
<p class="MsoNormal">&nbsp;<o:p></o:p></p>
</div>
<div style="margin-left:9.6pt">
<p class="MsoNormal">The project README needs some updating, but it does give a \
general idea of how everything works.&nbsp; Recently added a command shell; need to \
get that documented.<o:p></o:p></p> </div>
<div style="margin-left:9.6pt">
<p class="MsoNormal"><a \
href="https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fa \
dhdtech%2FDRP&amp;data=02%7C01%7C%7C55197a9c5e0042afe7c908d812e79718%7C84df9e7fe9f640a \
fb435aaaaaaaaaaaa%7C1%7C0%7C637280133363117755&amp;sdata=sAjnWJXNMqWQkal3BurPJKFYbeHBbyPj745XyVSUEC4%3D&amp;reserved=0" \
target="_blank">https://github.com/adhdtech/DRP</a><o:p></o:p></p> </div>
<div style="margin-left:9.6pt">
<p class="MsoNormal">&nbsp;<o:p></o:p></p>
</div>
<div style="margin-left:9.6pt">
<p class="MsoNormal">-Pete<o:p></o:p></p>
</div>
<div style="margin-left:9.6pt">
<p class="MsoNormal">&nbsp;<o:p></o:p></p>
</div>
</div>
</div>
</blockquote>
</div>
<div style="margin-left:9.6pt">
<p class="MsoNormal">_______________________________________________<br>
cisco-voip mailing list<br>
<a href="mailto:cisco-voip@puck.nether.net" \
target="_blank">cisco-voip@puck.nether.net</a><br> <a \
href="https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpuck.nether.ne \
t%2Fmailman%2Flistinfo%2Fcisco-voip&amp;data=02%7C01%7C%7C55197a9c5e0042afe7c908d812e7 \
9718%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637280133363127750&amp;sdata=bXZ234UVhecvcHTNxPASPd1WiW0Eg%2FOsIqQFKeTqZPg%3D&amp;reserved=0" \
target="_blank">https://puck.nether.net/mailman/listinfo/cisco-voip</a><o:p></o:p></p>
 </div>
</div>
</div>
</blockquote>
</div>
<div style="margin-left:4.8pt">
<p class="MsoNormal">&nbsp;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">&nbsp;<o:p></o:p></p>
</div>
<p class="MsoNormal"><span \
style="font-size:9.0pt;font-family:&quot;Helvetica&quot;,sans-serif">_______________________________________________<br>
 cisco-voip mailing list<br>
</span><a href="mailto:cisco-voip@puck.nether.net"><span \
style="font-size:9.0pt;font-family:&quot;Helvetica&quot;,sans-serif">cisco-voip@puck.nether.net</span></a><span \
style="font-size:9.0pt;font-family:&quot;Helvetica&quot;,sans-serif"><br> </span><a \
href="https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpuck.nether.ne \
t%2Fmailman%2Flistinfo%2Fcisco-voip&amp;data=02%7C01%7C%7C55197a9c5e0042afe7c908d812e7 \
9718%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637280133363137750&amp;sdata=MCe7KwdL%2FnOI0Vbg9gV5xE0XI6QZm5AV8vwdc4pQBdM%3D&amp;reserved=0"><span \
style="font-size:9.0pt;font-family:&quot;Helvetica&quot;,sans-serif">https://puck.nether.net/mailman/listinfo/cisco-voip</span></a><o:p></o:p></p>
 </div>
</blockquote>
</div>
</div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
</body>
</html>



_______________________________________________
cisco-voip mailing list
cisco-voip@puck.nether.net
https://puck.nether.net/mailman/listinfo/cisco-voip

--===============6360551369695826547==--

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic