 Hey guys, so let's get started. Welcome to our talk on This would be a quick a project overview basically of horizon and a quick update on what we've been recently doing What we've been doing in in pike so far and what we kind of hope to accomplish in the upcoming releases And I'm Rob. I'm the ptl currently for horizon and was the ptl two cycles back as well and Possibly was a Dave and I'm David Lyle. I was the ptl for An ungodly amount of time about two and a half years before Rob took over And been with the project for about four and a half years So this is a new Track to summits or forums that the foundation want to start again So it's just a it's a project overview to kind of give and a touch point for people using horizon or interesting horizon An idea of what we've done where we're going and so they kind of give us a little bit of a format So we're gonna follow along with that and then kind of deviate at points where we will feel necessary but just a you know level set what is horizon obviously it's the Hopefully you know that by now, but just to make sure it's the extensible you unified web-based user interface for open stack What we try to do is provide a consistent user interface And support for and this is a trouble word, but the core services are basically enough services to launch a VM Inside open stack. So to do that. There's a lot of interdependency and horizon tries to give the base support for those services And then everything else is left to extensibility. So we have an extensive plug-in interface there's Literally, I don't know I'd say there's 50 or 100 horizon plugins in the wild Some are officially part of open stack some are just posted on github is I Don't know one offs. So there's a there's a lot of support out there But that's what we try to do We're trying to provide a consistent user interface so you can plug in and and put your the content be it that you're on a service team say ironix a Magnum so you can include content horizon, but we just want to make sure that we have that that touch point where you can plug in The project background so horizons actually been around since almost the beginning of open stack I think the first commits went in during the Bayer cycle it was officially added to the integrated release in Essex and then The contribution levels have gone up and down over time But the last release at least 136 people had it had a commit in the Ocata cycle as far as adoption According to user survey, we get we 89% of production or Combination production and test clouds and that's that's basically up there as high as any of the service And most of the services there's a couple neutron and nova. I think are a little slightly above that But it's on a par with say sender. So it's it's It's out there. It's it's pretty ubiquitous And people use it for different reasons for you know on boarding or for you know troubleshooting status That sort of thing So now we're going to cover what we did in Ocata So Ocata was a little bit short cycle since we kind of reset the summit format. So we have a We still got quite a bit accomplished, but these are the high points. So we did add Keystone Keystone Federation So if you're if you are using Keystone Keystone Federation, you can we have support for that horizon essentially you would You would log in it would get you would log into one Keystone end point and once you're in there You'll get a you would get a drop-down Basically provides you all the other Keystone end points. So much in the way that you can filter based on region And project you could also filter on which Keystone end point you want to talk to We do a lot of filtering in horizon just for performance reasons So we don't try to give you the overall view of what your cloud looks like just because the API overhead to do That is is quite expensive or expensive and then If we do piece together that picture and you try to do an action it gets very confusing about what actually you're operating on So we're basically gone to the and this has been ever since we got multi region support But just try to filter it down. So you're looking at one coherent unit And again, so Keystone to Keystone Federation would be the you know the first level of filtering You're going to look at this Keystone end point and then we'll start providing you the regions under that We did a we actually did work with Keystone team a quite a bit on Okada We've actually gone to kind of a focus We have we had regular meetings during the Okada cycle with the Keystone team just to try to address a lot of pain points and another example on here is just the Token revocation. So it used to be every time you switched to projects. We'd we'd go to Keystone and revoke the token It turns out that that's that's highly problematic We were trying to we were trying to keep Keep the number of tokens down But Essentially if you had a long-running project or a long-running task It's detrimental obviously for us to go revoke that token. So And Keystone ends up doing that on its own over time anyways So we just completely remove that based on feedback essentially We also had We improved Federation support overall This is another Keystone thing. Well, this was working with the Keystone team. So The way they were doing Federation They were mapping us to a dummy domain which basically meant as soon as is a Fictitious domain and so as soon as you logged in you couldn't really do anything So we work at the Keystone team now you actually get mapped to a real domain And so your views will actually come up properly An ongoing thing that we've been working on is performance improvements So we continue to make progress on that in the Ocata cycle We're have a long-running transition where we're trying to move more content to AngularJS To give you more responsive pages be able to do a lot more async data grabs And in the Ocata cycle we got a couple panels completed So we had glance for the image views and that's that's actually what the screenshot here is And and Swift support as well So what you get out of this is a much faster interface because we can parallelize the calls And then you can we can also do nicer things like the drawer that you see on here that you wouldn't see in a traditional horizon table Where we can that's basically the contents of the detail view But we we put it in the table so you don't have to bounce around to so many views to get the information you're looking for The detail view still exists. You can you can bounce to it We won't actually go re grab all the data again So in the old Django format if you click the detail view we'd go make a new API request populate that data And then if you went back to the table view We'd go repopulate all that again too and with the Angular Rise views then you can do that bouncing back and forth without having to to make the expensive data API calls every time So that's an ongoing process And Rob will talk about further work as we go forward where we're going with that But we're pretty excited about making further progress on that Again in performance improvements. We also added support for a feature. We call admin filter first But basically you can specify views where you want you want to force the data or force the user to filter data Before you we display them anything so Good examples of this where you'd want maybe want to use this is is a user view in identity So if you if you went into Keystone or we call them the identity views But if you're looking the identity identity views Trying to show you a list of 10,000 users what it's not even possible in Keystone the way they've constructed it But it's also not very useful Showing you because basically we would show you the first hundred of those users and then you have nine You know nine thousand nine hundred left so that's not a good way to access the data So it's fine on a on a test cloud or a token cloud. It's it's a great way to I mean to render all the data But once you get into a larger scale cloud It's it's nice to be able to especially in the admin views which is where we would really targeted this so people to have cross project visibility We want you to we want to allow operators to tell the users, you know, we really need to filter this first so We have a lot of API Level filtering at the tops of the tables you can see it at least in this one to click here for filters But and then you can you can qualify the data you can say, you know, I want it I want an image with the name this or I want to image For this architecture or things like that so we provide that filtering and again That'll get you to that'll get users to the data that they're looking for a lot quicker Another thing that we added was pro profiler support, so this is not enabled by default It's actually in our contrib directory, but you can turn on profiling in in horizon And this allow you to see where you're spending the time on API calls So it actually will track each of the API calls in the time for response and to get to the rendering part And we've actually used that to validate some some performance improvements that we made in Okada Or actually this cycle I think is in pike around doing more threading it even on the Django side just to try and get Get the pages to render faster And we continue to make lots of UX improvements or attempt to make a lot of UX improvements Some examples you can see in this view is we've split out some of the we used to have a lot of information buried in a in a panel called Secure access and security which was very cryptic and it was buried under compute and the interesting things that were there were your key Pares and your API access and things like how would I go get my open rca dot sh? and so not only we kind of Done away with that little panel of buried stuff and split them out into to higher-level things, but we have also added You see on the admin user menu on the right-hand side We've added links to just go ahead and download my open rc file That's actually a very popular use case for horizon as I open up horizon I just want to grab enough info. I want to grab the data so that I can use the command line more efficiently So we made it we're trying to make it as accessible as possible And we just continue to you know the table drop downs and things like that are things where we continue to try in and make UX improvements Rob So the the themes that we've been kind of going with with these releases have been pretty consistent for the last couple of releases and They are continuing along the same kind of lines for for pike and Queens really where the major focuses are on scalability So kind of at what what's like the upper limit of how you can operate horizon? So not addressing like hundreds of instances, but like thousands and tens of thousands In an efficient manner and and the user experience. So like how quickly can you do stuff and how accessible is the information? So things like splitting out these panels to make them more discoverable putting sort of key actions that people are commonly using up in the user menu drop-down That all kind of comes under the banner of user experience. So, you know How quickly can you interact with something and the admin filter first thing was quite another good example of that Where rather than say you hit a panel like your admin you go to admin and then instances and the Django panel will instantly try and load like 10,000 instances That's not useful if you're just trying to look at a subset So the whole like the idea with the filter first stuff is that it would for it would not load any data And you would immediately put your filter in because if you're an admin You don't want to look at a list of like 10,000 instances. That's not useful information to you You're gonna have a rough idea of what you're looking for and what you know what you want to operate on Yeah So so far in pike we've added micro version support so far we've got support for We have kind of a generalized solution and specifically support an over-incinded micro versions There's already quite a few patches out in horizon That are building on top of this and will only a drug will only make certain calls And if you've got the correct supported micro versions and going forward this means that you'll be able to operate on Different versions of Nova and not worry about things breaking when they change their API calls And and also navigation improvements following on from the last cycle we've made Changes to the admin dashboard, which was becoming really quite overloaded because we just had like this one top level System panel group. So we've started splitting that down to match the project level dashboard So it's now divided up into kind of compute volumes things like that and We also broke out the volume stuff because a lot of that was all buried under one panel with like five tabs So again, it was getting pretty overloaded if you just had ones like if you just wanted to look at volume backups or something like that You were having to navigate to the volumes thing Bring up a list of your volumes and wait for that API call to go through and then go through to look at your backups So it was it was really kind of slowing things down So a lot of this navigation stuff is about letting the user get to the information they need faster without having to go through unnecessary API calls and Continuing for pike We've got a few kind of bigger ticket items that are that are ongoing the overview panels for quite a while have been fairly problematic and Really for anyone operating on larger clouds. We most the feedback we get is that they either Change their default panel so they log into something that's less heavy or they just disable the overview panel and complete entirely One of the most kind of obvious things you might notice is that If you've just installed horizon and not customized it, you'll log in the default panel is overview And especially if you're in an admin role, it will then try and Get quotas and other usage information across every project that you are an admin of and And especially when some of the projects don't really Use the admin role properly this basically means that if you've got an admin role It'll try and retrieve usage information for every project. This is pretty problematic. So we're working on I'll just realize that you are else wrong. Sorry about that. Um, but we're working on the Improving the overview panel so that it'll pop up give you an empty view and then populate the information as the API calls return Building on well really kind of very very linked to that is improving the quota support so another kind of problematic part of horizon is that when you When you do quota lookups at the moment the current logic will try and Retreat every quota at once. So you'll try you'll you'll do something like go on to the the routers panel and It'll try and look up Limits and things like that in neutron but also which do all the nova quota stuff at the same time And again, this is an incredibly heavy API call and this will happen on a lot of different views Because we try and do things like proactively Disable actions if you've already reached a quota You don't want people trying to launch an instance and spending 10 minutes filling out a form only to find that when they hit Submit it says no, you're at your quota. It's just a waste of time. So yeah We always we already try and proactively prevent that but the logic is pretty heavy and that needs to be Modularized so that it you know, we're doing this in much smaller units And finally improving kind of some of the core service support again cause a bit of a questionable term to use But we do still support Keystone nova glance with neutron and Cinder Yeah So Yeah, we've got a couple of big patches out of the moment to add improve neutron API support For parts of neutron that we don't currently have horizon panels for So moving on to Queens the release themes here and for those who are kind of paying keen attention one that is that they're exactly the same Just want to continue focusing on the scale that horizon can address and and you know Improving the user experience so working on discoverability These are key things which we kind of Depending on the this the pace at which we can address these things they might hit either pike or Queens But I wanted to be cautious with this and not promise too much. So the the the instances work as I've mentioned before Instances becomes quite a difficult panel to deal with because it's it's one of the highest kind of volume Pieces of content that horizon will ever talk to and you know It's pretty common to have thousands or tens of thousands of items potentially being loaded on there Which is you know much much more different to something like your glance images list Which will probably never reach more than a few hundred items and So we want to port that fully over to angular and there's there was a big work in progress patch but unfortunately the contributor who was overseeing that has left horizon now and So we need to pick that up again But there's a big probe a big patch there to move that over to angular to improve the filtering and improve pagination support And finally we want to continue on the quota work and Make it completely pluggable So one thing we've been asked for a lot especially by the other networking services like Octavia and things is to allow us allow them to have Quota hooks basically so if we have our overview pages that give like a an overview of all your quotas That you're that you can view you know They want to be able to hook into that and produce graphs and things at you know relatively simply without having to kind of hack the The Python code behind it Back over to Dave. All right So here's where we asked for your help so I just put a couple charts on here to kind of give an overview of You know the trajectory of the project so the number on the on the x-axis is just that the number of the releases So this goes all the way back to the Austin release all the way up through I put numbers on here for for pike, but it's still work in progress, but as you can see from the generalized trends We're we're losing contributors. I mean, I think this is a common issue across open stack so it's probably a common story you'll hear but We're losing contributors and reviewers and it's it really slows down the pace that we can make them make improvements to horizon so It's a great time to get involved If you have things that you'd like to see in horizon. It's a great time to do that You won't there won't be a lot of people pushing back on you so But we also need feedback from Operators and users more We I mean we love to get any feedback that we can from anybody that has an association with horizon Whether you're setting it up and and it would be much better if we you know If I had this option to how I could set it up or I always run into this issue, you know provide a bug You know reach out to us. We had our IRC names on there, but you know launchpad file a bug We'd love to get that feedback You know We're doing core things to try and improve horizon overall, but we always address we always try to address, you know User problems operator problems that you know, those are our highest priority. Yeah, and it's kind of worth mentioning that we don't and I Know that some of the other IRC channels are very much like dev only no support help Horizons never been like that really quite active considering how many kind of people have left recently, but we You know, I can't promise we'll answer everything within five minutes But normally if you leave a question on there within an hour, someone will get back to you and You know, we're always answering questions on there or if I see doesn't work, you know, feel free to Grab my email off like launchpad or something like that and just email me like feedback or questions directly I'm happy to answer things and if you know if that supports if that works better for people because I know sometimes IRC can be troublesome for various reasons And I'll beat the drum again for reviews reviews would be great We're at the we're at the point where we have core viewers will approve patches with one core reviewer vote So the plus ones make a lot of difference get growing new cores would help immensely as well I mean it's we're not we're not on dire straits But it would certainly it would certainly help in the health of the project if we could get more people involved So that's what we had for for content for the Verizon, we'd be happy to take any questions you may have There's a mic up at the front as well So if you want to if you have any questions, please step up just so that the recording can catch the questions Okay. Thank you very much. Thanks everyone