diff --git a/magnum/api/attr_validator.py b/magnum/api/attr_validator.py index a9986ee776..9bf400dc4d 100644 --- a/magnum/api/attr_validator.py +++ b/magnum/api/attr_validator.py @@ -63,8 +63,12 @@ def validate_flavor(cli, flavor): def validate_keypair(cli, keypair): - """Validate keypair""" + """Validate keypair + validate the keypair, if provided. + """ + if keypair is None: + return try: cli.nova().keypairs.get(keypair) except nova_exception.NotFound: diff --git a/magnum/drivers/heat/template_def.py b/magnum/drivers/heat/template_def.py index 88d9d56ee9..e7fb24c6b9 100755 --- a/magnum/drivers/heat/template_def.py +++ b/magnum/drivers/heat/template_def.py @@ -210,8 +210,7 @@ class BaseTemplateDefinition(TemplateDefinition): self._osc = None self.add_parameter('ssh_key_name', - cluster_attr='keypair', - required=True) + cluster_attr='keypair') self.add_parameter('server_image', cluster_template_attr='image_id') self.add_parameter('dns_nameserver', diff --git a/magnum/drivers/k8s_coreos_v1/templates/kubecluster.yaml b/magnum/drivers/k8s_coreos_v1/templates/kubecluster.yaml index 55aa20e621..d23cff62e3 100644 --- a/magnum/drivers/k8s_coreos_v1/templates/kubecluster.yaml +++ b/magnum/drivers/k8s_coreos_v1/templates/kubecluster.yaml @@ -10,10 +10,11 @@ parameters: octavia_enabled: type: string default: true - + ssh_key_name: type: string description: name of ssh key to be provisioned on our server + default: "" external_network: type: string @@ -337,7 +338,7 @@ parameters: kube_version: type: string description: version of kubernetes used for kubernetes cluster - default: v1.10.3_coreos.0 + default: v1.10.3_coreos.0 kube_dashboard_version: type: string diff --git a/magnum/drivers/k8s_fedora_atomic_v1/templates/kubecluster.yaml b/magnum/drivers/k8s_fedora_atomic_v1/templates/kubecluster.yaml index 0bf908ab58..f4965dc115 100644 --- a/magnum/drivers/k8s_fedora_atomic_v1/templates/kubecluster.yaml +++ b/magnum/drivers/k8s_fedora_atomic_v1/templates/kubecluster.yaml @@ -10,6 +10,7 @@ parameters: ssh_key_name: type: string description: name of ssh key to be provisioned on our server + default: "" external_network: type: string diff --git a/magnum/drivers/k8s_fedora_ironic_v1/templates/kubecluster.yaml b/magnum/drivers/k8s_fedora_ironic_v1/templates/kubecluster.yaml index 2ee01c9bf4..25ce9e38c1 100644 --- a/magnum/drivers/k8s_fedora_ironic_v1/templates/kubecluster.yaml +++ b/magnum/drivers/k8s_fedora_ironic_v1/templates/kubecluster.yaml @@ -10,7 +10,8 @@ parameters: ssh_key_name: type: string description: name of ssh key to be provisioned on our server - + default: "" + external_network: type: string description: uuid/name of a network to use for floating ip addresses diff --git a/magnum/drivers/mesos_ubuntu_v1/templates/mesoscluster.yaml b/magnum/drivers/mesos_ubuntu_v1/templates/mesoscluster.yaml index e840ff1b4d..845509b015 100644 --- a/magnum/drivers/mesos_ubuntu_v1/templates/mesoscluster.yaml +++ b/magnum/drivers/mesos_ubuntu_v1/templates/mesoscluster.yaml @@ -11,7 +11,8 @@ parameters: ssh_key_name: type: string description: name of ssh key to be provisioned on our server - + default: "" + external_network: type: string description: uuid/name of a network to use for floating ip addresses diff --git a/magnum/drivers/swarm_fedora_atomic_v1/templates/cluster.yaml b/magnum/drivers/swarm_fedora_atomic_v1/templates/cluster.yaml index c95c615593..4108512685 100644 --- a/magnum/drivers/swarm_fedora_atomic_v1/templates/cluster.yaml +++ b/magnum/drivers/swarm_fedora_atomic_v1/templates/cluster.yaml @@ -16,7 +16,8 @@ parameters: ssh_key_name: type: string description: name of ssh key to be provisioned on our server - + default: "" + external_network: type: string description: uuid/name of a network to use for floating ip addresses diff --git a/magnum/drivers/swarm_fedora_atomic_v2/templates/swarmcluster.yaml b/magnum/drivers/swarm_fedora_atomic_v2/templates/swarmcluster.yaml index b58baf4558..301a405e70 100644 --- a/magnum/drivers/swarm_fedora_atomic_v2/templates/swarmcluster.yaml +++ b/magnum/drivers/swarm_fedora_atomic_v2/templates/swarmcluster.yaml @@ -16,6 +16,7 @@ parameters: ssh_key_name: type: string description: name of ssh key to be provisioned on our server + default: "" external_network: type: string diff --git a/magnum/tests/unit/api/test_attr_validator.py b/magnum/tests/unit/api/test_attr_validator.py index 9b62a6d3c1..02c0be741f 100644 --- a/magnum/tests/unit/api/test_attr_validator.py +++ b/magnum/tests/unit/api/test_attr_validator.py @@ -94,6 +94,15 @@ class TestAttrValidator(base.BaseTestCase): attr_validator.validate_external_network, mock_os_cli, 'test_ext_net') + def test_validate_keypair_with_no_keypair(self): + mock_keypair = mock.MagicMock() + mock_keypair.id = None + mock_nova = mock.MagicMock() + mock_nova.keypairs.get.return_value = mock_keypair + mock_os_cli = mock.MagicMock() + mock_os_cli.nova.return_value = mock_nova + attr_validator.validate_keypair(mock_os_cli, None) + def test_validate_keypair_with_valid_keypair(self): mock_keypair = mock.MagicMock() mock_keypair.id = 'test-keypair' diff --git a/releasenotes/notes/make-keypair-optional-fcf4a17e440d0879.yaml b/releasenotes/notes/make-keypair-optional-fcf4a17e440d0879.yaml new file mode 100644 index 0000000000..8c7b9a1974 --- /dev/null +++ b/releasenotes/notes/make-keypair-optional-fcf4a17e440d0879.yaml @@ -0,0 +1,6 @@ +--- +features: + - | + This makes the keypair optional. The user should not have to include + the keypair because they may use some other method of security such + as using SSSD, preconfigured on the image. \ No newline at end of file