dashboard->admin->instance->action 博客分类: dashboardopenstack dashboard
程序员文章站
2024-03-13 19:23:33
...
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方法