Repository: incubator-slider
Updated Branches:
  refs/heads/develop cbe2dd1a6 -> f15525050


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/develop
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:

Reply via email to