Storage Developer Conference - #24: Swordfish Deep-dive: Scalable Storage Management

Episode Date: October 27, 2016

...

Transcript
Discussion (0)
Starting point is 00:00:00 Hello, everybody. Mark Carlson here, SNEA Technical Council Chair. Welcome to the SDC Podcast. Every week, the SDC Podcast presents important technical topics to the developer community. Each episode is hand-selected by the SNEA Technical Council from the presentations at our annual Storage Developer Conference. The link to the slides is available in the show notes at snea.org slash podcast. You are listening to SDC Podcast Episode 24. Today we hear from Rochelle Alvers, Principal Storage Management Architect with Broadcom, as she presents Swordfish Deep Dive, Scalable Storage Management, from the 2016 Storage Developer Conference.
Starting point is 00:00:48 Again, my name is Rochelle Olvers. I'm with Broadcom Limited. I'm a principal storage management architect. I have to do my own introduction this time. I'm Hal Flebian. I'm also the chair of the Scalable Storage Management TWIG, which is the technical work group that has been producing the swordfish specification. We would encourage any and all of you to join our work. So again, just a little bit of
Starting point is 00:01:16 what we're going to cover in here. Sorry. Our crazy little... What we're going to cover in here today is a little bit more detail on in a deep dive in a little bit more detail than we covered this morning on
Starting point is 00:01:36 what swordfish looks like what's in the spec what's in the bundle that we've released, what's the work look like a little bit more into the schemas and I apologize for this fun little you know this kind of for our fun little display here and
Starting point is 00:01:56 Don I don't know if there's anything else we can do about this but we're this is kind of blipping in and out here so I'm not sure there's anything else we can do about this, but this is kind of blipping in and out here, so I'm not sure there's anything else we can do about it. But hopefully this will kind of stay up for us. Anyway, so we'll be diving into this in more detail. Okay, so again, Swordfish builds on Redfish,
Starting point is 00:02:26 built on formatting using RESTful API that uses JSON and OData, and we'll, again, show more details about that. Okay, again, the major bullet item on the disclaimer slide is stuff's changing. This is a snapshot of where we are currently. If you want more details, remember smia.org slash swordfish. Oh, now my screen's blanking out too.
Starting point is 00:02:58 This is awesome. So, since everybody in here heard me do the entire spiel about what it is I can skip this one right yeah okay some of these are duplicates
Starting point is 00:03:15 because I wasn't sure how much overlap we'd have or if we'd have folks in here that hadn't heard all of this so there's some filler in here for that and so one of the things I will do is I want to point out there's some filler in here for that. And so one of the things I will do is I want to point out some of the folks in here in this smaller forum that have actually been actively working on the spec.
Starting point is 00:03:34 So we've got a handful of folks in here that I will probably point to at various points. So we have Hector in the back from Microsoft who's been very active in helping to drive things from the client perspective. We've got Don Deal over here, who's my co-chair, from NetApp. And there's Patrick from Dell. Dell is not just contributing to Swordfish. He's our Redfish liaison as well.
Starting point is 00:04:04 So he's the guy that's actually helping us get everything brought into Swordfish from the Redfish perspective. So that's also a little bit of not only the companies, but also some of the folks working on things from some different perspectives.
Starting point is 00:04:19 We talked about this a little bit. What are we including in, also in from the 1.0? And I skimmed this a little bit this morning, and we'll go into this in a little bit more detail. I'd like to highlight just one thing on here. The file system storage leverages all of the block infrastructure. There are literally two schemas that we add specifically for file systems.
Starting point is 00:04:53 Everything else sits directly on top of block. We add two schemas for a file. That was the way we were going to do that. We expect when we go to do object, we'll be able to do exactly the same thing. So, we expect to be able to add class of service capabilities. I'm sorry, this is really, it's both frustrating and entertaining.
Starting point is 00:05:15 That, you know, we'll be able to add object in a very similar fashion. We want to extend it to class of service the same way. So, object drive, I talked about what this was this morning, but not how we did it. Object drives we've actually added by adding just extending Redfish very simplistic, very seamlessly. We've added an additional attribute in chassis in Redfish.
Starting point is 00:05:42 So it's actually not something we added on the swordfish side. We actually extended redfish in the SPMF side to add an additional attribute in the chassis type field. So you won't even see object drive specifically in swordfish. We actually added it in the
Starting point is 00:05:59 redfish side. That's how tight our collaboration is. Okay. So we looked at this this morning. Again, so I'm not going to spend, well, I'm not going to spend any time on that slide. So, you know, these slides we've already looked at, so let's move on ahead. So what do we actually include in the bundle in
Starting point is 00:06:26 our V1 release? We included the technical spec. So the spec includes all of the normative requirements for the storage implementations. It does not include any of the Redfish
Starting point is 00:06:40 underlying protocol specs. Implementers, users anybody who needs that level of detail you actually just go look at the Redfish spec. What we did was in this document we focused exclusively on all the Swordfish content there was really no reason
Starting point is 00:06:58 for us to try and duplicate it. We did in a few parts reference things we tightened up the spec in a few spots from what Redfish required. An example of that security, the Redfish spec basically said things like, if you do HTTPS, use this level. And we basically said, use HTTPS in your implementation.
Starting point is 00:07:23 It's not optional. If you're doing a Swordfish implementation, it's going to be secure. So there's a few things like that in the spec. But for the most part, we're like, they do the protocol, we're not going to focus on that. We're going to focus on the functionality. And that's what you'll see in our spec.
Starting point is 00:07:42 We also didn't include any of the referenced schema from Redfish. It's all in their documentation. We talk a little bit about where we extend it, but for the most part, we didn't feel the need to duplicate any of that information.
Starting point is 00:08:00 We also started with a user's guide. Historically, folks in standard spaces and in SNEA have started with focusing on things that the vendors and implementers used. One of the things we've really done differently here has been focusing from a client side. We kept sliding into that a lot and had to back ourselves out and say, no, no, no, client view, user view. And so what we really did was we focused on three perspectives and three roles, three actors. A storage admin, a cloud admin, and a DevOps. And we put them into four management domains.
Starting point is 00:08:40 We expect this to grow. So we have basically what we call a service catalog domain, a block services domain, a file services domain, and I forgot the fourth one off the top of my head. I have to look it up.
Starting point is 00:08:57 We expect that to grow. We expect to see more things in there. We released with basically 12-ish use cases in there, and we will expand that. Like we said, we did this in nine months. We focused on the spec first, and we started putting the user's guide together in the last few months.
Starting point is 00:09:24 This whole thing is designed to just be easily expandable so when we have people come to us and say can you add this use case our answer will most likely be yes we can and so we write it up and we add it in and so that is
Starting point is 00:09:39 that's the way we have designed this document to work and the other couple of major pieces are the schema That's the way we have designed this document to work. And the other couple of major pieces are the schema. Schema is very important. All the documentation and information about the schema has been extracted and put into the spec. So we actually have tools that do that for us automatically. We curse them because they don't work perfectly.
Starting point is 00:10:05 But the primary work we do is to define the schema and they come in two formats, they come in two flavors and we'll talk through and show you examples of those here in a little bit the CSDL or XML schema or JSON whichever your preference is. We actually end up doing most of our primary work
Starting point is 00:10:27 in the XML format and then have tools that convert them to produce the JSON schema. Those contain, and I'll actually have examples before I jump into that. The mock-ups we talked about
Starting point is 00:10:39 this morning as well. Yes? Just wanted to understand how does it fit with OpenStack? Right now it's an independent effort, but what we expect to do with OpenStack is work in a couple of different areas.
Starting point is 00:10:56 So we expect that we will build a swordfish driver that integrates with Cinder. So Redfish has already built a Redfish driver that integrates with Cinder. So Redfish has already built a Redfish driver that integrates with Ironic. And so we expect to see a parallel effort to be able to do that, you know, rest to rest.
Starting point is 00:11:16 We've also talked about building a, and have been looking at building a OpenStack client, or OpenStack, open source client framework, potentially in partnership with the Open Linux Foundation, that would be basically a framework that could integrate with multiple frameworks, including OpenStack. So those are all discussions that are in the works. So is there anything more that this provides and what Cinder model has? Effectively, yes,
Starting point is 00:12:01 because this is going to be a complete management model for storage devices. And Cinder is focused on a subset of functionality for integrating specifically with OpenStack. You know, today we have basically, I think a subset of the functionality we'll eventually get to, and we've got some stuff to add. But right now, you know, we're probably still even the superset of what Cinder has. Go ahead, Dexter. Consuming swordfish in an OVSAC environment, so the Cinder driver, and then exposing swordfish on the northbound of OVSAC
Starting point is 00:12:41 if you wanted to automate the policy provisioning and the provisioning. So it just depends on which party you want to automate the publisher provisioning so it just depends on which part of the domain you're consuming sort of or exposing sort of right and the mockups which we saw a little bit a little bit of this morning but we'll we'll show
Starting point is 00:12:59 in a couple both a couple of sources that you can get to to play with yourself I talked about those this morning and we'll look at them in a little bit more detail. We also include documentation. I mentioned this again as well, documentation to help with usage. And I also showed that one. So jumping into the mock-ups a little bit, this is going to be a little bit difficult. Oh, you guys can't see that.
Starting point is 00:13:24 So we talked a little bit already this morning about the overview of the mock-ups and how to navigate through that um and covered all of those and i inadvertently this morning said i'm going to show you more detail about that forgetting it was in this slide set instead of the one this morning. But looking at more detail at class of service. So we talked a little bit about already about classes of service being you know a really key concept here. Classes of service are actually a construct that are defined the way we structure this is they're defined from lines of service that are constructed from line of service capabilities. So what I wanted to do here was use this as an opportunity to jump in and
Starting point is 00:14:11 show a couple of different ways that we have things represented here. So I'm going to show you where these things are both in the hierarchy and use this as an example to show you some of the details around class of service. So there's two different places that I've mentioned that you can go look at examples of this, one of which is download the mock-ups and look at them yourself, or you can go to swordfish.mockable.io and look at them. So I have both of those open to show you. So here what I've done is I've actually loaded up
Starting point is 00:14:45 just in NGINX the local web server on my system, which I can't load. If we give myself a second. How long do I have to wait for the laptop to be on a stick? We don't have time for that. Okay. So what we can do, basically, when we do that,
Starting point is 00:15:10 I'm basically just referencing this off of the same kind of thing we've seen in the hierarchy here, off of my local web server, slash redfish, slash IO. Here's the service route. And these are going to be the same mock-ups you'd see. So I'm just going to navigate down eventually.
Starting point is 00:15:32 So like authentication and use isolation based on roles and things like that, what people get to see? Is it tilted in any way based on your role? How do these elements contribute? Right. So just for video perspective, I think does it pick these up very well? The question is really how do authentication and roles factor in? We're picking these up right now from the base infrastructure in Redfish,
Starting point is 00:16:09 and we have plans to extend those jointly. Right now there's basically three roles in place. There's administrator, operator, and read-only. And so you can configure those. We expect to expand them in the future to add some storage-specific roles, storage administrator and things as needed. But right now you can map them over. The administrator is everything. Operator basically doesn't have permission
Starting point is 00:16:31 to configure roles and doesn't have permission to configure the manager. And then read-only is read-only. So there's some projection in place and we expect to be able to expand that. You can also, as an implementation, can, the implementers can add any additional roles they choose to.
Starting point is 00:16:55 You can't have a base of agents or, I don't know, like, civil services or this plugin and those services. Or, yeah, local plugins. You can't create isolation between them. What do you... Yeah, so... Thanks, Patrick. All right, so I've gone down here. I've got this a little bit big.
Starting point is 00:17:21 I've gone down here into the storage service. Storage service one here is what we call our large mock-up. This is kind of the big one that's got everything in it. So down in here, you can actually see here's a whole bunch of different classes of service that are defined. And we also have down at the bottom in the links, here are a whole set of line of service capabilities that are actually defined associated with this system. So if we go down and look at, say, so here are a bunch of different kinds of capabilities.
Starting point is 00:17:55 There's a data protection line of service capabilities, data security, data storage, IO connectivity, and performance. So for each one of these, for each one of the classes of service, sorry for the scrolling, you can actually go in and define basically what properties related to each of those capabilities. Or you define lines of service associated with each of those capabilities. Or your divine lines of service, I should say, your divine lines of service associated with each of those capabilities. So,
Starting point is 00:18:30 I forgot to type the classes of service. There are some tools that will allow you to treat all of these as hot links. And I just have a tendency to work this way because it's a little easier for me to blow things up full screen. And sometimes I mistype.
Starting point is 00:18:50 Okay, so for this one, for example, what's actually configured here is these are the lines of service for this particular class of service. And again, vendors can do this out of the box, or the storage admin can configure that. So this storage admin has configured this gold class of service in Boston with a line of service that says, you know, here's the IO connectivity line of service, performance,
Starting point is 00:19:16 no particular attributes for the data protection, security must be mapped to media encryption strength channel this level of user authentication and host authentication no requirements around antivirus the data storage must be thin provisioned and must be space efficient so those are a bunch of the attributes
Starting point is 00:19:44 that this particular and the ID of gold Boston is again assigned by the storage administrator. So that whoever is configuring it will know what that means. So that's kind of how the configuration of the class of service works.
Starting point is 00:20:01 So then because this is REST based the queries to go Right, so then because this is REST-based, the queries to go find this in the system are standard. The user, DevOps or whoever, could be the storage admin as well, can kind of go through Inquiry to figure out whether it's script-based or just even in the web browser can go through Inquiry to go look at anything with this class of service whether it's a storage pool, whether it's a volume
Starting point is 00:20:33 whatever is allocated for this class of service. So which parts are part of the standard itself? The proposed standard and parts that aren't? All of this is actually part of the standard itself, the proposed standard and parts that aren't? All of this is actually part of the standard. So there are, in every schema, there's an ability to add an OEM extension. That's just everything inherits from what we call the resource schema, which we get from Redfish.
Starting point is 00:21:05 And so every single one of these can add OEM extensions, but everything you're looking at here is part of the base standard. So there's opportunities everywhere for vendors to add differentiation, but this is all standard. Okay. And if you guys just want to go look at all of this stuff on, you know, without installing everything, we have a lot of it instantiated, again, at swordfish.mockable.io. Here's just another tool we have.
Starting point is 00:21:37 If you want to look at it in one that's clickable. Sorry, let me collapse this down. You can go to swordfishmockable.io and you can... Ah, ha, ha, why are you misbehaving? Really? All right. I don't know why that one's not working. It's working just... Yeah, I can. All right. I don't know why that one's not working.
Starting point is 00:22:05 It's working just... Yeah, I can. I can't. Oh, that's why it's not working. There we go. So, and again, you can see the same thing here. We just have a lot of this instantiated online. So we have this whole thing up here, so you can just go directly to this site and look at it, too.
Starting point is 00:22:36 So one of the things, let's see, where is it? It's under, one of the cute little things we have up here, and we'll add more of these as we go, under storage services, simple, under storage pools, right? You get an idea of what you might see from a real system is, here I'm down in this pool, and some of the attributes you can see here is capacity. Well, as you can see, just doing multiple gets,
Starting point is 00:23:23 the capacity is increasing so if I actually dug around in the attributes of this system I'd see this eventually what you'd see is that this is actually if I wandered around you'd see this is actually a thinly provisioned system so what this is corresponding to is just the increase in consumption of the system.
Starting point is 00:23:50 So what Hector's actually done is, and he has this available on a blog post at? TechNet. At TechNet. It just went up today he's got some PowerShell scripts and a I'm blanking on the word and the dashboard
Starting point is 00:24:15 and a dashboard that sits on top of this that actually shows some examples of how you can script right on top of this stuff and it uses this mockable site as well as this capacity, this little capacity counter
Starting point is 00:24:34 to give some examples of how to use this API. So anything else you want to add to that? Well, obviously, so what I have on TechNet is a very PowerShell client focus. And so what we're trying to do here is make sure that clients get exposed to this. There's a lot of great stuff here for processors, but the most important
Starting point is 00:24:56 that clients will need to consume and get used to, but at least for now we can give them a nice primer to see how they're integrated to their existing tool sets. Whether it's just getting used to to rest or integrating the Power BI or something for them right and that's really where we want this to be consumed we want this to be directly consumable by clients without having to go to do it in the past they used to be something like System Center that had to interpret as an S and send it to Dell to then create PowerShell.
Starting point is 00:25:25 So now you can just use PowerShell. So for at least the Microsoft user base, this is actually very, very powerful. All right. So that's probably enough on all the mock-ups, and let's switch over a little bit to the schema. How are we actually defining all of these things? I think that was next in the slides, if I recall correctly. Yep. So there's really, again, there actually defining all of these things? I think that was next in the
Starting point is 00:25:45 slides, if I recall correctly. Yep. So there's really, again, there's two types of schema, CSDL and JSON. So these include constraints that not only annotate the REST API, or the REST information, but they annotate all the OData, information for all the OData clients. So OData is an open industry standard developed by Oasis so again all of the.NET infrastructure and even a lot of the Microsoft tools and other things can actually read and consume OData metadata directly so there's a couple of examples in here and then I will actually bring them up a little bit bigger
Starting point is 00:26:24 and we can take a look at them. So here are, I brought up, what do I have, StoragePool. So we're going to look at StoragePool in a little bit of detail. I've just picked up the same one so you can see the same schema in both the XML and then once it's converted to JSON. So the schema is set up in a few different sections. The top section is really import information. So all of these
Starting point is 00:27:00 import sections up at the top here. This is just importing a bunch of dependencies. And then we come down into the actual... I kind of have this kind of bagged on. This is what happens when I'm half blind and looking at it on a tiny screen. You guys get a really big version of it. So this is actually... you basically get the initial definition of, starting at about here,
Starting point is 00:27:32 where the element itself is actually defined as an entity, and then you get a bunch of annotations that go with it. So everything has a description and a long description. So everything you see in the documentation where it's got a normative description is extracted from here. There may be some supplemental
Starting point is 00:27:55 material that we include from elsewhere, but the primary normative description is actually extracted and included in the schema. So you should be able to, if you're trolling the schema, you'll be able to extract it from here, and that should match up to the documentation.
Starting point is 00:28:15 And multiple versions and extensions show up in here. When you actually look at the JSON version, you'll see an unversioned version. Isn't that clear? An unversioned version of the file as well as a versioned version of the file. And when there's multiple versions, they actually get propagated
Starting point is 00:28:37 into several versions of the file. In the XML, it's all contained in a single file. In JSON, it ends up with multiple files. That's just pretty much the structure. So the XML is basically all self-contained. The JSON propagates it around. There's quite a few annotations in here that tell you things like, is the storage pool you know
Starting point is 00:29:07 is this generally read read right if you have an implementation that you want to constrain further you're welcome to do that but you should not go the other direction there's obviously you know things like that a lot of those kinds of kinds of rules are already in the redfish documentation so we don't bother to put them in the Swordfish documentation unless we're tightening them down. And then you kind of hop into properties. There are some inherited properties.
Starting point is 00:29:36 All the properties available don't actually show up in our schema because there are some properties that are just inherited down through the system. So you will see some of those in the documentation, properties in the documentation that don't show up here in the schema. So it is helpful to refer to the documentation to make sure that you understand the inherited properties. So for like here in the storage pool,
Starting point is 00:30:04 you see block size bytes, capacity capacity sources you also see where they come from so capacity comes from capacity and also tells you which version of capacity you're referencing that's very useful information
Starting point is 00:30:19 it's really easy in this variant because nearly everything in Swordfish is going to reference version 1 or version 1.0.0 but as we move forward those will be very key indicators to watch for not all properties
Starting point is 00:30:40 the way Redfish actually works with properties and even classes is if you don't implement it, if it's not implemented, it's just ignored. We will be putting in the implementer's guide. I didn't say that very well. But basically we'll be putting into the implementer's guide and working with our clients on the models for what is required. There's nothing in the schemas right now that basically says what's a, and I'm going to use air quotes here, what is a required field or what's required for an implementation.
Starting point is 00:31:21 We don't have anything that's called a profile yet. We'll be working on defining that kind of stuff because that question has come up, and it's a really important question, but there's nothing in the schema specifically that says that. Right now, Redfish has very little that's actually required to be implemented, and we need to get to the point that says what's required to be implemented, but we're not there yet.
Starting point is 00:31:43 We want the clients to help us drive that. We don't want that to be vendor-driven or provider-side driven. We want that to be client-driven. So we're working on a model for that, and we expect to have that come out, hopefully within the next few months, on a model for how we're going to do that. So we're thinking something along the lines right now where a client would basically come out and say, this is the functionality, these are the properties that we need
Starting point is 00:32:14 to integrate into our environment. So that you can basically go through and look and say, to support Azure Stack I need this support Azure Stack, I need this. To support VMware, I need this. And hopefully they're going to be, you know, roughly, you know, roughly coincident and not, you know, completely orthogonal. But, you know, something like that,
Starting point is 00:32:36 and then we can work on what these profiles are, and then we can also work on a good solid mechanism we can instrument so that it's clear from an implementation what they support. And so that is not something clearly that you'll find in here, which is what's required to support. So going back to what I was trying to say earlier, the way Redfish works and Swordfish works is if a property is not implemented, the assumption from the client side is that it is...
Starting point is 00:33:14 I'm still not coming up with a good way to phrase this. Patrick, you want to take a crack at it? What am I trying to say here? If a property is not implemented, the assumption is that... You just don't have that present yeah, it's just not present right, it's not it's just
Starting point is 00:33:31 if it's not there, it's alright, I'm going to stop because I'm not making it up, I can't come up with this sentence in other words, basically in redfish or fish, the distinction between saying property is null means we don't know. If this is not present, that's different.
Starting point is 00:33:48 I mean, we don't support it on this instance, or we just don't support it, period. Yes, thank you. That's what I was trying to say. Badly, very badly. All right. So anyway, so we've covered entity types. We've covered properties.
Starting point is 00:34:05 There's a notion in here called navigation properties. These are things like this particular instance is a collection. And there's a notion in here that this also says contains target equal true. This basically means this is basically an array of volumes that exists inside this pool. That's what all of those things together means. There's actually two different types of collections, but I'm not going to go into the distinction between them here, because it's ridiculous,
Starting point is 00:34:46 so I'm not going to do it. Then there's actually generally also a links section that says these are all these things that are related to it. They don't live inside this entity, but they're all related to it. That's one of those things I was talking about this morning that allows you to troll around and find,
Starting point is 00:35:04 here's a chassis that this lives in or here's some related objects. It's a really great collection at the bottom. I also mentioned, I didn't talk about it this morning and I don't even show you yet, but there's also the OEM extensions. You inherit that from resources
Starting point is 00:35:19 or from resource. Any place you need to for any implementation, you can add OEM extensions. And, oh, we have not talked about actions either. There's another element in this system. I don't know how we're doing on time. I haven't seen her pop in.
Starting point is 00:35:42 Okay. There's another element called actions in this whole schema. And in addition to normal rest mechanisms, one of the things that Redfish has added is a notion called actions. So if we have something that doesn't map well to traditional rest,
Starting point is 00:36:03 you know, put post patch stuff, we've added a mechanism that's called actions. It actually behind the scenes maps to a post, but what it is is it shows up in the system as an action and shows up as a property called an action. And these are for things like reset. And in the storage world, we've put mapping and masking commands into that. There's not very many of these in the system at all. I think we have three, maybe, that we've added in our entire schema, but it's a really useful construct.
Starting point is 00:36:52 So if you happen to see actions in the system anywhere, that's what those are. We also have an OEM extension for actions, but those are also in the system. Okay, so this is the XML schema, and so we shift over. This is what the JSON schema looks like. So I said we have the unversioned thing. I didn't really show you the distinction on the unversioned versus versioned entity types. I'm not sure there was one on the pool. So you'll see the bulk of the information is actually in the version schema.
Starting point is 00:37:26 So everything that was in that version's XML schema is translated into this, and this is just the JSON version. So pretty much it's whichever one you are more comfortable looking at and working with. Honestly, I'm more comfortable with the XML versions because that's where we're doing all of our work, and we just convert to these. So here's like that OEM section that gets generated automatically. It's not even in the other document because we don't actually do it. It gets generated for us.
Starting point is 00:38:01 So there's that OEM section. Some other stuff that gets generated automatically is a lot of these OData extensions. We've talked about OData a little bit, but haven't talked about it in too much detail. It's just in the mock-ups. But in general, Redfish also does a subset. It's not a full OData client.
Starting point is 00:38:24 It's just a subset of OData. So a description name identifier. These are things that are all, again, defined in that base resource class. So most of them you'll see propagated down through in the schemas, but if they're not in something something they're still there available for use because we inherit them from that primary resource class okay so any questions on the schemas
Starting point is 00:38:56 uh huh for different you know groups of features does everything have to be sub supported if you want to set them atomically? When you're creating this, is it all for individual? How does that end? If you want to update some of these fields on something or change them, and you'reate something what's the requirement for
Starting point is 00:39:29 making it a topic? So it depends on the system or it depends on which things you're trying to change and so I kind of glossed a little bit over I said there's two kinds of collections and so it changes a little bit depending on which type of collection you're using.
Starting point is 00:39:48 So the reason there's two types of collections is because one type of collection assumes you're not changing things very often, and so it uses a different kind of construct, and one assumes you're changing things more often, so it uses the other kind. But it comes back to post-patch semantics. But in general they support
Starting point is 00:40:10 objects support general REST semantics. And so some of the things you'll see, let me go back read only true let me go back to the XML ones because I can read those better but
Starting point is 00:40:28 you come back to something like like a storage pool hang on let me find there was a find a collection oops hang on find a collection. Oops, hang on. So there's multiple components in one point. Does the whole transaction
Starting point is 00:40:52 vary? It depends on what type of, whether you're doing a put or a patch, right? And so it's going to be, again, this is going to be typical Rust semantics. So some of that is also defined in the Redfish specification more than the Swordfish specification.
Starting point is 00:41:22 So this schema basically is just going to tell you what you're allowed to do. And the Redfish spec is also going to constrain it back to whether you should be using puts or patches, in which circumstance. And then the implementation is actually going to come, it'll be a little bit up to the implementation to come back and tell you what failed and what didn't. And there are guidelines in the retrospect around what kinds of error messages and what level of error messages to report in some circumstances, but not in all cases.
Starting point is 00:41:58 So what we are likely to do in the implementation guide, or in the implementer's guide, is put additional recommendations around those. So Patrick, anything else? Yeah, we tend to not have interrelated properties, or non- interrelated properties be separate
Starting point is 00:42:18 properties be related. So that way, each property is an atomic operation, so that way if I'm patching three properties and two of them fail, the fact that one word is not breaking in any way for the other two failing. Right. So, you know, and basically the Redfish spec says, here's how to report back that this one's a kid and these two failed. What protocol returns, et cetera, et cetera, and all that stuff's defined. Basically, it's essentially a data
Starting point is 00:42:45 and a few graphics extensions. We're doing multiple properties like that. Typically, it's either a post-action or it's an actual action. All right. Let's see. So we talked about this a little bit this morning. I didn't actually go through this. Yeah, I don't really think I'll do that either.
Starting point is 00:43:21 So what's next? We actually have updated even this since I put these slides together a week and a half ago. So one of the things we're doing is moving really fast on this. You know, I've been reiterating that we've done all of this in nine months. We expect to continue to move very quickly on this spec. We have tentatively set a V1.1 release target for January. We expect to have a proof of concept that has three components to it, and I'll describe those in a sec, around the November timeframe, those three components are a Swordfish framework, a reference provider with a small set of functionality,
Starting point is 00:44:21 and a Swordfish client that matches the functionality in said provider. And so the SMI, the Storage Management Initiative, and a couple of our member companies, am I free to name them? There's a sign on the table out there that says all the SMI members. Well, I was just wondering if I'm free to name the companies that are contributing funding to that or not the people that are paying for the POC stuff I said SMI
Starting point is 00:45:02 I'll just stop there are basically paying for some accelerated development around a proof of concept I said SMI. I'll just stop it there. Are basically paying for some accelerated development around a proof of concept that will be out in the Thanksgiving time frame. And Hector is helping to program manage all of that. So we have all of that going on. And then in the 1.1 time frame, which we have set in sand as of this week, we are targeting expanding the block and file capabilities by adding event support. There's a basic event mechanism in there, to be clear.
Starting point is 00:45:33 There's a basic event mechanism already in the system. What we're talking about doing here is adding thresholding capabilities in a bunch of areas. We have, I believe, 30 issues logged where we want to add a bunch of very storage-specific capabilities around this. We're looking at adding performance metrics. We want to target the implementer's guide. Object storage has actually moved down the list a little bit.
Starting point is 00:45:58 And expanded user's guide. So that's the functionality we're targeting for the January timeframe. So it's, again, very aggressive, continuing on with our very aggressive schedule. We also are looking at an errata release against the current spec in next month. That's our current target for that. So we don't think we got it perfect. Shock. Shock, I know. And so those are the things that we currently have going
Starting point is 00:46:27 we expect to see when we would like to see more folks starting to get engaged we'd like to see feedback from folks let us know what we got right, what we're getting wrong what we need to change we'd like to see some reference implementations I believe we have
Starting point is 00:46:46 some companies working on some stuff but no one has officially announced any Swordfish implementations or reference implementations yet but we'd like to see some stuff starting to get out there other questions let's see oh sorry I need to jump on
Starting point is 00:47:02 to pointers everyone's got this already Sorry, I need to jump on to pointers. Everyone's got this already. CNA.org slash swordfish. Other ones for the more technical folks in the group, if you want to join the TWIG, please join the TWIG. Come join us.
Starting point is 00:47:17 We have lots of fun. We meet twice a week or so, sometimes more. We have multiple face-to-faces where we get together and do lots of work. And if you're not a member of the TWIG, you can always provide feedback directly through this NEO portal. We are also working on developing, and I talked about it again this morning, developing a customer panel. We've already had some people submit requests. So once again, reiterating, if you're interested in this, please let us know.
Starting point is 00:47:55 And we also have a customer event next week at the Microsoft Ignite event. If you're going to be at Ignite next week, please let us know. Other questions? More questions? Fewer questions. As an extension to Redfish, and a replacement for IPMI, is this primary being served up from the VMC
Starting point is 00:48:23 with collaboration with the KCS? Okay. This is going to be the last question. Thanks. So that's a good question. The expectation is actually that it can be implemented as an out-of-band implementation, but just because we're leveraging Redfish
Starting point is 00:48:46 doesn't mean we're leveraging the server infrastructure. We're actually implementing any place that storage management can be implemented today. So a lot of storage management is already being implemented out-of-band, but it can be implemented out-of-band, it can be implemented in-band, it can be implemented as an aggregator, which leverages the BMC implementations for the
Starting point is 00:49:09 server components and has another layer that's doing the storage services somewhere else in the system that should all be completely transparent to the client. All right, I just got the must stop now face out of the doorway. Thanks. Thanks for listening. If you have questions about the material presented in this podcast, be sure and join our developers mailing list by sending an email to developers-subscribe at sneha.org. Here you can ask questions and discuss this topic further with your peers in the developer community. For additional information about the Storage Developer Conference, visit storagedeveloper.org.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.