dashboard->admin->instance->action

admin->instance->虚拟机创建快照
引用project->instance->tables.CreateSnapshot
CreateSnapshot的操作逻辑步骤:
1.class CreateSnapshot def allowed//该函数的作用是判断是否允许创建,返回Ture或Fasle
2.url = "horizon:project:images:snapshots:create" 找url中对应的views,注意:urls.py文件是在horizon:project:images:snapshots下的urls.py
3.from openstack_dashboard.dashboards.project.images.snapshots import views.CreateView
4.views.CreateView重要的几个地方:
  form_class = project_forms.CreateSnapshot
  submit_url = "horizon:project:images:snapshots:create"
  success_url = reverse_lazy("horizon:project:images:index")
  def get_object(self):  该方法的作用是:通过instance_id得到虚拟机实例
  def get_initial(self):返回虚拟机的instance_id
  def get_context_data: 获取一些参数
5.project_forms.CreateSnapshot
  forms.py里是真正的逻辑操作:
     定义页面字段instance_id(隐藏的)和name 
     def handle 逻辑处理函数snapshot = api.nova.snapshot_create 调用Nova的API



admin->instance->增加过滤器
table_actions = (AdminInstanceFilterAction,)
class AdminInstanceFilterAction(tables.FilterAction):
此类中有三个字段:
  name、filter_type、filter_choices 
注意:每个table_actions只能加一个filter



tabs.py的作用:
有时模板文件需要传值,就通过tabs.py传值。模板可以直接用其内的值

admin->instance->console,可以通过该页面进入虚拟机
1.admin->instance->tables.py
 row_actions=(AdminConsoleLink)
class AdminConsoleLink(project_tables.ConsoleLink):
    url = "horizon:admin:instances:detail"
2.urls.py
detail->views.DetailView
3.from openstack_dashboard.dashboards.project.instances import views
views.py->class DetailView(views.DetailView):

4.project.instances.views.DetailView
class DetailView(tabs.TabView):
类中重要的地方:第一、tab_group_class = project_tabs.InstanceDetailTabs
      <1>InstanceDetailTabs
         class InstanceDetailTabs(tabs.TabGroup):
    		slug = "instance_details"
    		tabs = (OverviewTab, LogTab, ConsoleTab, AuditTab) //定义了四个功能,四个子页面,
									其中ConsoleTab就是操作虚拟机的页面,重点看
    		sticky = True
      <2>class ConsoleTab(tabs.Tab):
         重要的地方template_name = "project/instances/_detail_console.html"
          首先查看模板里需要的变量
		{{ console_url }}:控制台的连接
	  所以该类必须定义该变量的值
          console_type, console_url = console.get_console(
                request, console_type, instance)
	  from openstack_dashboard.dashboards.project.instances import console
 	  调用console.get_console的方法获取console_url
第二、该类重载了redirect_url、image_url、volume_ur变量,并定义了_get_actions方法


猜你喜欢

转载自zouhuiying.iteye.com/blog/2285987
今日推荐