From a6f4be39f798eeb2b86f8410d4e8136830e8250a Mon Sep 17 00:00:00 2001 From: Tamar Ben-Shachar Date: Tue, 15 Dec 2015 13:45:40 -0800 Subject: [PATCH] dcos-4138 add images property from resource.json in install --- cli/tests/integrations/test_package.py | 29 ++++++++++++++++++++++++-- dcos/package.py | 4 ++++ 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/cli/tests/integrations/test_package.py b/cli/tests/integrations/test_package.py index 100ecea..b8e969e 100644 --- a/cli/tests/integrations/test_package.py +++ b/cli/tests/integrations/test_package.py @@ -1,3 +1,4 @@ +import base64 import contextlib import json import os @@ -10,8 +11,9 @@ from dcos.errors import DCOSException import pytest from mock import patch -from .common import (assert_command, assert_lines, delete_zk_nodes, - exec_command, file_bytes, file_json, get_services, +from .common import (assert_command, assert_lines, delete_zk_node, + delete_zk_nodes, exec_command, file_bytes, file_json, + get_services, package_install, package_uninstall, service_shutdown, wait_for_service, watch_all_deployments) @@ -374,6 +376,29 @@ cli-test-3.zip""" _uninstall_helloworld() +def test_images_in_metadata(): + package_install('cassandra') + + labels = _get_app_labels('/cassandra/dcos') + dcos_package_metadata = labels.get("DCOS_PACKAGE_METADATA") + images = json.loads( + base64.b64decode(dcos_package_metadata).decode('utf-8'))["images"] + assert images.get("icon-small") is not None + assert images.get("icon-medium") is not None + assert images.get("icon-large") is not None + + # uninstall + stderr = (b'Uninstalled package [cassandra] version [0.2.0-1]\n' + b'The Apache Cassandra DCOS Service has been uninstalled and ' + b'will no longer run.\n' + b'Please follow the instructions at http://docs.mesosphere.com/' + b'services/cassandra/#uninstall to clean up any persisted ' + b'state\n') + package_uninstall('cassandra', stderr=stderr) + assert_command(['dcos', 'marathon', 'group', 'remove', '/cassandra']) + delete_zk_node('cassandra-mesos') + + def test_install_with_id(zk_znode): args = ['--app-id=chronos-1', '--yes'] stdout = (b'Installing Marathon app for package [chronos] version [2.4.0] ' diff --git a/dcos/package.py b/dcos/package.py index c6bb0b9..af8f762 100644 --- a/dcos/package.py +++ b/dcos/package.py @@ -81,6 +81,10 @@ def _make_package_labels(pkg, revision, options): """ metadata = pkg.package_json(revision) + # add images to package.json metadata for backwards compatability in the UI + if pkg._has_resource_definition(revision): + images = {"images": pkg._resource_json(revision)["images"]} + metadata.update(images) encoded_metadata = _base64_encode(metadata)