Hello, everyone. Welcome to a Jenkins online meetup. I'm Liam Newman. I'm joined today by Mark Waite and Udi Hoffner We'll be talking about the static analysis plug-in the new next generation version of it for the for Jenkins Before we get started. I have a couple of announcements We'll be taking questions if you have any Going along at home. You can go to the IRC channel The Jenkins hashtag Jenkins IRC channel or also on the Gitter channel for for Jenkins Jenkins CI Jenkins And I'll be keeping track of that and asking your questions as needed other announcements The CFP for DevOps world Jenkins world has opened Can go and submit your your talks about Jenkins similar to to the one that you're going to hear today If you're using Jenkins for cool stuff Just found things interesting that you've enjoyed doing or have some big challenges that you saw with Jenkins Hop on hop on over there and submit your talk ideas Also coming up There'll be a bunch of activities around Fosdame at the beginning of February Just before Fosdame will be doing some workshops in in Brussels One of them will be a continuous deployment with Jenkins X Kubernetes and friends There'll be two of those actually one at 9 a.m. And I want 1 p.m. On the 1st of February Mark and I will be at We'll be competing with that one to talk about Jenkins pipeline fundamentals The these are two really interesting courses courses if you've been using pipeline for a while aren't you know familiar with everything? This is a great place to start and Let's see what else I think that's everything beforehand so just to say again we've got We'll be monitoring the Gitter and IRC channels for any questions and We'll take it away. Okay. Thank you very much There we go, okay, I'll share my screen. Yeah, great So I would like to start with some slides so that everybody gets Some an overview of my plugins and then I'll show you the plugins in detail with a demo and Then we can have some question or you can have the questions in the middle of the talk. Let's see and start so the static analysis plugins Yeah, a typical use case of them is I think everybody using so you have a normal job in Jenkins Where you check out your code then you compile the code and test the code and deploy the code And if you do this without my plugins, you normally use a console a lock to Visualize the results of your build and then you see the test results in the unit view for instance When my plugins came into play What they are doing they take the console a lock and replace the console a lock with something nice and beautiful like the test results So I'm taking the results of the console a lock parse them with some parsers and then present the results in a detailed view so this is one aspect of my plugin and We can generalize this this aspect in Basically, I don't own I don't only scan the console a lock I can scan every tool you would like to know so you can scan check style warnings you can Scan spot box result chairs lint every static analysis tool you would like to scan you can scan with my tool now Actually, we have now almost 100 tools reported Actually, most tools have been supported by some volume tiers So it's always good if you have a new tool which you would like to have support for for please provide a pull request And I will integrate it into this tool So the analysis suite the old system consists of about yeah, 10 or 12 plug-ins, which basically provided Results for Android check style spot box warnings PMD and so on they have been provided by individual plug-ins So one thing for users This was a little bit difficult and for me as a developer of these tools It was also a little bit complicated. So one thing I decided we should replace these all plug-ins with one single plug-in and The idea was to use the warnings plug-in as a result But we discussed it in San Francisco and the tankings world that it would be even better if we drop this plug-in at all and Write a completely new plug-in and this plug-in now is called warnings the next generation This has the advantage That I'm using a new plug-in. I can drop all these dependencies I don't need anymore and I don't need to Yeah, look for backward compatibility compatibility So the new plug-in Now consists of these new parsers which are support. Yeah, almost 100 different tools So that's the background for the plug-in and What I would like to show you are now some your features of the new plug-ins and These features I think are best shown and on a real instance So I will show you it's on one of my local on a local Jenkins instance So this is a local Jenkins. I'm using for my tests If you would like to see the Results of the plug-ins on your Jenkins instance or you'll see how you can also visit our continuous integration server, I'm not sure if everybody is aware of that our Jenkins CI server for our plug-ins is also now using the New warnings plug-in. Oh, so you're talking about the this CI Jenkins.io That's the one that we use for testing all the plug-ins when we go on when we're on GitHub You see the results on there and yeah, okay So everybody A little larger Okay One back from that. It's there we go. That's fine. That'd be great. Yeah, I think it's better. So yeah There's only so much so much so much so much size you can get out of that. Yeah, okay So, okay, I need to make it here as well Okay, so if you use my static analysis plug-ins You can use them basically with every type of project in Jenkins So you can have it with pipelines with Maven project with freestyle projects declarative pipelines and so on. I think I've added support for every type of plug-in So in order to see the results of the plug-ins you need for instance to Go to a job and click on the job and if you open the job you see The first results of my plug-ins on the left side. You see the links to the results So you see the bit now button and now you see Java warnings error prone warnings. Check style warnings These are the warnings you need to configure in your build. So I'm building with Java So there are a lot of tools available that can be rendered with my plug-ins If you're using Jack style or JavaScript, you get only one link for instance with your results So from here you can navigate to the results of the latest build And what you also see on the top-level page of a job you see the trend charts so you see How your warnings behave over the builds so Yeah, you see then warnings increased a lot and yes Sometimes I have some more time to make some clean code then I reduce the warning So so you can see here a trend of all these tools For that are configured in your system This is one of the new things the trend charts I'm using here I'm generated on the client side using JavaScript libraries and this is the test read so I trend this Is still the old type of charts. These aren't generated on the Jenkins master So I think having them on the client side is a little bit better Because yeah, you have a better frameworks to use and what I'm going to add in future releases is you can have some kind of Yeah configuration of the charts Locally, so you don't need to talk to the server anymore. You can Set the range Etc colors what else on the client side and that will be stored on your browser And you don't need a connection to the server for this So these are the trends and the most important thing for me when I'm looking at a project is the results of a single build so I navigate to build and Here we have the page to see the result of a build and Here you see the individual results So we have the test results and now here for every tool I'm having You see one of these boxes Where you see an overview of the warnings of the special tool So for instance error prone we have 15 warnings checks like one warning and so on so you see for every tool You get one of these boxes if you want What you can also have this is here for Java you can also have a box or a result that is a combination of Multiple tools here for Java and for Java doc because I think these warnings are quite similar So I combined them into one result So on this page you have links to the results So I'll follow the link a little bit in a moment. So what we also see We have some kind of Icons here is that here we have a quality gate. That means this bill is unstable This is a feature of the plug-in which I already had in the old version. That means you can Create a quality gates for a build and say okay if the number of New warnings is greater than five then the bill should be unstable or if the number of Total warnings is greater than 200 then the bill should be unstable or should be failed. This is something you can configure How you like it? If you have such a quality gate you also see the reference build That means if you compute new warnings You must say new to what and what is the number of the build? We are I'm using so here, for instance, I have a reference build that In number 27 and here's a reference build a number 30 So the plug-in is capable of deciding which is the best a reference build and Computes the new warnings based on these reference builds The details about choosing a reference build are quite complicated. So I'll drop that for a moment So if you have later some questions, I can go into more detail on how this reference build is computed. So What we also have is this small icon here with an an info or an error So normally you look into the console a lock every time you want to see something important for a plug-in I integrated it now into The plug-in so you see every console lock messages from my plug-in Are shown on an individual screen. So you don't need to go to the console a lock and scan for error prone You just have the warnings here. What's going on and what happened? So these are the information things. Sorry And if you want to see the results you need to click the main link here and then you are navigated to the results of The analysis and here we have the error prone compiler Which shows the warnings which are in my build now? These results are split into Three parts on the first part we have an overview where we have a kind of Diagram which shows the new outstanding and fixed one Warnings so here it's a little bit boring. We have only old warnings which have been in the previous build as well But if you have new warnings, I think I have it for check style Yeah, you see it's it's red. That means In the previous build we had no warning and now in the wrapper in this build. We have one new warning You can also navigate to the Severities means we have severity of high warnings normal warnings low and error warnings. So Here we only have one issue. So severity distribution does not make much sense, but Typically you have to a lot of different severities. So Let me jump in here. So you can choose a Reference build right on the basis can can we can we choose for instance to have like I'm the last stable master Build be the reference for PR for a different branch or is it only within that one branch? No, this is an feature I added in the in this release that you can Choose actually not I'm choosing not from branches. I'm choosing from jobs Excuse me. I did yeah interchangeable in my in my world, but I So you can choose a different job to be the reference Yes, exactly. And that means if you have a master build and then you can say, okay, let's pick the Last successful master build as reference and then if you have a pull request, you are building the Delta from the current build from the pull request Build with the results from the master build This is I think a great achievement. So you can see for each pull request what actually changed Yeah, that's really exciting. Actually, that's it. That's a great. That's a great feature it It sounds a simple But if you look at it a little bit more in detail, you will see it's not so simple because the problem is And that is not yet implemented and I'm not sure if it's doable at all So if we have a built on the master, they contain a lot of sub subsequent commits So not for every commit you get a build and if someone creates a pull request they get off from a git history and They may pick one commit where they start from which is not Built by Jenkins in a standalone version. So Sometimes you will get some differences. Sure. Sure So that graph computation problem, I'm very impressed early that you you've worked through that. That's very very nice Well done Yeah this is by the way, one thing I would like to have a student for working on it if we Should get this even better to compute something That we maybe we built two times So we built with a commit branch point and then we built with a pull request the final pull request and send compute the data That means we need to put two bills, but if we actually do these two bills We will get results which are Correct and currently the other results are correct the most time but not every time so Maybe that is also interesting. I'm switching to the configuration So we see how we can choose the reference build. So it's a little bit scrolling because it's here at the This is a freestyle Configuration of the same job. So if you configure your job and there is This section called reference analysis And here you can select the reference job. So here you can Select one of these jobs where your master is building and The plug-in chooses the best result of this master job and The best result Depends so I have two options to select the best result. So you can For instance, you can ignore failed builds and look only up on success successful builds And you also can select if the master build should Taking the previous build from the master or the previous build that has been and status of successful So these are some options you can use to select the reference build So okay back to the results Let's go to error prone because there was a little bit more warnings. So here we have some Yeah charts the history is also visible here I'm using bootstrap to visualize the results mmm That means I now have the capability to Use some rendering which is different if your screen is larger or screen is on of your mobile phone The support is there, but I have not yet the time to implement something So currently everybody sees the same page if it's on a big screen or a small screen But I'm what I'm going to add is if you have a really large screen as I'm normally using Maybe we can have three of them or the history is larger than the overview This is sense something which is called responsive design Which still needs to be implemented? So this is also something someone else can provide to me. So as a pre request Speaking of which actually so just just a side note here a bunch of this work was actually done by In in concert with students, right? Well, yes, exactly. So I had a bachelor thesis Which we called a little bit Evaluating some UI frameworks and we wanted to evaluate them on a real project So we chose Jenkins or my Jenkins plugins and we try to Replace the old user interface Which is yeah, it's quite old school Let's say in Jenkins with something new and as a student Replaced and added these detail views to the plugins that that's really cool. Uh, you know all the initiative and a Number of other people are working on doing Google Summary of Code If you have any things that you're talking about I want to add this I want to add that This would that would be a great opportunity to Maybe submit a project to that and see if someone's interested in doing that I'm not you have the time necessarily to be a mentor on it, but maybe we can figure something out. Yeah Yeah, that's on my to-do list. I need to Yeah Mm-hmm. Cool. Uli if maybe not right now But I would love to hear any any insight you have if we've got time at the end of the presentation about your experience Developing inside the Jenkins infrastructure with something that to me looks quite quite different than how Jenkins usually does UI components So that's not really the warnings plug-in per se. I guess but I'm fascinated by what you've done It's really an amazing piece of work Mm-hmm. Yeah, I think we will have some time later on so maybe we can add it at the end That'd be great. Okay So these are just yeah, I candy let's say and the real interesting results for me as an architect are the details so we have here if You have a lot of issues you can Navigate into the packages or types of files so you can Sort out the interesting ones and for instance, I would like to see these issues then I can navigate here and You see here at the top. I'm navigating into this sub folder. Let's say and then you see only the details of these issues That these steps that are visualized are Generated dynamically. So if you have no packages or everything is in the same package, you don't see a package tap and and so on Let's go back to see everything What I'm also considering is to replace this thing here to a yeah Detail tap here at the top, but I'm not sure if that makes sense now So what I also use that we use here a new a table and a JavaScript table which Makes sense mostly here for the issues here are all these issues. I found my build this table Which is something you you can search for something Yeah Search for characters and then you see something And this is something I did not put program at all. It's just a JavaScript library I take took and said, okay Let's apply it to Jenkins and it worked out of the box So what we have sorting and things like that? That works just out of the box without any great programming Which which which library was that it's data tables Take query data tables And Well, I have should have said it normally works out of the box in Jenkins It's not so easy because Jenkins uses a lot of Old type of JavaScript libraries, which are hard-coded and can't be replaced So it the the hard work was to get this thing working with Jenkins Now to put it in a isolated enough frame that it could be the modern modern view nice Okay, so We have pagination You can have here one or two results or you can show everything in one page Yeah, this is everything supported by this data table a few So, yeah, nothing to do for what which I need to do Currently the pagination is rendered on the client side This works well for my projects. I don't have so much warnings But I already had some bug reports where people have a 10,000 of warnings and then We should implement pagination on the server side That means we don't we shouldn't read every 10,000 issues at once So but that still needs to be done Maybe a side note for this this screen here the issues screen is rendered Lazily that means if you load the page the table of issues is empty and then we use Ajax to get back all these issues that are shown here and This needs to be split if you have a lot of issues in your system So every element here is clickable. So you can Show all issues in this package So you see only the issues in this package and you can only select the type and so on what you also see is you can Open some details for each issue and the details you see are a little bit It depends on the tool. So here we have error prone That means you have typically in the console a lock just one message and what I also added you have a link Where you can directly go to the website of error prone and then you see some more details about the problem These details which are shown below the warnings These are let's say hard coded that means For these 100 tools I have you need to provide the information for each tool by programming so by Programming in error prone. It was quite easy. It's just a link Which is on the console I can show for fine bugs check style and PMD. I'm using some descriptions from the projects And for all other tools, you don't have anything So if you have a tool that has a lot of descriptions on a web page Feel free to create a pull request so we can include these information also here in Jenkins So, okay, I started we have Aggregation about types files you see the issues and what we also have and this is as well as student work one of my students had a Bachelor thesis about integrating The kid lock or get blame with the warnings that means for each warning you see who is the actual Committer or author or how do you call it? So we make And this works only for kid if the project is Associated with a kid project We have a warning and for each warning we can compute the author who is And commit of these warnings This helps I think to reduce the number of warnings quite fast and if you're someone detects his name you so You can disable it because it's some kind of here security and Maybe personal information which is printed here. So if you don't like it test disable it The last thing I added Yesterday, this is also not a work by a student, but a work of a volunteer We you can also navigate to the warning itself that means we have the source code is also visible where this warning occurred and This display or this view is also new and This view also uses a JavaScript library prism chairs and Now we have a syntax highlighting for every language not only Java I think it's what over 100 languages are supported now and you have a Highlighting of the warning here and you can also see okay the documentation here is not quite impressive because it's just a link to error prone But let's say I will navigate to something else. So we see some Okay here We have wrong class loader. So then you see the documentation Which is part of a PMD for instance? So here I'm using the PMD project documentation and show you the details about this warning So this few is also new and Yeah, I think this is or these are all the information of The of these details few One thing which might be interesting for others If you are interested in the warnings Maybe because you want to write mails to somebody or you want to extract them You can create with the REST API And list of all issues means you have for every here we have two issues you have The possibility to extract everything to REST API And this is something what I'm using with a student currently He is writing an application Who is a combining the The issues of the warnings with the good Information about files. So what we are interested we want to see If someone has a warning in a file, we want to see What is this for a file is how many commits has this file or how many authors worked on this file? So some warnings or the same warning may be quite different if there are 100 people working on the same file or if you have a warning in a file, which is added just by a single person It doesn't really care if there's a warning. So these are information I'm currently trying to acquire with a new master thesis Okay, so so this this REST API exists already or okay If the REST API where you see the information of the issues that is already existing the combination with git is not existing yet So they work in progress So we are still writing an and separate application which is reading clankings data and reading git data and combining the result and If the master thesis is ready To go live then we need to pull it back into the Jenkins plug-in, but with some time interesting interesting Yeah, so really it looks like what you've shown is Many of them are freestyle. Is this also available in pipeline? Can I use it in pipeline jobs and what what's what's the feeling? How does it work? What I don't understand what you mean with feeling sorry, how do I integrate this into my pipeline job, okay? So if you want a pipeline You anticipated the question excellent Yeah That was good. It's a little bit smaller. I don't It's not yeah, this is one thing one should change here. You can't make it bigger so so Into an editor just so we can take a look at a little larger So they already have cool Okay, and this is the Jenkins file we are using to produce the builds on Jenkins a CI and I know see I bought Jenkins dot IO so our build of my plug-ins and you have these command Sorry record issues is the command of basically the step or Actually, it's a freestyle Postop a post step publisher and it is available in the step as well and then you have some flags and Basically, we have 20 different flags because the plug-in is getting complex and even complexer And but the main interesting thing is use you need to say, okay, which tool I want to pass so here we have a symbol and And for each of the tools I have you Must select the corresponding symbol So if you want to pass in the maven console a lock you need the tool console look if you Say here want to see the Java warnings of the Java compiler. You need that you can Put multiple tools then you need here the tools if you want one tool you take this step and You also Sometimes it depends a little bit on your configuration need to provide the encoding of source files Because the source files are visualized afterwards. You need to provide the encoding of the report files There are a lot of parameters you can use but the new thing is that we in the old plug-ins you had something like find bugs Etc. This is now replaced with a single step and The thing which is a variable is the tool which you give yours for instance, you say, okay this is check style with a pattern target check style and Even the open task scanner It's a little bit more complicated. You can say, okay, which files I want to scan for to-dos I scan for Java files. I don't want to scan in the target folder and Fix me is a high priority warning and then to do is a normal Warning so you basically have the same functionality in pipelines as you have in freestyle jobs That looks beautiful now Do I do I kind of also work in the pipeline syntax UI that that generates these things for me? So we have So And and it's more than enough if you just tell me yes, you don't have to have to even show the demo you've seen you You know it works in pipeline syntax. That's brilliant because now I have an easy way to generate script Yeah It works But there seem to be some problems I think here I have it because What I think nobody else ever have done had done before to have List of about 100 elements Oh, no, that's been done Yeah, more more than that and I'm sure that it was an issue there, too It's just there's only so much The different thing in my thing is that the the UI here So let's say my open tasks kind of Yeah It's a different UI Okay broken for each one Let's say find bugs. It's a little bit easier because it has just one checkbox. No, okay, you see it's Sometimes it's broken and I think the problem is that we the Jenkins renders these things Somehow strangely and it takes every Sub diffs and it's a little bit too complex. So, hmm, you know Jesse was actually just because I'm gonna talk about this and he actually commented about that. There's a bug for the for the editor window resizing Already, of course, so any any help people want to hop in on that. I'll Include that in the in some of the links that we do after this, but um, that's also it. What's interesting to see I mean from a Jenkins developers perspective looking at this I'm just fascinated that you're the way that you're sort of pushing the envelope with this in some ways and Showing what you what can be done with Jenkins and how do you make how you make actually kind of these modern UIs? even Even under some of the the the older spaces here and then of course you run into the limits of what what's what's possible And and you and bugs. I'm sure any second now Jesse will be posting on on the Gator channel what the buggy is for the thing you just mentioned because it's the kind of thing that Somebody's tried to do it before right? So So Okay, we were a pipeline. So this is the simple step if you are writing a pipeline We have The same thing you can use in If you have a declarative pipeline it works as well so you can use the same command it is pretty easy and I also have And this is what I wanted to show here. Um Sorry, it's too many tabs Okay, I think here we were If you have a pipeline and want to configure it and some people have Different ideas on this is from Okay, that's better. You can split this command the record command into two commands where you can Create issues and then publish issues. So you can if you're working in parallel you can even split this step into two steps to Have some special requirements Actually, and there was one other question. I actually was going to ask this other the Can you configure what the base? Uh, the the reference build is from inside pipeline Yes, you every parameter you can choose From uh freestyle builds you can also choose in pipelines. Awesome. Great. Great It is something you get out of the box. So I did not do anything for it. So I I'm just provided a publisher which works for freestyle builds and I just need to implement one interface and then everything is working out of box for pipelines Right on anyways and maybe Prepare this as a slide Um, let's jump into it. Uh, so What you've seen now is this pipeline support the simple mode where you have So scanning for warnings and the publishing are two different things But if you use the three card issues, uh command you get everything in one place and some projects Want to use an advanced mode. That means you can scan in different Parallel steps and you want to publish only one report And you or you want to to compile for ubuntu and compile for Other linux systems and then you want only a single report. You can have it as well This works only in scripted pipelines But some people yeah prefer to use it in that way. So this is possible as well okay, so basically So let's jump back to so Yeah, so the way that works so that then what you have is Uh, you have one step that does a bunch of like you have a bunch of scan steps And then a publish at the end that says okay now publish them. Yeah. Okay. Yeah Okay, cool So, um, I think it's the main future features you've seen now so some small things maybe to Show what I've included in the new release is Something which was part of the analysis collector plug in in the previous releases And you have on the dashboard view you see for each job the number of warnings And you can see them by icon or you can see them by text. So this is a thing which can be configured So this is I think helpful if you have a large set of projects and want to see which projects have warnings and which have no warnings at all So Uli I don't recognize this particular dashboard view is this is a standard part I had not seen this before. I think it's a beautiful piece of work. How do I get there? It's a plug-in Yeah, the dashboard view I'm using very often in projects Which contains several types or you see the tests the analysis everything is aggregated And the thing is dashboard view plug-in which you need So I think Yeah, I have support for the token macro if you need that So some small things are in the plugins. You yeah, you actually Don't see they are just there um I think one thing. Let's see what have I written here. Okay one thing. Um I talked the plugin already supports 100 different tools If your tool is not supported you have two ways to support it one way is to write a new plugin and provide a java parser for this tool It should be quite simple And it's even simpler if you have a simple format You can define a parser on the on the user interface so you I have In the check it system configuration you can define new parsers where you have to define a name and an id and then you have Unregular expression Some kind of groovy script and then you can pass for instance This is an example lock if you have some old language which is not supported by Jenkins so far you can write your own parser and include it afterwards in my steps So this is also not new it was part of the warnings plugin and I also integrated into the new warnings plugin So I think yeah These are most of the interesting features So maybe it would make sense to Have some questions Well, you know, it's funny to have this thing where we have questions at the end. We've been asking them all the way through so I mean Okay, as they've come up Okay, I do have one so I was a long time user of the warnings plugin before next generation came out And as far as I can tell it seems like I can coexist the old warnings plugin in the new and I can make a transition at whatever pace I choose to are there any Things that I should be watching for as a warnings plugin user as I move to warnings next generation Um, actually, uh I programmed it that way that there is they can coexist So you can have in one chop the results of the warnings plugin and the results of the warnings next generation plugins So you you you always will see Uh the old results um, I think it was necessary because it It yeah, it takes a lot of time to write a migration of the old data and I did not find the time to do that So it's still possible to use both things um It it's one thing or one problem we have in Jenkins. Um is that we have The problem of symbols with the same name and I think we already had this problem in the pmd plugin and I think the android lint plugin they used the same A symbol on the step. So then the parser of the declarative pipelines. Um, yeah, don't work anymore so if you Continue to use the android lint plugin and my plug in Um, all together and in parallel. It's a little bit complicated because you sometimes get problems but Some of the problems Because of my plugins. These are problems because of the underlying architecture All right. So some of the old plugins may not Make it easy to coexist. I know I didn't encounter any problems personally But it sounds like you found some some sort of niche cases or corner cases where At prior plug-in and the new plug-in they have some conflict that that a user or an administrator may detect Yeah, that's true Now is there anything that we should be aware of here with regard to how this interacts with blue ocean Is it available in blue ocean at all or is that a separate separate topic? Yeah um, I think this is a separate topic When I started writing the new extensions, I wanted to do it with blue ocean um, but actually, um I ask a lot of times in the mailing list if they are ready for extension, but I think they are still not ready for extension So there is and there is an Yeah, I think they wanted to make something that is extendable, but it's not yet finished And I'm not sure if it's feasible at all. So Blue ocean makes a total different model so the And I wanted to wait but somehow. Yeah, no It was I think it's two years ago when they They contacted me if we can make something and actually it it didn't work out So we decided to make it with the old jelly style and just use some new libraries, which is yeah simple for the plug-in developer On those new libraries that you're using Any guidance that you can give or places you could give pointers to people if others wanted to experiment with The new libraries you're using in the context of jelly Yeah I think one Or a good way to integrate these new libraries would be to provide some kind of new user interface plug-in, which provides these libraries Currently everything is coded into my plugin So if If you want to use these libraries you either either need to Yeah, include it in your plug-in or Yeah, you can't use it from my plug-in. So this is a little bit complicated And I think this is where the work really starts So If you want to for instance, if you want to use bootstrap 4 Which i'm using We actually need to provide a plug-in which is called bootstrap 4 and then another plug-in can use it So but this has to be done. So I have not found the time to do this in my plugins Well, the work you've done is absolutely awe-inspiring. I'm so impressed. Thank you. Yeah, I'm I'm really what's what's interesting To me about this is is the level of like this plug-in is really great and does great stuff and That that's you know, it's a whole whole next generation of this this work And yet at the same time Like you could have a whole another we have a whole another online meet-up just about the work that you did to Add add these very add the some of these technologies that you're using in there on just we could do just just that on its own too Okay So yeah, I'd be interested in like looking at what your Thoughts are for the for the for some of these other other things that you would want to do in terms of splitting out and Making this available to other other plugins Yeah, even the trend charts for instance, uh, these are code hardcoded in my plug-in But it would be I think really useful if we have a trend chart plug-in Which is configurable using some kind of API Where you can create these nice charts and these just work out of the box You have a configuration on the client side, etc This is Nothing which should be part of my plug-in. It should be part of a greater plug-in So, yeah, absolutely. Yeah, there are client programmers available Feel free to join All right. Well, I I think that's that's almost our time and also, uh, also what we're uh Well, we have to work on uh have to talk about for the day. Um, I will include links to A bunch of the stuff that we talked about and hopefully the slides as well in the in the the description of the the video and Really, thanks so much for being here And and presenting this it's really really great Yeah, see you next All right. Thanks. Thanks. We'll see you. Bye Mike


