dashboard->admin->instance->action

卫博学
2023-12-01
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方法
 类似资料: