Convert network UUID to name required for OCCM
Sometimes, the fixed_network value gets rendered as UUID. However OCCM's internal-network-name requires the network name, it does not support UUID. This patch introduces a new parameter called fixed_network_name which converts fixed_network UUID to name if it is UUID-like. Story: 2005333 Task: 36313 Change-Id: I3453bc0dbea285687d39c9782685cb1f2a3ecd39
This commit is contained in:
parent
efff708625
commit
e84cc4c975
|
@ -337,6 +337,13 @@ class FlavorNotFound(ResourceNotFound):
|
||||||
code = 400
|
code = 400
|
||||||
|
|
||||||
|
|
||||||
|
class FixedNetworkNotFound(ResourceNotFound):
|
||||||
|
"""The code here changed to 400 according to the latest document."""
|
||||||
|
""""Ensure the network is private."""
|
||||||
|
message = _("Unable to find fixed network %(network)s.")
|
||||||
|
code = 400
|
||||||
|
|
||||||
|
|
||||||
class ExternalNetworkNotFound(ResourceNotFound):
|
class ExternalNetworkNotFound(ResourceNotFound):
|
||||||
"""The code here changed to 400 according to the latest document."""
|
"""The code here changed to 400 according to the latest document."""
|
||||||
""""Ensure the network is not private."""
|
""""Ensure the network is not private."""
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
import re
|
import re
|
||||||
|
|
||||||
from oslo_log import log as logging
|
from oslo_log import log as logging
|
||||||
|
from oslo_utils import uuidutils
|
||||||
|
|
||||||
from magnum.common import clients
|
from magnum.common import clients
|
||||||
from magnum.common import exception
|
from magnum.common import exception
|
||||||
|
@ -54,23 +55,42 @@ def delete_floatingip(context, fix_port_id, cluster):
|
||||||
msg=str(e))
|
msg=str(e))
|
||||||
|
|
||||||
|
|
||||||
def get_network_id(context, network_name):
|
def get_network(context, network, source, target, external):
|
||||||
nets = []
|
nets = []
|
||||||
n_client = clients.OpenStackClients(context).neutron()
|
n_client = clients.OpenStackClients(context).neutron()
|
||||||
ext_filter = {'router:external': True}
|
ext_filter = {'router:external': external}
|
||||||
|
|
||||||
networks = n_client.list_networks(**ext_filter)
|
networks = n_client.list_networks(**ext_filter)
|
||||||
for net in networks.get('networks'):
|
for net in networks.get('networks'):
|
||||||
if net.get('name') == network_name:
|
if net.get(source) == network:
|
||||||
nets.append(net)
|
nets.append(net)
|
||||||
|
|
||||||
if len(nets) == 0:
|
if len(nets) == 0:
|
||||||
raise exception.ExternalNetworkNotFound(network=network_name)
|
if external:
|
||||||
|
raise exception.ExternalNetworkNotFound(network=network)
|
||||||
|
else:
|
||||||
|
raise exception.FixedNetworkNotFound(network=network)
|
||||||
|
|
||||||
if len(nets) > 1:
|
if len(nets) > 1:
|
||||||
raise exception.Conflict(
|
raise exception.Conflict(
|
||||||
"Multiple networks exist with same name '%s'. Please use the "
|
"Multiple networks exist with same name '%s'. Please use the "
|
||||||
"network ID instead." % network_name
|
"network ID instead." % network
|
||||||
)
|
)
|
||||||
|
|
||||||
return nets[0]["id"]
|
return nets[0][target]
|
||||||
|
|
||||||
|
|
||||||
|
def get_external_network_id(context, network):
|
||||||
|
if uuidutils.is_uuid_like(network):
|
||||||
|
return network
|
||||||
|
else:
|
||||||
|
return get_network(context, network, source='name',
|
||||||
|
target='id', external=True)
|
||||||
|
|
||||||
|
|
||||||
|
def get_fixed_network_name(context, network):
|
||||||
|
if uuidutils.is_uuid_like(network):
|
||||||
|
return get_network(context, network, source='id',
|
||||||
|
target='name', external=False)
|
||||||
|
else:
|
||||||
|
return network
|
||||||
|
|
|
@ -34,6 +34,7 @@ HEAT_PARAMS=/etc/sysconfig/heat-params
|
||||||
USERNAME="$USERNAME"
|
USERNAME="$USERNAME"
|
||||||
PASSWORD="$PASSWORD"
|
PASSWORD="$PASSWORD"
|
||||||
CLUSTER_NETWORK="$CLUSTER_NETWORK"
|
CLUSTER_NETWORK="$CLUSTER_NETWORK"
|
||||||
|
CLUSTER_NETWORK_NAME="$CLUSTER_NETWORK_NAME"
|
||||||
CLUSTER_SUBNET="$CLUSTER_SUBNET"
|
CLUSTER_SUBNET="$CLUSTER_SUBNET"
|
||||||
TLS_DISABLED="$TLS_DISABLED"
|
TLS_DISABLED="$TLS_DISABLED"
|
||||||
KUBE_DASHBOARD_ENABLED="$KUBE_DASHBOARD_ENABLED"
|
KUBE_DASHBOARD_ENABLED="$KUBE_DASHBOARD_ENABLED"
|
||||||
|
|
|
@ -52,5 +52,5 @@ $ssh_cmd cp ${KUBE_OS_CLOUD_CONFIG} /etc/kubernetes/kube_openstack_config
|
||||||
cat > ${KUBE_OS_CLOUD_CONFIG}-occm <<EOF
|
cat > ${KUBE_OS_CLOUD_CONFIG}-occm <<EOF
|
||||||
$CLOUD_CONFIG
|
$CLOUD_CONFIG
|
||||||
[Networking]
|
[Networking]
|
||||||
internal-network-name=$CLUSTER_NETWORK
|
internal-network-name=$CLUSTER_NETWORK_NAME
|
||||||
EOF
|
EOF
|
||||||
|
|
|
@ -11,7 +11,6 @@
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from oslo_config import cfg
|
from oslo_config import cfg
|
||||||
from oslo_utils import uuidutils
|
|
||||||
|
|
||||||
from magnum.common import exception
|
from magnum.common import exception
|
||||||
from magnum.common import keystone
|
from magnum.common import keystone
|
||||||
|
@ -132,12 +131,18 @@ class K8sTemplateDefinition(template_def.BaseTemplateDefinition):
|
||||||
# field name is confused. If external_network_id is not specified in
|
# field name is confused. If external_network_id is not specified in
|
||||||
# cluster template use 'public' as the default value, which is the same
|
# cluster template use 'public' as the default value, which is the same
|
||||||
# with the heat template default value as before.
|
# with the heat template default value as before.
|
||||||
ext_net = cluster_template.external_network_id or "public"
|
external_network = cluster_template.external_network_id or "public"
|
||||||
if not uuidutils.is_uuid_like(ext_net):
|
extra_params['external_network'] = \
|
||||||
ext_net_id = neutron.get_network_id(context, ext_net)
|
neutron.get_external_network_id(context, external_network)
|
||||||
extra_params['external_network'] = ext_net_id
|
|
||||||
else:
|
# NOTE(brtknr): Convert fixed network UUID to name if the given network
|
||||||
extra_params['external_network'] = ext_net
|
# name is UUID like because OpenStack Cloud Controller Manager only
|
||||||
|
# accepts a name as an argument to internal-network-name in the
|
||||||
|
# cloud-config file provided to it. The default fixed network name is
|
||||||
|
# the same as that defined in the heat template.
|
||||||
|
fixed_network = cluster_template.fixed_network or "private"
|
||||||
|
extra_params['fixed_network_name'] = \
|
||||||
|
neutron.get_fixed_network_name(context, fixed_network)
|
||||||
|
|
||||||
label_list = ['flannel_network_cidr', 'flannel_backend',
|
label_list = ['flannel_network_cidr', 'flannel_backend',
|
||||||
'flannel_network_subnetlen',
|
'flannel_network_subnetlen',
|
||||||
|
|
|
@ -21,6 +21,11 @@ parameters:
|
||||||
description: uuid/name of an existing network to use to provision machines
|
description: uuid/name of an existing network to use to provision machines
|
||||||
default: ""
|
default: ""
|
||||||
|
|
||||||
|
fixed_network_name:
|
||||||
|
type: string
|
||||||
|
description: name of a private network to use to provision machines
|
||||||
|
default: "private"
|
||||||
|
|
||||||
fixed_subnet:
|
fixed_subnet:
|
||||||
type: string
|
type: string
|
||||||
description: uuid/name of an existing subnet to use to provision machines
|
description: uuid/name of an existing subnet to use to provision machines
|
||||||
|
@ -690,7 +695,7 @@ resources:
|
||||||
private_network_cidr: {get_param: fixed_network_cidr}
|
private_network_cidr: {get_param: fixed_network_cidr}
|
||||||
dns_nameserver: {get_param: dns_nameserver}
|
dns_nameserver: {get_param: dns_nameserver}
|
||||||
external_network: {get_param: external_network}
|
external_network: {get_param: external_network}
|
||||||
private_network_name: private
|
private_network_name: {get_param: fixed_network_name}
|
||||||
|
|
||||||
api_lb:
|
api_lb:
|
||||||
type: ../../common/templates/lb_api.yaml
|
type: ../../common/templates/lb_api.yaml
|
||||||
|
@ -893,6 +898,7 @@ resources:
|
||||||
volume_driver: {get_param: volume_driver}
|
volume_driver: {get_param: volume_driver}
|
||||||
region_name: {get_param: region_name}
|
region_name: {get_param: region_name}
|
||||||
fixed_network: {get_attr: [network, fixed_network]}
|
fixed_network: {get_attr: [network, fixed_network]}
|
||||||
|
fixed_network_name: {get_param: fixed_network_name}
|
||||||
fixed_subnet: {get_attr: [network, fixed_subnet]}
|
fixed_subnet: {get_attr: [network, fixed_subnet]}
|
||||||
api_pool_id: {get_attr: [api_lb, pool_id]}
|
api_pool_id: {get_attr: [api_lb, pool_id]}
|
||||||
etcd_pool_id: {get_attr: [etcd_lb, pool_id]}
|
etcd_pool_id: {get_attr: [etcd_lb, pool_id]}
|
||||||
|
|
|
@ -174,6 +174,10 @@ parameters:
|
||||||
type: string
|
type: string
|
||||||
description: Network from which to allocate fixed addresses.
|
description: Network from which to allocate fixed addresses.
|
||||||
|
|
||||||
|
fixed_network_name:
|
||||||
|
type: string
|
||||||
|
description: Network from which to allocate fixed addresses.
|
||||||
|
|
||||||
fixed_subnet:
|
fixed_subnet:
|
||||||
type: string
|
type: string
|
||||||
description: Subnet from which to allocate fixed addresses.
|
description: Subnet from which to allocate fixed addresses.
|
||||||
|
@ -585,6 +589,7 @@ resources:
|
||||||
"$USERNAME": {get_param: username}
|
"$USERNAME": {get_param: username}
|
||||||
"$PASSWORD": {get_param: password}
|
"$PASSWORD": {get_param: password}
|
||||||
"$CLUSTER_NETWORK": {get_param: fixed_network}
|
"$CLUSTER_NETWORK": {get_param: fixed_network}
|
||||||
|
"$CLUSTER_NETWORK_NAME": {get_param: fixed_network_name}
|
||||||
"$CLUSTER_SUBNET": {get_param: fixed_subnet}
|
"$CLUSTER_SUBNET": {get_param: fixed_subnet}
|
||||||
"$TLS_DISABLED": {get_param: tls_disabled}
|
"$TLS_DISABLED": {get_param: tls_disabled}
|
||||||
"$TRAEFIK_INGRESS_CONTROLLER_TAG": {get_param: traefik_ingress_controller_tag}
|
"$TRAEFIK_INGRESS_CONTROLLER_TAG": {get_param: traefik_ingress_controller_tag}
|
||||||
|
|
|
@ -143,7 +143,7 @@ class NeutronTest(base.TestCase):
|
||||||
)
|
)
|
||||||
|
|
||||||
@mock.patch('magnum.common.clients.OpenStackClients')
|
@mock.patch('magnum.common.clients.OpenStackClients')
|
||||||
def test_get_network_id(self, mock_clients):
|
def test_get_external_network_id(self, mock_clients):
|
||||||
fake_name = "fake_network"
|
fake_name = "fake_network"
|
||||||
fake_id = "24fe5da0-1ac0-11e9-84cd-00224d6b7bc1"
|
fake_id = "24fe5da0-1ac0-11e9-84cd-00224d6b7bc1"
|
||||||
mock_nclient = mock.MagicMock()
|
mock_nclient = mock.MagicMock()
|
||||||
|
@ -161,12 +161,12 @@ class NeutronTest(base.TestCase):
|
||||||
mock_clients.return_value = osc
|
mock_clients.return_value = osc
|
||||||
osc.neutron.return_value = mock_nclient
|
osc.neutron.return_value = mock_nclient
|
||||||
|
|
||||||
network_id = neutron.get_network_id(self.context, fake_name)
|
network_id = neutron.get_external_network_id(self.context, fake_name)
|
||||||
|
|
||||||
self.assertEqual(fake_id, network_id)
|
self.assertEqual(fake_id, network_id)
|
||||||
|
|
||||||
@mock.patch('magnum.common.clients.OpenStackClients')
|
@mock.patch('magnum.common.clients.OpenStackClients')
|
||||||
def test_get_network_id_notfound(self, mock_clients):
|
def test_get_external_network_id_notfound(self, mock_clients):
|
||||||
fake_name = "fake_network"
|
fake_name = "fake_network"
|
||||||
fake_id = "24fe5da0-1ac0-11e9-84cd-00224d6b7bc1"
|
fake_id = "24fe5da0-1ac0-11e9-84cd-00224d6b7bc1"
|
||||||
mock_nclient = mock.MagicMock()
|
mock_nclient = mock.MagicMock()
|
||||||
|
@ -186,13 +186,13 @@ class NeutronTest(base.TestCase):
|
||||||
|
|
||||||
self.assertRaises(
|
self.assertRaises(
|
||||||
exception.ExternalNetworkNotFound,
|
exception.ExternalNetworkNotFound,
|
||||||
neutron.get_network_id,
|
neutron.get_external_network_id,
|
||||||
self.context,
|
self.context,
|
||||||
"another_network"
|
"another_network"
|
||||||
)
|
)
|
||||||
|
|
||||||
@mock.patch('magnum.common.clients.OpenStackClients')
|
@mock.patch('magnum.common.clients.OpenStackClients')
|
||||||
def test_get_network_id_conflict(self, mock_clients):
|
def test_get_external_network_id_conflict(self, mock_clients):
|
||||||
fake_name = "fake_network"
|
fake_name = "fake_network"
|
||||||
fake_id_1 = "24fe5da0-1ac0-11e9-84cd-00224d6b7bc1"
|
fake_id_1 = "24fe5da0-1ac0-11e9-84cd-00224d6b7bc1"
|
||||||
fake_id_2 = "93781f82-1ac0-11e9-84cd-00224d6b7bc1"
|
fake_id_2 = "93781f82-1ac0-11e9-84cd-00224d6b7bc1"
|
||||||
|
@ -218,7 +218,57 @@ class NeutronTest(base.TestCase):
|
||||||
|
|
||||||
self.assertRaises(
|
self.assertRaises(
|
||||||
exception.Conflict,
|
exception.Conflict,
|
||||||
neutron.get_network_id,
|
neutron.get_external_network_id,
|
||||||
self.context,
|
self.context,
|
||||||
fake_name
|
fake_name
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@mock.patch('magnum.common.clients.OpenStackClients')
|
||||||
|
def test_get_fixed_network_name(self, mock_clients):
|
||||||
|
fake_name = "fake_network"
|
||||||
|
fake_id = "24fe5da0-1ac0-11e9-84cd-00224d6b7bc1"
|
||||||
|
mock_nclient = mock.MagicMock()
|
||||||
|
mock_nclient.list_networks.return_value = {
|
||||||
|
'networks': [
|
||||||
|
{
|
||||||
|
'id': fake_id,
|
||||||
|
'name': fake_name,
|
||||||
|
'router:external': False
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
osc = mock.MagicMock()
|
||||||
|
mock_clients.return_value = osc
|
||||||
|
osc.neutron.return_value = mock_nclient
|
||||||
|
|
||||||
|
network_name = neutron.get_fixed_network_name(self.context, fake_id)
|
||||||
|
|
||||||
|
self.assertEqual(fake_name, network_name)
|
||||||
|
|
||||||
|
@mock.patch('magnum.common.clients.OpenStackClients')
|
||||||
|
def test_get_fixed_network_name_notfound(self, mock_clients):
|
||||||
|
fake_name = "fake_network"
|
||||||
|
fake_id = "24fe5da0-1ac0-11e9-84cd-00224d6b7bc1"
|
||||||
|
another_fake_id = "34fe5da0-1ac0-11e9-84cd-00224d6b7bc1"
|
||||||
|
mock_nclient = mock.MagicMock()
|
||||||
|
mock_nclient.list_networks.return_value = {
|
||||||
|
'networks': [
|
||||||
|
{
|
||||||
|
'id': fake_id,
|
||||||
|
'name': fake_name,
|
||||||
|
'router:external': False
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
osc = mock.MagicMock()
|
||||||
|
mock_clients.return_value = osc
|
||||||
|
osc.neutron.return_value = mock_nclient
|
||||||
|
|
||||||
|
self.assertRaises(
|
||||||
|
exception.FixedNetworkNotFound,
|
||||||
|
neutron.get_fixed_network_name,
|
||||||
|
self.context,
|
||||||
|
another_fake_id
|
||||||
|
)
|
||||||
|
|
|
@ -286,6 +286,7 @@ class TestClusterConductorWithK8s(base.TestCase):
|
||||||
'ssh_key_name': 'keypair_id',
|
'ssh_key_name': 'keypair_id',
|
||||||
'external_network': 'e2a6c8b0-a3c2-42a3-b3f4-01400a30896e',
|
'external_network': 'e2a6c8b0-a3c2-42a3-b3f4-01400a30896e',
|
||||||
'fixed_network': 'fixed_network',
|
'fixed_network': 'fixed_network',
|
||||||
|
'fixed_network_name': 'fixed_network',
|
||||||
'fixed_subnet': 'fixed_subnet',
|
'fixed_subnet': 'fixed_subnet',
|
||||||
'network_driver': 'network_driver',
|
'network_driver': 'network_driver',
|
||||||
'volume_driver': 'volume_driver',
|
'volume_driver': 'volume_driver',
|
||||||
|
@ -430,6 +431,7 @@ class TestClusterConductorWithK8s(base.TestCase):
|
||||||
'etcd_volume_size': None,
|
'etcd_volume_size': None,
|
||||||
'external_network': 'e2a6c8b0-a3c2-42a3-b3f4-01400a30896e',
|
'external_network': 'e2a6c8b0-a3c2-42a3-b3f4-01400a30896e',
|
||||||
'fixed_network': 'fixed_network',
|
'fixed_network': 'fixed_network',
|
||||||
|
'fixed_network_name': 'fixed_network',
|
||||||
'fixed_subnet': 'fixed_subnet',
|
'fixed_subnet': 'fixed_subnet',
|
||||||
'flannel_backend': 'vxlan',
|
'flannel_backend': 'vxlan',
|
||||||
'flannel_network_cidr': '10.101.0.0/16',
|
'flannel_network_cidr': '10.101.0.0/16',
|
||||||
|
@ -518,7 +520,7 @@ class TestClusterConductorWithK8s(base.TestCase):
|
||||||
mock_get):
|
mock_get):
|
||||||
|
|
||||||
not_required = ['image_id', 'flavor_id', 'dns_nameserver',
|
not_required = ['image_id', 'flavor_id', 'dns_nameserver',
|
||||||
'docker_volume_size', 'fixed_network', 'http_proxy',
|
'docker_volume_size', 'http_proxy',
|
||||||
'https_proxy', 'no_proxy', 'network_driver',
|
'https_proxy', 'no_proxy', 'network_driver',
|
||||||
'master_flavor_id', 'docker_storage_driver',
|
'master_flavor_id', 'docker_storage_driver',
|
||||||
'volume_driver', 'fixed_subnet']
|
'volume_driver', 'fixed_subnet']
|
||||||
|
@ -558,6 +560,7 @@ class TestClusterConductorWithK8s(base.TestCase):
|
||||||
'master_flavor': 'master_flavor_id',
|
'master_flavor': 'master_flavor_id',
|
||||||
'minion_flavor': 'flavor_id',
|
'minion_flavor': 'flavor_id',
|
||||||
'fixed_network': 'fixed_network',
|
'fixed_network': 'fixed_network',
|
||||||
|
'fixed_network_name': 'fixed_network',
|
||||||
'fixed_subnet': 'fixed_subnet',
|
'fixed_subnet': 'fixed_subnet',
|
||||||
'external_network': 'e2a6c8b0-a3c2-42a3-b3f4-01400a30896e',
|
'external_network': 'e2a6c8b0-a3c2-42a3-b3f4-01400a30896e',
|
||||||
'flannel_backend': 'vxlan',
|
'flannel_backend': 'vxlan',
|
||||||
|
@ -657,6 +660,7 @@ class TestClusterConductorWithK8s(base.TestCase):
|
||||||
'ssh_key_name': 'keypair_id',
|
'ssh_key_name': 'keypair_id',
|
||||||
'external_network': 'e2a6c8b0-a3c2-42a3-b3f4-01400a30896e',
|
'external_network': 'e2a6c8b0-a3c2-42a3-b3f4-01400a30896e',
|
||||||
'fixed_network': 'fixed_network',
|
'fixed_network': 'fixed_network',
|
||||||
|
'fixed_network_name': 'fixed_network',
|
||||||
'fixed_subnet': 'fixed_subnet',
|
'fixed_subnet': 'fixed_subnet',
|
||||||
'availability_zone': 'az_1',
|
'availability_zone': 'az_1',
|
||||||
'nodes_affinity_policy': 'soft-anti-affinity',
|
'nodes_affinity_policy': 'soft-anti-affinity',
|
||||||
|
@ -761,6 +765,7 @@ class TestClusterConductorWithK8s(base.TestCase):
|
||||||
'availability_zone': 'az_1',
|
'availability_zone': 'az_1',
|
||||||
'external_network': 'e2a6c8b0-a3c2-42a3-b3f4-01400a30896e',
|
'external_network': 'e2a6c8b0-a3c2-42a3-b3f4-01400a30896e',
|
||||||
'fixed_network': 'fixed_network',
|
'fixed_network': 'fixed_network',
|
||||||
|
'fixed_network_name': 'fixed_network',
|
||||||
'fixed_subnet': 'fixed_subnet',
|
'fixed_subnet': 'fixed_subnet',
|
||||||
'dns_nameserver': 'dns_nameserver',
|
'dns_nameserver': 'dns_nameserver',
|
||||||
'docker_storage_driver': u'devicemapper',
|
'docker_storage_driver': u'devicemapper',
|
||||||
|
@ -976,6 +981,7 @@ class TestClusterConductorWithK8s(base.TestCase):
|
||||||
'ssh_key_name': 'keypair_id',
|
'ssh_key_name': 'keypair_id',
|
||||||
'external_network': 'e2a6c8b0-a3c2-42a3-b3f4-01400a30896e',
|
'external_network': 'e2a6c8b0-a3c2-42a3-b3f4-01400a30896e',
|
||||||
'fixed_network': 'fixed_network',
|
'fixed_network': 'fixed_network',
|
||||||
|
'fixed_network_name': 'fixed_network',
|
||||||
'fixed_subnet': 'fixed_subnet',
|
'fixed_subnet': 'fixed_subnet',
|
||||||
'dns_nameserver': 'dns_nameserver',
|
'dns_nameserver': 'dns_nameserver',
|
||||||
'server_image': 'image_id',
|
'server_image': 'image_id',
|
||||||
|
|
|
@ -388,6 +388,7 @@ class AtomicK8sTemplateDefinitionTestCase(BaseK8sTemplateDefinitionTestCase):
|
||||||
expected_scale_params = {'minions_to_remove': ['node1', 'node2']}
|
expected_scale_params = {'minions_to_remove': ['node1', 'node2']}
|
||||||
self.assertEqual(scale_params, expected_scale_params)
|
self.assertEqual(scale_params, expected_scale_params)
|
||||||
|
|
||||||
|
@mock.patch('magnum.common.neutron.get_fixed_network_name')
|
||||||
@mock.patch('magnum.common.keystone.is_octavia_enabled')
|
@mock.patch('magnum.common.keystone.is_octavia_enabled')
|
||||||
@mock.patch('magnum.common.clients.OpenStackClients')
|
@mock.patch('magnum.common.clients.OpenStackClients')
|
||||||
@mock.patch('magnum.drivers.k8s_fedora_atomic_v1.template_def'
|
@mock.patch('magnum.drivers.k8s_fedora_atomic_v1.template_def'
|
||||||
|
@ -403,7 +404,8 @@ class AtomicK8sTemplateDefinitionTestCase(BaseK8sTemplateDefinitionTestCase):
|
||||||
mock_sign_node_certificate,
|
mock_sign_node_certificate,
|
||||||
mock_get_output, mock_get_params,
|
mock_get_output, mock_get_params,
|
||||||
mock_get_discovery_url, mock_osc_class,
|
mock_get_discovery_url, mock_osc_class,
|
||||||
mock_enable_octavia):
|
mock_enable_octavia,
|
||||||
|
mock_get_fixed_network_name):
|
||||||
mock_generate_csr_and_key.return_value = {'csr': 'csr',
|
mock_generate_csr_and_key.return_value = {'csr': 'csr',
|
||||||
'private_key': 'private_key',
|
'private_key': 'private_key',
|
||||||
'public_key': 'public_key'}
|
'public_key': 'public_key'}
|
||||||
|
@ -417,6 +419,10 @@ class AtomicK8sTemplateDefinitionTestCase(BaseK8sTemplateDefinitionTestCase):
|
||||||
mock_cluster_template.network_driver = 'flannel'
|
mock_cluster_template.network_driver = 'flannel'
|
||||||
external_network_id = '17e4e301-b7f3-4996-b3dd-97b3a700174b'
|
external_network_id = '17e4e301-b7f3-4996-b3dd-97b3a700174b'
|
||||||
mock_cluster_template.external_network_id = external_network_id
|
mock_cluster_template.external_network_id = external_network_id
|
||||||
|
fixed_network_name = 'fixed_network'
|
||||||
|
mock_get_fixed_network_name.return_value = fixed_network_name
|
||||||
|
fixed_network = '5d12f6fd-a196-4bf0-ae4c-1f639a523a52'
|
||||||
|
mock_cluster_template.fixed_network = fixed_network
|
||||||
mock_cluster = mock.MagicMock()
|
mock_cluster = mock.MagicMock()
|
||||||
mock_cluster.uuid = '5d12f6fd-a196-4bf0-ae4c-1f639a523a52'
|
mock_cluster.uuid = '5d12f6fd-a196-4bf0-ae4c-1f639a523a52'
|
||||||
del mock_cluster.stack_id
|
del mock_cluster.stack_id
|
||||||
|
@ -572,6 +578,7 @@ class AtomicK8sTemplateDefinitionTestCase(BaseK8sTemplateDefinitionTestCase):
|
||||||
'kube_tag': kube_tag,
|
'kube_tag': kube_tag,
|
||||||
'etcd_tag': etcd_tag,
|
'etcd_tag': etcd_tag,
|
||||||
'coredns_tag': coredns_tag,
|
'coredns_tag': coredns_tag,
|
||||||
|
'fixed_network_name': fixed_network_name,
|
||||||
'flannel_tag': flannel_tag,
|
'flannel_tag': flannel_tag,
|
||||||
'flannel_cni_tag': flannel_cni_tag,
|
'flannel_cni_tag': flannel_cni_tag,
|
||||||
'container_infra_prefix': container_infra_prefix,
|
'container_infra_prefix': container_infra_prefix,
|
||||||
|
@ -636,8 +643,17 @@ class AtomicK8sTemplateDefinitionTestCase(BaseK8sTemplateDefinitionTestCase):
|
||||||
mock_cluster_template,
|
mock_cluster_template,
|
||||||
mock_cluster,
|
mock_cluster,
|
||||||
)
|
)
|
||||||
|
actual_params = mock_get_params.call_args[1]["extra_params"]
|
||||||
|
self.assertEqual(
|
||||||
|
fixed_network_name,
|
||||||
|
actual_params.get("fixed_network_name")
|
||||||
|
)
|
||||||
|
mock_get_fixed_network_name.assert_called_once_with(
|
||||||
|
mock_context,
|
||||||
|
mock_cluster_template.fixed_network
|
||||||
|
)
|
||||||
|
|
||||||
@mock.patch('magnum.common.neutron.get_network_id')
|
@mock.patch('magnum.common.neutron.get_external_network_id')
|
||||||
@mock.patch('magnum.common.keystone.is_octavia_enabled')
|
@mock.patch('magnum.common.keystone.is_octavia_enabled')
|
||||||
@mock.patch('magnum.common.clients.OpenStackClients')
|
@mock.patch('magnum.common.clients.OpenStackClients')
|
||||||
@mock.patch('magnum.drivers.k8s_fedora_atomic_v1.template_def'
|
@mock.patch('magnum.drivers.k8s_fedora_atomic_v1.template_def'
|
||||||
|
@ -654,14 +670,14 @@ class AtomicK8sTemplateDefinitionTestCase(BaseK8sTemplateDefinitionTestCase):
|
||||||
mock_get_discovery_url,
|
mock_get_discovery_url,
|
||||||
mock_osc_class,
|
mock_osc_class,
|
||||||
mock_enable_octavia,
|
mock_enable_octavia,
|
||||||
mock_network_id):
|
mock_get_external_network_id):
|
||||||
mock_generate_csr_and_key.return_value = {'csr': 'csr',
|
mock_generate_csr_and_key.return_value = {'csr': 'csr',
|
||||||
'private_key': 'private_key',
|
'private_key': 'private_key',
|
||||||
'public_key': 'public_key'}
|
'public_key': 'public_key'}
|
||||||
mock_enable_octavia.return_value = False
|
mock_enable_octavia.return_value = False
|
||||||
mock_get_discovery_url.return_value = 'fake_discovery_url'
|
mock_get_discovery_url.return_value = 'fake_discovery_url'
|
||||||
external_network_id = 'e2a6c8b0-a3c2-42a3-b3f4-01400a30896e'
|
external_network_id = 'e2a6c8b0-a3c2-42a3-b3f4-01400a30896e'
|
||||||
mock_network_id.return_value = external_network_id
|
mock_get_external_network_id.return_value = external_network_id
|
||||||
|
|
||||||
mock_context = mock.MagicMock()
|
mock_context = mock.MagicMock()
|
||||||
mock_context.auth_token = 'AUTH_TOKEN'
|
mock_context.auth_token = 'AUTH_TOKEN'
|
||||||
|
@ -672,7 +688,7 @@ class AtomicK8sTemplateDefinitionTestCase(BaseK8sTemplateDefinitionTestCase):
|
||||||
mock_cluster_template.tls_disabled = False
|
mock_cluster_template.tls_disabled = False
|
||||||
mock_cluster_template.registry_enabled = False
|
mock_cluster_template.registry_enabled = False
|
||||||
mock_cluster_template.network_driver = 'calico'
|
mock_cluster_template.network_driver = 'calico'
|
||||||
mock_cluster_template.external_network_id = "public"
|
mock_cluster_template.external_network_id = 'public'
|
||||||
|
|
||||||
mock_cluster = mock.MagicMock()
|
mock_cluster = mock.MagicMock()
|
||||||
mock_cluster.labels = {}
|
mock_cluster.labels = {}
|
||||||
|
@ -692,7 +708,7 @@ class AtomicK8sTemplateDefinitionTestCase(BaseK8sTemplateDefinitionTestCase):
|
||||||
external_network_id,
|
external_network_id,
|
||||||
actual_params.get("external_network")
|
actual_params.get("external_network")
|
||||||
)
|
)
|
||||||
mock_network_id.assert_called_once_with(
|
mock_get_external_network_id.assert_called_once_with(
|
||||||
mock_context,
|
mock_context,
|
||||||
mock_cluster_template.external_network_id
|
mock_cluster_template.external_network_id
|
||||||
)
|
)
|
||||||
|
@ -833,6 +849,8 @@ class AtomicK8sTemplateDefinitionTestCase(BaseK8sTemplateDefinitionTestCase):
|
||||||
mock_cluster_template.network_driver = 'calico'
|
mock_cluster_template.network_driver = 'calico'
|
||||||
external_network_id = '17e4e301-b7f3-4996-b3dd-97b3a700174b'
|
external_network_id = '17e4e301-b7f3-4996-b3dd-97b3a700174b'
|
||||||
mock_cluster_template.external_network_id = external_network_id
|
mock_cluster_template.external_network_id = external_network_id
|
||||||
|
fixed_network_name = 'fixed_network'
|
||||||
|
mock_cluster_template.fixed_network = fixed_network_name
|
||||||
mock_cluster = mock.MagicMock()
|
mock_cluster = mock.MagicMock()
|
||||||
mock_cluster.uuid = '5d12f6fd-a196-4bf0-ae4c-1f639a523a52'
|
mock_cluster.uuid = '5d12f6fd-a196-4bf0-ae4c-1f639a523a52'
|
||||||
del mock_cluster.stack_id
|
del mock_cluster.stack_id
|
||||||
|
@ -967,6 +985,7 @@ class AtomicK8sTemplateDefinitionTestCase(BaseK8sTemplateDefinitionTestCase):
|
||||||
'flannel_backend': flannel_backend,
|
'flannel_backend': flannel_backend,
|
||||||
'system_pods_initial_delay': system_pods_initial_delay,
|
'system_pods_initial_delay': system_pods_initial_delay,
|
||||||
'system_pods_timeout': system_pods_timeout,
|
'system_pods_timeout': system_pods_timeout,
|
||||||
|
'fixed_network_name': fixed_network_name,
|
||||||
'admission_control_list': admission_control_list,
|
'admission_control_list': admission_control_list,
|
||||||
'prometheus_monitoring': prometheus_monitoring,
|
'prometheus_monitoring': prometheus_monitoring,
|
||||||
'grafana_admin_passwd': grafana_admin_passwd,
|
'grafana_admin_passwd': grafana_admin_passwd,
|
||||||
|
|
Loading…
Reference in New Issue