Hi everyone, Joe for Jaspy's casebreaks.com with 2020-2021 Upperedeck Skybox Metal Universe Hockey 2 box Ram Team Break number three Big thanks to these wonderful people here for getting in on it. One spot gets you three teams So let's triple up that list and we combo ducks and preds as well So let's roll it. Let's randomize it three into three hard six six the hard way for names and teams one two three four five and Sixth and final time That's Steve down to Steve Six the hard way one two three four five and Sixth and final time That's stars down to flames All right, Steve Birch Stars Kings Golden Knights Robert with the Canucks Dave big boys devil seven Panthers Canadian Steve with the Red Wings and the Jets Robert with the ducks Preds combo Steve with the Flyers Robert with the Devils Steve with the Blues Maple Leafs and Blackhawks Rick with the Hurricanes Sabres David with the Senators Robert with the Rangers and Oilers Rick with the Penguin Steve with the Wild Robert with the coyotes and the shark Steve with the Caps the Lightning and the Bruins Robert with the Bluejacket Steve with the Islanders Robert with the Avs and Steve Birch Calgary Flames Let's sort by column B alphabetically from A to Z not Z through A and Let's break is coming from a fresh case. So let's figure out which box we're gonna do Oh, there's inner cases to figure out which inner case. We're gonna do first. I'm gonna select a die I'm gonna select That one right there One two three for the left side four five six for the right side and It's three. So we're gonna do the left side. So this side We'll say for next time. All right skybox metal universe Save that for next time now. Let's pop this open and see which two boxes we're gonna do First off, let's pick a side here one two three four five six Six and then we'll pick two boxes one two three four five six and it's Five one two three four five six and so these other boxes We will save for next time All right, it looks like no trade. So let's just print. Let's rip. All right. Good luck, everybody And there's the final print out Thanks for spending a bit of your Sunday with us. I think hockey Preseason mini camps of mini camps. Are they calling me training camp preseason camps have started for most of the teams We're gonna start to get to a really busy part of the sports calendar. We've got the NFL season Well underway the Premier League season is well underway and preseason for hockey and basketball starting up so Exciting time mass car playoffs still happening And all card ship here as well, there's some hardware acetate like those acetate cars is Connor McDavid Other Connor McDavid It's pretty cool Like that parallel there There's a Leon dry satel 10 out of 199 and our first autograph is for the capitals Tom Wilson For the caps that's gonna go to Steve Birch. That's pretty cool, too Platinum portrait and see all like the laser cut Sort of dot matrix kind of pattern there. That's really interesting That's carry price. Yeah for the Canadians will mark that for the shipping team there make it easy on them That cool looking insert is gonna go to big boys 007 All right, that was your first box. Here's the second box Niners seem to be got sunny eye football on the background Packers in San Francisco and looks like San Francisco starting to make a little noise here Trace sermon making a little bit of noise. I'm trying to figure it out All right second box Oh Vech can acetate card going to Steve in the capitals Professor we've got some hardware right here. This is 18 out of 25 for the penguins. That's gonna be for Rick Vecny Malkin and our autograph is Jake Evans for the Canadians. That's for big boys 007 I'm not sure what this insert is but it's also looks pretty cool. Nice Don't see a night. I don't think it's number. I don't see a number on it There you go Dave All right, and that's that that was two boxes of upper deck skybox metal universe hockey random team break number three I'm Joe. I'll see you next time for the next one Jasky's case rakes.com. Bye. Bye


