openstack_二次开发“增量按钮添加”


        本片博文基于开源的openstack平台,在现有功能的基础上,进行二次开发,增加一些定制化的需求。下面的这个实例将为我们演示,如何新增一个“备份按钮”,以及在代码层级如何实现,步骤如下:

#设计流程图


#增加按钮之前


#增加按钮之后

#创建备份完毕之后


#实现代码:


(1)   前端web增加配置

vim /opt/horizon-2012.1/horizon/dashboards/nova/instances_and_volumes/instances/tables.py

class IncreaseLink(tables.LinkAction):

      name = "increase"                 #创建备份功能

      verbose_name = _("Increase")

      url ="horizon:nova:images_and_snapshots:snapshots:create"  #链接目录如下红色说明

      classes = ("ajax-modal","btn-camera")

      #def allowed(self, request,instance=None):

      #   retturn instance.status in ACTIVE_STATES

 

说明:

vim/opt/horizon-2012.1/horizon/dashboards/nova/images_and_snapshots/snapshots/url.py

#

from django.conf.urls.defaults importpatterns, url

from .views import CreateView

urlpatterns = patterns('',

   url(r'^(?P<instance_id>[^/]+)/create',

       CreateView.as_view(),

       name='create')

#------------------------------------------------------------------------------------#

class Meta:

        name = "instances"

        verbose_name = _("Instances")

        status_columns = ["status","task"]

        row_class = UpdateRow

        table_actions =(InstancesFilterAction,LaunchLink, TerminateInstance)

        row_actions = (EditInstance,ConsoleLink, LogLink, SnapshotLink,IncreaseLink,

                       TogglePause,ToggleSuspend, RebootInstance,

                       TerminateInstance)

(2)   关联novaclient 命令行调用

通过web 按钮提交备份增量参数,把参数传递给novaclient 客户端命令行,使命令行调用备份的具体的执行过程。



      以上流程图及代码需结合具体的软件代码分析,更容易理解。

相关内容