def kubectl_binary_path_and_url(master, verify=True): # get kubectl meta json import requests meta_url = master + "/static/kubectl-meta.json" try: meta = requests.get(meta_url, verify=verify).json() except: raise Exception( "Cannot download kubectl meta info from {0}".format(meta_url) ) # get url system, node, release, version, machine, processor = platform.uname() arch = "amd64" # we only support amd64 for the moment key = system.lower() + "-" + arch if key not in meta: raise Exception("System type {0} not supported".format(key)) url = master + "/static/" + meta[key]["file"] + ".bz2" sha256 = meta[key]["sha256"] # create filename data_dir = package_dir("kubectl") base = os.path.join(data_dir, "kubectl") file_path = base + "-" + sha256 if system == "Windows": file_path += ".exe" return file_path, url
def kubectl_binary_path_and_url(): data_dir = package_dir("kubernetes") base = os.path.join(data_dir, "kubectl") system, node, release, version, machine, processor = platform.uname() if system == "Darwin": return (base + "_darwin", BASE_URL + KUBECTL_VERSION + "/kubectl-" + KUBECTL_VERSION + "-darwin-amd64.tgz") elif system == "Linux": return (base + "_linux", BASE_URL + KUBECTL_VERSION + "/kubectl-" + KUBECTL_VERSION + "-linux-amd64.tgz") else: return (None, None)
def test_package_metadata(): _install_helloworld() # test marathon labels expected_metadata = b"""eyJkZXNjcmlwdGlvbiI6ICJFeGFtcGxlIERDT1MgYXBwbGljYX\ Rpb24gcGFja2FnZSIsICJtYWludGFpbmVyIjogInN1cHBvcnRAbWVzb3NwaGVyZS5pbyIsICJuYW1l\ IjogImhlbGxvd29ybGQiLCAicG9zdEluc3RhbGxOb3RlcyI6ICJBIHNhbXBsZSBwb3N0LWluc3RhbG\ xhdGlvbiBtZXNzYWdlIiwgInByZUluc3RhbGxOb3RlcyI6ICJBIHNhbXBsZSBwcmUtaW5zdGFsbGF0\ aW9uIG1lc3NhZ2UiLCAidGFncyI6IFsibWVzb3NwaGVyZSIsICJleGFtcGxlIiwgInN1YmNvbW1hbm\ QiXSwgInZlcnNpb24iOiAiMC4xLjAiLCAid2Vic2l0ZSI6ICJodHRwczovL2dpdGh1Yi5jb20vbWVz\ b3NwaGVyZS9kY29zLWhlbGxvd29ybGQifQ==""" expected_command = b"""eyJwaXAiOiBbImRjb3M8MS4wIiwgImdpdCtodHRwczovL2dpdGh\ 1Yi5jb20vbWVzb3NwaGVyZS9kY29zLWhlbGxvd29ybGQuZ2l0I2Rjb3MtaGVsbG93b3JsZD0wLjEuM\ CJdfQ==""" expected_source = b"""https://github.com/mesosphere/universe/archive/\ cli-test-2.zip""" expected_labels = { 'DCOS_PACKAGE_METADATA': expected_metadata, 'DCOS_PACKAGE_COMMAND': expected_command, 'DCOS_PACKAGE_REGISTRY_VERSION': b'1.0.0-rc1', 'DCOS_PACKAGE_NAME': b'helloworld', 'DCOS_PACKAGE_VERSION': b'0.1.0', 'DCOS_PACKAGE_SOURCE': expected_source, 'DCOS_PACKAGE_RELEASE': b'0', } app_labels = _get_app_labels('helloworld') for label, value in expected_labels.items(): assert value == six.b(app_labels.get(label)) # test local package.json package = { "description": "Example DCOS application package", "maintainer": "*****@*****.**", "name": "helloworld", "postInstallNotes": "A sample post-installation message", "preInstallNotes": "A sample pre-installation message", "tags": ["mesosphere", "example", "subcommand"], "version": "0.1.0", "website": "https://github.com/mesosphere/dcos-helloworld", } package_dir = subcommand.package_dir('helloworld') # test local package.json package_path = os.path.join(package_dir, 'package.json') with open(package_path) as f: assert json.load(f) == package # test local source source_path = os.path.join(package_dir, 'source') with open(source_path) as f: assert six.b(f.read()) == expected_source # test local version version_path = os.path.join(package_dir, 'version') with open(version_path) as f: assert six.b(f.read()) == b'0' # uninstall helloworld _uninstall_helloworld()
def test_package_metadata(): _install_helloworld() # test marathon labels expected_metadata = b"""eyJkZXNjcmlwdGlvbiI6ICJFeGFtcGxlIERDT1MgYXBwbGljYX\ Rpb24gcGFja2FnZSIsICJtYWludGFpbmVyIjogInN1cHBvcnRAbWVzb3NwaGVyZS5pbyIsICJuYW1l\ IjogImhlbGxvd29ybGQiLCAicG9zdEluc3RhbGxOb3RlcyI6ICJBIHNhbXBsZSBwb3N0LWluc3RhbG\ xhdGlvbiBtZXNzYWdlIiwgInByZUluc3RhbGxOb3RlcyI6ICJBIHNhbXBsZSBwcmUtaW5zdGFsbGF0\ aW9uIG1lc3NhZ2UiLCAidGFncyI6IFsibWVzb3NwaGVyZSIsICJleGFtcGxlIiwgInN1YmNvbW1hbm\ QiXSwgInZlcnNpb24iOiAiMC4xLjAiLCAid2Vic2l0ZSI6ICJodHRwczovL2dpdGh1Yi5jb20vbWVz\ b3NwaGVyZS9kY29zLWhlbGxvd29ybGQifQ==""" expected_command = b"""eyJwaXAiOiBbImRjb3M8MS4wIiwgImdpdCtodHRwczovL2dpdGh\ 1Yi5jb20vbWVzb3NwaGVyZS9kY29zLWhlbGxvd29ybGQuZ2l0I2Rjb3MtaGVsbG93b3JsZD0wLjEuM\ CJdfQ==""" expected_source = b"""https://github.com/mesosphere/universe/archive/\ cli-tests.zip""" expected_labels = { 'DCOS_PACKAGE_METADATA': expected_metadata, 'DCOS_PACKAGE_COMMAND': expected_command, 'DCOS_PACKAGE_REGISTRY_VERSION': b'1.0.0-rc1', 'DCOS_PACKAGE_NAME': b'helloworld', 'DCOS_PACKAGE_VERSION': b'0.1.0', 'DCOS_PACKAGE_SOURCE': expected_source, 'DCOS_PACKAGE_RELEASE': b'0', } app_labels = _get_app_labels('helloworld') for label, value in expected_labels.items(): assert value == six.b(app_labels.get(label)) # test local package.json package = { "description": "Example DCOS application package", "maintainer": "*****@*****.**", "name": "helloworld", "postInstallNotes": "A sample post-installation message", "preInstallNotes": "A sample pre-installation message", "tags": ["mesosphere", "example", "subcommand"], "version": "0.1.0", "website": "https://github.com/mesosphere/dcos-helloworld", } package_dir = subcommand.package_dir('helloworld') # test local package.json package_path = os.path.join(package_dir, 'package.json') with open(package_path) as f: assert json.load(f) == package # test local source source_path = os.path.join(package_dir, 'source') with open(source_path) as f: assert six.b(f.read()) == expected_source # test local version version_path = os.path.join(package_dir, 'version') with open(version_path) as f: assert six.b(f.read()) == b'0' # uninstall helloworld _uninstall_helloworld()