Hello everybody hooded cober commander 788 here welcome to classic Friday on Monday So I guess it's classic Monday Doesn't have quite the same ring to it following up my review of sergeant slaughter version 4 I want to look at the GI Joe classified series sergeant slaughter Finally, we have an official GI Joe sergeant slaughter in the six inch scale. Let's start by looking at the box This is the no plastic box so there is not a window showing the action figure instead We have this awesome Adam riches artwork Adam riches is well known for doing GI Joe packaging art And he gives us sergeant slaughter in multiple art styles on the side of the box We have a close-up of sergeant slaughter with some sky strikers reflected in his sunglasses This is number 53 in the classified series and on the back of the box instead of having that Generic poster style artwork. We have some photos of the toy We would normally see this through the window pane on the front But since this box doesn't have that we get photographs on the back since this is not to scale It tells us how tall it is classified figures average six inches tall But this one is a little taller as sergeant slaughter should be at six point seven five inches or One hundred and seventy one point three millimeters. There are these symbols which represent his specialties These are repeated on the side of the box. This symbol means he got a five-star Yelp review This is the logo for Cobra Kai karate. He learned the Cobra clutch at Cobra Kai This is a tree in Minecraft and this is the logo of prudential insurance Let's open the box and take the figure out I have opened this figure before so the figure and the accessories are loose in there There is a tray For the figure and there is a box for the accessories Here is sergeant slaughter out of the box looking very much like sergeant slaughter the wrestler This figure is based on version two of sergeant slaughter from 1986 This is the one that came with the triple T and it's this version that showed up in the GI Joe cartoon So it would be the most recognizable to GI Joe fans Let's start looking at the accessories by looking at the most unique accessory this extremely tiny is sergeant slaughter Micro figure. This is a sergeant slaughter action figure for your sergeant slaughter action figure. It is Incredibly tiny. It's much smaller than even the smallest previous micro figures It is on a GI Joe card with some artwork and it has the generic GI Joe star logo on the back and Yes, you can take this off the card. It is not sealed so you can take it out You can get an idea of the scale of this micro figure by comparing it to the size of my hand It is so small if you inhale deeply near it It will go up your nostril and get lodged in your lung. It is Microscopic despite that it has some pretty good detail and paint applications It's an amazingly detailed figure for this size Now I'm going to quickly put this back in the packaging because that's my only hope of not losing it Let's move on to the next accessory. Perhaps the most important accessory. He has a campaign hat It is brown with a darker brown band He has a gold rank insignia that I believe is supposed to be a staff sergeant But it's hard to tell because it is so tiny It is removable. You can take it off The hat is made of a soft flexible plastic which I like very much It fits well on the head and does not fall off too easily. Next we have the sunglasses They have silver lenses and brown frames and they are removable And somehow without pegs or clips or anything These do stay on the figure fairly well much better than you would expect These sunglasses are very small. These will probably be frequently lost accessories They are somewhat flexible, but I wouldn't flex those too much. I would be concerned about breaking them Mostly I'm just impressed at how they are able to stay on the figure pretty well Next we have the whistle. The whistle is removable It was just sculpted on to the vintage action figures, but you can take this one off It has a brown band and a gold whistle And this of course is for his drill instructor role So he can signal the start and stop of drills and training The next accessory is very reminiscent of a vintage accessory It's this swagger stick or baton and this is much like what the vintage figure came with Basically the same accessory but larger and with more detail. It fits well in the hand The accessory is a brown stick with a black grip And a gold cap And then there's this black curly q thing at the other end Which I think is supposed to be like a leather strap in motion And I understand what they're going for here. I'm just not a fan of this little extension here on the bottom The version two sergeant slaughter only included the baton accessories So the classified figure already comes with a lot more. The next accessory is the only weapon this assault rifle It is in black plastic. It has some paint applications. It has some brown furniture This looks like a modified and updated ak47 none of the vintage sergeant slaughter action figures came with anything like this It has a couple removable parts. You can remove this piece, which I'm interpreting as a laser spotter And the magazine is also removable. This is not a unique accessory This is the same assault rifle that came with the classified cobra officer Also in black plastic, there are some minor differences between the two It looks like there's an extra paint application on the sergeant slaughter rifle It has a brown grip whereas the cobra officer rifle has the grip unpainted Also, the brown paint is a little lighter on the cobra officer and darker for the sergeant slaughter rifle Even with these minor changes This does feel like something that was just thrown in because sergeant slaughter needed an extra accessory The final accessories, if you can call them that, is the extra hands This figure came with eight hands six loose and two on the figure So you get four hand poses You get each of these four hand poses for both the right and the left hands I'll show you how this works right now for the right hand I have the gripping hand so he can hold accessories But I can take that out each hand has a stem that fits into a hole on the wrist And I can replace it with the right hand in the grabbing pose Right now for the left hand I have the fist hand for punching But I can remove that and replace it with the pointing left hand with the index finger extended For when he wants to make his point The hand poses you get for both the right and the left hand are the gripping hand for holding accessories The grabbing hand in kind of a claw pose The fist for punching or doing fist bumps And the pointing finger I'm not a fan of these extra hands I don't really like accessories that don't go on the figure and just rattle around in the box or get permanently lost But I know a lot of collectors do like them. They give you some other posing options I call this one the Michael Jackson. Let's take a look at the articulation for sergeant slaughter He has classified articulation, which is excellent. He has a ball jointed head and a swivel neck So he has excellent range of motion at the head. He can swing his arm up at the shoulder and swivel at the shoulder He has a cut at the upper bicep with the swivel so he can swivel at the upper arm He has double jointed elbows He has a swivel at the wrist and in and out hinges at the wrist. That's excellent He has butterfly joints at the shoulders and those are not too tight. They actually work pretty good He has a hinge at the rib cage. So he has a bit of an ab crunch He has a ball and socket joint at the waist so he can have a pretty good range of motion at the waist Around and up and down He has a leg split. He can move his legs forward at the hip and back a little bit not as much He has a swivel at the thigh cut. He has double jointed knees. The top joint on this one is very tight He has a swivel at the boot cut and he has hinged and rocker ankles Let's look at the figure itself and as mentioned earlier sergeant slaughter is tall for a classified figure standing him next to Duke he is about half a head taller and that is as it should be Sergeant slaughter is a big guy and his action figure should reflect that the face is an excellent likeness of a younger Robert Remus the wrestler who played sergeant slaughter He has a prominent chin and a brown mustache and brown hair that hairline is perhaps a little generous Also, this figure is very muscular with lots of ripped muscles all over him It's important to keep in mind that this figure is based on the gi joe character of sergeant slaughter So this is not a literal representation of the physique of the real sergeant slaughter The rest of the details are pretty simple, but they are exactly what they need to be for the character He has a black tank top with a texture on it. He has black wrist bands He has a white belt with a gold belt buckle on the version one figure This had the marine core emblem, but this is a plain gold belt buckle as with the version two figure The legs have a camouflage pattern. He has green bdu trousers with a brown camouflage pattern He also has texture. I like how they add texture to these figures makes them feel more realistic He has pockets on the outside of his thighs He has green knee pads He has jungle boots with green canvas sides and green laces and black toes heels and soles if these legs look familiar they were also used on tiger force outback the same legs different colors I don't really mind this reuse of parts for classified figures. These cost-cutting measures mean they can give us more figures Which I am for I would have a bigger problem with it If they literally reused parts without changing anything But here they have different colors and outback has some accessories on the legs So even though they have reused parts, they don't look identical looking at sergeant slaughter overall I like this figure. This is one of my favorite classified figures so far It's not as flashy as say serpentor which has a lot of gold and minute details and came with a small vehicle But the details on here are exactly what you need for sergeant slaughter If you started adding more the figure would be less recognizable as sergeant slaughter This was a premium figure so they tried to give us some extra accessories But I can live without the bonus hands and the assault rifle does nothing I like the hat and the sunglasses and the whistle and the baton and if that's all it came with I would be happy. So where does the micro figure fit in? It's fine I like it well enough. It's meta. It's a reference to sergeant slaughter as a gi joe action figure And it's okay. It looks good, but I just don't know what I'm going to do with it That was my review of gi joe classified series sergeant slaughter It's class of friday on monday if you haven't checked it out yet Please watch my review of sergeant slaughter version 4 with special guest sergeant slaughter slaughterhouse Also, please give this video a thumbs up on youtube and subscribe to the youtube channel and share this video You can find me on social media on facebook and twitter and I have a website hcc788.com If you like the channel and you'd like to support the channel patreon is a great way to do it You can get some special perks and get your name in videos like the names you see scrolling on the screen right now Thank you for watching. I'll be back with more gi joe and until then remember only gi joe is gi joe


What's up everybody? Jason here for JaspysCaseRace.com. This is a random number block to help sell a definitive Pikachu number 8. This features the Diamondbacks, the A's, Pirates, Twins, Guardians, Rockies, Marlins, Nationals. You get a serial number break, guys, so you own a piece of these teams. And again, I can say if they hit, they go by the serial number there's your examples there. So here's the dice roll, let's roll it. We got ourselves a full 12, 6 and a 6. Here we go. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 and 12. We got Chad down to Anthony. And 12 times, 0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12. 7 down to 9. Alright, so let's make this a little bit bigger. And Chad, you have 7, Nancy with 4 and 6, Ken Ball with 1, Nancy with 8 and 3, Damien with 5, Steven Kendrick with 2, Nancy, Any and All Redemptions for these teams would be yours with 0, and Anthony with 9. So, I'm going to alphabetize this so I can make it look nice and older. Order it. And like I said, guys, in a separate video is coming up definitive, pick your team number 8. Thank you guys.


OK, we're going to get started. Hi, welcome to the KubeCon 2022 event in Valencia. I'm Steve Wong, and I'm joined by Michael Gash. You're about to learn about some cool new tech that lets you enable better integration of Kubernetes workloads with vSphere. And this is brought to you by the VMware User Group. A word about this user group, we're inclusive of all users running all Kubernetes on VMware infrastructure. So I don't want you to be mistaken thinking that since the two of us happened to be with VMware, that we're only talking VMware Kubernetes distributions. If you're running Red Hat OpenShift or Rancher or whatever, what we're going to talk about here still applies. This is completely generic. It should work with any compliant Kubernetes running on the vSphere hypervisor. And this group itself, if you elect to join the community, all the stuff we cover is like that. It's completely neutral as to the type of Kubernetes you're running. We're going to start with a little background explaining why a tool that monitors activities spanning multiple layers of your stack from infrastructure up to Kubernetes might be useful or even essential. And then we're going to explain the tool mostly through demonstrations. A strong reason to retain your own on-prem infrastructure is a sovereign cloud requirement where you can ensure data locality and local governance. Kubernetes can run either on on-prem things like vSphere or in a public cloud. With Kubernetes and with hypervisor infrastructure, the goal is to maintain a working illusion so that operations run consistently across locations and across variations over time. So these abstraction layers can simplify the job of the components above them. But they do need to make some choices as to how to support what runs on top in relation to the layers that are below. vSphere is designed to allow VMs to opt in to a high availability model that rigorously attempts to defend workloads from going down. The Kubernetes model is more tuned to an expectation that a workload has an architecture that allows for individual components and individual containers to go down while still maintaining an acceptable level of service. There are classes of applications better suited to the vSphere model, others better suited to the Kubernetes model. And if you're running an on-prem installation, you likely have both operating, and they might need to interoperate. A lot of on-prem installations host legacy VM-based services which interact with the Kubernetes workloads. The Kubernetes zone abstraction mapping to cloud fault domains is pretty comparable across all the public clouds. But vSphere, and thus Kubernetes running on vSphere, is actually a lot less opinionated. It has a lot of configuration options that leave it to the user to implement failure domains based on budget constraints, resource constraints, other. And it is possible to configure your vSphere installation so that the storage, compute, and network service fault domains may not be aligned with each other. And there are ways to take this into account with Kubernetes, best practices, et cetera. But the bottom line is your fault domains might be aligned on rack, aisle, or building boundaries, and it's up to you. When a fault happens, how do you deal with operationally with an underwater explosion that might ripple up through these layers from the bottom and impact the things running up there in different ways? Michael's going to show you a tool that will help you be more like a pilot dealing with some turbulence in the air when these things occur as to the alternative, which is the captain of the Titanic, who's oblivious to the fact that the hull has been ripped open underwater. So with that said, I'm going to turn this over to Michael. We'll have a brief interruption because he's going to change the screen to mirror mode. Yes, thank you, Steve. So where's my display settings? This is going to be the hardest part, figuring out the displays. There are. OK, so while this is adjusting, who runs vSphere? Good, you in the right room. Who runs Kubernetes on vSphere? Or plans to? OK, perfect. Awesome. Nice, nice. Who runs? Let me advance a bit. Knative eventing sort of on vSphere? Yeah, I know. I know. Good. OK, very good. So the session is set up in a way that hopefully everyone can take something out of this. Like even if you've never heard about the appliance, the eventing concept that we're going to talk about before, or you're an expert like Scott here, hopefully there's a little bit of things that you can also take from the session. So now let's see if this goes. Now, like, I don't know what's happening now. OK, let me just do it this way then here. So what is event-driven architecture? So in this talk, we talk a lot about events, asynchronous operations, event-driven, whatever. And so we looked at Wikipedia as kind of the source of truth for event-driven architecture. If you've never heard about it before. So event-driven architecture is a software architecture paradigm. It's not new at all. Like, it's been around for decades. Promoting the production, detection, consumption, and reaction to events. And the most important part here is the reaction. You do something, right? Something happens, and you react to it. So what is an event? An event is an immutable fact. It's kind of an information. It's different from a message or a command. In the case that an event is something that you cannot change, it is there. You get a notification for that. Also, the center of the event, for example, vSphere and vCenter, as we will see in a bit, is not aware of the potential recipients of that event. And there's no expectation if I send an event out there that I know who's listening and reacting to that. That kind of has kind of no coupling between that. And since those facts are immutable, you cannot rely on this information. There's a difference between saying, I want to power on a VM versus the fact that a VM was powered on. Because the first is a command, meaning it can fail. It can fail for various reasons. You don't have host resources. You don't have the permissions for that. So commands, in general, can fail, and you need to account for that. Versus if you receive an event that the VM was powered on, you can be sure that this has happened. It's a fact from the past, right? It's something that has happened. Or in a nutshell, just think about if this done that. If you know that Cloud Service, IFTTT, that's basically the whole idea there. If something happens, you do something with it. And so, did you know that vSphere or VMware vCenter, and again, we're talking very much around vSphere today, but events in general are also very useful. So a lot of events, produce events, I'm sorry, a lot of products and services produce events, but vSphere happens to be the core one that our administrators and core personas happen to use a lot. So did you know that vSphere and vCenter alone in a standard setup, so no plugins, no extensions installed, comes with already 1,800-plus events? Did you know that? Like, I didn't know that. Yeah, you knew it, I know. So which is great, because if you could only send you three events, that's probably not gonna be useful. 1,800 is a lot, starting from these power-on, power-off events, DRS-related events, because DRS is a little bit different when it comes to these operations, configuration events, login events, backup events, you name it. This list is huge. My colleague, William Lamb, he has a GitHub page where he tracks all these different events that are available for use in different vSphere and vCenter versions. And the beauty of this is that you can do something with them, right? Now, what are some use cases for event-driven systems in general, how they are applied, and then specific to the context of a vSphere environment and the Kubernetes environment? First of all, the most commonly used is notification. I want to get a notification when the VM is deleted or powered on in Slack. Now, the challenge with vSphere and vCenter is that it doesn't give you this integration, there's no Slack integration. Even if there would be, you would come and say, can you give me Slack integration? Well, so we would have to, I'm sorry, the Teams integration, we would have to build Teams integration. Can you give me Discord integration? Well, we would have to, you know, the pattern, right? So what we're trying to do here is to not have vCenter become a thing where we have to attach all these like notification things and say, look, vCenter is just sending the event, there's then some magic, and then we'll send it somewhere to Slack, PageOddy, or whatever. The other one is automation and Scott here first role has built a lot of like automation use cases. There was also a VM user group meeting last year, I guess, right? Which was recorded by Scott, explained a bit more about all the use cases that they have like one, more than a hundred of functions by the time, right? And so automation is a key one because notification is nice, but what you also can do with these events or this information is to reset the VM, for example, or to repower it on, or to put it in a DNS database or in a CMDB or do something was the fact that you received. Another one is integration, big one in the cloud providers. So we have VMware cloud on AWS, we have VMware on Google, we have VMware on Azure and on service providers. And we see right now a lot of interest in these use cases where you have these fear events, you might have some events in AWS, and you wanna send them and aggregate them and correlate them maybe together. And so we also have some AWS folks there which use the vCenter events and do automation in AWS. Remediation, I already spoke about that. That's an important one. So we have common use cases, you have vSphere and you have NSXT, which is our network stack, and both happen to be like kind of their own islands. But if you wanna make sure that a virtual machine is secured on the network, then you need to have kind of the settings and the awareness of both of these control planes knowing about each other. And so with event-driven systems and automation here, we can send this information to another control plane like NSXT and say, look, this is a VM, it has like five tags and with that tag, put it on a security group, whatever, or shut it down in the firewall. So we can do the synchronization between the systems. Auditing, analytics, compliance, those are more like advanced use cases. The more common one would be Oracle licensing where typically Oracle would enforce you to audit and prove that certain VMs of Oracle database are running just within a set of hosts because otherwise you would have to license all the hosts potentially. And so we have users that use Vibar or the event-driven automation to do the auditing to track these events when VMs migrate between hosts or when they are powered on and store them like in a log and in persistent log and then prove that these VMs were only running within the boundary that they actually set up. So the question is how can you do that? And so three years ago with William Lam, I sat together and we built the VM by event broker appliance because it turns out that accessing these eventing APIs just for vCenter alone is hard and sometimes people don't even know it, especially if you don't have a software engineering background. And so what we wanted to do is to make it easy for anyone, even without coding or software development background to leverage these events. And so we built the VM by event broker appliance which started as a very much vCenter, vSphere centric appliance that you can download open source. It's a fling. I don't know if you can read it but there's a link down there as well. And, but you can also use the individual components to just run Kubernetes. So you can take all, if you already have a Kubernetes environment, you can just install the bits that you needed for doing that. And so Viva gives you those use cases that you have seen before, but it also gives you some of the examples and the integrations, for example, sending stuff to Slack, doing some text synchronization between NSXT and so on. And we have a community around Viva who's like contributing like Scott and others or like giving feedback on documentation, filing issues on GitHub and just giving feedback in general about it. And one of the core feedback was also, it's nice to have vSphere events but VMware alone has a lot of more products like Horizon and the VDI space and NSXT and so on. And if you expand it further in the cloud, you will also see systems that generate events. So the goal here is to be like an, you know, like an aggregator, like a router, if you will that connects to different event sources of different kind and then sends these somewhere. And whether that's a Slack integration or that's another Kafka or AWS, what have you, that's the goal there. And we heavily rely, and this is a shout out, to the Knative and the Cloud Events community because most of the time, we want you to run little code or little actions to react to it. And so a common pattern there is to use functions like an AWS Lambda or with Knative where you just write the minimal amount of code to do something with the event. So you don't have to connect to vCenter, you don't have to be aware of vCenter, like whatever you do. And we use a standard for these events which is called the Cloud Events because if you have different sources sending events, these events don't look like each other. They have different schemas and shapes and payloads, et cetera. So we use the CNCF Cloud Events standard to put a common shape around it so that for the code, for the function that you write, you know there are always these kind of fields like a type, a subject, a timestamp, a source, et cetera, for that. So that's the standard that we do and we kind of harmonize that in Viva. And so over the years, obviously the community grew and we were lucky to have Scott as like a very heavy contributor here in the first row.  Getting started with Viva's really easy and adds huge value to almost every environment. And Scott works for Terrasci and so Terrasci uses Viva internally for their own processes but also in customer environments. And even they built some crazy logic on Google Cloud that I heard before so he can tell you more about it which is mind blowing what they did with Viva. And this is also a learning that William, I and the Viva community had is when we put this out we had common use cases like slack integration but then users were adopting it in a way that we didn't even like think about when we released Viva. Okay, so let's talk about use cases now that we have kind of the baseline of what Viva does. So I have two scenarios here and two demos of how we think Viva can help and they are mostly driven actually by community and customer requests. So Steve spoke in his introduction, he spoke about the concept of full domains zones that you might know from cloud providers like AWS East 1, 2, 3 for example but also vSphere has a concept of zones or rack awareness or affinity if you will if you're aware with DRS. So what we typically see in larger environments or more resilient deployments is that we have a host, a cluster, a rack however you wanna size it which lives in zone A or environment A and then we have another one which lives on environment B. And then our users start the vCenter admins or like the business teams there start distributing the virtual machines in the workloads so that they are resilient to failure like putting one virtual machine on the one rack and then the other one on the other one so that if the rack fails or you have maintenance those workloads are not impacted. And this is basic vSphere DRS resource management 101 and this is all fine and we use it. Now Kubernetes itself has the same concept but at a different layer because the Kubernetes schedule is also aware of zones and affinity and or distribution of workloads in this case parts not virtual machines but parts. And so if you do things right between those two layers in this case here then you will have a direct mapping between a part workload that runs on a Kubernetes worker which maps to a virtual machine which maps to the same site if you will all zone. This is all good especially for developers when they say oh I wanna run my stateful workload and I wanna distribute it. It's really important to have this mapping because it could easily happen that the virtual machine actually runs somewhere else. So it's important to obitrate this stack and this is also like common practice nothing new here. The trouble begins if you have DRS or vSphere starting to migrate those virtual machines. So vSphere has the concept of vMotion, life migration where we can non-disruptively move workloads between different domains or like hosts or clusters. This is good for maintenance, availability concerns, right? So there's a lot of benefit in there. Now the problem is that because this happens at the vSphere layer, Kubernetes is not aware of this. Kubernetes does not update its knowledge of the worker that actually now it's running on zone B. And even if it would be, it would have actually to take the pod off that worker and put it somewhere else. In this case, it couldn't even put it somewhere else because the zone does no virtual machine there. So the challenge that most of our users have and some try to mitigate by writing custom script and logic and calling against vCenter is that they don't know when these migrations happen. And this is a scenario that can affect the availability of the application. But even in the case of just the normal vM migration from a host to another host, sometimes business application teams say, oh, there was a latency and my app was slow. And I think it's the vMotion that you guys do down there. And then the vI admin needs to look in the logs and say, okay, no, there was no vMotion at this timestamp. So wouldn't it be nice if we could detect that change, right, when this happens and then either like log it or notify someone or even put the vM back, right, if needed. And so that's the first scenario that I'm gonna run through quickly. But I need to fix the monitor first because otherwise it's gonna be hard for me. So mirror, pray for the gods that this works. It's always jumping back. Man, I'm in trouble now. Let me stop this here. So just quick question. Who knows this problem of like, oh, the motion happens and latency is high or we have the DRS affinity problem or, okay, cool. Looks like we had at least three hands going. Well, this is good and bad because for the others in the room, you might not even be aware of this problem or how to mitigate it, right? So let me show you how this would work with Viva. So I think, no, I'm good. So I have a, on my laptop, I have a setup of a Kubernetes environment. Viva runs locally there, but I have a remote environment in Palo Alto where my whole vCenter environment is. For this demo and all the code and the tutorial, we have a GitHub page. This is also in the appendix of the presentation. So we have all the links there if you wanna follow along. So what I'm going to show you now is the first scenario of detecting and sending something to Slack. So here's my Slack instance. You see it's currently empty. And now I'm gonna go to my vSphere environment. And I was told that it's hard to read in the back, so I'm gonna explain what's going on here. So here on the left, and let me try to increase a little bit. On the left, we have a cluster of four hosts, vSphere hosts. One is already in maintenance mode because that helps me to enforce to show what I wanna show here. And the three other ones are like vSphere hosts. And then I have two virtual machines. Those are here, those two. And one of the virtual machine is pinned to the upper set of host or has a DRS rule to say you should run on this host group. And the lower one is running on these other two hosts. And this is a should rule. It's a soft rule, meaning it can be violated. For example, if I'm doing maintenance, then the upper one would also migrate down there. So ideally they are distributed, but sometimes if you lose the one rack if you want, then is the quick question, any question? Or no, okay. Am I good still audible? Cool. But ideally you also want to have like a failover or like a proactive failover to the other group. So what I'm going to do now is to enforce this, but I first need to deploy the code. And what I'm doing here is I have a small function, which is called attack drift function, which will detect, which basically gets an event that says a virtual machine was migrated either by DRS or by manual, by an operator like me. And then it sends it to Slack. The function itself is very small. Let me just quickly run the command here. So it sets, it creates a function. That's the first one. And then it creates two triggers, which is basically just the way, hey, if this happens, call the function. And this is all Knative based. So we had a couple of Knative talks at KubeCon here. So I'm not going to cover the Knative bits because that is also out of scope. What is more important is the code. You get an event, you look at the event, you do something. You don't need to know about Knative. You don't need to know about vSphere at all. Like this could also be used by business applications and developers because they don't need even access to vCenter. So you don't need to give them accounts. They don't have scripts calling your vCenter, taking them down, network policies, et cetera. You're basically shielding them from all this stuff and just telling them when something has happened. So it looks like this is all deployed now. And what I'm going to do is I have a little thingy here. This is the Sockeye application, which gives me the stream of events was built by some of the cool Knative founders and it will basically show all the events that are going on. Right now there's no traffic in my environment so we don't see anything. And I just hope that this virtual machine, yes, I need to authenticate just a second, of course, demo. But this also gives me an event. When I log in you will see actually the event. This is also good. So we're going to off script here, but why not? So by logging in now, this will also show me if my system works. Yeah, we already get the events coming in. There's a task event, there's a user log in session event. So it's good to see that working. And now we go to all control planes. I called this to Kubernetes control plane because typically you would distribute these kind of control planes of Kubernetes on different hosts in vSphere. And currently it runs on host 51, which is that guy. And that guy I'm going to put in maintenance mode now. Enter maintenance mode. And what it does, it basically tells me, hey, there's still a virtual machine on that host. I'm going to migrate that virtual machine off this host onto another group because I forced the other one also to be in maintenance mode. There's only two hosts left which are on the other group. And now, because I'm running non-compliant, the worker is now in a not preferred zone, if you will, from a Kubernetes perspective, now I actually should be alerted. And so you saw there's a lot of events you see, like when the host enters maintenance mode, et cetera. So there are also some good events that you will also get out of this. And everything worked. And this is not a screenshot. See, I can scroll here. You get, basically the function was executed. And in my case, the function just takes the event and creates a slack message by saying, hey, this virtual machine called Kates Control Plane was migrated from host A to host B. And then here I have just for introspection, the preferred zone for the VM is EU1. And the host where it's currently running is EU2. And so now someone can at least take a look or extend the function, right? There's also a little bit of info in the template code of the function where it says, hey, you can actually try to revert it back, like remediate, right? But for the simplicity of the demo, I just kept it simple. I just sent this slack notification here. So that was the first one. Let's jump back. We're still good on time. So this is very typically like sending to Slack or Teams or PagerDuty or whatever. Now the next one is a little bit more advanced because I wanted to show some advanced concepts. I think we have 10 minutes left, right? Yep, cool. I'll get there. So if you're not familiar with vSphere alarms, and again, this is hard to read, basically you can set alarms in your vSphere environment that for example, if a data store gets full or a cluster is too utilized or you have lost network connection or bandwidth, et cetera, you can set up alarms and thresholds and all the stuff. And these are great because they help administrators and teams to observe the system. The trouble with alarms in vSphere is that there's just a limited number of integrations that they have. You can send an email, you can send an SNMP trap or you can run a script on the control plane. Now an email is probably fine. SNMP traps was fine 20 years ago but maybe not this day anymore. And running a script is also not good because you might be in control of the control plane but what if someone else wants to run a script? Well now you're basically using arbitrary code running it on your vCenter appliance which is not a good idea also from a security perspective. Next one is still you need someone to have access to vCenter which we wanna get off from. Why would we give everyone vCenter access just for configuring and extending alarms? Next one is if you are starting to write like external scripts, whatever you have this issue with polling like they need to poll for hey has this alarm changed has it changed and does the trouble with polling if you're too polling too frequent then this is obviously troublesome for vCenter if you're polling too slow well then you might miss the alarm or you react too late, right? And again it's cobbling you need to know the APIs, the vCenter APIs for that which you might know but not everyone like in different teams also. And now you might be smart okay well I heard Michael talking about event driven I know I can do something with these alarms let me build my own custom integration let me build my Python, my Power CLI or whatever this works but the problem with the alarm event that you get it's very generic and it misses a lot of data. So what we've done with some of the Vibar examples is we use some K-native concepts here which are basically the runtime that we use to do some a bit more magic on the event. So vCenter sends us an alarm event to say oh host memory usage is way too high you need to do something. Well then Vibar obviously gets it and then we transform it into a cloud event so this is all the boilerplate internals that you don't need to care about. But now for the example what we do is we use something called a sequence in Vibar or in K-native if you will which gives you steps you can say call this one first and that function or and that one and that one. So what we wanna do here is we have a service, not a function a service which receives that event then it calls into vCenter for more details on the alarm because they are missing it's not in there. It caches these details because we don't wanna always go back to vCenter and do all these calls because you could have a lot of alarm events, right? And then it produces a new event like an enriched alarm event if you will with all the details of the alarm like the name, the triggers, the criticality like how it's set up and all the stuff and it sends it downstream to another set of parallel receivers. And in this case parallel, why parallel because we want to send it to a dashboard in this case my Soci event viewer which you will see but we also wanna send it to Slack. So the beauty of this is that one event can expand into multiple like receivers or endpoints if you will and you can do this in parallel or you can have like these steps before where you intercept and inject and even create your own new events which a lot of Vyba users they use the vSphere alarms but when we tell them look you can even create your own events like oh cool I can do billing I can do user management right because we use cloud events and you can just produce cloud events we even have an SDK for PowerShell and PowerCLI to create and read cloud events. So let's jump to the demo last one before we wrap it up. Oh, I know what the issue is PowerPoint is the issue of course. Where's my mouse here? I need to finish this. Then wait. So back to the example. Da da da da da. So again the whole scenario what we're gonna show here is described in the tutorial. So I'm going to deploy a function this one. Just one cube CTL command but I need to go into a specific folder here for that code and I hope I did that right. Yeah okay so what it did here it created a function for sending to Slack and it has a couple of triggers and sequences and parallels that the stuff that you saw before to wire this all up and I think there's a dispatcher or it's way too big too. Oh yeah trigger here. Okay this looks good. And now I show you the vSphere environment. So I have set up an alarm like a fake alarm if you will because I need to trigger it. Come on. And go here alarm definitions. So this is my alarm here and it's like host memory above 5%. Obviously I set it low to trigger it right. So I'm gonna enable it now because it was disabled so that I can show the example. And after some time you will see some of these hosts getting flagged as alarms because it takes the center a while to figure out all the utilization and alarm I think 30 seconds here by default. So that takes a bit but in the meantime we already see a lot of alarms coming in and here's one which is the already enriched alarm event which we call alarm info. In this case the function just happens to do that. And what it does it takes the original event which is roughly this. It has some boilerplate blah blah blah blah but it misses important information which we then with the pipeline that you saw interject into the event and so we patch it in and now once it's patched in with all the more detailed information it's hard to read but again it's more detailed information for the alarm. Now we send it to our slack function so that our slack function and it's already doing stuff here can print us a nice hey this is an alarm and the type was an error and the object was a host this is a slack symbol not recognized here and we also have to threshold. Without patching that event we wouldn't be able to create this slack message because all this information is missing this is not available in the original event. That's why we're doing this patching on the chain of events there and this is all possible so I always joke is like the elastic sky is the limit elastic sky used to be the first name of ESXi. So when you start thinking about these events and integrations and possibilities that you have there literally your own imagination is the limit there.  Okay well we've already uploaded the deck to the scan site so you could go get these links to follow up on this afterward and if the screen was a little out of focus I think you should be able to get enough out of these links to repeat this at home. This session is hosted by the Kubernetes VMware users group and if you like these kinds of content this kind of content we are having meetings every month on Zoom and we also have a Slack channel where you don't have to wait till the next meeting if you've got questions or things you wanna share. The whole point of this is to allow users to ask questions, share best practices, experiences and interact even with developers who are working on this. So where do you find this? Well it's online I guess I should have gone to this screen this explains the purpose of the group. These are the links you join by joining this Google group mailing list. You could drop in the group without joining the mailing list but we use it to gate access to the document the agenda notes. We also encourage, we've got a couple of chairs who try to bring in guest speakers. Sometimes if we don't have a guest speaker we just turn it into a birds of a feather open-ended conversation but if you wanna give us homework to try to recruit a speaker on a topic this agenda document is open to users and you're free to just go in there and edit the agenda for next month just please put your name a topic you'd like to discuss or have discussed an estimated number of minutes and we'll try to make it happen and here's the Slack channel. It isn't on this screen but I do wanna point out that in terms of groups Michael works on that Viva event broker and they have monthly meetings as well it is monthly, right? And I've dropped in on some of those and it's very interesting material. Also, both of these groups publish the meetings up on YouTube sometimes they don't come out the day after but they come out eventually so you can go look at the historical meetings if that interests you. So, unfortunately I guess the QR code overwrote the link, sorry about that but the link, that's the link to the deck that's the Kubernetes channel that will find you Michael and now I think we're ready for Q&A if there aren't any I'd ask that raise your hand and we'll bring you a microphone so that the people online or watching the recording can hear any questions you have and if you'd rather have your questions one-on-one I think we can hang around a little bit out in the hall and we've also, I noticed in the audience in terms of user group members and actual people with Viva experience I see a number of them in the audience too so go ahead if you've got any questions raise your hand please. Okay, we've got one of those. Yes, thank you. I don't know if this, oh yeah, it's on. Hi, actually I have a mark of a question about the scalability so actually when you actually really start acting on a large environment let's say with a couple of thousand virtual machines we really have a lot of alerts triggered is there some kind of a sizing guide or is there some kind of, we also see analytics maybe some of the functions take a very long time so when they are triggered over and over that they actually start to stack up. So for Viva we don't publish sizing guidelines because we're also a little bit doubling right now in terms of deployments we often we also don't hear back from the users because it just works so we have a little bit of telemetry in the system of how many events per second we have throughput because we see that and the good thing with the Viva appliance is that it's a one to one model meaning it connects to one vCenter and then it has like one processing engine behind that obviously that doesn't scale from a management perspective but it helps with like the scaling from a vCenter to the actual execution and for Viva itself couple hundred events triggering per second is not a big deal like we've seen that but if you're thinking like thousands then the appliance itself becomes an easy bottleneck also from an availability perspective and we recommend doing the distribution model on Kubernetes. Yes please. Okay we've got a second question. What's the security model around Viva? Is there any sensitive information in the published events and how do you ensure that it uses the same authentication? Yeah so question is what's the security role model for like Viva and I think this is like almost two questions one is for connecting to the sources like there's a security implication and the other one is with the data inside these events right personal information for example so on the one hand the good thing of Viva is we only require read only access so it's not a write account that you need for in this case vCenter as one particular source and you can even scope it down to say just the host just the clusters it literally just sees then whatever this object resource and hierarchy sends over for the PII personal information kind of case we don't strip them off right now meaning you would have to write an additional function like a blinder or an extractor like in the alarm example that I gave you we injected in this case you would write a function or an interceptor that does this because we initially started thinking about enriching Viva itself with this kind of functionality but we saw ourselves becoming like a bottleneck of these features and so we kind of deferred it to like the examples that you saw like the sequence and then doing the other stuff for person like admin user names for example passwords are not in there right we don't send passwords but host names, user names login this could be personal information yes I think another thing that I've heard in one of your community meetings that William Lam pointed out with regard to the auditing use cases many times auditors want to have information about specific workloads but it might be a violation to give them everything and kind of the legacy way of doing that would be open-ended where they get free access to more information that they would need or maybe depending on the rules that apply to you should be able to see and through filtering on these events it's possible to put a level of classification that goes beyond what you can do in just the open-ended built-in API and typically you see multi-staged like you take the event and then you process it in a way that it's secure has the information that you want and then you give it for consumption that that's also possible and the latency by the way some people ask like how fast is it this is like sub-second it's almost real time I think we're up against the time deadline maybe we have one more just come by oh yeah just can we have one more question no if we have one more we can do it I think the next session got canceled so so we have time and otherwise we will be around so the question was about are you correlating events for multiple layers of vSphere so if you're taking like a delete VM event from vCenter and from the host you know whether the event happens twice does that get duplicated within Viva or are they handled as separate events so what's the question the question was around seeing multiple events for the same operation that was performed correct yes so yes or no you saw like the whole thing scrolling like crazy and the reason is not that you get like 10 times the same event but you see these staged like a VM created VM being created VM like deployed right there's always a pipeline of events that vCenter ships and that's only for one kind of operation a click could mean multiple events in the system but they all have unique event names and that particular event will only occur once at least from vCenter we try hard to deliver it multiple times so if your function fails for example you have a retry so you could handle events differently depending on where they've been sourced yes and no so because the functions in the default model the functions themselves they are stateless meaning you send them something they do something and then they turn down or they forget right so they don't know that there was a sequence or that they should wait or there's like this means like you would go into stateful processing right this is a little bit more stateful where you retain state and in that case the solution typically would be to put it in a like a database or a log or a Kafka if you want and then have stateful logic processing from there and this is very common like building complex pipelines out of this yes any state store if you will even imudibi works from the guy there good question I think we're gonna have to cut off questions but Michael and I will hang around we'll be here and like I say join join the community meetings too if this topic interest you I suspect we put on other topics that will be of interest too well one last word I want to point out there has been a proposal in the CNCF this group is operating under the Kubernetes project and there's a proposal to move it out of the Kubernetes project and start hosting user groups under the CNCF one reason is that in reality frequent topics that come up in this group are essentially how do you run Kubernetes on-prem as opposed to vSphere they encompass other CNCF projects like load balancers and other things that technically are not Kubernetes but they are CNCF projects so it's entirely possible that by the end of the year this group might have a slightly different identity where you find it I don't think it's going away because you know there's a community of people who found value in it and show up but that proposal is on the table to change the way user groups are done I suspect the earliest it would happen would be at KubeCon North America in October but if somebody is watching this on a YouTube video a year from now I just want that on there that that is a possibility that this group might have appeared to cease but it probably popped up somewhere else thank you for coming


