24 from horizon import workflows |
24 from horizon import workflows |
25 |
25 |
26 from openstack_dashboard import api |
26 from openstack_dashboard import api |
27 from openstack_dashboard.dashboards.admin.instances.forms import \ |
27 from openstack_dashboard.dashboards.admin.instances.forms import \ |
28 LiveMigrateForm |
28 LiveMigrateForm |
29 from openstack_dashboard.dashboards.admin.instances import tables \ |
29 from openstack_dashboard.dashboards.admin.instances.tables import \ |
30 as admin_tables |
30 AdminInstancesTable, MigrateInstance |
31 from openstack_dashboard.dashboards.admin.networks.forms import CreateNetwork |
|
32 from openstack_dashboard.dashboards.admin.networks.ports.forms import \ |
|
33 CreatePort |
|
34 from openstack_dashboard.dashboards.admin.networks.ports.tables import \ |
|
35 DeletePort, PortsTable |
|
36 from openstack_dashboard.dashboards.admin.networks.subnets.tables import \ |
|
37 DeleteSubnet, SubnetsTable |
|
38 from openstack_dashboard.dashboards.admin.networks.tables import \ |
|
39 DeleteNetwork, NetworksTable |
|
40 from openstack_dashboard.dashboards.project.access_and_security.tabs import \ |
31 from openstack_dashboard.dashboards.project.access_and_security.tabs import \ |
41 AccessAndSecurityTabs, APIAccessTab, FloatingIPsTab, KeypairsTab |
32 AccessAndSecurityTabs, APIAccessTab, FloatingIPsTab, KeypairsTab |
42 from openstack_dashboard.dashboards.project.images.images.tables import \ |
33 from openstack_dashboard.dashboards.project.images.images.tables import \ |
43 EditImage, DeleteImage, ImagesTable, LaunchImage |
34 ImagesTable, CreateVolumeFromImage |
44 from openstack_dashboard.dashboards.project.instances import tables \ |
35 from openstack_dashboard.dashboards.project.instances import tables \ |
45 as project_tables |
36 as project_tables |
|
37 from openstack_dashboard.dashboards.project.instances.tables import \ |
|
38 InstancesTable, TogglePause, EditInstanceSecurityGroups |
46 from openstack_dashboard.dashboards.project.instances.workflows import \ |
39 from openstack_dashboard.dashboards.project.instances.workflows import \ |
47 create_instance, update_instance |
40 create_instance, update_instance |
48 from openstack_dashboard.dashboards.project.networks.ports.tables import \ |
41 |
49 PortsTable as projectPortsTable |
42 |
50 from openstack_dashboard.dashboards.project.networks.subnets.tables import \ |
43 # Remove Security Groups from the LaunchInstance workflow |
51 DeleteSubnet as projectDeleteSubnet |
44 |
52 from openstack_dashboard.dashboards.project.networks.subnets.tables import \ |
45 class SolarisSetAccessControlsAction(create_instance.SetAccessControlsAction): |
53 SubnetsTable as projectSubnetsTable |
46 def __init__(self, request, *args, **kwargs): |
54 from openstack_dashboard.dashboards.project.networks.tables import \ |
47 super(SolarisSetAccessControlsAction, self).__init__(request, |
55 CreateSubnet as projectCreateSubnet |
48 *args, |
56 from openstack_dashboard.dashboards.project.networks.tables import \ |
49 **kwargs) |
57 DeleteNetwork as projectDeleteNetwork |
50 |
58 from openstack_dashboard.dashboards.project.networks.tables import \ |
51 del self.fields['groups'] |
59 NetworksTable as projectNetworksTable |
52 |
60 from openstack_dashboard.dashboards.project.networks.workflows import \ |
53 class Meta(object): |
61 CreateNetworkInfoAction, CreateSubnetDetailAction |
54 name = _("Access & Security") |
|
55 help_text = _("Control access to your instance via key pairs, " |
|
56 "and other mechanisms.") |
|
57 |
|
58 def populate_groups_choices(self, request, context): |
|
59 return [] |
|
60 |
|
61 create_instance.SetAccessControls.action_class = SolarisSetAccessControlsAction |
|
62 |
62 |
63 |
63 # Bootargs feature: |
64 # Bootargs feature: |
64 # Add bootargs feature to 'SetAdvanced' workflow action. |
65 # Add bootargs feature to 'SetAdvanced' workflow action. |
65 # Part of Project/Compute/Instances/Launch Instance |
66 # Part of Project/Compute/Instances/Launch Instance |
66 class SolarisSetAdvancedAction(create_instance.SetAdvancedAction): |
67 class SolarisSetAdvancedAction(create_instance.SetAdvancedAction): |
117 # to Project/Compute/Instances/Launch Instance |
118 # to Project/Compute/Instances/Launch Instance |
118 if getattr(settings, 'SOLARIS_BOOTARGS', True): |
119 if getattr(settings, 'SOLARIS_BOOTARGS', True): |
119 create_instance.LaunchInstance.default_steps += ( |
120 create_instance.LaunchInstance.default_steps += ( |
120 create_instance.SetAdvanced, |
121 create_instance.SetAdvanced, |
121 ) |
122 ) |
122 |
|
123 # Disable 'Security Groups' in Project/Instances/Launch Instance/Access & |
|
124 # Security. Note that this is unchecked by default. |
|
125 groups_widget = create_instance.SetAccessControlsAction.base_fields['groups'] |
|
126 groups_widget.widget.attrs['disabled'] = True |
|
127 |
123 |
128 |
124 |
129 # Bootargs feature: |
125 # Bootargs feature: |
130 # Add bootargs feature to 'UpdateInstance' workflow action class. |
126 # Add bootargs feature to 'UpdateInstance' workflow action class. |
131 # Part of Project/Compute/Instances/Actions/Edit Instance |
127 # Part of Project/Compute/Instances/Actions/Edit Instance |
189 # Remove 'SecurityGroupsTab' tab from Project/Compute/Access & Security |
185 # Remove 'SecurityGroupsTab' tab from Project/Compute/Access & Security |
190 AccessAndSecurityTabs.tabs = (KeypairsTab, FloatingIPsTab, APIAccessTab) |
186 AccessAndSecurityTabs.tabs = (KeypairsTab, FloatingIPsTab, APIAccessTab) |
191 |
187 |
192 # Remove 'TogglePause', 'MigrateInstance' actions from |
188 # Remove 'TogglePause', 'MigrateInstance' actions from |
193 # Admin/System/Instances/Actions |
189 # Admin/System/Instances/Actions |
194 admin_tables.AdminInstancesTable._meta.row_actions = ( |
190 temp = list(AdminInstancesTable._meta.row_actions) |
195 project_tables.ConfirmResize, |
191 temp.remove(MigrateInstance) |
196 project_tables.RevertResize, |
192 temp.remove(TogglePause) |
197 admin_tables.AdminEditInstance, |
193 AdminInstancesTable._meta.row_actions = tuple(temp) |
198 project_tables.ConsoleLink, |
|
199 project_tables.LogLink, |
|
200 project_tables.CreateSnapshot, |
|
201 project_tables.ToggleSuspend, |
|
202 admin_tables.LiveMigrateInstance, |
|
203 project_tables.SoftRebootInstance, |
|
204 project_tables.RebootInstance, |
|
205 project_tables.TerminateInstance |
|
206 ) |
|
207 |
194 |
208 # Remove 'EditInstanceSecurityGroups', 'TogglePause' actions from |
195 # Remove 'EditInstanceSecurityGroups', 'TogglePause' actions from |
209 # Project/Compute/Instances/Actions |
196 # Project/Compute/Instances/Actions |
210 project_tables.InstancesTable._meta.row_actions = ( |
197 temp = list(InstancesTable._meta.row_actions) |
211 project_tables.StartInstance, |
198 temp.remove(EditInstanceSecurityGroups) |
212 project_tables.ConfirmResize, |
199 temp.remove(TogglePause) |
213 project_tables.RevertResize, |
200 InstancesTable._meta.row_actions = tuple(temp) |
214 project_tables.CreateSnapshot, |
|
215 project_tables.SimpleAssociateIP, |
|
216 project_tables.AssociateIP, |
|
217 project_tables.SimpleDisassociateIP, |
|
218 project_tables.EditInstance, |
|
219 project_tables.DecryptInstancePassword, |
|
220 project_tables.ConsoleLink, |
|
221 project_tables.LogLink, |
|
222 project_tables.ResizeLink, |
|
223 project_tables.ToggleSuspend, |
|
224 project_tables.SoftRebootInstance, |
|
225 project_tables.RebootInstance, |
|
226 project_tables.StopInstance, |
|
227 project_tables.RebuildInstance, |
|
228 project_tables.TerminateInstance |
|
229 ) |
|
230 |
201 |
231 # Bootargs feature: |
202 # Bootargs feature: |
232 # If locally configured to do so add 'EditBootargs' to |
203 # If locally configured to do so add 'EditBootargs' to |
233 # Project/Compute/Instances/Actions |
204 # Project/Compute/Instances/Actions |
234 if getattr(settings, 'SOLARIS_BOOTARGS', True): |
205 if getattr(settings, 'SOLARIS_BOOTARGS', True): |
235 project_tables_row_actions = project_tables.InstancesTable._meta.row_actions |
206 project_tables_row_actions = \ |
|
207 project_tables.InstancesTable._meta.row_actions |
236 pos = project_tables.InstancesTable._meta.row_actions.index( |
208 pos = project_tables.InstancesTable._meta.row_actions.index( |
237 project_tables.ConsoleLink |
209 project_tables.ConsoleLink |
238 ) |
210 ) |
239 project_tables.InstancesTable._meta.row_actions = ( |
211 project_tables.InstancesTable._meta.row_actions = ( |
240 project_tables_row_actions[:pos] + (project_tables.EditBootargs,) + |
212 project_tables_row_actions[:pos] + (project_tables.EditBootargs,) + |
245 # Admin/System/Instances/Actions/Live Migrate Instance. Note that this is |
217 # Admin/System/Instances/Actions/Live Migrate Instance. Note that this is |
246 # unchecked by default. |
218 # unchecked by default. |
247 LiveMigrateForm.base_fields['disk_over_commit'].widget.attrs['disabled'] = True |
219 LiveMigrateForm.base_fields['disk_over_commit'].widget.attrs['disabled'] = True |
248 LiveMigrateForm.base_fields['block_migration'].widget.attrs['disabled'] = True |
220 LiveMigrateForm.base_fields['block_migration'].widget.attrs['disabled'] = True |
249 |
221 |
250 # Disable 'admin_state' in Admin/System/Networks/Create Network |
|
251 admin_state = CreateNetwork.base_fields['admin_state'] |
|
252 admin_state.widget.attrs['disabled'] = True |
|
253 admin_state.widget.value_from_datadict = lambda *args: True |
|
254 |
|
255 # Disable 'shared' in Admin/System/Networks/Create Network. Note that this is |
|
256 # unchecked by default. |
|
257 CreateNetwork.base_fields['shared'].widget.attrs['disabled'] = True |
|
258 |
|
259 # Disable 'admin_state' in Admin/System/Networks/Network Name/Create Port |
|
260 admin_state = CreatePort.base_fields['admin_state'] |
|
261 admin_state.widget.attrs['disabled'] = True |
|
262 admin_state.widget.value_from_datadict = lambda *args: True |
|
263 |
|
264 # Remove 'UpdatePort' action from Admin/System/Networks/Network Name/Actions |
|
265 PortsTable._meta.row_actions = (DeletePort,) |
|
266 |
|
267 # Remove 'UpdateSubnet' action from |
|
268 # Admin/System/Networks/Network Name/Subnets/Actions |
|
269 SubnetsTable._meta.row_actions = (DeleteSubnet,) |
|
270 |
|
271 # Remove the 'EditNetwork' action from Admin/System/Networks/Actions |
|
272 NetworksTable._meta.row_actions = (DeleteNetwork,) |
|
273 |
|
274 # Remove the 'UpdatePort' action from |
|
275 # Project/Network/Networks/Name/Ports/Actions |
|
276 projectPortsTable._meta.row_actions = () |
|
277 |
|
278 # Remove the 'UpdateSubnet' action from |
|
279 # Project/Network/Networks/Name/Subnets/Actions |
|
280 projectSubnetsTable._meta.row_actions = (projectDeleteSubnet,) |
|
281 |
|
282 # Remove the 'EditNetwork' action from Project/Network/Networks/Actions |
|
283 projectNetworksTable._meta.row_actions = (projectCreateSubnet, |
|
284 projectDeleteNetwork) |
|
285 |
|
286 # Disable 'admin_state' in Project/Network/Networks/Create Network/Network |
|
287 admin_state = CreateNetworkInfoAction.base_fields['admin_state'] |
|
288 admin_state.widget.attrs['disabled'] = True |
|
289 admin_state.widget.value_from_datadict = lambda *args: True |
|
290 |
|
291 # Remove 'CreateVolumeFromImage' checkbox from Project/Compute/Images/Actions |
222 # Remove 'CreateVolumeFromImage' checkbox from Project/Compute/Images/Actions |
292 ImagesTable._meta.row_actions = (LaunchImage, EditImage, DeleteImage,) |
223 temp = list(ImagesTable._meta.row_actions) |
293 |
224 temp.remove(CreateVolumeFromImage) |
294 # Change 'host_routes' field to read-only in |
225 ImagesTable._meta.row_actions = tuple(temp) |
295 # Project/Network/Networks/Create Network/Subnet Detail |
|
296 base_fields = CreateSubnetDetailAction.base_fields |
|
297 base_fields['host_routes'].widget.attrs['readonly'] = 'readonly' |
|