diff --git a/magnum/drivers/heat/k8s_fedora_template_def.py b/magnum/drivers/heat/k8s_fedora_template_def.py index 385ad6139b..8b95d8c11a 100644 --- a/magnum/drivers/heat/k8s_fedora_template_def.py +++ b/magnum/drivers/heat/k8s_fedora_template_def.py @@ -73,6 +73,12 @@ class K8sFedoraTemplateDefinition(k8s_template_def.K8sTemplateDefinition): osc = self.get_osc(context) extra_params['region_name'] = osc.cinder_region_name() + # set docker_volume_type + # use the configuration default if None provided + docker_volume_type = cluster_template.labels.get( + 'docker_volume_type', CONF.cinder.default_docker_volume_type) + extra_params['docker_volume_type'] = docker_volume_type + return super(K8sFedoraTemplateDefinition, self).get_params(context, cluster_template, cluster, extra_params=extra_params, diff --git a/magnum/drivers/k8s_fedora_atomic_v1/templates/kubecluster.yaml b/magnum/drivers/k8s_fedora_atomic_v1/templates/kubecluster.yaml index e212ee4722..8d942291b0 100644 --- a/magnum/drivers/k8s_fedora_atomic_v1/templates/kubecluster.yaml +++ b/magnum/drivers/k8s_fedora_atomic_v1/templates/kubecluster.yaml @@ -137,6 +137,12 @@ parameters: storage default: 0 + docker_volume_type: + type: string + description: > + type of a cinder volume to allocate to docker for container/image + storage + docker_storage_driver: type: string description: docker storage driver name @@ -462,6 +468,7 @@ resources: external_network: {get_param: external_network} kube_allow_priv: {get_param: kube_allow_priv} docker_volume_size: {get_param: docker_volume_size} + docker_volume_type: {get_param: docker_volume_type} docker_storage_driver: {get_param: docker_storage_driver} wait_condition_timeout: {get_param: wait_condition_timeout} network_driver: {get_param: network_driver} @@ -530,6 +537,7 @@ resources: external_network: {get_param: external_network} kube_allow_priv: {get_param: kube_allow_priv} docker_volume_size: {get_param: docker_volume_size} + docker_volume_type: {get_param: docker_volume_type} docker_storage_driver: {get_param: docker_storage_driver} wait_condition_timeout: {get_param: wait_condition_timeout} registry_enabled: {get_param: registry_enabled} diff --git a/magnum/drivers/k8s_fedora_atomic_v1/templates/kubemaster.yaml b/magnum/drivers/k8s_fedora_atomic_v1/templates/kubemaster.yaml index 0f2af88731..57783c4ef1 100644 --- a/magnum/drivers/k8s_fedora_atomic_v1/templates/kubemaster.yaml +++ b/magnum/drivers/k8s_fedora_atomic_v1/templates/kubemaster.yaml @@ -41,6 +41,12 @@ parameters: size of a cinder volume to allocate to docker for container/image storage + docker_volume_type: + type: string + description: > + type of a cinder volume to allocate to docker for container/image + storage + docker_storage_driver: type: string description: docker storage driver name @@ -549,6 +555,7 @@ resources: type: Magnum::Optional::Cinder::Volume properties: size: {get_param: docker_volume_size} + volume_type: {get_param: docker_volume_type} docker_volume_attach: type: Magnum::Optional::Cinder::VolumeAttachment diff --git a/magnum/drivers/k8s_fedora_atomic_v1/templates/kubeminion.yaml b/magnum/drivers/k8s_fedora_atomic_v1/templates/kubeminion.yaml index fbb543e32a..6093b4da5f 100644 --- a/magnum/drivers/k8s_fedora_atomic_v1/templates/kubeminion.yaml +++ b/magnum/drivers/k8s_fedora_atomic_v1/templates/kubeminion.yaml @@ -36,6 +36,12 @@ parameters: size of a cinder volume to allocate to docker for container/image storage + docker_volume_type: + type: string + description: > + type of a cinder volume to allocate to docker for container/image + storage + docker_storage_driver: type: string description: docker storage driver name @@ -434,6 +440,7 @@ resources: type: Magnum::Optional::Cinder::Volume properties: size: {get_param: docker_volume_size} + volume_type: {get_param: docker_volume_type} docker_volume_attach: type: Magnum::Optional::Cinder::VolumeAttachment diff --git a/magnum/drivers/k8s_fedora_ironic_v1/templates/kubecluster.yaml b/magnum/drivers/k8s_fedora_ironic_v1/templates/kubecluster.yaml index 943e529890..14a7015fb9 100644 --- a/magnum/drivers/k8s_fedora_ironic_v1/templates/kubecluster.yaml +++ b/magnum/drivers/k8s_fedora_ironic_v1/templates/kubecluster.yaml @@ -135,6 +135,12 @@ parameters: storage default: 0 + docker_volume_type: + type: string + description: > + type of a cinder volume to allocate to docker for container/image + storage + docker_storage_driver: type: string description: docker storage driver name diff --git a/magnum/tests/unit/conductor/handlers/test_k8s_cluster_conductor.py b/magnum/tests/unit/conductor/handlers/test_k8s_cluster_conductor.py index 653e607cf7..ee569361a8 100644 --- a/magnum/tests/unit/conductor/handlers/test_k8s_cluster_conductor.py +++ b/magnum/tests/unit/conductor/handlers/test_k8s_cluster_conductor.py @@ -54,7 +54,8 @@ class TestClusterConductorWithK8s(base.TestCase): 'admission_control_list': 'fake_list', 'prometheus_monitoring': 'False', 'grafana_admin_passwd': 'fake_pwd', - 'kube_dashboard_enabled': 'True'}, + 'kube_dashboard_enabled': 'True', + 'docker_volume_type': 'lvmdriver-1'}, 'tls_disabled': False, 'server_type': 'vm', 'registry_enabled': False, @@ -155,7 +156,8 @@ class TestClusterConductorWithK8s(base.TestCase): 'admission_control_list': 'fake_list', 'prometheus_monitoring': 'False', 'grafana_admin_passwd': 'fake_pwd', - 'kube_dashboard_enabled': 'True'}, + 'kube_dashboard_enabled': 'True', + 'docker_volume_type': 'lvmdriver-1'}, 'http_proxy': 'http_proxy', 'https_proxy': 'https_proxy', 'no_proxy': 'no_proxy', @@ -178,6 +180,7 @@ class TestClusterConductorWithK8s(base.TestCase): 'number_of_minions': 1, 'number_of_masters': 1, 'docker_volume_size': 20, + 'docker_volume_type': 'lvmdriver-1', 'docker_storage_driver': 'devicemapper', 'discovery_url': 'https://discovery.etcd.io/test', 'flannel_network_cidr': '10.101.0.0/16', @@ -261,6 +264,7 @@ class TestClusterConductorWithK8s(base.TestCase): 'dns_nameserver': 'dns_nameserver', 'docker_storage_driver': 'devicemapper', 'docker_volume_size': 20, + 'docker_volume_type': 'lvmdriver-1', 'external_network': 'external_network_id', 'fixed_network': 'fixed_network', 'fixed_subnet': 'fixed_subnet', @@ -359,6 +363,7 @@ class TestClusterConductorWithK8s(base.TestCase): 'prometheus_monitoring': 'False', 'grafana_admin_passwd': 'fake_pwd', 'kube_dashboard_enabled': 'True', + 'docker_volume_type': 'lvmdriver-1', 'insecure_registry_url': '10.0.0.1:5000', 'kube_version': 'fake-version', 'magnum_url': 'http://127.0.0.1:9511/v1', @@ -689,6 +694,7 @@ class TestClusterConductorWithK8s(base.TestCase): 'network_driver': 'network_driver', 'volume_driver': 'volume_driver', 'docker_volume_size': 20, + 'docker_volume_type': 'lvmdriver-1', 'docker_storage_driver': 'devicemapper', 'discovery_url': 'https://address/token', 'http_proxy': 'http_proxy', diff --git a/magnum/tests/unit/drivers/test_template_definition.py b/magnum/tests/unit/drivers/test_template_definition.py index 8685939717..dd71f10546 100644 --- a/magnum/tests/unit/drivers/test_template_definition.py +++ b/magnum/tests/unit/drivers/test_template_definition.py @@ -266,6 +266,8 @@ class AtomicK8sTemplateDefinitionTestCase(BaseTemplateDefinitionTestCase): 'grafana_admin_passwd') kube_dashboard_enabled = mock_cluster_template.labels.get( 'kube_dashboard_enabled') + docker_volume_type = mock_cluster_template.labels.get( + 'docker_volume_type') k8s_def = k8sa_tdef.AtomicK8sTemplateDefinition() @@ -284,6 +286,7 @@ class AtomicK8sTemplateDefinitionTestCase(BaseTemplateDefinitionTestCase): 'prometheus_monitoring': prometheus_monitoring, 'grafana_admin_passwd': grafana_admin_passwd, 'kube_dashboard_enabled': kube_dashboard_enabled, + 'docker_volume_type': docker_volume_type, 'username': 'fake_user', 'tenant_name': 'fake_tenant', 'magnum_url': mock_osc.magnum_url.return_value, @@ -340,6 +343,8 @@ class AtomicK8sTemplateDefinitionTestCase(BaseTemplateDefinitionTestCase): 'grafana_admin_passwd') kube_dashboard_enabled = mock_cluster_template.labels.get( 'kube_dashboard_enabled') + docker_volume_type = mock_cluster_template.labels.get( + 'docker_volume_type') k8s_def = k8sa_tdef.AtomicK8sTemplateDefinition() @@ -358,6 +363,7 @@ class AtomicK8sTemplateDefinitionTestCase(BaseTemplateDefinitionTestCase): 'prometheus_monitoring': prometheus_monitoring, 'grafana_admin_passwd': grafana_admin_passwd, 'kube_dashboard_enabled': kube_dashboard_enabled, + 'docker_volume_type': docker_volume_type, 'username': 'fake_user', 'tenant_name': 'fake_tenant', 'magnum_url': mock_osc.magnum_url.return_value,