Remove UI parts and components for nova network. Remove NovaNetworkManager for 8.0. Change-Id: I81b8aee4615fa1da40724a92c781e955c8bf4ecb Closes-Bug: #1528407tags/8.0
@@ -88,8 +88,10 @@ default_messages = { | |||
"DuplicatedVIPNames": ("Cannot assign VIPs for the cluster due to " | |||
"overlapping of names of the VIPs"), | |||
"UpdateDnsmasqTaskIsRunning": ("update_dnsmasq task is not finished " | |||
"after the previous configuration change. " | |||
"Please try again after a few seconds."), | |||
"after the previous configuration change. " | |||
"Please try again after a few seconds."), | |||
"NovaNetworkNotSupported": ("Nova network is not supported in current " | |||
"release"), | |||
# RPC errors | |||
"CannotFindTask": "Cannot find task", | |||
@@ -114,13 +116,9 @@ default_messages = { | |||
# unknown | |||
"UnknownError": "Unknown error", | |||
"UnresolvableConflict": "Unresolvable conflict", | |||
"NodeNotBelongToCluster": "The Node doesn't belong to the Cluster", | |||
"TaskBaseDeploymentNotAllowed": | |||
"The task-based deployment is not allowed" | |||
"TaskBaseDeploymentNotAllowed": "The task-based deployment is not allowed" | |||
} | |||
@@ -954,8 +954,6 @@ | |||
value: false | |||
weight: 30 | |||
type: "hidden" | |||
restrictions: | |||
- condition: "cluster:net_provider == 'nova_network'" | |||
libvirt_type: | |||
value: "qemu" | |||
values: | |||
@@ -1597,7 +1595,7 @@ | |||
name: "network" | |||
type: "object" | |||
restrictions: | |||
- condition: "cluster:net_provider != 'nova_network' or networking_parameters:net_manager != 'VlanManager' or settings:common.use_vcenter.value == false" | |||
- condition: "settings:common.use_vcenter.value == false" | |||
action: "hide" | |||
fields: | |||
- | |||
@@ -1743,20 +1741,6 @@ | |||
message: "dialog.create_cluster_wizard.additional.ironic_network_mode_alert" | |||
requires: | |||
- name: network:neutron:core:ml2 | |||
- name: network:nova_network | |||
bind: !!pairs | |||
- "cluster:net_provider": "nova_network" | |||
weight: 15 | |||
label: "dialog.create_cluster_wizard.network.nova_network" | |||
description: "dialog.create_cluster_wizard.network.nova_network_description" | |||
compatible: | |||
- name: hypervisor:vmware | |||
requires: | |||
- name: 'hypervisor:vmware' | |||
message: "dialog.create_cluster_wizard.network.nova_network_vcenter_alert" | |||
incompatible: | |||
- name: additional_service:ironic | |||
message: "dialog.create_cluster_wizard.additional.ironic_network_mode_alert" | |||
- name: storage:block:lvm | |||
label: "dialog.create_cluster_wizard.storage.lvm" | |||
description: "dialog.create_cluster_wizard.storage.default_provider" | |||
@@ -1769,7 +1753,6 @@ | |||
- name: hypervisor:vmware | |||
- name: network:neutron:ml2:vlan | |||
- name: network:neutron:ml2:tun | |||
- name: network:nova_network | |||
incompatible: | |||
- name: storage:block:ceph | |||
message: "LVM not compatible with Ceph" | |||
@@ -1785,7 +1768,6 @@ | |||
- name: hypervisor:vmware | |||
- name: network:neutron:ml2:vlan | |||
- name: network:neutron:ml2:tun | |||
- name: network:nova_network | |||
- name: storage:object:ceph | |||
- name: storage:ephemeral:ceph | |||
- name: storage:image:ceph | |||
@@ -1803,7 +1785,6 @@ | |||
- name: hypervisor:vmware | |||
- name: network:neutron:ml2:vlan | |||
- name: network:neutron:ml2:tun | |||
- name: network:nova_network | |||
- name: storage:block:ceph | |||
- name: storage:ephemeral:ceph | |||
- name: storage:image:ceph | |||
@@ -1818,7 +1799,6 @@ | |||
- name: hypervisor:vmware | |||
- name: network:neutron:ml2:vlan | |||
- name: network:neutron:ml2:tun | |||
- name: network:nova_network | |||
- name: storage:block:ceph | |||
- name: storage:object:ceph | |||
- name: storage:image:ceph | |||
@@ -1833,7 +1813,6 @@ | |||
- name: hypervisor:vmware | |||
- name: network:neutron:ml2:vlan | |||
- name: network:neutron:ml2:tun | |||
- name: network:nova_network | |||
- name: storage:block:ceph | |||
- name: storage:object:ceph | |||
- name: storage:ephemeral:ceph | |||
@@ -1848,7 +1827,6 @@ | |||
- name: hypervisor:vmware | |||
- name: network:neutron:ml2:vlan | |||
- name: network:neutron:ml2:tun | |||
- name: network:nova_network | |||
- name: storage:block:lvm | |||
- name: storage:block:ceph | |||
- name: storage:object:ceph | |||
@@ -1869,7 +1847,6 @@ | |||
- name: hypervisor:vmware | |||
- name: network:neutron:ml2:vlan | |||
- name: network:neutron:ml2:tun | |||
- name: network:nova_network | |||
- name: storage:block:lvm | |||
- name: storage:block:ceph | |||
- name: storage:object:ceph | |||
@@ -1889,7 +1866,6 @@ | |||
- name: hypervisor:vmware | |||
- name: network:neutron:ml2:vlan | |||
- name: network:neutron:ml2:tun | |||
- name: network:nova_network | |||
- name: storage:block:lvm | |||
- name: storage:block:ceph | |||
- name: storage:object:ceph | |||
@@ -1916,8 +1892,6 @@ | |||
- name: additional_service:murano | |||
- name: additional_service:ceilometer | |||
incompatible: | |||
- name: network:nova_network | |||
message: "dialog.create_cluster_wizard.additional.ironic_network_mode_alert" | |||
- name: network:neutron:ml2:tun | |||
message: "dialog.create_cluster_wizard.additional.ironic_network_mode_alert" | |||
modes: ['ha_compact'] |
@@ -18,7 +18,6 @@ from nailgun.db import db | |||
from nailgun.db.sqlalchemy.models import NovaNetworkConfig | |||
from nailgun.network.manager import AllocateVIPs70Mixin | |||
from nailgun.network.manager import AllocateVIPs80Mixin | |||
from nailgun.network.manager import AssignIPs61Mixin | |||
from nailgun.network.manager import AssignIPs70Mixin | |||
from nailgun.network.manager import AssignIPsLegacyMixin | |||
@@ -86,7 +85,3 @@ class NovaNetworkManager70( | |||
:rtype: str | |||
""" | |||
return network_role['default_mapping'] | |||
class NovaNetworkManager80(AllocateVIPs80Mixin, NovaNetworkManager70): | |||
pass |
@@ -433,7 +433,8 @@ class Cluster(NailgunObject): | |||
return nova_network.NovaNetworkManager70 | |||
if StrictVersion(ver) >= StrictVersion('8.0'): | |||
return nova_network.NovaNetworkManager80 | |||
raise errors.NovaNetworkNotSupported() | |||
return nova_network.NovaNetworkManager | |||
raise ValueError( |
@@ -45,7 +45,6 @@ from nailgun.network.neutron import NeutronManager70 | |||
from nailgun.network.neutron import NeutronManager80 | |||
from nailgun.network.nova_network import NovaNetworkManager | |||
from nailgun.network.nova_network import NovaNetworkManager70 | |||
from nailgun.network.nova_network import NovaNetworkManager80 | |||
from nailgun.test.base import BaseIntegrationTest | |||
from nailgun.test.base import fake_tasks | |||
@@ -1291,20 +1290,6 @@ class TestNovaNetworkManager70(TestNeutronManager70): | |||
self.assertEqual(endpoint_ip, vip) | |||
class TestNovaNetworkManager80(TestNovaNetworkManager70): | |||
def _create_env(self): | |||
return self.env.create( | |||
release_kwargs={'version': '1111-8.0'}, | |||
cluster_kwargs={ | |||
'api': False, | |||
'net_provider': consts.CLUSTER_NET_PROVIDERS.nova_network | |||
} | |||
) | |||
def test_get_network_manager(self): | |||
self.assertIs(self.net_manager, NovaNetworkManager80) | |||
class TestTemplateManager70(BaseNetworkManagerTest): | |||
def setUp(self): | |||
super(TestTemplateManager70, self).setUp() |
@@ -114,7 +114,7 @@ class TestInstallationInfo(BaseTestCase): | |||
cluster_kwargs={ | |||
'release_id': release[0].id, | |||
'mode': consts.CLUSTER_MODES.ha_compact, | |||
'net_provider': consts.CLUSTER_NET_PROVIDERS.nova_network}, | |||
'net_provider': consts.CLUSTER_NET_PROVIDERS.neutron}, | |||
nodes_kwargs=nodes_params | |||
) | |||
self.env.create_node({'status': consts.NODE_STATUSES.discover}) | |||
@@ -137,7 +137,7 @@ class TestInstallationInfo(BaseTestCase): | |||
cluster_kwargs={ | |||
'release_id': release[0].id, | |||
'mode': consts.CLUSTER_MODES.ha_compact, | |||
'net_provider': consts.CLUSTER_NET_PROVIDERS.nova_network}, | |||
'net_provider': consts.CLUSTER_NET_PROVIDERS.neutron}, | |||
nodes_kwargs=nodes_params | |||
) | |||
self.env.create_node({'status': consts.NODE_STATUSES.discover}) | |||
@@ -151,7 +151,7 @@ class TestInstallationInfo(BaseTestCase): | |||
self.assertEquals(consts.CLUSTER_MODES.ha_compact, | |||
cluster_info['mode']) | |||
self.assertEquals(consts.CLUSTER_NET_PROVIDERS.nova_network, | |||
self.assertEquals(consts.CLUSTER_NET_PROVIDERS.neutron, | |||
cluster_info['net_provider']) | |||
self.assertEquals(consts.CLUSTER_STATUSES.new, | |||
cluster_info['status']) |
@@ -52,7 +52,6 @@ from nailgun.network.neutron import NeutronManager80 | |||
from nailgun.network.neutron import NeutronManagerLegacy | |||
from nailgun.network.nova_network import NovaNetworkManager61 | |||
from nailgun.network.nova_network import NovaNetworkManager70 | |||
from nailgun.network.nova_network import NovaNetworkManager80 | |||
from nailgun.network.nova_network import NovaNetworkManagerLegacy | |||
@@ -1329,9 +1328,6 @@ class TestClusterObject(BaseTestCase): | |||
'name': 'network:neutron:tun', | |||
'bind': [['cluster:net_provider', 'neutron'], | |||
['cluster:net_segment_type', 'tun']] | |||
}, { | |||
'name': 'network:nova_network', | |||
'bind': [['cluster:net_provider', 'nova_network']] | |||
}, { | |||
'name': 'hypervisor:libvirt:kvm', | |||
'bind': [['settings:common.libvirt_type.value', 'kvm']] | |||
@@ -1366,14 +1362,6 @@ class TestClusterObject(BaseTestCase): | |||
'net_provider': consts.CLUSTER_NET_PROVIDERS.neutron, | |||
'segmentation_type': consts.NEUTRON_SEGMENT_TYPES.tun | |||
} | |||
}, { | |||
'selected_components': ['network:nova_network', | |||
'hypervisor:libvirt:kvm', | |||
'additional_service:sahara'], | |||
'expected_values': { | |||
'net_provider': consts.CLUSTER_NET_PROVIDERS.nova_network, | |||
'segmentation_type': None | |||
} | |||
}, { | |||
'selected_components': ['network:neutron:test_network', | |||
'hypervisor:libvirt:kvm', | |||
@@ -1597,7 +1585,6 @@ class TestClusterObjectGetNetworkManager(BaseTestCase): | |||
('2014.2.2-6.0', NovaNetworkManagerLegacy), | |||
('2014.2.2-6.1', NovaNetworkManager61), | |||
('2015.6.7-7.0', NovaNetworkManager70), | |||
('2016.1.1-8.0', NovaNetworkManager80), | |||
): | |||
self.check_neutron_network_manager( | |||
consts.CLUSTER_NET_PROVIDERS.nova_network, |
@@ -242,36 +242,6 @@ define([ | |||
.then(function() { | |||
return dashboardPage.discardChanges(); | |||
}); | |||
}, | |||
'VCenter warning appears': function() { | |||
var vCenterClusterName = clusterName + 'VCenter test'; | |||
return this.remote | |||
.clickLinkByText('Environments') | |||
.assertElementsAppear('a.clusterbox', 2000, 'The list of clusters is shown when navigating to Environments link') | |||
.then(function() { | |||
return common.createCluster( | |||
vCenterClusterName, | |||
{ | |||
Compute: function() { | |||
// Selecting VCenter | |||
return this.remote | |||
.clickByCssSelector('.custom-tumbler input[name=hypervisor\\:vmware]'); | |||
}, | |||
'Networking Setup': function() { | |||
// Selecting Nova Network | |||
return this.remote | |||
.clickByCssSelector('.custom-tumbler input[value=network\\:nova_network]'); | |||
} | |||
} | |||
); | |||
}) | |||
.then(function() { | |||
return common.addNodesToCluster(1, ['Controller']); | |||
}) | |||
.then(function() { | |||
return clusterPage.goToTab('Dashboard'); | |||
}) | |||
.assertElementContainsText('.warnings-block', 'VMware settings are invalid', 'VMware warning is shown'); | |||
} | |||
}; | |||
}); |
@@ -26,208 +26,6 @@ define([ | |||
], function(_, registerSuite, assert, Common, NetworksPage, ClusterPage, ModalWindow, DashboardPage) { | |||
'use strict'; | |||
registerSuite(function() { | |||
var common, | |||
networksPage, | |||
clusterPage, | |||
clusterName, | |||
dashboardPage; | |||
return { | |||
name: 'Networks page Nova Network tests', | |||
setup: function() { | |||
common = new Common(this.remote); | |||
networksPage = new NetworksPage(this.remote); | |||
clusterPage = new ClusterPage(this.remote); | |||
clusterName = common.pickRandomName('Test Cluster'); | |||
dashboardPage = new DashboardPage(this.remote); | |||
return this.remote | |||
.then(function() { | |||
return common.getIn(); | |||
}) | |||
.then(function() { | |||
return common.createCluster( | |||
clusterName, | |||
{ | |||
Compute: function() { | |||
// select VCenter to enable Nova networking | |||
return this.remote | |||
.clickByCssSelector('input[name=hypervisor\\:vmware]'); | |||
}, | |||
'Networking Setup': function() { | |||
return this.remote | |||
.clickByCssSelector('input[value=network\\:nova_network]'); | |||
} | |||
} | |||
); | |||
}) | |||
.then(function() { | |||
return clusterPage.goToTab('Networks'); | |||
}); | |||
}, | |||
afterEach: function() { | |||
return this.remote | |||
.clickByCssSelector('.btn-revert-changes'); | |||
}, | |||
'Network Tab is rendered correctly': function() { | |||
return this.remote | |||
.assertElementExists('.nova-managers .radio-group', 'Nova Network manager radiogroup is present') | |||
.assertElementsExist('.checkbox-group input[name=net_provider]', 2, 'Network manager options are present') | |||
.assertElementSelected('input[value=FlatDHCPManager]', 'Flat DHCP manager is chosen') | |||
.assertElementsExist('.network-tab h3', 3, 'All networks are present'); | |||
}, | |||
'Testing cluster networks: Save button interactions': function() { | |||
var self = this, | |||
cidrInitialValue, | |||
cidrElementSelector = '.storage input[name=cidr]'; | |||
return this.remote | |||
.findByCssSelector(cidrElementSelector) | |||
.then(function(element) { | |||
return element.getAttribute('value') | |||
.then(function(value) { | |||
cidrInitialValue = value; | |||
}); | |||
}) | |||
.end() | |||
.setInputValue(cidrElementSelector, '240.0.1.0/25') | |||
.assertElementAppears(networksPage.applyButtonSelector + ':not(:disabled)', 200, | |||
'Save changes button is enabled if there are changes') | |||
.then(function() { | |||
return self.remote.setInputValue(cidrElementSelector, cidrInitialValue); | |||
}) | |||
.assertElementAppears(networksPage.applyButtonSelector + ':disabled', 200, | |||
'Save changes button is disabled again if there are no changes'); | |||
}, | |||
'Testing cluster networks: change network manager': function() { | |||
var amountSelector = 'input[name=fixed_networks_amount]', | |||
sizeSelector = 'select[name=fixed_network_size]'; | |||
return this.remote | |||
.then(function() { | |||
return networksPage.switchNetworkManager(); | |||
}) | |||
.clickByCssSelector('.subtab-link-nova_configuration') | |||
.assertElementExists(amountSelector, 'Amount field for a fixed network is present in VLAN mode') | |||
.assertElementExists(sizeSelector, 'Size field for a fixed network is present in VLAN mode') | |||
.assertElementEnabled(networksPage.applyButtonSelector, 'Save changes button is enabled after manager was changed') | |||
.then(function() { | |||
return networksPage.switchNetworkManager(); | |||
}) | |||
.assertElementNotExists(amountSelector, 'Amount field was hidden after revert to FlatDHCP') | |||
.assertElementNotExists(sizeSelector, 'Size field was hidden after revert to FlatDHCP') | |||
.assertElementDisabled(networksPage.applyButtonSelector, 'Save changes button is disabled again after revert to FlatDHCP'); | |||
}, | |||
'Testing cluster networks: network notation change': function() { | |||
return this.remote | |||
.clickByCssSelector('.subtab-link-default') | |||
.assertElementAppears('.storage', 2000, 'Storage network is shown') | |||
.assertElementSelected('.storage .cidr input[type=checkbox]', 'Storage network has "cidr" notation by default') | |||
.assertElementNotExists('.storage .ip_ranges input[type=text]:not(:disabled)', 'It is impossible to configure IP ranges for network with "cidr" notation') | |||
.clickByCssSelector('.storage .cidr input[type=checkbox]') | |||
.assertElementNotExists('.storage .ip_ranges input[type=text]:disabled', 'Network notation was changed to "ip_ranges"'); | |||
}, | |||
'Testing cluster networks: VLAN range fields': function() { | |||
return this.remote | |||
.then(function() { | |||
return networksPage.switchNetworkManager(); | |||
}) | |||
.clickByCssSelector('.subtab-link-nova_configuration') | |||
.assertElementAppears('input[name=range-end_fixed_networks_vlan_start]', 2000, 'VLAN range is displayed'); | |||
}, | |||
'Testing cluster networks: save network changes': function() { | |||
return this.remote | |||
.then(function() { | |||
return networksPage.switchNetworkManager(); | |||
}) | |||
.clickByCssSelector(networksPage.applyButtonSelector) | |||
.assertElementsAppear('input:not(:disabled)', 2000, 'Inputs are not disabled') | |||
.assertElementNotExists('.alert-error', 'Correct settings were saved successfully'); | |||
}, | |||
'Testing cluster networks: save settings with group: network': function() { | |||
return this.remote | |||
.clickByCssSelector('.subtab-link-network_settings') | |||
.clickByCssSelector('input[name=auto_assign_floating_ip][type=checkbox]') | |||
.clickByCssSelector(networksPage.applyButtonSelector) | |||
.assertElementsAppear('input:not(:disabled)', 2000, 'Inputs are not disabled') | |||
.assertElementDisabled(networksPage.applyButtonSelector, 'Save changes button is disabled again after successfull settings saving'); | |||
}, | |||
'Testing cluster networks: verification': function() { | |||
return this.remote | |||
.clickByCssSelector('.subtab-link-network_verification') | |||
.assertElementDisabled('.verify-networks-btn', 'Verification button is disabled in case of no nodes') | |||
.assertElementTextEquals('.alert-warning', | |||
'At least two online nodes are required to verify environment network configuration', | |||
'Not enough nodes warning is shown') | |||
.clickByCssSelector('.subtab-link-default') | |||
.then(function() { | |||
// Adding 2 controllers | |||
return common.addNodesToCluster(2, ['Controller']); | |||
}) | |||
.then(function() { | |||
return clusterPage.goToTab('Networks'); | |||
}) | |||
.setInputValue('.public input[name=gateway]', '172.16.0.2') | |||
.clickByCssSelector('.subtab-link-network_verification') | |||
.clickByCssSelector('.verify-networks-btn') | |||
.assertElementAppears('.alert-danger.network-alert', 4000, 'Verification error is shown') | |||
.assertElementAppears('.alert-danger.network-alert', 'Address intersection', 'Verification result is shown in case of address intersection') | |||
// Testing cluster networks: verification task deletion | |||
.then(function() { | |||
return networksPage.switchNetworkManager(); | |||
}) | |||
.clickByCssSelector('.subtab-link-network_verification') | |||
.assertElementNotExists('.page-control-box .alert', 'Verification task was removed after settings has been changed') | |||
.clickByCssSelector('.btn-revert-changes') | |||
.then(function() { | |||
return clusterPage.goToTab('Dashboard'); | |||
}) | |||
.then(function() { | |||
return dashboardPage.discardChanges(); | |||
}) .then(function() { | |||
return clusterPage.goToTab('Networks'); | |||
}); | |||
}, | |||
'Check VlanID field validation': function() { | |||
return this.remote | |||
.clickByCssSelector('.subtab-link-default') | |||
.assertElementAppears('.management', 2000, 'Management network appears') | |||
.clickByCssSelector('.management .vlan-tagging input[type=checkbox]') | |||
.clickByCssSelector('.management .vlan-tagging input[type=checkbox]') | |||
.assertElementExists('.management .has-error input[name=vlan_start]', | |||
'Field validation has worked properly in case of empty value'); | |||
}, | |||
'Testing cluster networks: data validation on manager change': function() { | |||
return this.remote | |||
.then(function() { | |||
return networksPage.switchNetworkManager(); | |||
}) | |||
.clickByCssSelector('.subtab-link-nova_configuration') | |||
.assertElementAppears('input[name=fixed_networks_vlan_start][type=checkbox]', 2000, 'Vlan range appearsse') | |||
.clickByCssSelector('input[name=fixed_networks_vlan_start][type=checkbox]') | |||
.then(function() { | |||
return networksPage.switchNetworkManager(); | |||
}) | |||
.assertElementExists('.has-error input[name=range-start_fixed_networks_vlan_start][type=text]', | |||
'Field validation has worked') | |||
.assertElementDisabled(networksPage.applyButtonSelector, | |||
'Save changes button is disabled if there is validation error') | |||
.then(function() { | |||
return networksPage.switchNetworkManager(); | |||
}) | |||
.clickByCssSelector('input[name=fixed_networks_vlan_start][type=checkbox]') | |||
.assertElementNotExists('.has-error input[name=range-start_fixed_networks_vlan_start][type=text]', | |||
'Field validation works properly'); | |||
}, | |||
'Testing cluster networks: data validation on invalid settings': function() { | |||
return this.remote | |||
.clickByCssSelector('.subtab-link-default') | |||
.setInputValue('input[name=range-end_ip_ranges]', '172.16.0.2') | |||
.clickByCssSelector(networksPage.applyButtonSelector) | |||
.assertElementAppears('.alert-danger.network-alert', 2000, 'Validation error appears'); | |||
} | |||
}; | |||
}); | |||
registerSuite(function() { | |||
var common, | |||
networksPage, |
@@ -65,7 +65,7 @@ define([ | |||
.pressKeys('\uE007') | |||
.assertElementsExist('.wizard-step.available', 5, 'All steps are available at the end') | |||
.clickLinkByText('Compute') | |||
.clickByCssSelector('input[name=hypervisor\\:vmware]') | |||
.clickByCssSelector('input[name=hypervisor\\:qemu]') | |||
.assertElementExists('.wizard-step.available', 1, | |||
'Only one step is available after changing hypervisor'); | |||
} |
@@ -861,6 +861,7 @@ | |||
"qemu_description": "Select this option if you want to use QEMU as a hypervisor with capability of KVM acceleration.", | |||
"vcenter_description": "Select this option if you run OpenStack on VMware vCenter.", | |||
"vcenter_warning": "vCenter can't be deployed without QEMU-KVM option selected.", | |||
"vcenter_requires_network_backend": "vCenter requires DVS or NSX network backend", | |||
"empty_choice": "Please select at least one hypervisor type" | |||
}, | |||
"network": { | |||
@@ -869,9 +870,6 @@ | |||
"description_link": "Mirantis OpenStack Planning Guide for Network Topology", | |||
"release_alert": "Neutron is not supported in __NameAndRelease.release_name__", | |||
"hypervisor_alert": "Neutron is not available with vCenter as a selected compute option.", | |||
"nova_network_vcenter_alert": "Legacy Networking (nova-network) requires vCenter to be a selected compute option.", | |||
"nova_network": "(DEPRECATED) Legacy Networking (nova-network)", | |||
"nova_network_description": "This option is only available if you use VMware vCenter. OpenStack is deprecating nova-network in upcoming releases.", | |||
"neutron_gre_description": "Your network hardware must support GRE segmentation. This option supports up to 65535 networks.", | |||
"neutron_vlan": "Neutron with VLAN segmentation (default)", | |||
"neutron_vlan_description": "Your network hardware must be configured for VLAN segmentation. This option supports up to 4095 networks.", |
@@ -336,14 +336,30 @@ function($, _, i18n, React, Backbone, utils, models, componentMixins, dialogs, c | |||
paneName: 'Compute', | |||
componentType: 'hypervisor', | |||
title: i18n('dialog.create_cluster_wizard.compute.title'), | |||
vCenterPath: 'hypervisor:vmware', | |||
vCenterNetworkBackends: ['network:neutron:ml2:nsx', 'network:neutron:ml2:dvs'], | |||
hasErrors: function(wizard) { | |||
var allComponents = wizard.get('components'), | |||
components = allComponents.getComponentsByType(this.componentType, {sorted: true}); | |||
return !_.any(components, (component) => component.get('enabled')); | |||
} | |||
}, | |||
checkVCenter(allComponents) { | |||
// TODO remove this hack in 9.0 | |||
var hasCompatibleBackends = _.any(allComponents.models, (component) => { | |||
return _.contains(this.constructor.vCenterNetworkBackends, component.id); | |||
}); | |||
if (!hasCompatibleBackends) { | |||
var vCenter = _.find(allComponents.models, (component) => component.id == this.constructor.vCenterPath); | |||
vCenter.set({ | |||
disabled: true, | |||
warnings: i18n('dialog.create_cluster_wizard.compute.vcenter_requires_network_backend') | |||
}); | |||
} | |||
}, | |||
render: function() { | |||
this.processRestrictions(this.components, ['hypervisor']); | |||
this.checkVCenter(this.props.allComponents); | |||
return ( | |||
<div className='wizard-compute-pane'> | |||
<ComponentCheckboxGroup |