今天来聊聊 Redfish

Redfish 的诞生

Redfish 是在2015年由DMTF(Distributed Management Task Force) 这个组织开始着手建立的伺服器管理标准,官方的描述是

A standard, Redfish is designed to deliver simple and secure management for converged, hybrid IT and the Software Defined Data Center (SDDC).

作为一项标准,Redfish 旨在为converged, hybrid IT 和  SDDC 提供简单而安全的管理

这边的SDDC就是"Software Defined Data Center (SDDC) - 软件定义数据中心",简单来说就是希望未来能提供单一软件工具集来管理这些虚拟化资源。但在伺服器的领域,长期发展且成熟的协定一直是IPMI,对于数据中心的管理者/客户端的反馈是他们并不了解IPMI这个协定,他们的人员都需要重新学习,而且很多现代化的管理工具并不能直接应用在IPMI上面,所以Redfish诞生的契机就出现了

什么是 Redfish

  • 用于 IT 基础架构的行业标准 RESTful API
  • 基于 Odata v4 的 JSON 格式的 HTTPS
  • 应用程序、GUI 和脚本同样可用
  • Schema-backed但可读性高

Redfish Data model

Redfish Data model (红鱼的资料模型)_yeiris的博客-CSDN博客今天来聊个简单的概念,Redfish 的 Data model上面是Redfish Spec的内容,提到Redfish 将 Protocol 和 Data model 的版本分开了,那这边的Data model 是指什么呢?什么是Data model ?在软体工程中,在系统开发前,需要先作需求的统计和分析,这时候我们会将需要处理的资料(Data requirement) 作初步的概念设计(conceptual design),产生概念模型 (Conceptual schema),这是一个hihttps://blog.csdn.net/yeiris/article/details/123242151

Redfish 关键技术

HTTP

超文本传输协议 (HTTP) 是分布式、协作、超媒体信息系统的应用层协议。它是一种通用、无状态的协议,透过扩展其请求方法(Method)错误代码(Status-Code)头标(Header),可用于超文本之外的许多任务。

底下是HTTP协议的概念图,详细可以参考Hypertext Transfer Protocol -- HTTP/1.1,例如我们想要看Redfish 的Service root URL ,Request-Line就是 GET   /redfish/v1   http/1.1

我们可以透过回传响应中的错误代码(Status-Code)来判断请求的状态

常用的Method(GET, POST, PATCH, DELETE)

  • GET:获取,例如获取系统帐户讯息GET /redfish/v1/AccountService
  • POST:
    1. 新增,例如新增一个帐户 POST /redfish/v1/AccountService/Accounts {"id":"xxx" "password":"xxx"}
    2. 执行,例如执行韧体更新,开关机等动作
  • PATCH:更新,例如更新帐户名字 PATCH /redfish/v1/AccountService/Accounts/01 {"Name": "123"}
  • DELETE:删除,例如删除一个帐户 DELETE /redfish/v1/AccountService/Accounts/01

常見的错误代码(Status-Code)

Status-Code 是由三个数字所组合组成的,目的是企圖去理解和满足请求

  • 1xx:Informational (信息):提供协议级信息
  • 2xx:Success(成功):客户端请求被接受(成功)
    • 200:OK
    • 201:  Created:申请资源创建成功
    • 202:Accepted (已接受):用于报告异步操作成功
    • 204:No content (无内容):当 API 想要发送空内容或没有内容时响应体
  • 3xx:Redirection (重定向):客户端请求由服务器重定向到满足客户端请求的不同端点
    • 301:Moved Permanently (永久移动):用于重新定位的资源
    • 302:Found (找到)
  • 4xx:Client error(客户端错误):客户端错误
    • 400:Bad request (错误请求)
    • 401:Unauthorized (未经授权)
    • 403:Forbidden (禁止)
    • 404:Not found (未找到)
    • 405:Method not allowed (方法不允许)
  • 5xx:Server error (服务器错误)
    • 500: Internal server error(内部服务器错误)

HTTPS (Hyper Text Transfer Protocol Secure)

HTTPS 对在浏览器和网站之间发送的数据进行加密,使其比 HTTP 更安全,通信协议使用传输层安全性 (TLS) 或以前的安全套接字层 (SSL) 进行加密。 TLS的概念可以参考 [OpenBMC] LDAP 设定(三) - LDAPS(LDAP over TLS) TLS的部分

