diff --git a/magnum/common/exception.py b/magnum/common/exception.py index f1e34fad0d..7c5e4ff749 100755 --- a/magnum/common/exception.py +++ b/magnum/common/exception.py @@ -337,6 +337,13 @@ class FlavorNotFound(ResourceNotFound): 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): """The code here changed to 400 according to the latest document.""" """"Ensure the network is not private.""" diff --git a/magnum/common/neutron.py b/magnum/common/neutron.py index 1034b303f8..242ea35401 100644 --- a/magnum/common/neutron.py +++ b/magnum/common/neutron.py @@ -14,6 +14,7 @@ import re from oslo_log import log as logging +from oslo_utils import uuidutils from magnum.common import clients from magnum.common import exception @@ -54,23 +55,42 @@ def delete_floatingip(context, fix_port_id, cluster): msg=str(e)) -def get_network_id(context, network_name): +def get_network(context, network, source, target, external): nets = [] n_client = clients.OpenStackClients(context).neutron() - ext_filter = {'router:external': True} + ext_filter = {'router:external': external} networks = n_client.list_networks(**ext_filter) for net in networks.get('networks'): - if net.get('name') == network_name: + if net.get(source) == network: nets.append(net) 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: raise exception.Conflict( "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 diff --git a/magnum/drivers/common/templates/kubernetes/fragments/write-heat-params-master.sh b/magnum/drivers/common/templates/kubernetes/fragments/write-heat-params-master.sh index 7bdcd3b220..8bb28c0569 100644 --- a/magnum/drivers/common/templates/kubernetes/fragments/write-heat-params-master.sh +++ b/magnum/drivers/common/templates/kubernetes/fragments/write-heat-params-master.sh @@ -34,6 +34,7 @@ HEAT_PARAMS=/etc/sysconfig/heat-params USERNAME="$USERNAME" PASSWORD="$PASSWORD" CLUSTER_NETWORK="$CLUSTER_NETWORK" + CLUSTER_NETWORK_NAME="$CLUSTER_NETWORK_NAME" CLUSTER_SUBNET="$CLUSTER_SUBNET" TLS_DISABLED="$TLS_DISABLED" KUBE_DASHBOARD_ENABLED="$KUBE_DASHBOARD_ENABLED" diff --git a/magnum/drivers/common/templates/kubernetes/fragments/write-kube-os-config.sh b/magnum/drivers/common/templates/kubernetes/fragments/write-kube-os-config.sh index 24288f8710..7f279d4fd7 100644 --- a/magnum/drivers/common/templates/kubernetes/fragments/write-kube-os-config.sh +++ b/magnum/drivers/common/templates/kubernetes/fragments/write-kube-os-config.sh @@ -52,5 +52,5 @@ $ssh_cmd cp ${KUBE_OS_CLOUD_CONFIG} /etc/kubernetes/kube_openstack_config cat > ${KUBE_OS_CLOUD_CONFIG}-occm <