Merge "Add Container Volume Model into Kubernetes Heat Templates"

This commit is contained in:
Jenkins 2016-04-04 20:39:27 +00:00 committed by Gerrit Code Review
commit ee059477be
7 changed files with 99 additions and 0 deletions

View File

@ -456,6 +456,8 @@ class K8sTemplateDefinition(BaseTemplateDefinition):
required=True)
self.add_parameter('network_driver',
baymodel_attr='network_driver')
self.add_parameter('volume_driver',
baymodel_attr='volume_driver')
self.add_parameter('tls_disabled',
baymodel_attr='tls_disabled',
required=True)
@ -518,6 +520,7 @@ class AtomicK8sTemplateDefinition(K8sTemplateDefinition):
osc = clients.OpenStackClients(context)
extra_params['user_token'] = self._get_user_token(context, osc, bay)
extra_params['magnum_url'] = osc.magnum_url()
extra_params['region_name'] = osc.cinder_region_name()
if baymodel.tls_disabled:
extra_params['loadbalancing_protocol'] = 'HTTP'

View File

@ -46,6 +46,32 @@ if [ "$NETWORK_DRIVER" == "flannel" ]; then
done
fi
if [ "$VOLUME_DRIVER" == "cinder" ]; then
CLOUD_CONFIG=/etc/kubernetes/kube_openstack_config
KUBERNETES=/etc/kubernetes
if [ ! -d ${KUBERNETES} -o ! -f ${CLOUD_CONFIG} ]; then
sudo mkdir -p $KUBERNETES
fi
AUTH_URL=${AUTH_URL/v3/v2}
cat > $CLOUD_CONFIG <<EOF
[Global]
auth-url=$AUTH_URL
username=$USERNAME
password=$PASSWORD
region=$REGION_NAME
tenant-name=$TENANT_NAME
EOF
cat << _EOC_ >> /etc/kubernetes/kubelet
#KUBELET_ARGS="$KUBELET_ARGS --cloud-provider=openstack --cloud-config=/etc/kubernetes/kube_openstack_config"
_EOC_
if [ ! -f /usr/bin/udevadm ]; then
sudo ln -s /sbin/udevadm /usr/bin/udevadm
fi
fi
cat >> /etc/environment <<EOF
KUBERNETES_MASTER=$KUBE_MASTER_URI
EOF

View File

@ -27,6 +27,12 @@ write_files:
BAY_UUID="$BAY_UUID"
USER_TOKEN="$USER_TOKEN"
MAGNUM_URL="$MAGNUM_URL"
AUTH_URL="$AUTH_URL"
USERNAME="$USERNAME"
PASSWORD="$PASSWORD"
VOLUME_DRIVER="$VOLUME_DRIVER"
REGION_NAME="$REGION_NAME"
TENANT_NAME="$TENANT_NAME"
HTTP_PROXY="$HTTP_PROXY"
HTTPS_PROXY="$HTTPS_PROXY"
NO_PROXY="$NO_PROXY"

View File

@ -175,6 +175,15 @@ parameters:
size fo the data segments for the swift dynamic large objects
default: 5242880
volume_driver:
type: string
description: volume driver to use for container storage
default: ""
region_name:
type: string
description: A logically separate section of the cluster
username:
type: string
description: >
@ -504,6 +513,12 @@ resources:
user_token: {get_param: user_token}
bay_uuid: {get_param: bay_uuid}
magnum_url: {get_param: magnum_url}
volume_driver: {get_param: volume_driver}
region_name: {get_param: region_name}
tenant_name: {get_param: tenant_name}
auth_url: {get_param: auth_url}
username: {get_param: username}
password: {get_param: password}
kubernetes_port: {get_param: kubernetes_port}
tls_disabled: {get_param: tls_disabled}
secgroup_kube_minion_id: {get_resource: secgroup_kube_minion}

View File

@ -154,6 +154,36 @@ parameters:
type: string
description: ID of the security group for kubernetes minion.
volume_driver:
type: string
description: volume driver to use for container storage
region_name:
type: string
description: A logically separate section of the cluster
tenant_name:
type: string
description: an alternative term for a project
auth_url:
type: string
description: >
url for kubernetes to authenticate before sending request to neutron
must be v2 since kubernetes backend only suppor v2 at this point
username:
type: string
description: >
user account
password:
type: string
description: >
user password, not set in current implementation, only used to
fill in for Kubernetes config file
hidden: true
http_proxy:
type: string
description: http proxy address for docker
@ -242,6 +272,12 @@ resources:
$BAY_UUID: {get_param: bay_uuid}
$USER_TOKEN: {get_param: user_token}
$MAGNUM_URL: {get_param: magnum_url}
$AUTH_URL: {get_param: auth_url}
$USERNAME: {get_param: username}
$PASSWORD: {get_param: password}
$VOLUME_DRIVER: {get_param: volume_driver}
$REGION_NAME: {get_param: region_name}
$TENANT_NAME: {get_param: tenant_name}
$HTTP_PROXY: {get_param: http_proxy}
$HTTPS_PROXY: {get_param: https_proxy}
$NO_PROXY: {get_param: no_proxy}

View File

