[DNM] Operator test
Signed-off-by: Ruslan Aliev <raliev@mirantis.com> Change-Id: I76fb41062d152bf360a85d781c19ab5b204769b8
This commit is contained in:
parent
5df69442b0
commit
8f3a758857
|
@ -122,7 +122,7 @@ class Armada(object):
|
|||
|
||||
# TODO: (gardlt) we need to break up this func into
|
||||
# a more cleaner format
|
||||
self.pre_flight_ops()
|
||||
#self.pre_flight_ops()
|
||||
|
||||
manifest_data = self.manifest.get(const.KEYWORD_DATA, {})
|
||||
prefix = manifest_data.get(const.KEYWORD_PREFIX)
|
||||
|
|
|
@ -60,6 +60,8 @@ class ChartDeploy(object):
|
|||
release = chart.get('release')
|
||||
release_name = r.release_prefixer(prefix, release)
|
||||
release_id = helm.HelmReleaseId(namespace, release_name)
|
||||
LOG.info('Processing raw chart %s', ch)
|
||||
LOG.info('Processing raw manifest %s', self.manifest)
|
||||
source_dir = chart['source_dir']
|
||||
source_directory = os.path.join(*source_dir)
|
||||
LOG.info('Processing Chart, release=%s', release_id)
|
||||
|
@ -151,14 +153,42 @@ class ChartDeploy(object):
|
|||
LOG.info(
|
||||
"Upgrading release=%s, wait=%s, "
|
||||
"timeout=%ss", release_id, native_wait_enabled, timer)
|
||||
self.helm.upgrade_release(
|
||||
source_directory,
|
||||
release_id,
|
||||
disable_hooks=disable_hooks,
|
||||
values=values,
|
||||
wait=native_wait_enabled,
|
||||
timeout=timer,
|
||||
force=force)
|
||||
self.helm.k8s.patch_custom_resource(
|
||||
"armada.airshipit.io",
|
||||
"v1",
|
||||
release_id.namespace,
|
||||
"armadacharts",
|
||||
release_id.name,
|
||||
{
|
||||
'apiVersion': 'armada.airshipit.io/v1',
|
||||
'kind': 'ArmadaChart',
|
||||
'metadata': {
|
||||
'labels': {
|
||||
'armada.airshipit.io/release-name': release_id.name
|
||||
},
|
||||
'name': release_id.name,
|
||||
'namespace': release_id.namespace,
|
||||
'data': {
|
||||
'chart_name': chart_name,
|
||||
'namespace': namespace,
|
||||
'release': release_id.name,
|
||||
'source': {
|
||||
'location': chart['source']['location'],
|
||||
},
|
||||
'values': values,
|
||||
'wait': chart.get('wait', {})
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
# self.helm.upgrade_release(
|
||||
# source_directory,
|
||||
# release_id,
|
||||
# disable_hooks=disable_hooks,
|
||||
# values=values,
|
||||
# wait=native_wait_enabled,
|
||||
# timeout=timer,
|
||||
# force=force)
|
||||
|
||||
LOG.info('Upgrade completed')
|
||||
result['upgrade'] = release_id
|
||||
|
@ -171,12 +201,42 @@ class ChartDeploy(object):
|
|||
LOG.info(
|
||||
"Installing release=%s, wait=%s, "
|
||||
"timeout=%ss", release_id, native_wait_enabled, timer)
|
||||
self.helm.install_release(
|
||||
source_directory,
|
||||
release_id,
|
||||
values=values,
|
||||
wait=native_wait_enabled,
|
||||
timeout=timer)
|
||||
|
||||
self.helm.k8s.create_custom_resource(
|
||||
"armada.airshipit.io",
|
||||
"v1",
|
||||
release_id.namespace,
|
||||
"armadacharts",
|
||||
{
|
||||
'apiVersion': 'armada.airshipit.io/v1',
|
||||
'kind': 'ArmadaChart',
|
||||
'metadata': {
|
||||
'labels': {
|
||||
'armada.airshipit.io/release-name': release_id.name
|
||||
},
|
||||
'name': release_id.name,
|
||||
'namespace': release_id.namespace,
|
||||
'data': {
|
||||
'chart_name': chart_name,
|
||||
'namespace': namespace,
|
||||
'release': release_id.name,
|
||||
'source': {
|
||||
'location': chart['source']['location'],
|
||||
},
|
||||
'values': values,
|
||||
'wait': chart.get('wait', {})
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
# self.helm.install_release(
|
||||
# source_directory,
|
||||
# release_id,
|
||||
# values=values,
|
||||
# wait=native_wait_enabled,
|
||||
# timeout=timer)
|
||||
|
||||
LOG.info('Install completed')
|
||||
result['install'] = release_id
|
||||
|
@ -240,21 +300,27 @@ class ChartDeploy(object):
|
|||
|
||||
# Wait
|
||||
timer = int(round(deadline - time.time()))
|
||||
chart_wait.wait(timer)
|
||||
LOG.info('Starting to wait')
|
||||
self.helm.k8s.wait_custom_resource("armada.airshipit.io",
|
||||
"v1",
|
||||
release_id.namespace,
|
||||
"armadacharts",
|
||||
"armada.airshipit.io/release-name="+release_id.name)
|
||||
#chart_wait.wait(timer)
|
||||
|
||||
# Test
|
||||
just_deployed = ('install' in result) or ('upgrade' in result)
|
||||
last_test_passed = old_release and r.get_last_test_result(old_release)
|
||||
|
||||
test_handler = Test(
|
||||
chart, release_id, self.helm, cg_test_charts=cg_test_all_charts)
|
||||
|
||||
run_test = test_handler.test_enabled and (
|
||||
just_deployed or not last_test_passed)
|
||||
if run_test:
|
||||
with metrics.CHART_TEST.get_context(test_handler.timeout,
|
||||
manifest_name, chart_name):
|
||||
self._test_chart(test_handler)
|
||||
# just_deployed = ('install' in result) or ('upgrade' in result)
|
||||
# last_test_passed = old_release and r.get_last_test_result(old_release)
|
||||
#
|
||||
# test_handler = Test(
|
||||
# chart, release_id, self.helm, cg_test_charts=cg_test_all_charts)
|
||||
#
|
||||
# run_test = test_handler.test_enabled and (
|
||||
# just_deployed or not last_test_passed)
|
||||
# if run_test:
|
||||
# with metrics.CHART_TEST.get_context(test_handler.timeout,
|
||||
# manifest_name, chart_name):
|
||||
# self._test_chart(test_handler)
|
||||
|
||||
return result
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@ from oslo_log import log as logging
|
|||
|
||||
from armada.const import DEFAULT_K8S_TIMEOUT
|
||||
from armada.exceptions import k8s_exceptions as exceptions
|
||||
from armada.exceptions import armada_exceptions
|
||||
|
||||
CONF = cfg.CONF
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
@ -436,3 +437,25 @@ class K8s(object):
|
|||
"""
|
||||
return self.custom_objects.replace_namespaced_custom_object(
|
||||
group, version, namespace, plural, name, body)
|
||||
|
||||
def patch_custom_resource(
|
||||
self, group, version, namespace, plural, name, body):
|
||||
return self.custom_objects.patch_namespaced_custom_object(
|
||||
group, version, namespace, plural, name, body)
|
||||
|
||||
def wait_custom_resource(
|
||||
self, group, version, namespace, plural, label, timeout=10):
|
||||
|
||||
w = watch.Watch()
|
||||
for event in w.stream(self.custom_objects.list_namespaced_custom_object,
|
||||
group, version, namespace, plural,
|
||||
label_selector=label,
|
||||
timeout_seconds=timeout):
|
||||
resource_name = event['object'].metadata.name
|
||||
conds = event['object'].status.contiditions
|
||||
for cond in conds:
|
||||
if cond.type == "Ready" and cond.status == "True":
|
||||
LOG.warn('Resource '' is ready %s', resource_name)
|
||||
return
|
||||
|
||||
raise armada_exceptions.ArmadaTimeoutException('Resource with label '' is not ready %s', label)
|
||||
|
|
Loading…
Reference in New Issue