Drop k8s_fedora_atomic_v1 driver
Change-Id: I3551ae244ecf99f67a9b142c964c020a5fae70a3
This commit is contained in:
parent
05c2b170c0
commit
ed699b0c9a
@ -90,7 +90,7 @@ class ClusterTemplate(base.APIBase):
|
||||
"""The size in GB of the docker volume"""
|
||||
|
||||
cluster_distro = wtypes.StringType(min_length=1, max_length=255)
|
||||
"""The Cluster distro for the Cluster, e.g. coreos, fedora-atomic, etc."""
|
||||
"""The Cluster distro for the Cluster, e.g. coreos, fedora-coreos, etc."""
|
||||
|
||||
links = wsme.wsattr([link.Link], readonly=True)
|
||||
"""A list containing a self link and associated ClusterTemplate links"""
|
||||
@ -205,7 +205,7 @@ class ClusterTemplate(base.APIBase):
|
||||
apiserver_port=8080,
|
||||
docker_volume_size=25,
|
||||
docker_storage_driver='devicemapper',
|
||||
cluster_distro='fedora-atomic',
|
||||
cluster_distro='fedora-coreos',
|
||||
coe=fields.ClusterType.KUBERNETES,
|
||||
http_proxy='http://proxy.com:123',
|
||||
https_proxy='https://proxy.com:123',
|
||||
@ -269,11 +269,6 @@ class ClusterTemplatesController(base.Controller):
|
||||
"different storage driver, such as overlay2. overlay2 will be set "
|
||||
"as the default storage driver from Victoria cycle in Magnum.")
|
||||
|
||||
_fedora_atomic_deprecation_note = (
|
||||
"The fedora_atomic driver is deprecated in favor of the fedora_coreos "
|
||||
"driver. Please migrate to the fedora_coreos driver. fedora_atomic "
|
||||
"driver will be removed in a future Magnum version.")
|
||||
|
||||
def _generate_name_for_cluster_template(self, context):
|
||||
"""Generate a random name like: zeta-22-model."""
|
||||
|
||||
@ -431,12 +426,6 @@ class ClusterTemplatesController(base.Controller):
|
||||
DeprecationWarning)
|
||||
LOG.warning(self._devicemapper_overlay_deprecation_note)
|
||||
|
||||
if (cluster_template_dict['coe'] == 'kubernetes' and
|
||||
cluster_template_dict['cluster_distro'] == 'fedora-atomic'):
|
||||
warnings.warn(self._fedora_atomic_deprecation_note,
|
||||
DeprecationWarning)
|
||||
LOG.warning(self._fedora_atomic_deprecation_note)
|
||||
|
||||
if (cluster_template_dict['coe'] == 'kubernetes' and
|
||||
cluster_template_dict['cluster_distro'] == 'coreos'):
|
||||
warnings.warn(self._coreos_deprecation_note,
|
||||
|
@ -1,53 +0,0 @@
|
||||
# This file contains docker storage drivers configuration for fedora
|
||||
# atomic hosts, as supported by Magnum.
|
||||
|
||||
# * Remove any existing docker-storage configuration. In case of an
|
||||
# existing configuration, docker-storage-setup will fail.
|
||||
# * Remove docker storage graph
|
||||
ssh_cmd="ssh -F /srv/magnum/.ssh/config root@localhost"
|
||||
|
||||
clear_docker_storage () {
|
||||
# stop docker
|
||||
$ssh_cmd systemctl stop docker
|
||||
$ssh_cmd systemctl disable docker-storage-setup
|
||||
# clear storage graph
|
||||
$ssh_cmd rm -rf /var/lib/docker/*
|
||||
|
||||
if [ -f /etc/sysconfig/docker-storage ]; then
|
||||
sed -i "/^DOCKER_STORAGE_OPTIONS=/ s/=.*/=/" /etc/sysconfig/docker-storage
|
||||
fi
|
||||
}
|
||||
|
||||
# Configure generic docker storage driver.
|
||||
configure_storage_driver_generic() {
|
||||
clear_docker_storage
|
||||
|
||||
if [ -n "$DOCKER_VOLUME_SIZE" ] && [ "$DOCKER_VOLUME_SIZE" -gt 0 ]; then
|
||||
$ssh_cmd mkfs.xfs -f ${device_path}
|
||||
echo "${device_path} /var/lib/docker xfs defaults 0 0" >> /etc/fstab
|
||||
$ssh_cmd mount -a
|
||||
fi
|
||||
|
||||
echo "DOCKER_STORAGE_OPTIONS=\"--storage-driver $1\"" > /etc/sysconfig/docker-storage
|
||||
}
|
||||
|
||||
# Configure docker storage with devicemapper using direct LVM
|
||||
configure_devicemapper () {
|
||||
clear_docker_storage
|
||||
|
||||
echo "GROWROOT=True" > /etc/sysconfig/docker-storage-setup
|
||||
echo "STORAGE_DRIVER=devicemapper" >> /etc/sysconfig/docker-storage-setup
|
||||
|
||||
if [ -n "$DOCKER_VOLUME_SIZE" ] && [ "$DOCKER_VOLUME_SIZE" -gt 0 ]; then
|
||||
|
||||
$ssh_cmd pvcreate -f ${device_path}
|
||||
$ssh_cmd vgcreate docker ${device_path}
|
||||
|
||||
echo "VG=docker" >> /etc/sysconfig/docker-storage-setup
|
||||
else
|
||||
echo "ROOT_SIZE=5GB" >> /etc/sysconfig/docker-storage-setup
|
||||
echo "DATA_SIZE=95%FREE" >> /etc/sysconfig/docker-storage-setup
|
||||
fi
|
||||
|
||||
$ssh_cmd docker-storage-setup
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
# Copyright 2016 Rackspace Inc. All rights reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from oslo_log import log as logging
|
||||
|
||||
from magnum.drivers.heat import driver
|
||||
from magnum.drivers.k8s_fedora_atomic_v1 import template_def
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class Driver(driver.FedoraKubernetesDriver):
|
||||
|
||||
@property
|
||||
def provides(self):
|
||||
return [
|
||||
{'server_type': 'vm',
|
||||
'os': 'fedora-atomic',
|
||||
'coe': 'kubernetes'},
|
||||
]
|
||||
|
||||
def get_template_definition(self):
|
||||
return template_def.AtomicK8sTemplateDefinition()
|
@ -1,33 +0,0 @@
|
||||
# Copyright 2016 Rackspace Inc. All rights reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import os
|
||||
|
||||
import magnum.conf
|
||||
from magnum.drivers.heat import k8s_fedora_template_def as kftd
|
||||
|
||||
CONF = magnum.conf.CONF
|
||||
|
||||
|
||||
class AtomicK8sTemplateDefinition(kftd.K8sFedoraTemplateDefinition):
|
||||
"""Kubernetes template for a Fedora Atomic VM."""
|
||||
|
||||
@property
|
||||
def driver_module_path(self):
|
||||
return __name__[:__name__.rindex('.')]
|
||||
|
||||
@property
|
||||
def template_path(self):
|
||||
return os.path.join(os.path.dirname(os.path.realpath(__file__)),
|
||||
'templates/kubecluster.yaml')
|
@ -1,202 +0,0 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,636 +0,0 @@
|
||||
heat_template_version: queens
|
||||
|
||||
description: >
|
||||
This is a nested stack that defines a single Kubernetes minion, This stack is
|
||||
included by an AutoScalingGroup resource in the parent template
|
||||
(kubecluster.yaml).
|
||||
|
||||
parameters:
|
||||
|
||||
name:
|
||||
type: string
|
||||
description: server name
|
||||
|
||||
server_image:
|
||||
type: string
|
||||
description: glance image used to boot the server
|
||||
|
||||
minion_flavor:
|
||||
type: string
|
||||
description: flavor to use when booting the server
|
||||
|
||||
nodegroup_role:
|
||||
type: string
|
||||
description: the role of the nodegroup
|
||||
|
||||
nodegroup_name:
|
||||
type: string
|
||||
description: the name of the nodegroup where the node belongs
|
||||
|
||||
ssh_key_name:
|
||||
type: string
|
||||
description: name of ssh key to be provisioned on our server
|
||||
|
||||
external_network:
|
||||
type: string
|
||||
description: uuid/name of a network to use for floating ip addresses
|
||||
|
||||
kube_allow_priv:
|
||||
type: string
|
||||
description: >
|
||||
whether or not kubernetes should permit privileged containers.
|
||||
constraints:
|
||||
- allowed_values: ["true", "false"]
|
||||
|
||||
boot_volume_size:
|
||||
type: number
|
||||
description: >
|
||||
size of the cinder boot volume
|
||||
|
||||
boot_volume_type:
|
||||
type: string
|
||||
description: >
|
||||
type of the cinder boot volume
|
||||
|
||||
docker_volume_size:
|
||||
type: number
|
||||
description: >
|
||||
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
|
||||
default: "devicemapper"
|
||||
|
||||
cgroup_driver:
|
||||
type: string
|
||||
description: >
|
||||
cgroup driver name that kubelet should use, ideally the same as
|
||||
the docker cgroup driver.
|
||||
default: "cgroupfs"
|
||||
|
||||
tls_disabled:
|
||||
type: boolean
|
||||
description: whether or not to enable TLS
|
||||
|
||||
verify_ca:
|
||||
type: boolean
|
||||
description: whether or not to validate certificate authority
|
||||
|
||||
kubernetes_port:
|
||||
type: number
|
||||
description: >
|
||||
The port which are used by kube-apiserver to provide Kubernetes
|
||||
service.
|
||||
|
||||
cluster_uuid:
|
||||
type: string
|
||||
description: identifier for the cluster this template is generating
|
||||
|
||||
magnum_url:
|
||||
type: string
|
||||
description: endpoint to retrieve TLS certs from
|
||||
|
||||
prometheus_monitoring:
|
||||
type: boolean
|
||||
description: >
|
||||
whether or not to have the node-exporter running on the node
|
||||
|
||||
kube_master_ip:
|
||||
type: string
|
||||
description: IP address of the Kubernetes master server.
|
||||
|
||||
etcd_server_ip:
|
||||
type: string
|
||||
description: IP address of the Etcd server.
|
||||
|
||||
fixed_network:
|
||||
type: string
|
||||
description: Network from which to allocate fixed addresses.
|
||||
|
||||
fixed_subnet:
|
||||
type: string
|
||||
description: Subnet from which to allocate fixed addresses.
|
||||
|
||||
network_driver:
|
||||
type: string
|
||||
description: network driver to use for instantiating container networks
|
||||
|
||||
flannel_network_cidr:
|
||||
type: string
|
||||
description: network range for flannel overlay network
|
||||
|
||||
wait_condition_timeout:
|
||||
type: number
|
||||
description : >
|
||||
timeout for the Wait Conditions
|
||||
|
||||
registry_enabled:
|
||||
type: boolean
|
||||
description: >
|
||||
Indicates whether the docker registry is enabled.
|
||||
|
||||
registry_port:
|
||||
type: number
|
||||
description: port of registry service
|
||||
|
||||
swift_region:
|
||||
type: string
|
||||
description: region of swift service
|
||||
|
||||
registry_container:
|
||||
type: string
|
||||
description: >
|
||||
name of swift container which docker registry stores images in
|
||||
|
||||
registry_insecure:
|
||||
type: boolean
|
||||
description: >
|
||||
indicates whether to skip TLS verification between registry and backend storage
|
||||
|
||||
registry_chunksize:
|
||||
type: number
|
||||
description: >
|
||||
size fo the data segments for the swift dynamic large objects
|
||||
|
||||
secgroup_kube_minion_id:
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
https_proxy:
|
||||
type: string
|
||||
description: https proxy address for docker
|
||||
|
||||
no_proxy:
|
||||
type: string
|
||||
description: no proxies for docker
|
||||
|
||||
hyperkube_prefix:
|
||||
type: string
|
||||
description: prefix to use for hyperkube images
|
||||
|
||||
kube_tag:
|
||||
type: string
|
||||
description: tag of the k8s containers used to provision the kubernetes cluster
|
||||
|
||||
kube_version:
|
||||
type: string
|
||||
description: version of kubernetes used for kubernetes cluster
|
||||
|
||||
trustee_domain_id:
|
||||
type: string
|
||||
description: domain id of the trustee
|
||||
|
||||
trustee_user_id:
|
||||
type: string
|
||||
description: user id of the trustee
|
||||
|
||||
trustee_username:
|
||||
type: string
|
||||
description: username of the trustee
|
||||
|
||||
trustee_password:
|
||||
type: string
|
||||
description: password of the trustee
|
||||
hidden: true
|
||||
|
||||
trust_id:
|
||||
type: string
|
||||
description: id of the trust which is used by the trustee
|
||||
hidden: true
|
||||
|
||||
auth_url:
|
||||
type: string
|
||||
description: >
|
||||
url for keystone, must be v2 since k8s backend only support v2
|
||||
at this point
|
||||
|
||||
insecure_registry_url:
|
||||
type: string
|
||||
description: insecure registry url
|
||||
|
||||
container_infra_prefix:
|
||||
type: string
|
||||
description: >
|
||||
prefix of container images used in the cluster, kubernetes components,
|
||||
kubernetes-dashboard, coredns etc
|
||||
|
||||
dns_service_ip:
|
||||
type: string
|
||||
description: >
|
||||
address used by Kubernetes DNS service
|
||||
|
||||
dns_cluster_domain:
|
||||
type: string
|
||||
description: >
|
||||
domain name for cluster DNS
|
||||
|
||||
openstack_ca:
|
||||
type: string
|
||||
description: The OpenStack CA certificate to install on the node.
|
||||
|
||||
nodes_server_group_id:
|
||||
type: string
|
||||
description: ID of the server group for kubernetes cluster nodes.
|
||||
|
||||
availability_zone:
|
||||
type: string
|
||||
description: >
|
||||
availability zone for master and nodes
|
||||
default: ""
|
||||
|
||||
pods_network_cidr:
|
||||
type: string
|
||||
description: Configure the IP pool/range from which pod IPs will be chosen
|
||||
|
||||
kubelet_options:
|
||||
type: string
|
||||
description: >
|
||||
additional options to be passed to the kubelet
|
||||
|
||||
kubeproxy_options:
|
||||
type: string
|
||||
description: >
|
||||
additional options to be passed to the kube proxy
|
||||
|
||||
octavia_enabled:
|
||||
type: boolean
|
||||
description: >
|
||||
whether or not to use Octavia for LoadBalancer type service.
|
||||
default: False
|
||||
|
||||
cloud_provider_enabled:
|
||||
type: boolean
|
||||
description: Enable or disable the openstack kubernetes cloud provider
|
||||
|
||||
heat_container_agent_tag:
|
||||
type: string
|
||||
description: tag of the heat_container_agent system container
|
||||
|
||||
auto_healing_enabled:
|
||||
type: boolean
|
||||
description: >
|
||||
true if the auto healing feature should be enabled
|
||||
|
||||
auto_healing_controller:
|
||||
type: string
|
||||
description: >
|
||||
The service to be deployed for auto-healing.
|
||||
default: "draino"
|
||||
|
||||
npd_enabled:
|
||||
type: boolean
|
||||
description: >
|
||||
true if the npd service should be launched
|
||||
default:
|
||||
true
|
||||
|
||||
ostree_remote:
|
||||
type: string
|
||||
description: The ostree remote branch to upgrade
|
||||
default: ''
|
||||
|
||||
ostree_commit:
|
||||
type: string
|
||||
description: The ostree commit to deploy
|
||||
default: ''
|
||||
|
||||
use_podman:
|
||||
type: boolean
|
||||
description: >
|
||||
if true, run system containers for kubernetes, etcd and heat-agent
|
||||
|
||||
selinux_mode:
|
||||
type: string
|
||||
description: >
|
||||
Choose SELinux mode
|
||||
|
||||
container_runtime:
|
||||
type: string
|
||||
description: The container runtime to install
|
||||
|
||||
containerd_version:
|
||||
type: string
|
||||
description: The containerd version to download from https://storage.googleapis.com/cri-containerd-release/
|
||||
|
||||
containerd_tarball_url:
|
||||
type: string
|
||||
description: Url location of the containerd tarball.
|
||||
|
||||
containerd_tarball_sha256:
|
||||
type: string
|
||||
description: sha256 of the target containerd tarball.
|
||||
|
||||
conditions:
|
||||
|
||||
image_based: {equals: [{get_param: boot_volume_size}, 0]}
|
||||
volume_based:
|
||||
not:
|
||||
equals:
|
||||
- get_param: boot_volume_size
|
||||
- 0
|
||||
|
||||
|
||||
resources:
|
||||
|
||||
agent_config:
|
||||
type: OS::Heat::SoftwareConfig
|
||||
properties:
|
||||
group: ungrouped
|
||||
config:
|
||||
list_join:
|
||||
- "\n"
|
||||
-
|
||||
- str_replace:
|
||||
template: {get_file: ../../common/templates/fragments/atomic-install-openstack-ca.sh}
|
||||
params:
|
||||
$OPENSTACK_CA: {get_param: openstack_ca}
|
||||
- str_replace:
|
||||
template: {get_file: ../../common/templates/kubernetes/fragments/start-container-agent.sh}
|
||||
params:
|
||||
$CONTAINER_INFRA_PREFIX: {get_param: container_infra_prefix}
|
||||
$HEAT_CONTAINER_AGENT_TAG: {get_param: heat_container_agent_tag}
|
||||
$USE_PODMAN: {get_param: use_podman}
|
||||
$HTTP_PROXY: {get_param: http_proxy}
|
||||
$HTTPS_PROXY: {get_param: https_proxy}
|
||||
$NO_PROXY: {get_param: no_proxy}
|
||||
- str_replace:
|
||||
template: {get_file: ../../common/templates/kubernetes/fragments/disable-selinux.sh}
|
||||
params:
|
||||
$SELINUX_MODE: {get_param: selinux_mode}
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# software configs. these are components that are combined into
|
||||
# a multipart MIME user-data archive.
|
||||
#
|
||||
|
||||
node_config:
|
||||
type: OS::Heat::SoftwareConfig
|
||||
properties:
|
||||
group: script
|
||||
config:
|
||||
list_join:
|
||||
- "\n"
|
||||
-
|
||||
- "#!/bin/bash"
|
||||
- str_replace:
|
||||
template: {get_file: ../../common/templates/kubernetes/fragments/write-heat-params.sh}
|
||||
params:
|
||||
$INSTANCE_NAME: {get_param: name}
|
||||
$PROMETHEUS_MONITORING: {get_param: prometheus_monitoring}
|
||||
$KUBE_ALLOW_PRIV: {get_param: kube_allow_priv}
|
||||
$KUBE_MASTER_IP: {get_param: kube_master_ip}
|
||||
$KUBE_API_PORT: {get_param: kubernetes_port}
|
||||
$KUBE_NODE_PUBLIC_IP: {get_attr: [kube_minion_floating, floating_ip_address]}
|
||||
$KUBE_NODE_IP: {get_attr: [kube_minion_eth0, fixed_ips, 0, ip_address]}
|
||||
$ETCD_SERVER_IP: {get_param: etcd_server_ip}
|
||||
$DOCKER_VOLUME: {get_resource: docker_volume}
|
||||
$DOCKER_VOLUME_SIZE: {get_param: docker_volume_size}
|
||||
$DOCKER_STORAGE_DRIVER: {get_param: docker_storage_driver}
|
||||
$CGROUP_DRIVER: {get_param: cgroup_driver}
|
||||
$NETWORK_DRIVER: {get_param: network_driver}
|
||||
$REGISTRY_ENABLED: {get_param: registry_enabled}
|
||||
$REGISTRY_PORT: {get_param: registry_port}
|
||||
$SWIFT_REGION: {get_param: swift_region}
|
||||
$REGISTRY_CONTAINER: {get_param: registry_container}
|
||||
$REGISTRY_INSECURE: {get_param: registry_insecure}
|
||||
$REGISTRY_CHUNKSIZE: {get_param: registry_chunksize}
|
||||
$TLS_DISABLED: {get_param: tls_disabled}
|
||||
$VERIFY_CA: {get_param: verify_ca}
|
||||
$CLUSTER_UUID: {get_param: cluster_uuid}
|
||||
$MAGNUM_URL: {get_param: magnum_url}
|
||||
$USERNAME: {get_param: username}
|
||||
$PASSWORD: {get_param: password}
|
||||
$VOLUME_DRIVER: {get_param: volume_driver}
|
||||
$REGION_NAME: {get_param: region_name}
|
||||
$HTTP_PROXY: {get_param: http_proxy}
|
||||
$HTTPS_PROXY: {get_param: https_proxy}
|
||||
$NO_PROXY: {get_param: no_proxy}
|
||||
$HYPERKUBE_PREFIX: {get_param: hyperkube_prefix}
|
||||
$KUBE_TAG: {get_param: kube_tag}
|
||||
$FLANNEL_NETWORK_CIDR: {get_param: flannel_network_cidr}
|
||||
$PODS_NETWORK_CIDR: {get_param: pods_network_cidr}
|
||||
$KUBE_VERSION: {get_param: kube_version}
|
||||
$TRUSTEE_USER_ID: {get_param: trustee_user_id}
|
||||
$TRUSTEE_USERNAME: {get_param: trustee_username}
|
||||
$TRUSTEE_PASSWORD: {get_param: trustee_password}
|
||||
$TRUSTEE_DOMAIN_ID: {get_param: trustee_domain_id}
|
||||
$TRUST_ID: {get_param: trust_id}
|
||||
$AUTH_URL: {get_param: auth_url}
|
||||
$CLOUD_PROVIDER_ENABLED: {get_param: cloud_provider_enabled}
|
||||
$INSECURE_REGISTRY_URL: {get_param: insecure_registry_url}
|
||||
$CONTAINER_INFRA_PREFIX: {get_param: container_infra_prefix}
|
||||
$DNS_SERVICE_IP: {get_param: dns_service_ip}
|
||||
$DNS_CLUSTER_DOMAIN: {get_param: dns_cluster_domain}
|
||||
$KUBELET_OPTIONS: {get_param: kubelet_options}
|
||||
$KUBEPROXY_OPTIONS: {get_param: kubeproxy_options}
|
||||
$OCTAVIA_ENABLED: {get_param: octavia_enabled}
|
||||
$HEAT_CONTAINER_AGENT_TAG: {get_param: heat_container_agent_tag}
|
||||
$AUTO_HEALING_ENABLED: {get_param: auto_healing_enabled}
|
||||
$AUTO_HEALING_CONTROLLER: {get_param: auto_healing_controller}
|
||||
$NPD_ENABLED: {get_param: npd_enabled}
|
||||
$NODEGROUP_ROLE: {get_param: nodegroup_role}
|
||||
$NODEGROUP_NAME: {get_param: nodegroup_name}
|
||||
$USE_PODMAN: {get_param: use_podman}
|
||||
$CONTAINER_RUNTIME: {get_param: container_runtime}
|
||||
$CONTAINERD_VERSION: {get_param: containerd_version}
|
||||
$CONTAINERD_TARBALL_URL: {get_param: containerd_tarball_url}
|
||||
$CONTAINERD_TARBALL_SHA256: {get_param: containerd_tarball_sha256}
|
||||
- get_file: ../../common/templates/kubernetes/fragments/install-cri.sh
|
||||
- get_file: ../../common/templates/kubernetes/fragments/install-clients.sh
|
||||
- get_file: ../../common/templates/kubernetes/fragments/write-kube-os-config.sh
|
||||
- get_file: ../../common/templates/kubernetes/fragments/make-cert-client.sh
|
||||
- get_file: ../../common/templates/fragments/configure-docker-registry.sh
|
||||
- get_file: ../../common/templates/kubernetes/fragments/configure-kubernetes-minion.sh
|
||||
- get_file: ../../common/templates/kubernetes/fragments/add-proxy.sh
|
||||
- str_replace:
|
||||
template: {get_file: ../../common/templates/fragments/configure-docker-storage.sh}
|
||||
params:
|
||||
$configure_docker_storage_driver: {get_file: ../../common/templates/fragments/configure_docker_storage_driver_atomic.sh}
|
||||
- get_file: ../../common/templates/kubernetes/fragments/enable-services-minion.sh
|
||||
- get_file: ../../common/templates/fragments/enable-docker-registry.sh
|
||||
|
||||
node_config_deployment:
|
||||
type: OS::Heat::SoftwareDeployment
|
||||
properties:
|
||||
signal_transport: HEAT_SIGNAL
|
||||
config: {get_resource: node_config}
|
||||
server: {if: ["volume_based", {get_resource: kube-minion-bfv}, {get_resource: kube-minion}]}
|
||||
actions: ['CREATE']
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# a single kubernetes minion.
|
||||
#
|
||||
|
||||
kube_node_volume:
|
||||
type: OS::Cinder::Volume
|
||||
condition: volume_based
|
||||
properties:
|
||||
image: {get_param: server_image}
|
||||
size: {get_param: boot_volume_size}
|
||||
volume_type: {get_param: boot_volume_type}
|
||||
availability_zone: {get_param: availability_zone}
|
||||
|
||||
# do NOT use "_" (underscore) in the Nova server name
|
||||
# it creates a mismatch between the generated Nova name and its hostname
|
||||
# which can lead to weird problems
|
||||
kube-minion:
|
||||
condition: image_based
|
||||
type: OS::Nova::Server
|
||||
properties:
|
||||
name: {get_param: name}
|
||||
flavor: {get_param: minion_flavor}
|
||||
image: {get_param: server_image}
|
||||
key_name: {get_param: ssh_key_name}
|
||||
user_data: {get_resource: agent_config}
|
||||
user_data_format: SOFTWARE_CONFIG
|
||||
software_config_transport: POLL_SERVER_HEAT
|
||||
networks:
|
||||
- port: {get_resource: kube_minion_eth0}
|
||||
scheduler_hints: { group: { get_param: nodes_server_group_id }}
|
||||
availability_zone: {get_param: availability_zone}
|
||||
|
||||
kube-minion-bfv:
|
||||
condition: volume_based
|
||||
type: OS::Nova::Server
|
||||
properties:
|
||||
name: {get_param: name}
|
||||
flavor: {get_param: minion_flavor}
|
||||
key_name: {get_param: ssh_key_name}
|
||||
user_data: {get_resource: agent_config}
|
||||
user_data_format: SOFTWARE_CONFIG
|
||||
software_config_transport: POLL_SERVER_HEAT
|
||||
networks:
|
||||
- port: {get_resource: kube_minion_eth0}
|
||||
scheduler_hints: { group: { get_param: nodes_server_group_id }}
|
||||
availability_zone: {get_param: availability_zone}
|
||||
block_device_mapping_v2:
|
||||
- boot_index: 0
|
||||
volume_id: {get_resource: kube_node_volume}
|
||||
|
||||
kube_minion_eth0:
|
||||
type: OS::Neutron::Port
|
||||
properties:
|
||||
network: {get_param: fixed_network}
|
||||
security_groups:
|
||||
- get_param: secgroup_kube_minion_id
|
||||
fixed_ips:
|
||||
- subnet: {get_param: fixed_subnet}
|
||||
allowed_address_pairs:
|
||||
- ip_address: {get_param: pods_network_cidr}
|
||||
replacement_policy: AUTO
|
||||
|
||||
kube_minion_floating:
|
||||
type: Magnum::Optional::KubeMinion::Neutron::FloatingIP
|
||||
properties:
|
||||
floating_network: {get_param: external_network}
|
||||
port_id: {get_resource: kube_minion_eth0}
|
||||
depends_on: kube-minion
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# docker storage. This allocates a cinder volume and attaches it
|
||||
# to the minion.
|
||||
#
|
||||
|
||||
docker_volume:
|
||||
type: Magnum::Optional::Cinder::Volume
|
||||
properties:
|
||||
size: {get_param: docker_volume_size}
|
||||
volume_type: {get_param: docker_volume_type}
|
||||
availability_zone: {get_param: availability_zone}
|
||||
|
||||
docker_volume_attach:
|
||||
type: Magnum::Optional::Cinder::VolumeAttachment
|
||||
properties:
|
||||
instance_uuid: {if: ["volume_based", {get_resource: kube-minion-bfv}, {get_resource: kube-minion}]}
|
||||
volume_id: {get_resource: docker_volume}
|
||||
mountpoint: /dev/vdb
|
||||
|
||||
upgrade_kubernetes:
|
||||
type: OS::Heat::SoftwareConfig
|
||||
properties:
|
||||
group: script
|
||||
inputs:
|
||||
- name: kube_tag_input
|
||||
- name: ostree_remote_input
|
||||
- name: ostree_commit_input
|
||||
config:
|
||||
list_join:
|
||||
- "\n"
|
||||
-
|
||||
- "#!/bin/bash"
|
||||
- get_file: ../../common/templates/kubernetes/fragments/upgrade-kubernetes.sh
|
||||
|
||||
upgrade_kubernetes_deployment:
|
||||
type: OS::Heat::SoftwareDeployment
|
||||
properties:
|
||||
signal_transport: HEAT_SIGNAL
|
||||
config: {get_resource: upgrade_kubernetes}
|
||||
server: {if: ["volume_based", {get_resource: kube-minion-bfv}, {get_resource: kube-minion}]}
|
||||
actions: ['UPDATE']
|
||||
input_values:
|
||||
kube_tag_input: {get_param: kube_tag}
|
||||
ostree_remote_input: {get_param: ostree_remote}
|
||||
ostree_commit_input: {get_param: ostree_commit}
|
||||
|
||||
outputs:
|
||||
|
||||
kube_minion_ip:
|
||||
value: {get_attr: [kube_minion_eth0, fixed_ips, 0, ip_address]}
|
||||
description: >
|
||||
This is the "public" IP address of the Kubernetes minion node.
|
||||
|
||||
kube_minion_external_ip:
|
||||
value: {get_attr: [kube_minion_floating, floating_ip_address]}
|
||||
description: >
|
||||
This is the "public" IP address of the Kubernetes minion node.
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# NOTE(flwang): Returning the minion node server ID here so that
|
||||
# consumer can send API request to Heat to remove a particular
|
||||
# node with removal_policies. Otherwise, the consumer (e.g. AutoScaler)
|
||||
# has to use index to do the remove which is confusing out of the
|
||||
# OpenStack world.
|
||||
# https://storyboard.openstack.org/#!/story/2005054
|
||||
#
|
||||
######################################################################
|
||||
|
||||
OS::stack_id:
|
||||
value: {if: ["volume_based", {get_resource: kube-minion-bfv}, {get_resource: kube-minion}]}
|
||||
description: >
|
||||
This is the Nova server id of the node.
|
File diff suppressed because it is too large
Load Diff
@ -1,17 +0,0 @@
|
||||
# Copyright 2016 - Rackspace Hosting
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
version = '1.0.0'
|
||||
driver = 'k8s_fedora_atomic_v1'
|
||||
container_version = '1.12.6'
|
@ -13,5 +13,5 @@
|
||||
# limitations under the License.
|
||||
|
||||
version = '1.0.0'
|
||||
driver = 'k8s_fedora_atomic_v1'
|
||||
driver = 'k8s_fedora_coreos_v1'
|
||||
container_version = '1.12.6'
|
||||
|
@ -98,8 +98,6 @@ if [[ "$COE" == "kubernetes" ]]; then
|
||||
remote_exec $SSH_USER "sudo cat /etc/systemd/system/flannel-config.service" flannel-config.service
|
||||
remote_exec $SSH_USER "sudo journalctl -u heat-container-agent --no-pager" heat-container-agent.log
|
||||
remote_exec $SSH_USER "sudo journalctl -u kube-enable-monitoring --no-pager" kube-enable-monitoring.service.log
|
||||
remote_exec $SSH_USER "sudo atomic containers list" atomic-containers-list.log
|
||||
remote_exec $SSH_USER "sudo atomic images list" atomic-images-list.log
|
||||
else
|
||||
echo "ERROR: Unknown COE '${COE}'"
|
||||
EXIT_CODE=1
|
||||
|
@ -641,7 +641,7 @@ class TestPost(api_base.FunctionalTest):
|
||||
test_time = datetime.datetime(2000, 1, 1, 0, 0)
|
||||
mock_utcnow.return_value = test_time
|
||||
mock_image_data.return_value = {'name': 'mock_name',
|
||||
'os_distro': 'fedora-atomic'}
|
||||
'os_distro': 'fedora-coreos'}
|
||||
|
||||
response = self.post_json('/clustertemplates', bdict)
|
||||
self.assertEqual(201, response.status_int)
|
||||
@ -663,7 +663,7 @@ class TestPost(api_base.FunctionalTest):
|
||||
self.dbapi, 'create_cluster_template',
|
||||
wraps=self.dbapi.create_cluster_template) as cc_mock:
|
||||
mock_image_data.return_value = {'name': 'mock_name',
|
||||
'os_distro': 'fedora-atomic'}
|
||||
'os_distro': 'fedora-coreos'}
|
||||
bdict = apiutils.cluster_template_post_data()
|
||||
self.post_json('/clustertemplates', bdict)
|
||||
cc_mock.assert_called_once_with(mock.ANY)
|
||||
@ -679,7 +679,7 @@ class TestPost(api_base.FunctionalTest):
|
||||
self.dbapi, 'create_cluster_template',
|
||||
wraps=self.dbapi.create_cluster_template) as cc_mock:
|
||||
mock_image_data.return_value = {'name': 'mock_name',
|
||||
'os_distro': 'fedora-atomic'}
|
||||
'os_distro': 'fedora-coreos'}
|
||||
bdict = apiutils.cluster_template_post_data(image_id='my-image')
|
||||
response = self.post_json('/clustertemplates', bdict)
|
||||
self.assertEqual(bdict['image_id'], response.json['image_id'])
|
||||
@ -695,7 +695,7 @@ class TestPost(api_base.FunctionalTest):
|
||||
mock.patch('magnum.api.attr_validator.validate_image')\
|
||||
as mock_image_data:
|
||||
mock_image_data.return_value = {'name': 'mock_name',
|
||||
'os_distro': 'fedora-atomic'}
|
||||
'os_distro': 'fedora-coreos'}
|
||||
bdict = apiutils.cluster_template_post_data(**kwargs)
|
||||
self.assertRaises(AppError, self.post_json, '/clustertemplates',
|
||||
bdict)
|
||||
@ -753,7 +753,7 @@ class TestPost(api_base.FunctionalTest):
|
||||
self.dbapi, 'create_cluster_template',
|
||||
wraps=self.dbapi.create_cluster_template) as cc_mock:
|
||||
mock_image_data.return_value = {'name': 'mock_name',
|
||||
'os_distro': 'fedora-atomic'}
|
||||
'os_distro': 'fedora-coreos'}
|
||||
bdict = apiutils.cluster_template_post_data(
|
||||
labels={'key1': 'val1', 'key2': 'val2'})
|
||||
response = self.post_json('/clustertemplates', bdict)
|
||||
@ -769,7 +769,7 @@ class TestPost(api_base.FunctionalTest):
|
||||
self.dbapi, 'create_cluster_template',
|
||||
wraps=self.dbapi.create_cluster_template) as cc_mock:
|
||||
mock_image_data.return_value = {'name': 'mock_name',
|
||||
'os_distro': 'fedora-atomic'}
|
||||
'os_distro': 'fedora-coreos'}
|
||||
bdict = apiutils.cluster_template_post_data(docker_volume_size=99)
|
||||
response = self.post_json('/clustertemplates', bdict)
|
||||
self.assertEqual(bdict['docker_volume_size'],
|
||||
@ -783,7 +783,7 @@ class TestPost(api_base.FunctionalTest):
|
||||
self.dbapi, 'create_cluster_template',
|
||||
wraps=self.dbapi.create_cluster_template) as cc_mock:
|
||||
mock_image_data.return_value = {'name': 'mock_name',
|
||||
'os_distro': 'fedora-atomic'}
|
||||
'os_distro': 'fedora-coreos'}
|
||||
bdict = apiutils.cluster_template_post_data(
|
||||
docker_volume_size=1, docker_storage_driver="overlay")
|
||||
note = 'deprecated in favor of overlay2'
|
||||
@ -803,7 +803,7 @@ class TestPost(api_base.FunctionalTest):
|
||||
expect_default_driver,
|
||||
mock_image_data):
|
||||
mock_image_data.return_value = {'name': 'mock_name',
|
||||
'os_distro': 'fedora-atomic'}
|
||||
'os_distro': 'fedora-coreos'}
|
||||
for k, v in cluster_template_config_dict.items():
|
||||
cfg.CONF.set_override(k, v, 'cluster_template')
|
||||
with mock.patch.object(
|
||||
@ -900,7 +900,7 @@ class TestPost(api_base.FunctionalTest):
|
||||
self.dbapi, 'create_cluster_template',
|
||||
wraps=self.dbapi.create_cluster_template) as cc_mock:
|
||||
mock_image_data.return_value = {'name': 'mock_name',
|
||||
'os_distro': 'fedora-atomic'}
|
||||
'os_distro': 'fedora-coreos'}
|
||||
bdict = apiutils.cluster_template_post_data()
|
||||
response = self.post_json('/clustertemplates', bdict)
|
||||
self.assertEqual(bdict['volume_driver'],
|
||||
@ -917,7 +917,7 @@ class TestPost(api_base.FunctionalTest):
|
||||
wraps=self.dbapi.create_cluster_template) as cc_mock:
|
||||
mock_policy.return_value = True
|
||||
mock_image_data.return_value = {'name': 'mock_name',
|
||||
'os_distro': 'fedora-atomic'}
|
||||
'os_distro': 'fedora-coreos'}
|
||||
bdict = apiutils.cluster_template_post_data(public=True)
|
||||
response = self.post_json('/clustertemplates', bdict)
|
||||
self.assertTrue(response.json['public'])
|
||||
@ -937,7 +937,7 @@ class TestPost(api_base.FunctionalTest):
|
||||
# make policy enforcement fail
|
||||
mock_policy.return_value = False
|
||||
mock_image_data.return_value = {'name': 'mock_name',
|
||||
'os_distro': 'fedora-atomic'}
|
||||
'os_distro': 'fedora-coreos'}
|
||||
bdict = apiutils.cluster_template_post_data(public=True)
|
||||
self.assertRaises(AppError, self.post_json, '/clustertemplates',
|
||||
bdict)
|
||||
@ -950,7 +950,7 @@ class TestPost(api_base.FunctionalTest):
|
||||
self.dbapi, 'create_cluster_template',
|
||||
wraps=self.dbapi.create_cluster_template) as cc_mock:
|
||||
mock_image_data.return_value = {'name': 'mock_name',
|
||||
'os_distro': 'fedora-atomic'}
|
||||
'os_distro': 'fedora-coreos'}
|
||||
bdict = apiutils.cluster_template_post_data(public=False)
|
||||
response = self.post_json('/clustertemplates', bdict)
|
||||
self.assertFalse(response.json['public'])
|
||||
@ -969,7 +969,7 @@ class TestPost(api_base.FunctionalTest):
|
||||
wraps=self.dbapi.create_cluster_template) as cc_mock:
|
||||
mock_policy.return_value = True
|
||||
mock_image_data.return_value = {'name': 'mock_name',
|
||||
'os_distro': 'fedora-atomic'}
|
||||
'os_distro': 'fedora-coreos'}
|
||||
bdict = apiutils.cluster_template_post_data(hidden=True)
|
||||
response = self.post_json('/clustertemplates', bdict)
|
||||
self.assertTrue(response.json['hidden'])
|
||||
@ -989,7 +989,7 @@ class TestPost(api_base.FunctionalTest):
|
||||
# make policy enforcement fail
|
||||
mock_policy.return_value = False
|
||||
mock_image_data.return_value = {'name': 'mock_name',
|
||||
'os_distro': 'fedora-atomic'}
|
||||
'os_distro': 'fedora-coreos'}
|
||||
bdict = apiutils.cluster_template_post_data(hidden=True)
|
||||
self.assertRaises(AppError, self.post_json, '/clustertemplates',
|
||||
bdict)
|
||||
@ -1008,7 +1008,7 @@ class TestPost(api_base.FunctionalTest):
|
||||
def test_create_cluster_template_with_os_distro_image(self,
|
||||
mock_image_data):
|
||||
mock_image_data.return_value = {'name': 'mock_name',
|
||||
'os_distro': 'fedora-atomic'}
|
||||
'os_distro': 'fedora-coreos'}
|
||||
bdict = apiutils.cluster_template_post_data()
|
||||
del bdict['uuid']
|
||||
response = self.post_json('/clustertemplates', bdict,
|
||||
@ -1019,7 +1019,7 @@ class TestPost(api_base.FunctionalTest):
|
||||
def test_create_cluster_template_with_image_name(self,
|
||||
mock_image_data):
|
||||
mock_image = {'name': 'mock_name',
|
||||
'os_distro': 'fedora-atomic'}
|
||||
'os_distro': 'fedora-coreos'}
|
||||
mock_image_data.return_value = mock_image
|
||||
bdict = apiutils.cluster_template_post_data()
|
||||
del bdict['uuid']
|
||||
@ -1058,7 +1058,7 @@ class TestPost(api_base.FunctionalTest):
|
||||
def test_create_cluster_template_without_keypair_id(self,
|
||||
mock_image_data):
|
||||
mock_image_data.return_value = {'name': 'mock_name',
|
||||
'os_distro': 'fedora-atomic'}
|
||||
'os_distro': 'fedora-coreos'}
|
||||
bdict = apiutils.cluster_template_post_data()
|
||||
del bdict['keypair_id']
|
||||
response = self.post_json('/clustertemplates', bdict)
|
||||
@ -1068,7 +1068,7 @@ class TestPost(api_base.FunctionalTest):
|
||||
def test_create_cluster_template_with_dns(self,
|
||||
mock_image_data):
|
||||
mock_image_data.return_value = {'name': 'mock_name',
|
||||
'os_distro': 'fedora-atomic'}
|
||||
'os_distro': 'fedora-coreos'}
|
||||
bdict = apiutils.cluster_template_post_data()
|
||||
response = self.post_json('/clustertemplates', bdict)
|
||||
self.assertEqual(201, response.status_int)
|
||||
@ -1080,7 +1080,7 @@ class TestPost(api_base.FunctionalTest):
|
||||
mock_image_data):
|
||||
self.mock_valid_os_res.side_effect = exception.KeyPairNotFound("Test")
|
||||
mock_image_data.return_value = {'name': 'mock_name',
|
||||
'os_distro': 'fedora-atomic'}
|
||||
'os_distro': 'fedora-coreos'}
|
||||
bdict = apiutils.cluster_template_post_data()
|
||||
response = self.post_json('/clustertemplates', bdict,
|
||||
expect_errors=True)
|
||||
@ -1090,7 +1090,7 @@ class TestPost(api_base.FunctionalTest):
|
||||
def test_create_cluster_template_with_flavor(self,
|
||||
mock_image_data):
|
||||
mock_image_data.return_value = {'name': 'mock_name',
|
||||
'os_distro': 'fedora-atomic'}
|
||||
'os_distro': 'fedora-coreos'}
|
||||
bdict = apiutils.cluster_template_post_data()
|
||||
response = self.post_json('/clustertemplates', bdict)
|
||||
self.assertEqual(201, response.status_int)
|
||||
@ -1104,7 +1104,7 @@ class TestPost(api_base.FunctionalTest):
|
||||
mock_image_data):
|
||||
self.mock_valid_os_res.side_effect = exception.FlavorNotFound("flavor")
|
||||
mock_image_data.return_value = {'name': 'mock_name',
|
||||
'os_distro': 'fedora-atomic'}
|
||||
'os_distro': 'fedora-coreos'}
|
||||
bdict = apiutils.cluster_template_post_data()
|
||||
response = self.post_json('/clustertemplates', bdict,
|
||||
expect_errors=True)
|
||||
@ -1114,7 +1114,7 @@ class TestPost(api_base.FunctionalTest):
|
||||
def test_create_cluster_template_with_external_network(self,
|
||||
mock_image_data):
|
||||
mock_image_data.return_value = {'name': 'mock_name',
|
||||
'os_distro': 'fedora-atomic'}
|
||||
'os_distro': 'fedora-coreos'}
|
||||
bdict = apiutils.cluster_template_post_data()
|
||||
response = self.post_json('/clustertemplates', bdict)
|
||||
self.assertEqual(201, response.status_int)
|
||||
@ -1127,7 +1127,7 @@ class TestPost(api_base.FunctionalTest):
|
||||
self.mock_valid_os_res.side_effect = exception.ExternalNetworkNotFound(
|
||||
"test")
|
||||
mock_image_data.return_value = {'name': 'mock_name',
|
||||
'os_distro': 'fedora-atomic'}
|
||||
'os_distro': 'fedora-coreos'}
|
||||
bdict = apiutils.cluster_template_post_data()
|
||||
response = self.post_json('/clustertemplates', bdict,
|
||||
expect_errors=True)
|
||||
@ -1138,7 +1138,7 @@ class TestPost(api_base.FunctionalTest):
|
||||
with mock.patch.object(self.dbapi, 'create_cluster_template',
|
||||
wraps=self.dbapi.create_cluster_template):
|
||||
mock_image_data.return_value = {'name': 'mock_name',
|
||||
'os_distro': 'fedora-atomic'}
|
||||
'os_distro': 'fedora-coreos'}
|
||||
bdict = apiutils.cluster_template_post_data()
|
||||
bdict.pop('name')
|
||||
resp = self.post_json('/clustertemplates', bdict)
|
||||
@ -1162,7 +1162,7 @@ class TestPost(api_base.FunctionalTest):
|
||||
test_time = datetime.datetime(2000, 1, 1, 0, 0)
|
||||
mock_utcnow.return_value = test_time
|
||||
mock_image_data.return_value = {'name': 'mock_name',
|
||||
'os_distro': 'fedora-atomic'}
|
||||
'os_distro': 'fedora-coreos'}
|
||||
|
||||
response = self.post_json('/clustertemplates', bdict)
|
||||
self.assertEqual(201, response.status_int)
|
||||
@ -1180,7 +1180,7 @@ class TestPost(api_base.FunctionalTest):
|
||||
@mock.patch('magnum.api.attr_validator.validate_image')
|
||||
def test_create_cluster_template_with_driver_name(self, mock_image_data):
|
||||
mock_image = {'name': 'mock_name',
|
||||
'os_distro': 'fedora-atomic',
|
||||
'os_distro': 'fedora-coreos',
|
||||
'magnum_driver': 'mock_driver'}
|
||||
mock_image_data.return_value = mock_image
|
||||
bdict = apiutils.cluster_template_post_data()
|
||||
|
@ -205,12 +205,12 @@ class TestAttrValidator(base.BaseTestCase):
|
||||
|
||||
@mock.patch('magnum.api.utils.get_openstack_resource')
|
||||
def test_validate_image_with_valid_image_by_name(self, mock_os_res):
|
||||
mock_image = {'name': 'fedora-21-atomic-5',
|
||||
mock_image = {'name': 'fedora-21-coreos-5',
|
||||
'id': 'e33f0988-1730-405e-8401-30cbc8535302',
|
||||
'os_distro': 'fedora-atomic'}
|
||||
'os_distro': 'fedora-coreos'}
|
||||
mock_os_res.return_value = mock_image
|
||||
mock_os_cli = mock.MagicMock()
|
||||
attr_validator.validate_image(mock_os_cli, 'fedora-21-atomic-5')
|
||||
attr_validator.validate_image(mock_os_cli, 'fedora-21-coreos-5')
|
||||
self.assertTrue(mock_os_res.called)
|
||||
|
||||
@mock.patch('magnum.api.utils.get_openstack_resource')
|
||||
@ -222,13 +222,13 @@ class TestAttrValidator(base.BaseTestCase):
|
||||
mock_os_cli = mock.MagicMock()
|
||||
self.assertRaises(exception.ImageNotAuthorized,
|
||||
attr_validator.validate_image, mock_os_cli,
|
||||
'fedora-21-atomic-5')
|
||||
'fedora-21-coreos-5')
|
||||
|
||||
@mock.patch('magnum.api.utils.get_openstack_resource')
|
||||
def test_validate_image_with_valid_image_by_id(self, mock_os_res):
|
||||
mock_image = {'name': 'fedora-21-atomic-5',
|
||||
mock_image = {'name': 'fedora-21-coreos-5',
|
||||
'id': 'e33f0988-1730-405e-8401-30cbc8535302',
|
||||
'os_distro': 'fedora-atomic'}
|
||||
'os_distro': 'fedora-coreos'}
|
||||
mock_os_res.return_value = mock_image
|
||||
mock_os_cli = mock.MagicMock()
|
||||
attr_validator.validate_image(mock_os_cli,
|
||||
@ -241,7 +241,7 @@ class TestAttrValidator(base.BaseTestCase):
|
||||
mock_os_cli = mock.MagicMock()
|
||||
self.assertRaises(exception.ImageNotFound,
|
||||
attr_validator.validate_image,
|
||||
mock_os_cli, 'fedora-21-atomic-5')
|
||||
mock_os_cli, 'fedora-21-coreos-5')
|
||||
|
||||
@mock.patch('magnum.api.utils.get_openstack_resource')
|
||||
def test_validate_image_with_nonexist_image_by_id(self, mock_os_res):
|
||||
@ -249,7 +249,7 @@ class TestAttrValidator(base.BaseTestCase):
|
||||
mock_os_cli = mock.MagicMock()
|
||||
self.assertRaises(exception.ImageNotFound,
|
||||
attr_validator.validate_image,
|
||||
mock_os_cli, 'fedora-21-atomic-5')
|
||||
mock_os_cli, 'fedora-21-coreos-5')
|
||||
|
||||
@mock.patch('magnum.api.utils.get_openstack_resource')
|
||||
def test_validate_image_with_multi_images_same_name(self, mock_os_res):
|
||||
@ -257,28 +257,28 @@ class TestAttrValidator(base.BaseTestCase):
|
||||
mock_os_cli = mock.MagicMock()
|
||||
self.assertRaises(exception.Conflict,
|
||||
attr_validator.validate_image,
|
||||
mock_os_cli, 'fedora-21-atomic-5')
|
||||
mock_os_cli, 'fedora-21-coreos-5')
|
||||
|
||||
@mock.patch('magnum.api.utils.get_openstack_resource')
|
||||
def test_validate_image_without_os_distro(self, mock_os_res):
|
||||
mock_image = {'name': 'fedora-21-atomic-5',
|
||||
mock_image = {'name': 'fedora-21-coreos-5',
|
||||
'id': 'e33f0988-1730-405e-8401-30cbc8535302'}
|
||||
mock_os_res.return_value = mock_image
|
||||
mock_os_cli = mock.MagicMock()
|
||||
self.assertRaises(exception.OSDistroFieldNotFound,
|
||||
attr_validator.validate_image,
|
||||
mock_os_cli, 'fedora-21-atomic-5')
|
||||
mock_os_cli, 'fedora-21-coreos-5')
|
||||
|
||||
@mock.patch('magnum.api.utils.get_openstack_resource')
|
||||
def test_validate_image_when_user_forbidden(self, mock_os_res):
|
||||
mock_image = {'name': 'fedora-21-atomic-5',
|
||||
mock_image = {'name': 'fedora-21-coreos-5',
|
||||
'id': 'e33f0988-1730-405e-8401-30cbc8535302',
|
||||
'os_distro': ''}
|
||||
mock_os_res.return_value = mock_image
|
||||
mock_os_cli = mock.MagicMock()
|
||||
self.assertRaises(exception.OSDistroFieldNotFound,
|
||||
attr_validator.validate_image,
|
||||
mock_os_cli, 'fedora-21-atomic-5')
|
||||
mock_os_cli, 'fedora-21-coreos-5')
|
||||
|
||||
@mock.patch('magnum.common.clients.OpenStackClients')
|
||||
def test_validate_os_resources_with_invalid_flavor(self,
|
||||
@ -355,9 +355,9 @@ class TestAttrValidator(base.BaseTestCase):
|
||||
}
|
||||
mock_keypair = mock.MagicMock()
|
||||
mock_keypair.id = 'test-keypair'
|
||||
mock_image = {'name': 'fedora-21-atomic-5',
|
||||
mock_image = {'name': 'fedora-21-coreos-5',
|
||||
'id': 'e33f0988-1730-405e-8401-30cbc8535302',
|
||||
'os_distro': 'fedora-atomic'}
|
||||
'os_distro': 'fedora-coreos'}
|
||||
mock_nova = mock.MagicMock()
|
||||
mock_nova.keypairs.get.return_value = mock_keypair
|
||||
mock_nova.images.get.return_value = mock_image
|
||||
|
@ -60,7 +60,7 @@ class TestValidation(base.BaseTestCase):
|
||||
self, mock_cluster_template_get, mock_cluster_get_by_uuid,
|
||||
mock_pecan_request):
|
||||
|
||||
cluster_type = ('vm', 'fedora-atomic', 'kubernetes')
|
||||
cluster_type = ('vm', 'fedora-coreos', 'kubernetes')
|
||||
self._test_enforce_cluster_type_supported(
|
||||
mock_cluster_template_get, mock_cluster_get_by_uuid,
|
||||
mock_pecan_request, cluster_type)
|
||||
|
@ -24,7 +24,7 @@ from pycadf import cadftaxonomy as taxonomy
|
||||
from magnum.common import exception
|
||||
from magnum.conductor.handlers import cluster_conductor
|
||||
import magnum.conf
|
||||
from magnum.drivers.k8s_fedora_atomic_v1 import driver as k8s_atomic_dr
|
||||
from magnum.drivers.k8s_fedora_coreos_v1 import driver as k8s_fcos_dr
|
||||
from magnum import objects
|
||||
from magnum.objects.fields import ClusterHealthStatus
|
||||
from magnum.objects.fields import ClusterStatus as cluster_status
|
||||
@ -410,7 +410,7 @@ class TestHandler(db_base.DbTestCase):
|
||||
@patch('heatclient.common.template_utils.get_template_contents')
|
||||
@patch('magnum.conductor.handlers.cluster_conductor.trust_manager')
|
||||
@patch('magnum.conductor.handlers.cluster_conductor.cert_manager')
|
||||
@patch('magnum.drivers.k8s_fedora_atomic_v1.driver.Driver.'
|
||||
@patch('magnum.drivers.k8s_fedora_coreos_v1.driver.Driver.'
|
||||
'_extract_template_definition')
|
||||
@patch('magnum.drivers.common.driver.Driver.get_driver')
|
||||
@patch('magnum.common.clients.OpenStackClients')
|
||||
@ -429,7 +429,7 @@ class TestHandler(db_base.DbTestCase):
|
||||
mock_poller = mock.MagicMock()
|
||||
mock_poller.poll_and_check.return_value = loopingcall.LoopingCallDone()
|
||||
mock_heat_poller_class.return_value = mock_poller
|
||||
mock_driver.return_value = k8s_atomic_dr.Driver()
|
||||
mock_driver.return_value = k8s_fcos_dr.Driver()
|
||||
mock_short_id.return_value = 'short_id'
|
||||
|
||||
mock_extract_tmpl_def.return_value = (
|
||||
@ -508,7 +508,7 @@ class TestHandler(db_base.DbTestCase):
|
||||
def test_cluster_delete(self, mock_octavia, mock_driver,
|
||||
mock_openstack_client_class, cert_manager):
|
||||
mock_octavia.return_value = False
|
||||
mock_driver.return_value = k8s_atomic_dr.Driver()
|
||||
mock_driver.return_value = k8s_fcos_dr.Driver()
|
||||
osc = mock.MagicMock()
|
||||
mock_openstack_client_class.return_value = osc
|
||||
osc.heat.side_effect = exc.HTTPNotFound
|
||||
@ -544,7 +544,7 @@ class TestHandler(db_base.DbTestCase):
|
||||
mock_openstack_client_class,
|
||||
cert_manager):
|
||||
mock_octavia.return_value = False
|
||||
mock_driver.return_value = k8s_atomic_dr.Driver()
|
||||
mock_driver.return_value = k8s_fcos_dr.Driver()
|
||||
osc = mock.MagicMock()
|
||||
mock_openstack_client_class.return_value = osc
|
||||
osc.heat.side_effect = exc.HTTPConflict
|
||||
@ -575,7 +575,7 @@ class TestHandler(db_base.DbTestCase):
|
||||
def test_cluster_delete_with_lb(self, mock_delete_lb, mock_octavia,
|
||||
mock_clients, mock_driver):
|
||||
mock_octavia.return_value = True
|
||||
mock_driver.return_value = k8s_atomic_dr.Driver()
|
||||
mock_driver.return_value = k8s_fcos_dr.Driver()
|
||||
|
||||
self.master.create()
|
||||
self.worker.create()
|
||||
|
@ -16,7 +16,6 @@ from unittest import mock
|
||||
from unittest.mock import patch
|
||||
|
||||
import magnum.conf
|
||||
from magnum.drivers.k8s_fedora_atomic_v1 import driver as k8s_dr
|
||||
from magnum.drivers.k8s_fedora_coreos_v1 import driver as k8s_fcos_dr
|
||||
from magnum import objects
|
||||
from magnum.tests import base
|
||||
@ -49,7 +48,7 @@ class TestClusterConductorWithK8s(base.TestCase):
|
||||
'volume_driver': 'volume_driver',
|
||||
'docker_volume_size': 20,
|
||||
'docker_storage_driver': 'devicemapper',
|
||||
'cluster_distro': 'fedora-atomic',
|
||||
'cluster_distro': 'fedora-coreos',
|
||||
'coe': 'kubernetes',
|
||||
'token': None,
|
||||
'http_proxy': 'http_proxy',
|
||||
@ -245,7 +244,7 @@ class TestClusterConductorWithK8s(base.TestCase):
|
||||
worker_ng = objects.NodeGroup(self.context, **self.worker_ng_dict)
|
||||
master_ng = objects.NodeGroup(self.context, **self.master_ng_dict)
|
||||
mock_objects_nodegroup_list.return_value = [master_ng, worker_ng]
|
||||
mock_driver.return_value = k8s_dr.Driver()
|
||||
mock_driver.return_value = k8s_fcos_dr.Driver()
|
||||
|
||||
mock_get_subnet.return_value = self.fixed_subnet_cidr
|
||||
|
||||
@ -440,7 +439,7 @@ class TestClusterConductorWithK8s(base.TestCase):
|
||||
worker_ng = objects.NodeGroup(self.context, **self.worker_ng_dict)
|
||||
master_ng = objects.NodeGroup(self.context, **self.master_ng_dict)
|
||||
mock_objects_nodegroup_list.return_value = [master_ng, worker_ng]
|
||||
mock_driver.return_value = k8s_dr.Driver()
|
||||
mock_driver.return_value = k8s_fcos_dr.Driver()
|
||||
mock_get_subnet.return_value = self.fixed_subnet_cidr
|
||||
|
||||
CONF.set_override('swift_region',
|
||||
@ -593,7 +592,7 @@ class TestClusterConductorWithK8s(base.TestCase):
|
||||
mock_resp = mock.MagicMock()
|
||||
mock_resp.text = expected_result
|
||||
mock_get.return_value = mock_resp
|
||||
mock_driver.return_value = k8s_dr.Driver()
|
||||
mock_driver.return_value = k8s_fcos_dr.Driver()
|
||||
cluster = objects.Cluster(self.context, **self.cluster_dict)
|
||||
del self.worker_ng_dict['image_id']
|
||||
worker_ng = objects.NodeGroup(self.context, **self.worker_ng_dict)
|
||||
@ -976,7 +975,7 @@ class TestClusterConductorWithK8s(base.TestCase):
|
||||
mock_objects_cluster_template_get_by_uuid,
|
||||
mock_get,
|
||||
mock_get_subnet):
|
||||
mock_driver.return_value = k8s_dr.Driver()
|
||||
mock_driver.return_value = k8s_fcos_dr.Driver()
|
||||
self._test_extract_template_definition(
|
||||
mock_generate_csr_and_key,
|
||||
mock_sign_node_certificate,
|
||||
@ -1004,7 +1003,7 @@ class TestClusterConductorWithK8s(base.TestCase):
|
||||
mock_objects_cluster_template_get_by_uuid,
|
||||
mock_get,
|
||||
mock_get_subnet):
|
||||
mock_driver.return_value = k8s_dr.Driver()
|
||||
mock_driver.return_value = k8s_fcos_dr.Driver()
|
||||
self._test_extract_template_definition(
|
||||
mock_generate_csr_and_key,
|
||||
mock_sign_node_certificate,
|
||||
@ -1032,7 +1031,7 @@ class TestClusterConductorWithK8s(base.TestCase):
|
||||
mock_objects_cluster_template_get_by_uuid,
|
||||
mock_get,
|
||||
mock_get_subnet):
|
||||
mock_driver.return_value = k8s_dr.Driver()
|
||||
mock_driver.return_value = k8s_fcos_dr.Driver()
|
||||
self._test_extract_template_definition(
|
||||
mock_generate_csr_and_key,
|
||||
mock_sign_node_certificate,
|
||||
@ -1060,7 +1059,7 @@ class TestClusterConductorWithK8s(base.TestCase):
|
||||
mock_objects_cluster_template_get_by_uuid,
|
||||
mock_get,
|
||||
mock_get_subnet):
|
||||
mock_driver.return_value = k8s_dr.Driver()
|
||||
mock_driver.return_value = k8s_fcos_dr.Driver()
|
||||
self._test_extract_template_definition(
|
||||
mock_generate_csr_and_key,
|
||||
mock_sign_node_certificate,
|
||||
@ -1102,7 +1101,7 @@ class TestClusterConductorWithK8s(base.TestCase):
|
||||
worker_ng = objects.NodeGroup(self.context, **self.worker_ng_dict)
|
||||
master_ng = objects.NodeGroup(self.context, **self.master_ng_dict)
|
||||
mock_objects_nodegroup_list.return_value = [master_ng, worker_ng]
|
||||
mock_driver.return_value = k8s_dr.Driver()
|
||||
mock_driver.return_value = k8s_fcos_dr.Driver()
|
||||
|
||||
CONF.set_override('etcd_discovery_service_endpoint_format',
|
||||
'http://etcd/test?size=%(size)d',
|
||||
@ -1214,7 +1213,7 @@ class TestClusterConductorWithK8s(base.TestCase):
|
||||
|
||||
@patch('magnum.common.short_id.generate_id')
|
||||
@patch('heatclient.common.template_utils.get_template_contents')
|
||||
@patch('magnum.drivers.k8s_fedora_atomic_v1.driver.Driver.'
|
||||
@patch('magnum.drivers.k8s_fedora_coreos_v1.driver.Driver.'
|
||||
'_extract_template_definition')
|
||||
@patch('magnum.common.clients.OpenStackClients')
|
||||
def test_create_stack(self,
|
||||
@ -1239,8 +1238,8 @@ class TestClusterConductorWithK8s(base.TestCase):
|
||||
mock_cluster = mock.MagicMock()
|
||||
mock_cluster.name = dummy_cluster_name
|
||||
|
||||
k8s_dr.Driver().create_cluster(self.context, mock_cluster,
|
||||
expected_timeout)
|
||||
k8s_fcos_dr.Driver().create_cluster(self.context, mock_cluster,
|
||||
expected_timeout)
|
||||
|
||||
expected_args = {
|
||||
'stack_name': expected_stack_name,
|
||||
@ -1254,7 +1253,7 @@ class TestClusterConductorWithK8s(base.TestCase):
|
||||
|
||||
@patch('magnum.common.short_id.generate_id')
|
||||
@patch('heatclient.common.template_utils.get_template_contents')
|
||||
@patch('magnum.drivers.k8s_fedora_atomic_v1.driver.Driver.'
|
||||
@patch('magnum.drivers.k8s_fedora_coreos_v1.driver.Driver.'
|
||||
'_extract_template_definition')
|
||||
@patch('magnum.common.clients.OpenStackClients')
|
||||
def test_create_stack_no_timeout_specified(
|
||||
@ -1280,7 +1279,7 @@ class TestClusterConductorWithK8s(base.TestCase):
|
||||
mock_cluster = mock.MagicMock()
|
||||
mock_cluster.name = dummy_cluster_name
|
||||
|
||||
k8s_dr.Driver().create_cluster(self.context, mock_cluster, None)
|
||||
k8s_fcos_dr.Driver().create_cluster(self.context, mock_cluster, None)
|
||||
|
||||
expected_args = {
|
||||
'stack_name': expected_stack_name,
|
||||
@ -1294,7 +1293,7 @@ class TestClusterConductorWithK8s(base.TestCase):
|
||||
|
||||
@patch('magnum.common.short_id.generate_id')
|
||||
@patch('heatclient.common.template_utils.get_template_contents')
|
||||
@patch('magnum.drivers.k8s_fedora_atomic_v1.driver.Driver.'
|
||||
@patch('magnum.drivers.k8s_fedora_coreos_v1.driver.Driver.'
|
||||
'_extract_template_definition')
|
||||
@patch('magnum.common.clients.OpenStackClients')
|
||||
def test_create_stack_timeout_is_zero(
|
||||
@ -1321,8 +1320,8 @@ class TestClusterConductorWithK8s(base.TestCase):
|
||||
mock_cluster = mock.MagicMock()
|
||||
mock_cluster.name = dummy_cluster_name
|
||||
|
||||
k8s_dr.Driver().create_cluster(self.context, mock_cluster,
|
||||
cluster_timeout)
|
||||
k8s_fcos_dr.Driver().create_cluster(self.context, mock_cluster,
|
||||
cluster_timeout)
|
||||
|
||||
expected_args = {
|
||||
'stack_name': expected_stack_name,
|
||||
@ -1335,7 +1334,7 @@ class TestClusterConductorWithK8s(base.TestCase):
|
||||
mock_heat_client.stacks.create.assert_called_once_with(**expected_args)
|
||||
|
||||
@patch('heatclient.common.template_utils.get_template_contents')
|
||||
@patch('magnum.drivers.k8s_fedora_atomic_v1.driver.Driver.'
|
||||
@patch('magnum.drivers.k8s_fedora_coreos_v1.driver.Driver.'
|
||||
'_extract_template_definition')
|
||||
@patch('magnum.common.clients.OpenStackClients')
|
||||
@patch('magnum.objects.ClusterTemplate.get_by_uuid')
|
||||
@ -1364,7 +1363,7 @@ class TestClusterConductorWithK8s(base.TestCase):
|
||||
master_ng = objects.NodeGroup(self.context, **self.master_ng_dict)
|
||||
mock_objects_nodegroup_list.return_value = [master_ng, worker_ng]
|
||||
|
||||
k8s_dr.Driver().update_cluster({}, mock_cluster)
|
||||
k8s_fcos_dr.Driver().update_cluster({}, mock_cluster)
|
||||
|
||||
expected_args = {
|
||||
'parameters': {'number_of_minions': 2},
|
||||
|
@ -41,7 +41,7 @@ def get_test_cluster_template(**kw):
|
||||
'docker_volume_size': kw.get('docker_volume_size', 20),
|
||||
'docker_storage_driver': kw.get('docker_storage_driver',
|
||||
'devicemapper'),
|
||||
'cluster_distro': kw.get('cluster_distro', 'fedora-atomic'),
|
||||
'cluster_distro': kw.get('cluster_distro', 'fedora-coreos'),
|
||||
'coe': kw.get('coe', 'kubernetes'),
|
||||
'created_at': kw.get('created_at'),
|
||||
'updated_at': kw.get('updated_at'),
|
||||
|
@ -18,7 +18,7 @@ from oslo_utils import uuidutils
|
||||
|
||||
import magnum.conf
|
||||
from magnum.drivers.heat import driver as heat_driver
|
||||
from magnum.drivers.k8s_fedora_atomic_v1 import driver as k8s_atomic_dr
|
||||
from magnum.drivers.k8s_fedora_coreos_v1 import driver as k8s_fcos_dr
|
||||
from magnum import objects
|
||||
from magnum.objects.fields import ClusterStatus as cluster_status
|
||||
from magnum.tests import base
|
||||
@ -128,10 +128,10 @@ class TestHeatPoller(base.TestCase):
|
||||
cluster_template = objects.ClusterTemplate(self.context,
|
||||
**cluster_template_dict)
|
||||
mock_retrieve_cluster_template.return_value = cluster_template
|
||||
mock_driver.return_value = k8s_atomic_dr.Driver()
|
||||
mock_driver.return_value = k8s_fcos_dr.Driver()
|
||||
poller = heat_driver.HeatPoller(mock_openstack_client,
|
||||
mock.MagicMock(), cluster,
|
||||
k8s_atomic_dr.Driver())
|
||||
k8s_fcos_dr.Driver())
|
||||
poller.get_version_info = mock.MagicMock()
|
||||
return (cluster, poller)
|
||||
|
||||
|
@ -1,88 +0,0 @@
|
||||
# Copyright (c) 2018 European Organization for Nuclear Research.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from unittest.mock import patch
|
||||
|
||||
from magnum.common import exception
|
||||
from magnum.drivers.k8s_fedora_atomic_v1 import driver
|
||||
from magnum.tests.unit.db import base
|
||||
from magnum.tests.unit.objects import utils as obj_utils
|
||||
|
||||
|
||||
class K8sFedoraAtomicV1DriverTest(base.DbTestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(K8sFedoraAtomicV1DriverTest, self).setUp()
|
||||
self.driver = driver.Driver()
|
||||
self.cluster_template = obj_utils.create_test_cluster_template(
|
||||
self.context, uuid='94889aa4-e686-11e9-81b4-2a2ae2dbcce4',
|
||||
name='test_2', id=2, labels={'kube_tag': 'v1.14.7'},
|
||||
image_id='test-image2')
|
||||
self.cluster_obj = obj_utils.create_test_cluster(
|
||||
self.context, name='cluster_example_A', image_id='test-image1')
|
||||
self.cluster_obj.refresh()
|
||||
self.nodegroup_obj = obj_utils.create_test_nodegroup(
|
||||
self.context, name='test_ng', cluster_id=self.cluster_obj.uuid,
|
||||
uuid='27e3153e-d5bf-4b7e-b517-fb518e17f34c',
|
||||
project_id=self.cluster_obj.project_id, is_default=False,
|
||||
image_id='test-image1')
|
||||
self.nodegroup_obj.refresh()
|
||||
|
||||
@patch('magnum.common.keystone.KeystoneClientV3')
|
||||
@patch('magnum.common.clients.OpenStackClients')
|
||||
def test_upgrade_not_supported(self, mock_osc, mock_keystone):
|
||||
self.assertRaises(exception.NotSupported,
|
||||
self.driver.upgrade_cluster, self.context,
|
||||
self.cluster_obj, self.cluster_template, 1,
|
||||
self.nodegroup_obj)
|
||||
|
||||
@patch('magnum.common.keystone.KeystoneClientV3')
|
||||
@patch('magnum.common.clients.OpenStackClients')
|
||||
def test_downgrade_not_supported(self, mock_osc, mock_keystone):
|
||||
# Scenario, a user creates a nodegroup with kube_tag
|
||||
# greater that the one set in cluster's template. Check
|
||||
# that downgrading is not supported.
|
||||
self.nodegroup_obj.labels = {'kube_tag': 'v1.14.7'}
|
||||
self.nodegroup_obj.save()
|
||||
self.cluster_template.labels = {'kube_tag': 'v1.14.3'}
|
||||
self.cluster_template.save()
|
||||
self.assertRaises(exception.NotSupported,
|
||||
self.driver.upgrade_cluster, self.context,
|
||||
self.cluster_obj, self.cluster_template, 1,
|
||||
self.nodegroup_obj)
|
||||
|
||||
@patch('magnum.common.keystone.KeystoneClientV3')
|
||||
@patch('magnum.common.clients.OpenStackClients')
|
||||
def test_upgrade_invalid_ct(self, mock_osc, mock_keystone):
|
||||
# Scenario, a user creates a nodegroup with kube_tag
|
||||
# greater that the one set in cluster's template. Check
|
||||
# that downgrading is not supported.
|
||||
self.cluster_template.labels = {}
|
||||
self.cluster_template.save()
|
||||
self.assertRaises(exception.NotSupported,
|
||||
self.driver.upgrade_cluster, self.context,
|
||||
self.cluster_obj, self.cluster_template, 1,
|
||||
self.nodegroup_obj)
|
||||
|
||||
@patch('magnum.common.keystone.KeystoneClientV3')
|
||||
@patch('magnum.common.clients.OpenStackClients')
|
||||
def test_ca_rotate_not_supported(self, mock_osc, mock_keystone):
|
||||
self.cluster_template.cluster_distro = 'fedora-atomic'
|
||||
self.cluster_template.save()
|
||||
mock_keystone.is_octavia_enabled.return_value = False
|
||||
self.assertRaises(exception.NotSupported,
|
||||
self.driver.rotate_ca_certificate,
|
||||
self.context,
|
||||
self.cluster_obj)
|
@ -19,8 +19,6 @@ from magnum.common import exception
|
||||
import magnum.conf
|
||||
from magnum.drivers.common import driver
|
||||
from magnum.drivers.heat import template_def as cmn_tdef
|
||||
from magnum.drivers.k8s_fedora_atomic_v1 import driver as k8sa_dr
|
||||
from magnum.drivers.k8s_fedora_atomic_v1 import template_def as k8sa_tdef
|
||||
from magnum.drivers.k8s_fedora_coreos_v1 import driver as k8s_fcos_dr
|
||||
from magnum.drivers.k8s_fedora_coreos_v1 import template_def as k8s_fcos_tdef
|
||||
from magnum.tests import base
|
||||
@ -46,17 +44,6 @@ class TemplateDefinitionTestCase(base.TestCase):
|
||||
self.assertEqual(expected_entry_point, actual_entry_point)
|
||||
expected_entry_point.load.assert_called_once()
|
||||
|
||||
@mock.patch('magnum.drivers.common.driver.Driver.get_driver')
|
||||
def test_get_vm_atomic_kubernetes_definition(self, mock_driver):
|
||||
mock_driver.return_value = k8sa_dr.Driver()
|
||||
cluster_driver = driver.Driver.get_driver('vm',
|
||||
'fedora-atomic',
|
||||
'kubernetes')
|
||||
definition = cluster_driver.get_template_definition()
|
||||
|
||||
self.assertIsInstance(definition,
|
||||
k8sa_tdef.AtomicK8sTemplateDefinition)
|
||||
|
||||
@mock.patch('magnum.drivers.common.driver.Driver.get_driver')
|
||||
def test_get_vm_fcos_kubernetes_definition(self, mock_driver):
|
||||
mock_driver.return_value = k8s_fcos_dr.Driver()
|
||||
@ -119,7 +106,7 @@ class TemplateDefinitionTestCase(base.TestCase):
|
||||
self.assertIsNone(value)
|
||||
|
||||
def test_add_output_with_mapping_type(self):
|
||||
definition = k8sa_dr.Driver().get_template_definition()
|
||||
definition = k8s_fcos_dr.Driver().get_template_definition()
|
||||
|
||||
mock_args = [1, 3, 4]
|
||||
mock_kwargs = {'cluster_attr': 'test'}
|
||||
@ -307,10 +294,10 @@ class BaseK8sTemplateDefinitionTestCase(base.TestCase, metaclass=abc.ABCMeta):
|
||||
self.assertEqual(expected_address, actual)
|
||||
|
||||
|
||||
class AtomicK8sTemplateDefinitionTestCase(BaseK8sTemplateDefinitionTestCase):
|
||||
class FCOSK8sTemplateDefinitionTestCase(BaseK8sTemplateDefinitionTestCase):
|
||||
|
||||
def get_definition(self):
|
||||
return k8sa_dr.Driver().get_template_definition()
|
||||
return k8s_fcos_dr.Driver().get_template_definition()
|
||||
|
||||
@mock.patch('magnum.common.clients.OpenStackClients')
|
||||
@mock.patch('magnum.drivers.heat.template_def.TemplateDefinition'
|
||||
@ -325,7 +312,7 @@ class AtomicK8sTemplateDefinitionTestCase(BaseK8sTemplateDefinitionTestCase):
|
||||
mock_scale_manager = mock.MagicMock()
|
||||
mock_scale_manager.get_removal_nodes.return_value = removal_nodes
|
||||
|
||||
definition = k8sa_tdef.AtomicK8sTemplateDefinition()
|
||||
definition = k8s_fcos_tdef.FCOSK8sTemplateDefinition()
|
||||
|
||||
scale_params = definition.get_scale_params(mock_context, mock_cluster,
|
||||
node_count,
|
||||
@ -342,8 +329,8 @@ class AtomicK8sTemplateDefinitionTestCase(BaseK8sTemplateDefinitionTestCase):
|
||||
@mock.patch('magnum.common.neutron.get_fixed_network_name')
|
||||
@mock.patch('magnum.common.keystone.is_octavia_enabled')
|
||||
@mock.patch('magnum.common.clients.OpenStackClients')
|
||||
@mock.patch('magnum.drivers.k8s_fedora_atomic_v1.template_def'
|
||||
'.AtomicK8sTemplateDefinition.get_discovery_url')
|
||||
@mock.patch('magnum.drivers.k8s_fedora_coreos_v1.template_def'
|
||||
'.FCOSK8sTemplateDefinition.get_discovery_url')
|
||||
@mock.patch('magnum.drivers.heat.template_def.BaseTemplateDefinition'
|
||||
'.get_params')
|
||||
@mock.patch('magnum.drivers.heat.template_def.TemplateDefinition'
|
||||
@ -575,7 +562,7 @@ class AtomicK8sTemplateDefinitionTestCase(BaseK8sTemplateDefinitionTestCase):
|
||||
octavia_lb_healthcheck = mock_cluster.labels.get(
|
||||
'octavia_lb_healthcheck')
|
||||
|
||||
k8s_def = k8sa_tdef.AtomicK8sTemplateDefinition()
|
||||
k8s_def = k8s_fcos_tdef.FCOSK8sTemplateDefinition()
|
||||
|
||||
k8s_def.get_params(mock_context, mock_cluster_template, mock_cluster)
|
||||
|
||||
@ -709,7 +696,7 @@ class AtomicK8sTemplateDefinitionTestCase(BaseK8sTemplateDefinitionTestCase):
|
||||
|
||||
mock_cluster_template.volume_driver = 'cinder'
|
||||
mock_cluster.labels = {'cloud_provider_enabled': 'false'}
|
||||
k8s_def = k8sa_tdef.AtomicK8sTemplateDefinition()
|
||||
k8s_def = k8s_fcos_tdef.FCOSK8sTemplateDefinition()
|
||||
self.assertRaises(
|
||||
exception.InvalidParameterValue,
|
||||
k8s_def.get_params,
|
||||
@ -731,8 +718,8 @@ class AtomicK8sTemplateDefinitionTestCase(BaseK8sTemplateDefinitionTestCase):
|
||||
@mock.patch('magnum.common.neutron.get_external_network_id')
|
||||
@mock.patch('magnum.common.keystone.is_octavia_enabled')
|
||||
@mock.patch('magnum.common.clients.OpenStackClients')
|
||||
@mock.patch('magnum.drivers.k8s_fedora_atomic_v1.template_def'
|
||||
'.AtomicK8sTemplateDefinition.get_discovery_url')
|
||||
@mock.patch('magnum.drivers.k8s_fedora_coreos_v1.template_def'
|
||||
'.FCOSK8sTemplateDefinition.get_discovery_url')
|
||||
@mock.patch('magnum.drivers.heat.template_def.BaseTemplateDefinition'
|
||||
'.get_params')
|
||||
@mock.patch('magnum.drivers.heat.template_def.TemplateDefinition'
|
||||
@ -777,7 +764,7 @@ class AtomicK8sTemplateDefinitionTestCase(BaseK8sTemplateDefinitionTestCase):
|
||||
mock_osc.cinder_region_name.return_value = 'RegionOne'
|
||||
mock_osc_class.return_value = mock_osc
|
||||
|
||||
k8s_def = k8sa_tdef.AtomicK8sTemplateDefinition()
|
||||
k8s_def = k8s_fcos_tdef.FCOSK8sTemplateDefinition()
|
||||
k8s_def.get_params(mock_context, mock_cluster_template, mock_cluster)
|
||||
|
||||
actual_params = mock_get_params.call_args[1]["extra_params"]
|
||||
@ -793,8 +780,8 @@ class AtomicK8sTemplateDefinitionTestCase(BaseK8sTemplateDefinitionTestCase):
|
||||
@mock.patch('magnum.common.neutron.get_subnet')
|
||||
@mock.patch('magnum.common.keystone.is_octavia_enabled')
|
||||
@mock.patch('magnum.common.clients.OpenStackClients')
|
||||
@mock.patch('magnum.drivers.k8s_fedora_atomic_v1.template_def'
|
||||
'.AtomicK8sTemplateDefinition.get_discovery_url')
|
||||
@mock.patch('magnum.drivers.k8s_fedora_coreos_v1.template_def'
|
||||
'.FCOSK8sTemplateDefinition.get_discovery_url')
|
||||
@mock.patch('magnum.drivers.heat.template_def.BaseTemplateDefinition'
|
||||
'.get_params')
|
||||
@mock.patch('magnum.drivers.heat.template_def.TemplateDefinition'
|
||||
@ -837,7 +824,7 @@ class AtomicK8sTemplateDefinitionTestCase(BaseK8sTemplateDefinitionTestCase):
|
||||
mock_osc.cinder_region_name.return_value = 'RegionOne'
|
||||
mock_osc_class.return_value = mock_osc
|
||||
|
||||
k8s_def = k8sa_tdef.AtomicK8sTemplateDefinition()
|
||||
k8s_def = k8s_fcos_tdef.FCOSK8sTemplateDefinition()
|
||||
|
||||
self.assertRaises(
|
||||
exception.InvalidParameterValue,
|
||||
@ -850,8 +837,8 @@ class AtomicK8sTemplateDefinitionTestCase(BaseK8sTemplateDefinitionTestCase):
|
||||
@mock.patch('magnum.common.neutron.get_subnet')
|
||||
@mock.patch('magnum.common.keystone.is_octavia_enabled')
|
||||
@mock.patch('magnum.common.clients.OpenStackClients')
|
||||
@mock.patch('magnum.drivers.k8s_fedora_atomic_v1.template_def'
|
||||
'.AtomicK8sTemplateDefinition.get_discovery_url')
|
||||
@mock.patch('magnum.drivers.k8s_fedora_coreos_v1.template_def'
|
||||
'.FCOSK8sTemplateDefinition.get_discovery_url')
|
||||
@mock.patch('magnum.drivers.heat.template_def.BaseTemplateDefinition'
|
||||
'.get_params')
|
||||
@mock.patch('magnum.drivers.heat.template_def.TemplateDefinition'
|
||||
@ -894,7 +881,7 @@ class AtomicK8sTemplateDefinitionTestCase(BaseK8sTemplateDefinitionTestCase):
|
||||
mock_osc.cinder_region_name.return_value = 'RegionOne'
|
||||
mock_osc_class.return_value = mock_osc
|
||||
|
||||
k8s_def = k8sa_tdef.AtomicK8sTemplateDefinition()
|
||||
k8s_def = k8s_fcos_tdef.FCOSK8sTemplateDefinition()
|
||||
k8s_def.get_params(mock_context, mock_cluster_template, mock_cluster)
|
||||
|
||||
actual_params = mock_get_params.call_args[1]["extra_params"]
|
||||
@ -1140,7 +1127,7 @@ class AtomicK8sTemplateDefinitionTestCase(BaseK8sTemplateDefinitionTestCase):
|
||||
octavia_lb_healthcheck = mock_cluster.labels.get(
|
||||
'octavia_lb_healthcheck')
|
||||
|
||||
k8s_def = k8sa_tdef.AtomicK8sTemplateDefinition()
|
||||
k8s_def = k8s_fcos_tdef.FCOSK8sTemplateDefinition()
|
||||
|
||||
k8s_def.get_params(mock_context, mock_cluster_template, mock_cluster)
|
||||
|
||||
@ -1282,14 +1269,14 @@ class AtomicK8sTemplateDefinitionTestCase(BaseK8sTemplateDefinitionTestCase):
|
||||
mock_resp.text = expected_result
|
||||
mock_get.return_value = mock_resp
|
||||
|
||||
k8s_def = k8sa_tdef.AtomicK8sTemplateDefinition()
|
||||
k8s_def = k8s_fcos_tdef.FCOSK8sTemplateDefinition()
|
||||
k8s_def.validate_discovery_url('http://etcd/test', 1)
|
||||
|
||||
@mock.patch('requests.get')
|
||||
def test_k8s_validate_discovery_url_fail(self, mock_get):
|
||||
mock_get.side_effect = req_exceptions.RequestException()
|
||||
|
||||
k8s_def = k8sa_tdef.AtomicK8sTemplateDefinition()
|
||||
k8s_def = k8s_fcos_tdef.FCOSK8sTemplateDefinition()
|
||||
self.assertRaises(exception.GetClusterSizeFailed,
|
||||
k8s_def.validate_discovery_url,
|
||||
'http://etcd/test', 1)
|
||||
@ -1300,7 +1287,7 @@ class AtomicK8sTemplateDefinitionTestCase(BaseK8sTemplateDefinitionTestCase):
|
||||
mock_resp.text = str('{"action":"get"}')
|
||||
mock_get.return_value = mock_resp
|
||||
|
||||
k8s_def = k8sa_tdef.AtomicK8sTemplateDefinition()
|
||||
k8s_def = k8s_fcos_tdef.FCOSK8sTemplateDefinition()
|
||||
self.assertRaises(exception.InvalidClusterDiscoveryURL,
|
||||
k8s_def.validate_discovery_url,
|
||||
'http://etcd/test', 1)
|
||||
@ -1313,7 +1300,7 @@ class AtomicK8sTemplateDefinitionTestCase(BaseK8sTemplateDefinitionTestCase):
|
||||
mock_resp.text = expected_result
|
||||
mock_get.return_value = mock_resp
|
||||
|
||||
k8s_def = k8sa_tdef.AtomicK8sTemplateDefinition()
|
||||
k8s_def = k8s_fcos_tdef.FCOSK8sTemplateDefinition()
|
||||
self.assertRaises(exception.InvalidClusterSize,
|
||||
k8s_def.validate_discovery_url,
|
||||
'http://etcd/test', 5)
|
||||
@ -1332,7 +1319,7 @@ class AtomicK8sTemplateDefinitionTestCase(BaseK8sTemplateDefinitionTestCase):
|
||||
mock_cluster.master_count = 10
|
||||
mock_cluster.discovery_url = None
|
||||
|
||||
k8s_def = k8sa_tdef.AtomicK8sTemplateDefinition()
|
||||
k8s_def = k8s_fcos_tdef.FCOSK8sTemplateDefinition()
|
||||
discovery_url = k8s_def.get_discovery_url(mock_cluster)
|
||||
|
||||
mock_get.assert_called_once_with('http://etcd/test?size=10',
|
||||
@ -1350,13 +1337,13 @@ class AtomicK8sTemplateDefinitionTestCase(BaseK8sTemplateDefinitionTestCase):
|
||||
mock_cluster.master_count = 10
|
||||
mock_cluster.discovery_url = None
|
||||
|
||||
k8s_def = k8sa_tdef.AtomicK8sTemplateDefinition()
|
||||
k8s_def = k8s_fcos_tdef.FCOSK8sTemplateDefinition()
|
||||
|
||||
self.assertRaises(exception.GetDiscoveryUrlFailed,
|
||||
k8s_def.get_discovery_url, mock_cluster)
|
||||
|
||||
def test_k8s_get_heat_param(self):
|
||||
k8s_def = k8sa_tdef.AtomicK8sTemplateDefinition()
|
||||
k8s_def = k8s_fcos_tdef.FCOSK8sTemplateDefinition()
|
||||
|
||||
k8s_def.add_nodegroup_params(self.mock_cluster)
|
||||
heat_param = k8s_def.get_heat_param(nodegroup_attr='node_count',
|
||||
@ -1378,7 +1365,7 @@ class AtomicK8sTemplateDefinitionTestCase(BaseK8sTemplateDefinitionTestCase):
|
||||
|
||||
self.assertRaises(
|
||||
exception.InvalidDiscoveryURL,
|
||||
k8sa_tdef.AtomicK8sTemplateDefinition().get_discovery_url,
|
||||
k8s_fcos_tdef.FCOSK8sTemplateDefinition().get_discovery_url,
|
||||
fake_cluster)
|
||||
|
||||
def _test_update_outputs_api_address(self, template_definition,
|
||||
@ -1412,7 +1399,7 @@ class AtomicK8sTemplateDefinitionTestCase(BaseK8sTemplateDefinitionTestCase):
|
||||
'port': port,
|
||||
}
|
||||
|
||||
template_definition = k8sa_tdef.AtomicK8sTemplateDefinition()
|
||||
template_definition = k8s_fcos_tdef.FCOSK8sTemplateDefinition()
|
||||
self._test_update_outputs_api_address(template_definition, params)
|
||||
|
||||
def test_update_k8s_outputs_if_cluster_template_is_secure(self):
|
||||
@ -1424,7 +1411,7 @@ class AtomicK8sTemplateDefinitionTestCase(BaseK8sTemplateDefinitionTestCase):
|
||||
'address': address,
|
||||
'port': port,
|
||||
}
|
||||
template_definition = k8sa_tdef.AtomicK8sTemplateDefinition()
|
||||
template_definition = k8s_fcos_tdef.FCOSK8sTemplateDefinition()
|
||||
self._test_update_outputs_api_address(template_definition, params,
|
||||
tls=False)
|
||||
|
||||
@ -1457,7 +1444,7 @@ class AtomicK8sTemplateDefinitionTestCase(BaseK8sTemplateDefinitionTestCase):
|
||||
'port': port,
|
||||
}
|
||||
|
||||
template_definition = k8sa_tdef.AtomicK8sTemplateDefinition()
|
||||
template_definition = k8s_fcos_tdef.FCOSK8sTemplateDefinition()
|
||||
self._test_update_outputs_none_api_address(template_definition, params)
|
||||
|
||||
def test_update_outputs_master_address(self):
|
||||
|
@ -0,0 +1,4 @@
|
||||
---
|
||||
upgrade:
|
||||
- |
|
||||
``k8s_fedora_atomic_v1`` driver has been dropped.
|
@ -51,7 +51,6 @@ oslo.policy.policies =
|
||||
magnum = magnum.common.policies:list_rules
|
||||
|
||||
magnum.drivers =
|
||||
k8s_fedora_atomic_v1 = magnum.drivers.k8s_fedora_atomic_v1.driver:Driver
|
||||
k8s_fedora_coreos_v1 = magnum.drivers.k8s_fedora_coreos_v1.driver:Driver
|
||||
|
||||
magnum.database.migration_backend =
|
||||
|
Loading…
Reference in New Issue
Block a user