@ -32,6 +32,7 @@ class TestBayConductorWithK8s(base.TestCase):
'dns_nameserver': 'dns_nameserver',
'external_network_id': 'external_network_id',
'network_driver': 'network_driver',
'volume_driver': 'volume_driver',
'docker_volume_size': 20,
'cluster_distro': 'fedora-atomic',
'coe': 'kubernetes',
@ -74,6 +75,7 @@ class TestBayConductorWithK8s(base.TestCase):
self.addCleanup(osc_patcher.stop)
self.mock_osc = mock.MagicMock()
self.mock_osc.magnum_url.return_value = 'http://127.0.0.1:9511/v1'
self.mock_osc.cinder_region_name.return_value = 'RegionOne'
self.mock_osc_class.return_value = self.mock_osc
mock_stack = self.mock_osc.heat.return_value.stacks.get.return_value
mock_stack.parameters = {'user_token': 'fake_token'}
@ -107,6 +109,7 @@ class TestBayConductorWithK8s(base.TestCase):
'flavor_id': 'minion_flavor',
'docker_volume_size': 'docker_volume_size',
'network_driver': 'network_driver',
'volume_driver': 'volume_driver',
'master_flavor_id': 'master_flavor',
'apiserver_port': '',
'node_count': 'number_of_minions',
@ -127,6 +130,7 @@ class TestBayConductorWithK8s(base.TestCase):
'ssh_key_name': 'keypair_id',
'external_network': 'external_network_id',
'network_driver': 'network_driver',
'volume_driver': 'volume_driver',
'dns_nameserver': 'dns_nameserver',
'server_image': 'image_id',
'minion_flavor': 'flavor_id',
@ -146,6 +150,7 @@ class TestBayConductorWithK8s(base.TestCase):
'user_token': 'fake_token',
'bay_uuid': self.bay_dict['uuid'],
'magnum_url': self.mock_osc.magnum_url.return_value,
'region_name': self.mock_osc.cinder_region_name.return_value,
'tls_disabled': False,
'trustee_domain_id': '3527620c-b220-4f37-9ebc-6e63a81a9b2f',
'trustee_username': 'fake_trustee',
@ -182,6 +187,7 @@ class TestBayConductorWithK8s(base.TestCase):
'number_of_minions': 1,
'number_of_masters': 1,
'network_driver': 'network_driver',
'volume_driver': 'volume_driver',
'discovery_url': 'https://discovery.etcd.io/test',
'http_proxy': 'http_proxy',
'https_proxy': 'https_proxy',
@ -227,6 +233,7 @@ class TestBayConductorWithK8s(base.TestCase):
'number_of_minions': 1,
'number_of_masters': 1,
'network_driver': 'network_driver',
'volume_driver': 'volume_driver',
'discovery_url': 'http://tokentest/h1/h2/h3',
'http_proxy': 'http_proxy',
'https_proxy': 'https_proxy',
@ -340,6 +347,7 @@ class TestBayConductorWithK8s(base.TestCase):
'number_of_minions': 1,
'number_of_masters': 1,
'network_driver': 'network_driver',
'volume_driver': 'volume_driver',
'docker_volume_size': 20,
'discovery_url': 'https://address/token',
'http_proxy': 'http_proxy',
@ -353,6 +361,7 @@ class TestBayConductorWithK8s(base.TestCase):
'user_token': 'fake_token',
'bay_uuid': self.bay_dict['uuid'],
'magnum_url': self.mock_osc.magnum_url.return_value,
'region_name': self.mock_osc.cinder_region_name.return_value,
'tls_disabled': False,
'trustee_domain_id': '3527620c-b220-4f37-9ebc-6e63a81a9b2f',
'trustee_username': 'fake_trustee',

View File

@ -181,6 +181,7 @@ class AtomicK8sTemplateDefinitionTestCase(base.TestCase):
mock_scale_manager = mock.MagicMock()
mock_osc = mock.MagicMock()
mock_osc.magnum_url.return_value = 'http://127.0.0.1:9511/v1'
mock_osc.cinder_region_name.return_value = 'RegionOne'
mock_osc_class.return_value = mock_osc
removal_nodes = ['node1', 'node2']
@ -209,6 +210,7 @@ class AtomicK8sTemplateDefinitionTestCase(base.TestCase):
'username': 'fake_user',
'tenant_name': 'fake_tenant',
'magnum_url': mock_osc.magnum_url.return_value,
'region_name': mock_osc.cinder_region_name.return_value,
'user_token': mock_context.auth_token}}
mock_get_params.assert_called_once_with(mock_context, mock_baymodel,
mock_bay, **expected_kwargs)
@ -232,6 +234,7 @@ class AtomicK8sTemplateDefinitionTestCase(base.TestCase):
mock_scale_manager = mock.MagicMock()
mock_osc = mock.MagicMock()
mock_osc.magnum_url.return_value = 'http://127.0.0.1:9511/v1'
mock_osc.cinder_region_name.return_value
mock_osc_class.return_value = mock_osc
removal_nodes = ['node1', 'node2']
@ -260,6 +263,7 @@ class AtomicK8sTemplateDefinitionTestCase(base.TestCase):
'username': 'fake_user',
'tenant_name': 'fake_tenant',
'magnum_url': mock_osc.magnum_url.return_value,
'region_name': mock_osc.cinder_region_name.return_value,
'user_token': mock_context.auth_token,
'loadbalancing_protocol': 'HTTP',
'kubernetes_port': 8080}}