Restful API

REST( Representational State Transfer, 表现层状态转移),它是一种设计风格,RESTful 是转为形容词,RESTful 形容以此规范设计的 API,称为 RESTful API

它的约束(constraints)有以下几项

  • 主从架构 Client-server
  • 无状态 Statelessness
  • 可暂存 Cacheable
  • 统一介面 Uniform interface
  • 阶层式系统 Layered systems: 每一个资源有对应至少一个的URI
  • [Optional] 依需求提供程式 Code on demand

OData

OData(The Open Data Protocol) 是一种基于REST的数据访问方式,该标准由微软发起,前三个版本1.0、2.0、3.0是微软开放标准,第4.0版于2014年在OASIS投票通过成为 开放工业标准。

The Open Data Protocol (OData) enables the creation of REST-based data services which allow resources, identified using Uniform Resource Locators (URLs) and defined in a data model, to be published and edited by Web clients using simple HTTP messages.

This specification defines the core semantics and the behavioral aspects of the protocol.

OData - the Best Way to REST

但odata我没有很熟,所以这边只会简单介绍一些Redfish会用到的(我大概知道的)

OData‑URL

Odata定义了一组推荐的(但不是必需的)规则,用于构建 URL 以识别 OData 服务公开的数据和元数据,以及一组保留的 URL 查询字符串运算符。

  • Service root URL:  url 的服务根是服务的基本 url。当对该 url 发出 GET 请求时,它将返回一个服务文档,该文档定义了通过该服务可用的所有资源。Redfish 的Service root URL 是 /redfish/v1 这在redfish spec中有定义
  • Resource path : REST 定义的资源是可通过 HTTP 使用标准 GET、POST、PUT、PATCH 和 DELETE 方法访问的对象。
  • Query options: 查询选项本质上是标准化的查询字符串参数,可以传递给 OData 服务以对请求的资源运行查询。例如对资源的filter, count, skip, order, search 和 format。所有 OData 查询选项都以 $ 符号为前缀,并且不区分大小写。

另外在service root URL后面加上$metadata可以看到Service的实体模型(entity model),内容根据 [OData-CSDLJSON] 或 [OData-CSDLXML]

OData-CSDLXML

OData 服务是根据实体模型来描述的。 CSDL(Common Schema Definition Language) 使用XML(Extensible Markup Language ) 定义了由 OData 服务公开的实体数据模型的表示法,以及来自 W3C XML 模式定义语言的进一步构建块 (XSD) 。

简单来说,就是定义我们常听到的Redfish的Schema和Property,这样使用者可以知道它会得到的讯息格式,进而先处理(微软有些tool可以直接将CSDL转为结构或资料库),这部分DMTF有CSDL的教学文件,同时也有一个Redfish Service Validator 的tool 来验证我们的Redfish Services有没有符合定义的CSDL

Redfish_School-Introduction_to_CSDL (dmtf.org)https://www.dmtf.org/sites/default/files/Redfish_School-Introduction_to_CSDL.pdfGitHub - DMTF/Redfish-Service-Validatorhttps://github.com/DMTF/Redfish-Service-Validator

OData-JSON

OData 定义一些特定的property 来扩展 JSON。举一些常见的例子,詳細可以參閱Spec

  • @odata.id:entity-id与实体的规范URL相同,通常是必须存在的
  • @odata.count:计数控制信息仅出现在响应中,可以注释在任何集合中

Redfish 的版本怎么看

Redfish的版本怎么看 ? CSDN博客https://blog.csdn.net/yeiris/article/details/122759365