And to all the parts of Africa, Chad's National Forum has announced that Mohammed Idris, who took over in April last year, will remain in power during the two-year transition to elections. At a ceremony boycotted by opposition members, leading and rebel groups and civil society organizations, the Transitional Military Council, which had ruled the country for the past 18 months, was formally dissolved. Despite calls urgent, the 38-year-old general not to extend the transition and not to run for president in upcoming elections, the forum ratified Debbie's right to therefore the presidency after the transition.


Activating your third eye, third eye guided meditation. Find a place where you won't be disturbed and where you can relax completely, whether it be sitting or lying down. Make sure the temperature is comfortable and there is no bright light or loud noise. You can sit in a meditative pose or lie down and let yourself sink into the surface you are on. Close your eyes and take a few deep breaths to further calm your mind and body.  This will set the stage for you to open your third eye and tap into your inner consciousness. As you focus on clearing your mind, you may find that thoughts and distractions arise. It's important to acknowledge them and then let them go, instead of getting caught up in them. Imagine the distractions floating away like clouds in the sky or imagine a door closing on them as they exit your mind. If you find that you're struggling to let go of a particular distraction, try focusing on your breath and bringing your awareness back to your breath. As you inhale and exhale, let go of any tension or stress you're holding on to.  You may start to notice gentle movements of purple, blue, or white colors flowing and swirling within your inner vision. These colors represent spiritual awareness and intuition, so allow them to guide you into a deeper state of meditation. Simply observe the colors as they appear and disappear in your mind's eye.  You may begin to feel a tingling or pulsing sensation in the area between your eyebrows, further indicating that your third eye is opening. Remember to breathe deeply and stay relaxed and allow this experience to unfold at its own pace. Visualize the colors becoming brighter and more vivid and allow them to fill your entire vision. As you focus on the colors, you may find that you start to slip into a trance-like state where time seems to slow down and your mind is completely at peace. This is a sign that you are opening your third eye and becoming more attuned to your intuition and spiritual awareness. Allow yourself to be open to the messages and insights that these images bring. Your third eye is a powerful tool for receiving intuitive information and guidance and these images may be communicating important messages from your higher self or the universe. Trust in the wisdom that it is being offered to you and allow yourself to receive it with an open and receptive mind. It's important to not judge or analyze the images that come to you. Simply observe and allow them to be. If you find that your thoughts start to distract you, take a deep breath and return your focus to the colors within your mind's eye. Trust that the images will continue to come to you as you continue to relax and focus. Take a few minutes to breathe, see the images and colors and just relax. When you are ready, slowly open your eyes. Take a few deep breaths and trust in the guidance and wisdom that has been revealed to you. You may find that you feel more centered, relaxed and connected to your intuition. Allow these feelings to continue to guide you throughout the day and trust that the insights and messages you received will continue to unfold and reveal themselves in meaningful ways. Take a moment to journal or reflect on your experiences and consider any insights or messages that you received during the meditation. Remember that the third eye is a powerful tool for receiving intuitive information and guidance and the more you practice accessing it, the clearer and more vivid the images and insights will become. Repeat this meditation before bed or at any time you want to tap into your third eye and experience more vivid visions. With practice you'll start to see these images more often and for longer periods of time. Thank you for listening. Namaste. Sending you all infinite love and light.