|
|
|
|
移动端

2.6.2 API功能

《运维前线:一线运维专家的运维方法、技巧与实践》第2章利用Facter和Django快速构建CMDB,本章将会详细讲解,如何利用开源软件Facter和Django快速构建一个小型的CMDB系统。界面与功能不算复杂,这也是它轻量的体现,本章更多的是提供一种思路,以达到抛砖引玉的作用,仅供大家参考。本节为大家介绍API功能。

作者:云技术社区来源:机械工业出版社|2017-04-23 15:15

技术沙龙 | 6月30日与多位专家探讨技术高速发展下如何应对运维新挑战!


2.6.2 API功能

CMDB作为一个数据源中心,很多运维工具都会调用CMDB数据进行使用,因此API接口就非常有必要了,由于各个系统的需求不一样,从头到尾开发一套适用于各个系统的CMDB API也比较困难,那么有没有什么简单的方法呢?答案肯定是有,这里我推荐Django API利器Django REST framework。

Django REST framework是一个非常强大、灵活的API构建工具,它能很容易、很快速地帮我们构建Web API。下面来讲解构建的过程,具体步骤如下。

(1)安装Django REST framework。

主要安装3个模块:djangorestframework、markdown、django-filter。具体代码如下:

  1. pip install djangorestframework  
  2. pip install markdown  
  3. pip install django-filter 

(2)配置settings.py:

  1. INSTALLED_APPS = (  
  2.      '......',  
  3.      'rest_framework',  
  4. )  
  5. REST_FRAMEWORK = {  
  6.     # Use Django's standard `django.contrib.auth` permissions,  
  7.     # or allow read-only access for unauthenticated users.  
  8.     'DEFAULT_PERMISSION_CLASSES': [  
  9.         'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'  
  10.     ]  

(3)设置urls.py:

  1. urlpatterns += patterns(  
  2. '',  
  3. url(r'^api/', include(myproject.api.router.urls)),  
  4. url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),  

(4)创建我们的CMDB API(根据models信息来创建,这里只附上一个简单的讲解,具体的内容请看源码):

  1. # -*- coding: utf-8 -*-  
  2. # 导入cmdb.models模块  
  3. import cmdb.models  
  4. # 从rest_framework中导入模块  
  5. from rest_framework import routers, serializers, viewsets  
  6.  
  7. # 给需要生成API的model定义一个数据序列  
  8. # Serializers define the API representation.  
  9. class IDCSerializer(serializers.HyperlinkedModelSerializer):  
  10.     class Meta:  
  11.         # 使用的model名称  
  12.         model = cmdb.models.IDC  
  13.         # 字段序列  
  14.         fields = ('url', 'name', 'memo')  
  15.  
  16. # 定义视图  
  17. class IDCViewSet(viewsets.ModelViewSet):  
  18.     # 查询所有数据,这个可以根据自己的需要来展示几个  
  19.     queryset = cmdb.models.IDC.objects.all()  
  20.     # 序列化信息  
  21.     serializer_class = IDCSerializer 
  22.  
  23. # 配置路由注册,自动生成API URL  
  24. # Routers provide an easy way of automatically determining the URL conf.  
  25. router = routers.DefaultRouter()  
  26. router.register(r'idcs', IDCViewSet) 

(5)配置导航栏信息:

  1. cmdb_menu.py CMDB_TOP_MENU = [ [u'API文档 ', '/api/', 'book', []], ] 

(6)启动Django服务,展示如下(图2-15)。

通过API文档,可以看到全部的API信息,如图2-16所示。

点击IDC的具体URL,就能看到展示的信息和用法,如图2-17所示。

到这里CMDB API就完成了最基本的功能,后续还需要读者自己去调整页面和授权等。


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:342347198

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

Cisco网络技术教程(第2版)

本书作为思科认证体系中的入门级教材,主要讲述了网络的基本知识和思科设备的基本命令,以及路由、交换等深层次网络知识的入门知识,其体系...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