DMTF Redfish 概念介绍相关推荐

  1. cocos2d-x一些核心概念介绍

    cocos2d-x一些核心概念介绍 Cocos2d-x中有很多概念,这些概念很多来源于动画.动漫和电影等行业,例如:导演.场景和层等概念,当然也有些有传统的游戏的概念.Cocos2d-x中核心概念:导 ...

  2. FPGA之道(75)静态时序分析(一)基本概念介绍

    文章目录 前言 基本概念介绍 常用时间参数介绍 tsu 建立时间要求 建立时间余量 th 保持时间要求 保持时间余量 tco Maximum frequency (or Minimum period) ...

  3. Lesson 13.2 模型拟合度概念介绍与欠拟合模型的结构调整策略

    一.模型拟合度概念介绍与实验 1.测试集的"不可知"悖论   通过此前课程内容介绍,我们已经知道了机器学习模型主要通过模型在测试集上的运行效果来判断模型好坏,测试集相当于是&quo ...

  4. linux块设备驱动(一)——块设备概念介绍

    linux块设备驱动(一)--块设备概念介绍 本文来源于: 1. http://blog.csdn.net/jianchi88/article/details/7212370 2. http://bl ...

  5. c语言 activemq,activemq概念介绍

    ActiveMQ概念介绍 是Apache下的开源项目,完全支持JMS1.1和J2EE1.4规范的JMS Provider实现,消息中间件. 消息中间件: A传递消息到B(功能或者系统),有比较强的耦合 ...

  6. HTML/CSS学习笔记01【概念介绍、基本标签】

    w3cschool菜鸟教程.CHM(腾讯微云):https://share.weiyun.com/c1FaX6ZD HTML/CSS学习笔记01[概念介绍.基本标签.表单标签][day01] HTML ...

  7. 《统计自然语言处理》读书笔记 一.基础知识及概念介绍

    最近准备学习自然语言处理相关的知识,主要参考<统计自然语言处理·宗成庆>和<Natural Language Processing with Python>,推荐大家阅读.第一 ...

  8. DNS术语,组件和概念介绍

    DNS术语,组件和概念介绍 2014年2月18日发布 255.4k个意见 DNS 概念LINUX基础常见问题 介绍 DNS或域名系统往往是学习如何配置网站和服务器的一个非常困难的部分.了解DNS如何工 ...

  9. SQL语言基础:数据库语言概念介绍

    1.概念介绍 SQL(Structured Query Lanauage)结构化查询语言是关系数据库中最普遍使用的语言.主要包括查询.数据操纵.数据定义.数据控制功能,是一种通用的.功能强大的关系数据 ...

  10. 容斥原理---概念介绍

    容斥原理---概念介绍 容斥原理是一种基本的计数工具. 假设我们有N个对象的集合A,设a1, a2,-, ar是这些对象可能有的性质的集合,设N(ai )是有性质ai的对象数目.一个对象可能有若干个所 ...

最新文章

  1. get,put,post,delete含义与区别
  2. 2019/Province_C_C++_A/D/迷宫
  3. QT事件过滤器eventFilter函数
  4. 使用Apex进行混合精度训练
  5. exit()函数_complete函数
  6. 基于JAVA+SpringMVC+Mybatis+MYSQL的药店门店管理系统
  7. asmx迷10分钟升级成wcf熟手指南
  8. 【C++】set和multiset区别
  9. openGL ES进阶教程(六)美颜滤镜之美白,磨皮,红润
  10. ASP.net开发环境配置说明手册
  11. 五子棋项目结束总结_五子棋比赛活动总结
  12. 可以将每日计划以及日程提醒事项记录下来的待办清单便签有哪些
  13. Python爬虫——用正则表达式爬取小说内容
  14. 钉钉导航栏分享按钮的显示/隐藏
  15. 中国能源与环保领域知名的调查研究咨询公司
  16. 微信公众平台、微信公众平台.小程序、微信.开放平台三者关系及unionid
  17. 计算机大赛提交文件自制,【获奖分享】第十九届全国电脑制作大赛获奖心得
  18. C语言实验——求一个3*3矩阵对角线元素之和 (sdut oj)
  19. 机器学习之上溢,下溢,病态矩阵
  20. Axure9图片拖动放大缩小

热门文章

  1. edius裁剪快捷键_EDIUS 快捷键大全 edius常用快捷键大全
  2. 点云sift matlab,点云配准SIFT算法
  3. Android实现TCP客户端
  4. ie显示的html页面乱码,IE10、IE11页面中文乱码解决方案
  5. 计算机度分秒在线,角度计算器度分秒在线
  6. TensorFlow Keras 官方文档中文版文档学习
  7. 如何破解“仅三天可见”的朋友圈?
  8. ug470_7Series_Config 中文文档 | Xilinx
  9. python中rank_hackerrank中python题目的套路
  10. excel vba导入html表格,网页vba excel表格数据-Excel VBA填写网页上的内容