Repository: incubator-slider Updated Branches: refs/heads/feature/SLIDER-149_Support_a_YARN_service_registry a0528889f -> c692461b7
SLIDER-354. Add support for zip packages containing application bits. Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/fc534ca7 Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/fc534ca7 Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/fc534ca7 Branch: refs/heads/feature/SLIDER-149_Support_a_YARN_service_registry Commit: fc534ca7b0ecf607e9278bd352847a7e62db1ca6 Parents: 644dd38 Author: Sumit Mohanty <smoha...@hortonworks.com> Authored: Fri Aug 22 17:39:37 2014 -0700 Committer: Sumit Mohanty <smoha...@hortonworks.com> Committed: Fri Aug 22 17:39:37 2014 -0700 ---------------------------------------------------------------------- app-packages/app-pkg-template/metainfo.xml | 8 ++-- app-packages/memcached-win/appConfig.json | 7 +-- app-packages/memcached-win/metainfo.xml | 12 ++--- app-packages/memcached/metainfo.xml | 8 ++-- .../core/providers/__init__.py | 13 +++--- .../core/providers/windows/tarball.py | 46 ++++++++++++++++++++ .../libraries/script/script.py | 2 +- 7 files changed, 70 insertions(+), 26 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/fc534ca7/app-packages/app-pkg-template/metainfo.xml ---------------------------------------------------------------------- diff --git a/app-packages/app-pkg-template/metainfo.xml b/app-packages/app-pkg-template/metainfo.xml index c6e1485..50c0fbd 100644 --- a/app-packages/app-pkg-template/metainfo.xml +++ b/app-packages/app-pkg-template/metainfo.xml @@ -28,12 +28,12 @@ <component> <name>MYAPP_COMPONENT</name> <category>MASTER</category> - <exports> - <export> + <componentExports> + <componentExport> <name>host_port</name> <value>${THIS_HOST}:${site.global.listen_port}</value> - </export> - </exports> + </componentExport> + </componentExports> <commandScript> <script>scripts/myapp_component.py</script> <scriptType>PYTHON</scriptType> http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/fc534ca7/app-packages/memcached-win/appConfig.json ---------------------------------------------------------------------- diff --git a/app-packages/memcached-win/appConfig.json b/app-packages/memcached-win/appConfig.json index b76ecde..e39feb0 100644 --- a/app-packages/memcached-win/appConfig.json +++ b/app-packages/memcached-win/appConfig.json @@ -3,12 +3,11 @@ "metadata": { }, "global": { - "application.def": "/slider/jmemcached-1.0.0.zip", + "application.def": "package/jmemcached-1.0.0.zip", "java_home": "C:\\java", "site.global.app_user": "hadoop", - "site.global.app_root": "${AGENT_WORK_ROOT}\\app\\install", - "site.global.pid_file": "${AGENT_WORK_ROOT}\\app\\run\\component.pid", + "site.global.pid_file": "${AGENT_WORK_ROOT}/app/run/component.pid", "site.global.additional_cp": "C:\\hdp\\hadoop-2.4.0.2.1.3.0-1990\\share\\hadoop\\common\\lib\\*", "site.global.xmx_val": "256m", "site.global.xms_val": "128m", @@ -19,8 +18,6 @@ "components": { "slider-appmaster": { "jvm.heapsize": "256M" - }, - "MEMCACHED": { } } } http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/fc534ca7/app-packages/memcached-win/metainfo.xml ---------------------------------------------------------------------- diff --git a/app-packages/memcached-win/metainfo.xml b/app-packages/memcached-win/metainfo.xml index d056c0a..27a8be6 100644 --- a/app-packages/memcached-win/metainfo.xml +++ b/app-packages/memcached-win/metainfo.xml @@ -28,12 +28,12 @@ <component> <name>MEMCACHED</name> <category>MASTER</category> - <exports> - <export> + <componentExports> + <componentExport> <name>host_port</name> <value>${THIS_HOST}:${site.global.listen_port}</value> - </export> - </exports> + </componentExport> + </componentExports> <commandScript> <script>scripts/memcached.py</script> <scriptType>PYTHON</scriptType> @@ -46,8 +46,8 @@ <osType>any</osType> <packages> <package> - <type>folder</type> - <name>files\\jmemcached-1.0.0</name> + <type>zip</type> + <name>files/jmemcached-1.0.0.zip</name> </package> </packages> </osSpecific> http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/fc534ca7/app-packages/memcached/metainfo.xml ---------------------------------------------------------------------- diff --git a/app-packages/memcached/metainfo.xml b/app-packages/memcached/metainfo.xml index 525816e..5801ad2 100644 --- a/app-packages/memcached/metainfo.xml +++ b/app-packages/memcached/metainfo.xml @@ -28,12 +28,12 @@ <component> <name>MEMCACHED</name> <category>MASTER</category> - <exports> - <export> + <componentExports> + <componentExport> <name>host_port</name> <value>${THIS_HOST}:${site.global.listen_port}</value> - </export> - </exports> + </componentExport> + </componentExports> <commandScript> <script>scripts/memcached.py</script> <scriptType>PYTHON</scriptType> http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/fc534ca7/slider-agent/src/main/python/resource_management/core/providers/__init__.py ---------------------------------------------------------------------- diff --git a/slider-agent/src/main/python/resource_management/core/providers/__init__.py b/slider-agent/src/main/python/resource_management/core/providers/__init__.py index 3b453f2..c6f5c03 100644 --- a/slider-agent/src/main/python/resource_management/core/providers/__init__.py +++ b/slider-agent/src/main/python/resource_management/core/providers/__init__.py @@ -42,18 +42,19 @@ class Provider(object): PROVIDERS = dict( redhat=dict( - Package="resource_management.core.providers.package.yumrpm.YumProvider", + Package="resource_management.core.providers.package.yumrpm.YumProvider" ), suse=dict( - Package="resource_management.core.providers.package.zypper.ZypperProvider", + Package="resource_management.core.providers.package.zypper.ZypperProvider" ), debian=dict( - Package="resource_management.core.providers.package.apt.AptProvider", + Package="resource_management.core.providers.package.apt.AptProvider" ), winsrv=dict( Service="resource_management.core.providers.windows.service.ServiceProvider", Execute="resource_management.core.providers.windows.system.ExecuteProvider", - File="resource_management.core.providers.windows.system.FileProvider" + File="resource_management.core.providers.windows.system.FileProvider", + Tarball="resource_management.core.providers.windows.tarball.TarballProvider" ), default=dict( File="resource_management.core.providers.system.FileProvider", @@ -65,8 +66,8 @@ PROVIDERS = dict( User="resource_management.core.providers.accounts.UserProvider", Group="resource_management.core.providers.accounts.GroupProvider", Service="resource_management.core.providers.service.ServiceProvider", - Tarball="resource_management.core.providers.tarball.TarballProvider", - ), + Tarball="resource_management.core.providers.tarball.TarballProvider" + ) ) http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/fc534ca7/slider-agent/src/main/python/resource_management/core/providers/windows/tarball.py ---------------------------------------------------------------------- diff --git a/slider-agent/src/main/python/resource_management/core/providers/windows/tarball.py b/slider-agent/src/main/python/resource_management/core/providers/windows/tarball.py new file mode 100644 index 0000000..35f195b --- /dev/null +++ b/slider-agent/src/main/python/resource_management/core/providers/windows/tarball.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python +""" +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you 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. + +Slider Agent + +""" + +from __future__ import with_statement + +from resource_management.core import shell +from resource_management.core.providers import Provider +from resource_management.core.logger import Logger +import os +import zipfile + +class TarballProvider(Provider): + def action_install(self): + package_name = self.resource.package_name + location = self.resource.location + if package_name.lower().endswith("zip"): + if not self._check_existence(package_name, location): + zf = zipfile.ZipFile(package_name) + path = location + for member in zf.infolist(): + zf.extract(member, path) + else: + Logger.info("Unsupported archive %s" % (package_name,)) + + def _check_existence(self, name, location): + return False + http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/fc534ca7/slider-agent/src/main/python/resource_management/libraries/script/script.py ---------------------------------------------------------------------- diff --git a/slider-agent/src/main/python/resource_management/libraries/script/script.py b/slider-agent/src/main/python/resource_management/libraries/script/script.py index 00b80b4..8c53fb6 100644 --- a/slider-agent/src/main/python/resource_management/libraries/script/script.py +++ b/slider-agent/src/main/python/resource_management/libraries/script/script.py @@ -170,7 +170,7 @@ class Script(object): for package in package_list: name = package['name'] type = package['type'] - if type.lower() == "tarball": + if type.lower() == "tarball" or type.lower() == "zip": if name.startswith(os.path.sep): tarball = name else: