A GeoNode primer.
This is a modal window.
Das Video konnte nicht geladen werden, da entweder ein Server- oder Netzwerkfehler auftrat oder das Format nicht unterstützt wird.
Formale Metadaten
Titel |
| |
Serientitel | ||
Anzahl der Teile | 188 | |
Autor | ||
Lizenz | CC-Namensnennung 3.0 Deutschland: Sie dürfen das Werk bzw. den Inhalt zu jedem legalen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen. | |
Identifikatoren | 10.5446/31729 (DOI) | |
Herausgeber | ||
Erscheinungsjahr | ||
Sprache | ||
Produzent | ||
Produktionsjahr | 2014 | |
Produktionsort | Portland, Oregon, United States of America |
Inhaltliche Metadaten
Fachgebiet | ||
Genre | ||
Abstract |
| |
Schlagwörter |
00:00
Attributierte GrammatikComputerspielDatenverwaltungImplementierungRückkopplungStatistikMAPMittelwertProgrammierumgebungBitFunktionalPhysikalisches SystemProjektive EbeneVerschlingungVersionsverwaltungServerSpannweite <Stochastik>InternetworkingMetropolitan area networkGemeinsamer SpeicherFeuchteleitungWeb-SeiteKartesische KoordinatenService providerMetadatenMailing-ListeDateiformatStromlinie <Strömungsmechanik>SichtenkonzeptWeb SiteDifferenteMedianwertObjekt <Kategorie>MultiplikationsoperatorStandardabweichungMapping <Computergraphik>Rechter WinkelDemo <Programm>BenutzerbeteiligungWeb-ApplikationTwitter <Softwareplattform>FacebookSoftwareentwicklerInformationGruppenoperationStabilitätstheorie <Logik>BitrateWeb-DesignerComputeranimation
03:53
MittelwertGarbentheorieMapping <Computergraphik>SoftwarewartungExogene VariableBitrate
04:20
Bildgebendes VerfahrenInformationMathematikMathematische LogikOrdnung <Mathematik>Selbst organisierendes SystemProgrammierungMAPProgrammierumgebungBitFunktionalInhalt <Mathematik>LastLeistung <Physik>MaßerweiterungPhysikalische TheorieTabelleZellularer AutomatFlächeninhaltAbfrageExogene VariableMatchingTexteditorInstantiierungAdditionQuaderWeb-SeiteMailing-ListeSichtenkonzeptViewerEinfache GenauigkeitMultiplikationsoperatorSchlussregelExploitMapping <Computergraphik>Rechter WinkelBenutzerbeteiligungWeb-ApplikationDefaultEinsDichte <Stochastik>HochdruckMehrplatzsystemTemplateFramework <Informatik>Computeranimation
08:36
Bildgebendes VerfahrenCodeComputerarchitekturSelbst organisierendes SystemProgrammbibliothekTypentheorieMAPFilter <Stochastik>VektorraumDichte <Stochastik>FunktionalGruppenoperationLeistung <Physik>TabelleWiderspruchsfreiheitGüte der AnpassungExogene VariableVerzweigendes ProgrammProzess <Informatik>NormalvektorRPCSystemverwaltungTemplateInstantiierungComputersicherheitAdditionStrömungsrichtungKlasse <Mathematik>QuaderAuthentifikationWeb-SeiteKartesische KoordinatenBitmap-GraphikInklusion <Mathematik>BimodulMetadatenMailing-ListeFramework <Informatik>BitrateSichtenkonzeptWeg <Topologie>AutorisierungRollenbasierte ZugriffskontrolleObjekt <Kategorie>Einfache GenauigkeitURLZweiMapping <Computergraphik>BenutzerbeteiligungWeb-ApplikationSoftwareentwicklerApp <Programm>Kategorie <Mathematik>VerknüpfungsgliedGrenzschichtablösungMaßerweiterungMonoidale KategorieRechenwerkQuick-SortServerRuhmasseSchnittmengeInformationsspeicherungVorzeichen <Mathematik>Elektronische PublikationElektronisches WasserzeichenWeb SiteEndliche ModelltheorieOverlay-NetzDesign by ContractMobiles EndgerätComputeranimation
15:32
CodeDatenbankDatensatzFormale SpracheSelbst organisierendes SystemZeichenketteProgrammbibliothekTypentheorieGebäude <Mathematik>MAPTaskElementargeometrieBitFunktionalGarbentheorieInjektivitätMaßerweiterungProjektive EbeneZahlenbereichAbfrageServerNichtlinearer OperatorProzess <Informatik>SystemverwaltungTranslation <Mathematik>StrömungsrichtungQuaderSchnittmengeAuthentifikationInformationsspeicherungWeb-SeiteKartesische KoordinatenHilfesystemMailing-ListeFramework <Informatik>SoundverarbeitungQuellcodeElektronische PublikationClientEndliche ModelltheorieDifferenteMulti-Tier-ArchitekturMultiplikationsoperatorMapping <Computergraphik>BenutzerbeteiligungInterface <Schaltung>Web-ApplikationCross-site scriptingSoftwareentwicklerStereometrieValiditätFrequenzHydrostatikIntegralSoftwaretestBildschirmmaskeForcingHyperbelverfahrenMereologieResultanteStellenringTabelleÜberlagerung <Mathematik>RuhmasseTemplateEnergiedichtePunktFortsetzung <Mathematik>Wort <Informatik>Shape <Informatik>FitnessfunktionTouchscreenKreisbogenRechter WinkelPRINCE2DefaultComputeranimation
22:28
ImplementierungMathematikMathematische LogikSelbst organisierendes SystemMAPIntegralOrdnungsreduktionGruppenoperationPhysikalisches SystemProjektive EbeneRechenschieberVerschlingungServerNichtlinearer OperatorProzess <Informatik>AbstraktionsebeneInstantiierungAdditionStrömungsrichtungOffene MengeWeb-SeiteKartesische KoordinatenHilfesystemMetadatenMailing-ListeSkriptspracheFramework <Informatik>ClientWeb SiteDifferenteElement <Gruppentheorie>Dreiecksfreier GraphMultiplikationsoperatorMapping <Computergraphik>Demo <Programm>Interface <Schaltung>DokumentenserverSoftwareentwicklerEinsProgrammierungKategorie <Mathematik>Temporale LogikÄquivalenzklasseFunktionalLoopRechenwerkWiederherstellung <Informatik>SkalarproduktE-MailVersionsverwaltungComputersicherheitPay-TVNotepad-ComputerPunktShape <Informatik>HomepageFokalpunktMinimumRechter WinkelComputeranimation
Transkript: Englisch(automatisch erzeugt)
00:01
Let's go ahead and get started. My name is Tyler Garner. This is a geonode primer, a high-level overview of the geonode application, which is a web application for creating and sharing geospatial data and maps. Again, my name is Tyler. I'm a web developer and geospatial analyst at NOPLIS NSP.
00:22
I go by Garner TV on the Internet, most Internet sites, and I'm a committer on the geonode project. So geonode's primary purpose is to reduce barriers that exist between creating, publishing, cataloging, and using geospatial data. And I could kind of talk to geonode, but I thought it would be better if I start off with a high-level demo just so you can see what all
00:45
geonode is and what it does. So this is demo.geonode.org. This is a site that we keep up to date with the latest stable version of geonode. So if you download geonode, this is what you get just out of the box, essentially.
01:02
Here you can see when you first come to the application, you have a list of the latest layers, the latest maps. Every first-class object in geonode has a layer or a list view. So here's the layers list view. And these are all the layers that are stored within the application.
01:22
Users can upload new layers just by going to the upload layers tab and dragging and dropping their geospatial data. So each layer also has what's called a detail view. And so if you click on any of those layers from this list view, you would get this detail view.
01:40
And the detail view provides a map of the layer, but also you can take some actions on it. Like you can download the layer in all these different formats, right? So you have tiles. You can view it in Google Earth. You can download a KML, GeoJSON, et cetera. And that essentially replicates GeoServer, right? So any format you can get out of GeoServer, essentially we just provide the link here in geonode shapefile and whatnot as well.
02:05
Also, you can download the metadata straight from this page. So typically I work with the TC211 format. But again, like some desktop applications, working with the metadata is a little bit more complicated than in a web environment, right?
02:23
So in traditional workflows, you'd have your desktop application where you'd work with your data. You'd have your cataloging system where you'd work with your metadata. And that kind of workflow has kind of been improved a little bit in more recent desktop applications. But from this web environment, you simply hit just edit metadata.
02:42
And then you have kind of like a high level view to actually go through and manage your metadata. So it's much more kind of intuitive and streamlined than traditional geospatial desktop applications. And this is stuff that's really easy to do on the web, but could be a little bit more complicated on a desktop environment.
03:05
So the layer detail page also has just some generic information about the layer. So a title, the abstract if it's provided, that comes from the metadata, the publication date. We also store all the attributes about the layer. So right now you can see that there's nothing in there.
03:23
But if this was numeric data, they'd actually have those statistics calculated. So it'd have the range, the average, the median, and the standard deviation. We optionally expose a share tab so that you can share this layer page on Google+, Facebook, or Twitter.
03:44
You can also disable this, which I see a lot of implementations doing. We have a rating functionality. So this kind of provides your users with a way to provide some feedback to the actual layer owner or maintainer about maybe the quality of the data.
04:00
And then the average here is just the average of all the ratings that the layer has received. Finally, we also maintain a comment section for each layer, each map, and each document. So just to provide another way for your users to kind of have a dialogue with the layer owner. And this has been really successful for, usually when I see people using this as disaster response geonodes
04:24
where different organizations are working within the same infrastructure and it's not always clear who's doing what or where the data came from or accuracy issues with the data or something like that. So this kind of functionality can become helpful there. Down below, we show the legend for the layer.
04:41
We get that directly from GeoServer by default. In the latest geonode, you can actually disable GeoServer completely, but all this stuff will still work just with internal Django geospatial logic. Here you see a list of all the maps that are using the layer. So you can quickly kind of go from a layer to see if there's any maps
05:04
that you may find interesting that are already using it. You can create a new map from the layer and also modify the permissions and the style all from this one page. And the best thing about geonode and Django, which is the underlying web framework in general, is all this stuff is completely extensible and completely overrideable.
05:23
So you can override just portions of these templates or the entire page itself and have a completely custom look and feel to your geonode, which I'll show here in a little while. That's about it for the layer detail page.
05:40
I'm going to open a new map with this layer. So when I click that button, this just goes to the map viewer and then adds that one layer in as the only layer. Let me see if I have one already. No, it's going to take one second. Oh, here we go. So this is what the view will look like when it loads. It looks very similar to the traditional geospatial exploitation tools.
06:05
You have essentially a table of contents on the left with some tools up here on the top. This is using a technology called GeoExplorer, which has a lot of interesting capabilities and powerful capabilities just right out of the box. For example, you can print your geospatial data
06:22
and you can customize these printing templates as well to have, for instance, your organization's logo, but here you'll see just the PDF of what I have on the view. But you can add your title to it, your logo, additional information that you want to have. Also, you can add external layers to this or any other layer that's already in geonode.
06:45
So these are all the layers that are currently represented in this geonode and I have access directly to them right here from the web map. I can also edit the features directly here on the web map.
07:03
So this is kind of like in traditional desktop environments, multi-user editing, you have to invest a lot in your geospatial infrastructure a lot of times. It has really complicated SDE deployments and stuff like that, but again, this is something that's really made trivial in a web application.
07:21
So you can just click here, edit directly, and it doesn't matter how many users you have working with this data really at any time. So I'm not going to save that, but another cool functionality is the ability to query this. So I'll say I want to query it by geospatial extent.
07:41
I zoom into here and then it should just have the single feature that intersects the current viewport of the web map. And like the rest of geonode, this whole experience is really completely customizable as well.
08:03
Like I said, you have to know a little bit about the GeoExplorer program in order to know how to customize this, but it is completely customizable and you can add additional, more complex logic into it. And there's also, I believe, some functionalities that we're not using that are also available in GeoExplorer. Like I think actually there is a style editor here to where you can edit the style directly
08:25
from within this experience. Instead of having to do like an SLD or something like that, you just go in here and add these higher level rules that will actually change the style of your layers. So next is the maps view.
08:42
So these are all the saved maps within the application. Again, traditionally just a collection of layers, that's all it is. Each one of these maps also has a detail view very similar to the layer view. You can download the map, edit the metadata for the map, set permissions
09:02
so it has all the same permissions as layers do in geonode, but overall a very kind of consistent look and feel between the rest of the application and consistent functionality. The ratings and the comments still apply here as well. Next we also allow users to upload and store non-geospatial documents.
09:22
So this could be PDFs or PNGs, pictures, Excel files, stuff like that that may still be interesting for your users or maybe like a PDF that you use to actually create a geospatial layer, you can upload that PDF in here and then you can actually link the PDF to the geospatial layer.
09:46
And so then on the layer detail page you would see that this document is related to this layer. And I'm not going to actually upload a document now, but you understand. And this is really helpful again for disaster response type situations
10:03
where you have a lot of organizations producing PDF maps and you may or may not have access to the actual data, so this is just another way to have everything in the same architecture and the same infrastructure. And again, it's a first class object in geonode so it automatically has all the same permissions and all the same kind
10:22
of functionality that all the normal layers and maps and other objects in geonode have. All these list views have some filters so you can spatially filter everything. Of course, not the documents, but you can also filter by categories, the date and keywords, and you can also sort them based
10:40
on just common sorting, you know, numeric and whatnot. Finally, there's a list of all the people that are currently within this geonode instance. And so the cool thing about geonode is that all these actions that occur in here are all stored and so you can get an activity feed of anybody. Let me see, admin is typically the most active user.
11:20
And then I can look at all the activities that the admin has done. So here you can see, created a, uploaded a layer, created a map. There's still just another good way for your users to go through and kind of track what's being done. But it's also just a way to kind of, I don't want to say audit, but yeah, keep a good idea of what users are doing in your geonode.
11:46
So that's about it for a basic geonode that you get out of the box. Of course, there's some more functionality in there, but that's kind of the major things that you need to, or that you should take away from this. So again, geonode enables your users to publish raster vector and tabular data.
12:03
You can manage metadata and associated documents all from within this high level web framework. You can search spatial data and spatially search your data so you can filter by the location of your layers or the location of your maps. You can create and collaborate on multilayer maps with other users.
12:24
And you can rate all the first class objects as well and add comments to those data sets. Another important aspect of geonode is what it allows developers to do. And this is to easily brand and theme the application using just your CSS or we compile CSS from less files.
12:44
You can override templates to include custom functionality. Again, this is really the power of Django. But geonode does a really good job of kind of compartmentalizing different functionality so you can just extend certain pieces of the application instead of having to overwrite the entire thing.
13:02
So if you wanted to add a small piece of functionality into the layer detail page, you don't have to recreate everything. You just add that additional code into what's called the template. Another powerful aspect of this is that you have access to functionality from a large ecosystem of pluggable apps and modules.
13:23
So because it's written in Python, you essentially have access to any Python library that's out there. You can import it into Django and then use it in your geonode application. So for things like QGIS or if you want to do some damage assessments using the NSafe library or even ArcPy or something like that,
13:41
you could enable that functionality and expose it all through a Django web application. So next is, and this is more for our current master branch, is that we also allow developers to access geonode objects from third-party applications via the API. The 2.0 release still had an API, but it wasn't nearly as formalized as it is now.
14:03
It's much better than the current master branch. Again, so you can develop mobile applications or access these objects through additional external applications. Next, security. All first-class objects have user and role-based security.
14:22
And probably the best thing about this is that GeoServer delegates both authentication and authorization functionality to geonode. So as soon as you modify the permission in geonode, GeoServer will automatically respect that. So say, for example, you have a layer that you want only one explicit user to be able to see.
14:41
As soon as you set those permissions, GeoServer will automatically filter that layer out of the Git capabilities for all other users. And then Git Map request from other users will get 404, so instead of actually returning the image. So GeoServer delegates all of that to geonode, and you have one spot that you have to update those permissions.
15:01
So it's a really nice ecosystem kind of, and it's definitely very secure. And finally, like everything else in Django, the security is completely extensible. So you can tap into third-party libraries like Django LDAP to enable LDAP authentication, and you can use Django's remote user authentication
15:22
for single sign-on, and they're very high-level libraries, so you can even implement your own authentication. It's fairly trivial. And here's just a screenshot of kind of the permissions workflow from the layer detail page. You just click on the edit permissions, and here, I don't know if you can see this or not,
15:40
but I'm explicitly giving certain users access to that layer. So next, this is probably important for anyone who may be thinking about deploying a geonode, especially in another country that doesn't use English as the primary language. English is the source language for Django, or excuse me, for geonode, and it's at 100%, obviously.
16:06
But next is Korean at 36%, and it just goes down from there. It seems like only Japanese and Spanish are the only other two languages that are localized above 30%. So it's something that we could use a lot of help with. On the geonode project, we use a tool called trans effects to do all the localization.
16:24
So we essentially load all of our translatable strings into this application. Users can use this high-level interface to go through and translate them for us, and then we can commit them back into the project and compile them into our localization files. So something that if you have any skill sets in these languages,
16:42
we'd be appreciative to get some of these numbers up a little bit higher. So next, I just want to talk about some of the technology that geonode is built on. Again, we use Django as the web server. GDAL is kind of a low-level geospatial library,
17:00
and we actually access it through higher-level Python methods. GeoServer, we use to serve up the data once you upload it into geonode. Postgres and PostGIS, we use for the actual geospatial or the actual geonode database, but you can also upload your data directly into a PostGIS data store.
17:21
And that's kind of versus serving it up as a shapefile, which usually isn't recommended for production uses. So as soon as your user is uploaded, you have a PostGIS table, GeoServer is serving it up as a WMS, WFS, fairly straightforward workflow. We also use GeoWebcache that's embedded with GeoServer to reduce the number
17:42
of actual Git Map requests or the processing time for Git Map requests for WMS calls. PyCSW is a built-in CSW functionality in geonode. And this next tier is kind of our static file tiers,
18:01
some of the things we use to create the client side, but also to manage the static files on the client side. So the first here is Grunt. We use that for typically operations or tasks that we do, like minifying CSS files or minifying JavaScript files and stuff like that.
18:20
We use Leaflet for the layer detail page in the current master. The one that I was doing on the demo, the 2.0 release, still uses OpenLayers. Even in master, we use OpenLayers for our mapping client still, just because it has all that additional functionality that I was showing in there. So we haven't found a good Leaflet or really otherwise mapping library
18:45
that has all the functionality of our current mapping application, GeoExplorer. Next is jQuery, obviously, just for DOM manipulation and stuff like that on the client side. We use Bower to manage all of our client side dependencies.
19:03
Again, trans effects for our translations. And then Travis CI for our continuous integration and building. So I did want to mention, I think it's worth mentioning, why we chose Django. And I wasn't involved in the design process, so this is kind of my best guess
19:20
at why Django was chosen. First of all, it's because it's a world-class geospatial web framework. Django, by default, has access to GDAL and geos libraries. And so any query you run in Django, if it's on geospatial data, you automatically have a geospatial result from it, right? So when you get a collection of records back, you can get, say, like the extent
19:44
or intersect it with some additional geospatial information or whatnot. So it's a very high-level geospatial web framework where you can quickly develop very powerful geospatial applications as well. And the cool thing about it is like the API and by using these third-party libraries
20:01
like Tasty Pie, you get all that functionality out of the box, right? So if you make a model with geospatial support, the API already understands that and knows how to do intersections and things like that. So you can build very quick, powerful applications with it. The second reason is the geospatial community already has significant experience
20:23
with Python itself. Libraries like QGIS, ArcPy, Shapley, the list goes on and on of Python modules out there or Python ports that are already written in Python and that the geospatial community is already using. Next, Django has a lot of batteries included, right?
20:42
So things like SQL injection or cross-site request forgery, these types of things are pretty far extracted from the user experience or the developer's experience now. Django also includes a really nice admin section where you can inspect your database which is a little bit different from most other web frameworks that I've seen,
21:02
specifically Rails, and I'm not sure Node includes one out of the box either. Next is extensibility. Like I mentioned before, virtually everything in Django is extensible and it's extensible at a very high level, right? So again, another example is the authentication libraries
21:21
or virtually anything, all the templates, the client-side code and everything else. And finally, it's because I think we're in good company. We have, you know, Disqus, Instagram, Mozilla, these are some major organizations that are deploying web applications using the exact same technology. So that makes you feel a little bit better about working with it.
21:46
So Junode is built by 33 committers and at the time I made this, we had over 75 or about 75 contributors. Here they are, left to right, top to bottom, based on the number of contributions we have from them.
22:05
It's pretty much exclusively built on GitHub. We have some lists and stuff like that that we use to communicate with one another, but everything you would need from the project is on GitHub. We have over 240 stargazers, over 200 forks, 200 issues,
22:22
over 187 releases on GitHub, and over 8,000 commits on there as well. So anything you need, like if you're interested in Junode or want to go through and see what the current release cycle is or how many issues we have, or even file an issue, the link at the bottom, just github.com slash Junode.
22:42
Junode is really the place to go. So who uses Junode? So this is a non-exhaustive list of some of the organizations that I know about that use Junode. We have GFDRR, which is the Global Facility for Disaster Reduction and Recovery,
23:01
Army Geospatial Center, Harvard, State Department, MapStory, Open San Diego, COPECO, which is like FEMA and Honduras, Pacific Disaster Center. This one is Dominican Republic's kind of FEMA equivalent, NOAA, Argonne National Labs,
23:20
World Food Program, World Bank, Ithaca, and the list goes on and on. You can just kind of Google it and you'll find different instances of Junodes out there. So I want to give a couple screenshots of some of the more successful Junode deployments that I know about. This is the World Food Programs. Over 370 layers, you can find it at junode.wfp.org.
23:45
And as you can see, so this is using the same demo site or the same baseline as the demo site that I showed you earlier, but it looks completely different because they've done a really good job of styling it and customizing it to their needs. And so they added some additional client side functionality,
24:00
but overall made it look really nice and really slick. Next is MapStory. I think this is one of the ones that when you look at it, you really can't believe it's built on Junode when you first see it. But it is. It has over 1,200 layers, and really its claim to fame is its geospatial and temporal framework.
24:21
So it allows users to tell stories using geospatial data, right? So you can upload a layer and then walk through time on that layer and show or tell a story with it. So you can show how, you know, if you have city streets and a time element on all those streets, you can actually draw them over time and show how the city has expanded or something like that.
24:41
But they have a lot of really great what they call map stories. And again, it's all built on Junode. Next is the Harvard World Map. And so this one, this is probably the largest Junode deployment that I know about, over 11,000 layers, over 3,900 maps.
25:02
And then you can find this one at worldmap.harvard.edu. Next is the NEPA node. This is a pilot project for the Department of Energy done by the Argonne National Lab, over 260 layers. And what I really like about this one is how well the metadata is filled out.
25:24
So you can see when a deployment has a lot of really well-maintained data, it looks really good and it's really easy to find geospatial information on there. Some you'll see just don't have any of this stuff at all. Finally, GeoShape is an implementation that I worked on on the Rogue project.
25:44
Our claim to fame is kind of our GeoGit integration in GeoNode. We also use a custom map application. So we replaced the GeoServer or the GeoExplorer client-side map with a map that abstracts GeoGit operations at a really high level.
26:00
So when users start interacting with data, they are actually making commits in a GeoGit repository, and then from a high level, they can go back and actually reset the data, revert previous changes. They can synchronize their GeoGit repository with other servers. And then we also have a mobile interface that allows users to do the same thing from an Android device.
26:26
So next, just wanted to, you know, if you need help with GeoNode, there's GeoNode on Freenode. We also have two mailing lists, GeoNode users and GeoNode dev. One's for developers, the dev one's for developers, the other one's the users list.
26:42
GitHub issues is really the place to go if you have an issue or want to track down something that you think may be wrong with it but don't know, there's a chance that we already know exactly about it and we're working through it. And docs.geonode.org is our documentation. And finally, I just wanted to list some instructions on how you get GeoNode.
27:04
If you're using Ubuntu 12.04, it's just sudo apt-get at the GeoNode PPA and then apt-get GeoNode essentially. And for all other operating systems, just go to our GitHub page. We have some pretty detailed instructions on the installation instructions for each
27:21
of those operating systems and I think that's the end of my slides. Are there any questions?
27:45
Sir? I've been thinking about it. I think it'd probably be helpful. I know, Simone, do you guys have some scripts also for deployment, for deploying? Yeah, I think there's also some fabric scripts out there for deploying. I'm not sure if any of them have been committed into the GeoNode,
28:02
a repository in the GeoNode organization yet. But I think making the Chef scripts is something I'd really love to do for GeoNode and I'm hoping I get some time to do it. We'll see. I mean, it would take like an hour to write a Chef script that did this at most. So I'd like to do it if I could.
28:21
Any other questions? Yes, sir? Is there support? Yeah, so in our current master version, we have role-based security as well.
28:41
So you can group members into a group and then say, like, these are all your, you know, analysts or developers or something like that, which, I mean, is obviously much easier than having to go through and explicitly specify a user, you know, all the users who may have access to a single layer. But yes. Which you can also do on individual user basis? Yep, yep. Either one. So the logic will walk through all of them, ensure that the users have permission either
29:04
from a group or explicitly and then continue on the request cycle after that. So any other questions? Okay. Thank you very much for coming.