You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by rv...@apache.org on 2017/01/13 22:46:25 UTC
[41/51] [partial] geode git commit: Software Grant Agreement (SGA)
from Pivotal for Apache Geode
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/examples/dist/executeFunction/buildit.bat
----------------------------------------------------------------------
diff --git a/examples/dist/executeFunction/buildit.bat b/examples/dist/executeFunction/buildit.bat
new file mode 100644
index 0000000..144629d
--- /dev/null
+++ b/examples/dist/executeFunction/buildit.bat
@@ -0,0 +1,7 @@
+@echo off
+
+rem GFCPP must be set
+
+cl /MD /Zc:wchar_t /EHsc /GR /wd4996 /D_EXAMPLE /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NON_CONFORMING_SWPRINTFS /DWINVER=0x0500 /I%GFCPP%/include /FeExecuteFunctions.exe ExecuteFunctions.cpp %GFCPP%/lib/gfcppcache.lib
+
+del *.obj
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/examples/dist/executeFunction/buildit.sh
----------------------------------------------------------------------
diff --git a/examples/dist/executeFunction/buildit.sh b/examples/dist/executeFunction/buildit.sh
new file mode 100755
index 0000000..4747a62
--- /dev/null
+++ b/examples/dist/executeFunction/buildit.sh
@@ -0,0 +1,46 @@
+#!/bin/bash
+
+
+if [ -z ${GFCPP:-} ]; then
+ echo GFCPP is not set.
+ exit 1
+fi
+
+echo Building GemFire ExecuteFunction
+
+OPT=-O3
+LIBDIR=lib
+
+platform=`uname`
+is64bit=__IS_64_BIT__
+if [ "$platform" == "SunOS" ]; then
+ if [ $is64bit -eq 1 ]; then
+ ARCH="-xarch=v9"
+ else
+ ARCH="-xarch=v8plus"
+ fi
+ CC=CC
+ CXX_FLAGS="-mt -D_RWSTD_MULTI_THREAD -DTHREAD=MULTI \
+ -D_REENTRANT $OPT $ARCH \
+ -I$GFCPP/include \
+ -L$GFCPP/$LIBDIR \
+ -R$GFCPP/$LIBDIR \
+ -lgfcppcache -lrt -lpthread -lkstat"
+elif [ "$platform" == "Linux" ]; then
+ if [ $is64bit -eq 1 ]; then
+ ARCH="-m64"
+ else
+ ARCH="-m32"
+ fi
+ CC=g++
+ CXX_FLAGS="-D_REENTRANT $OPT -Wall $ARCH \
+ -I$GFCPP/include \
+ -Xlinker -rpath -Xlinker $GFCPP/$LIBDIR -L$GFCPP/$LIBDIR \
+ -lgfcppcache"
+else
+ echo "This script is not supported on this platform."
+ exit 1
+fi
+
+$CC $CXX_FLAGS \
+ ExecuteFunctions.cpp -o ExecuteFunctions
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/examples/dist/executeFunction/cleanup.bat
----------------------------------------------------------------------
diff --git a/examples/dist/executeFunction/cleanup.bat b/examples/dist/executeFunction/cleanup.bat
new file mode 100644
index 0000000..12045a4
--- /dev/null
+++ b/examples/dist/executeFunction/cleanup.bat
@@ -0,0 +1,9 @@
+@echo off
+
+echo Deleting GemFire Statistics and Log files...
+
+del /q *.gfs
+del /q gfecs\*.*
+rmdir gfecs
+del /q gfecs2\*.*
+rmdir gfecs2
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/examples/dist/executeFunction/cleanup.sh
----------------------------------------------------------------------
diff --git a/examples/dist/executeFunction/cleanup.sh b/examples/dist/executeFunction/cleanup.sh
new file mode 100755
index 0000000..8c28fb2
--- /dev/null
+++ b/examples/dist/executeFunction/cleanup.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+echo Deleting GemFire Statistics and Log files...
+
+rm -f *.gfs
+rm -f gfecs/*
+rmdir gfecs
+rm -f gfecs2/*
+rmdir gfecs2
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/examples/dist/executeFunction/runExecuteFunctions.bat
----------------------------------------------------------------------
diff --git a/examples/dist/executeFunction/runExecuteFunctions.bat b/examples/dist/executeFunction/runExecuteFunctions.bat
new file mode 100644
index 0000000..af9f6fd
--- /dev/null
+++ b/examples/dist/executeFunction/runExecuteFunctions.bat
@@ -0,0 +1,20 @@
+@echo off
+
+rem GFCPP must be set
+
+if not "%GFCPP%"=="" goto startexamples
+
+echo GFCPP is not set.
+goto finished
+
+
+:startexamples
+
+echo.
+echo Running GemFire C++ ExecuteFunctions example
+
+set PATH=%PATH%;%GFCPP%\bin;..\bin;
+
+
+call ExecuteFunctions.exe %1
+
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/examples/dist/executeFunction/runExecuteFunctions.sh
----------------------------------------------------------------------
diff --git a/examples/dist/executeFunction/runExecuteFunctions.sh b/examples/dist/executeFunction/runExecuteFunctions.sh
new file mode 100644
index 0000000..a3c37d3
--- /dev/null
+++ b/examples/dist/executeFunction/runExecuteFunctions.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+if [ -z ${GFCPP:-} ]; then
+ echo GFCPP is not set.
+ exit 1
+fi
+
+exname='ExecuteFunctions'
+
+echo Running GemFire C++ example ${exname} ...
+
+export PATH="${PATH}:${GEMFIRE}/bin"
+
+${exname} $*
+
+echo Finished example ${exname}.
+
+
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/examples/dist/executeFunction/startServer.bat
----------------------------------------------------------------------
diff --git a/examples/dist/executeFunction/startServer.bat b/examples/dist/executeFunction/startServer.bat
new file mode 100644
index 0000000..0636016
--- /dev/null
+++ b/examples/dist/executeFunction/startServer.bat
@@ -0,0 +1,34 @@
+@echo off
+
+rem GFCPP must be set
+rem GEMFIRE must be set
+
+
+if not "%GEMFIRE%"=="" goto startexamples
+
+echo GEMFIRE is not set.
+goto finished
+
+
+:startexamples
+
+
+:runexample
+
+echo.
+echo Running GemFire Server
+
+set CLASSPATH=%CLASSPATH%;../javaobject.jar;
+set PATH=%GEMFIRE%\bin;%PATH%;%GEMFIRE%\bin;..\bin;
+
+if not exist gfecs mkdir gfecs
+if not exist gfecs2 mkdir gfecs2
+
+
+
+call cacheserver start cache-xml-file=../XMLs/serverExecuteFunctions.xml mcast-port=35673 -dir=gfecs
+call cacheserver start cache-xml-file=../XMLs/serverExecuteFunctions2.xml mcast-port=35673 -dir=gfecs2
+
+rem pause
+
+:finished
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/examples/dist/executeFunction/startServer.sh
----------------------------------------------------------------------
diff --git a/examples/dist/executeFunction/startServer.sh b/examples/dist/executeFunction/startServer.sh
new file mode 100755
index 0000000..091331f
--- /dev/null
+++ b/examples/dist/executeFunction/startServer.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+if [ -z ${GEMFIRE:-} ]; then
+ echo GEMFIRE is not set.
+ exit 1
+fi
+
+echo Running GemFire Server
+
+export CLASSPATH="${CLASSPATH}:../javaobject.jar"
+export PATH="${PATH}:${GEMFIRE}/bin"
+
+if [ ! -d gfecs ]
+then
+ mkdir gfecs
+fi
+
+if [ ! -d gfecs2 ]
+then
+ mkdir gfecs2
+fi
+
+ cacheserver start cache-xml-file=../XMLs/serverExecuteFunctions.xml mcast-port=35673 -dir=gfecs
+
+ cacheserver start cache-xml-file=../XMLs/serverExecuteFunctions2.xml mcast-port=35673 -dir=gfecs2
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/examples/dist/executeFunction/stopServer.bat
----------------------------------------------------------------------
diff --git a/examples/dist/executeFunction/stopServer.bat b/examples/dist/executeFunction/stopServer.bat
new file mode 100644
index 0000000..c8ba465
--- /dev/null
+++ b/examples/dist/executeFunction/stopServer.bat
@@ -0,0 +1,22 @@
+@echo off
+
+rem GEMFIRE must be set
+
+
+if not "%GEMFIRE%"=="" goto startexamples
+
+echo GEMFIRE is not set.
+goto finished
+
+
+:startexamples
+
+echo.
+echo Stopping GemFire Server
+
+set PATH=%GEMFIRE%\bin;%PATH%;%GEMFIRE%\bin;..\bin;
+
+call cacheserver stop -dir=gfecs
+call cacheserver stop -dir=gfecs2
+:finished
+
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/examples/dist/executeFunction/stopServer.sh
----------------------------------------------------------------------
diff --git a/examples/dist/executeFunction/stopServer.sh b/examples/dist/executeFunction/stopServer.sh
new file mode 100755
index 0000000..f9af1bd
--- /dev/null
+++ b/examples/dist/executeFunction/stopServer.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+if [ -z ${GEMFIRE:-} ]; then
+ echo GEMFIRE is not set.
+ exit 1
+fi
+
+
+echo Stop GemFire Server
+
+export PATH="${PATH}:${GEMFIRE}/bin"
+
+
+cacheserver stop -dir=gfecs
+
+cacheserver stop -dir=gfecs2
+
+echo Stopped Server
+
+
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/examples/dist/overview.html
----------------------------------------------------------------------
diff --git a/examples/dist/overview.html b/examples/dist/overview.html
new file mode 100755
index 0000000..8e2fee7
--- /dev/null
+++ b/examples/dist/overview.html
@@ -0,0 +1,15 @@
+<HTML>
+<BODY>
+
+<p>These demonstration programs provide examples of how to use
+GemFire's distributed data caching features.</p>
+
+<P>The {@link cacheRunner} example provides an interactive command
+line utility for experimenting with many of the features of the
+GemFire distributed cache.</P>
+
+<P>The {@link cachetest} example provides an non interactive command
+demonstrating operational throughput under various region configurations.</P>
+
+</BODY>
+</HTML>
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/examples/dist/userobjects/AccountHistory.cpp
----------------------------------------------------------------------
diff --git a/examples/dist/userobjects/AccountHistory.cpp b/examples/dist/userobjects/AccountHistory.cpp
new file mode 100644
index 0000000..f881d02
--- /dev/null
+++ b/examples/dist/userobjects/AccountHistory.cpp
@@ -0,0 +1,99 @@
+
+#include "AccountHistory.hpp"
+#include "EClassIds.hpp"
+#include <stdio.h>
+
+using namespace gemfire;
+
+AccountHistory::AccountHistory( )
+: Cacheable(),
+ m_history()
+{
+}
+
+/**
+ * @brief serialize this object
+ **/
+void AccountHistory::toData( DataOutput& output ) const
+{
+ size_t itemCount = m_history.size();
+ output.writeInt( (int32_t) itemCount );
+ for( size_t idx = 0; idx < itemCount; idx++ ) {
+ // copy each string to the serialization buffer, including the null
+ // terminating character at the end of the string.
+ output.writeBytes( (int8_t*) m_history[idx].c_str(), m_history[idx].size() + 1 );
+ }
+}
+
+/**
+ * @brief deserialize this object
+ **/
+Serializable* AccountHistory::fromData( DataInput& input )
+{
+ size_t buflen = 1000;
+ char* readbuf = new char[buflen];
+ uint32_t itemCount = 0;
+ uint32_t itemLength = 0;
+
+ input.readInt( (uint32_t*) &itemCount );
+ for( size_t idx = 0; idx < itemCount; idx++ ) {
+ input.readInt( (uint32_t*) &itemLength );
+ // grow the read buffer if an item exceeds the length.
+ if ( buflen <= itemLength ) {
+ buflen = itemLength;
+ delete [] readbuf;
+ readbuf = new char[buflen];
+ }
+ // read from serialization buffer into a character array
+ input.readBytesOnly((uint8_t*) readbuf, itemLength);
+ // and store in the history list of strings.
+ m_history.push_back( readbuf );
+ }
+ return this;
+}
+
+/**
+ * @brief creation function for strings.
+ */
+Serializable* AccountHistory::createDeserializable( )
+{
+ return new AccountHistory();
+}
+
+/**
+ *@brief return the classId of the instance being serialized.
+ * This is used by deserialization to determine what instance
+ * type to create and derserialize into.
+ */
+int32_t AccountHistory::classId( ) const
+{
+ return EClassIds::AccountHistory;
+}
+
+/** Log the state of this in a pretty fashion. */
+void AccountHistory::showAccountHistory( ) const
+{
+ printf( "AccountHistory: \n" );
+ for( size_t idx = 0; idx < m_history.size(); idx++ ) {
+ printf( " %s\n", m_history[idx].c_str() );
+ }
+}
+
+/** Add a entry to the history. */
+void AccountHistory::addLog( const std::string& entry )
+{
+ m_history.push_back( entry );
+}
+
+uint32_t AccountHistory::objectSize( ) const
+{
+ size_t itemCount = m_history.size();
+ uint32_t size = sizeof(AccountHistory);
+ size += sizeof(itemCount);
+ for( size_t idx = 0; idx < itemCount; idx++ ) {
+ size += sizeof(char) * (m_history[idx].size()+1);
+ }
+ return size;
+
+}
+
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/examples/dist/userobjects/AccountHistory.hpp
----------------------------------------------------------------------
diff --git a/examples/dist/userobjects/AccountHistory.hpp b/examples/dist/userobjects/AccountHistory.hpp
new file mode 100644
index 0000000..6add142
--- /dev/null
+++ b/examples/dist/userobjects/AccountHistory.hpp
@@ -0,0 +1,59 @@
+
+#ifndef __AccountHistory_hpp__
+#define __AccountHistory_hpp__ 1
+
+
+#include <gfcpp/GemfireCppCache.hpp>
+#include <string>
+#include <vector>
+
+class AccountHistory;
+typedef gemfire::SharedPtr< AccountHistory > AccountHistoryPtr;
+
+/**
+ * Defines a custom type that can be used as a value in a
+ * gemfire region.
+ */
+class AccountHistory : public gemfire::Cacheable
+{
+ private:
+ std::vector< std::string > m_history;
+
+ public:
+
+ AccountHistory( );
+
+ /**
+ *@brief serialize this object
+ **/
+ virtual void toData( gemfire::DataOutput& output ) const;
+
+ /**
+ *@brief deserialize this object
+ **/
+ virtual gemfire::Serializable* fromData( gemfire::DataInput& input );
+
+ /**
+ * @brief creation function for strings.
+ */
+ static gemfire::Serializable* createDeserializable( );
+
+ /**
+ *@brief return the classId of the instance being serialized.
+ * This is used by deserialization to determine what instance
+ * type to create and derserialize into.
+ */
+ virtual int32_t classId( ) const;
+
+ /** Log the state of this in a pretty fashion. */
+ void showAccountHistory( ) const;
+
+ /** Add a entry to the history. */
+ void addLog( const std::string& entry );
+
+ virtual uint32_t objectSize() const;
+
+};
+
+#endif
+
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/examples/dist/userobjects/BankAccount.cpp
----------------------------------------------------------------------
diff --git a/examples/dist/userobjects/BankAccount.cpp b/examples/dist/userobjects/BankAccount.cpp
new file mode 100644
index 0000000..fb7fbfb
--- /dev/null
+++ b/examples/dist/userobjects/BankAccount.cpp
@@ -0,0 +1,62 @@
+
+#include "BankAccount.hpp"
+#include "EClassIds.hpp"
+#include <stdio.h>
+
+using namespace gemfire;
+
+BankAccount::BankAccount( int customerNum, int accountNum )
+: CacheableKey(),
+ m_customerId( customerNum ),
+ m_accountId( accountNum )
+{
+}
+
+void BankAccount::toData( DataOutput& output ) const
+{
+ // write each field to the DataOutput.
+ output.writeInt( m_customerId );
+ output.writeInt( m_accountId );
+}
+
+Serializable* BankAccount::fromData( DataInput& input )
+{
+ // set each field from the data input.
+ input.readInt( &m_customerId );
+ input.readInt( &m_accountId );
+ return this;
+}
+
+Serializable* BankAccount::createDeserializable( )
+{
+ // Create a new instance that will be initialized later by a call to fromData.
+ return new BankAccount( 0, 0 );
+}
+
+int32_t BankAccount::classId( ) const
+{
+ return EClassIds::BankAccount;
+}
+
+bool BankAccount::operator==( const CacheableKey& other ) const
+{
+ const BankAccount& rhs = static_cast< const BankAccount& >( other );
+ return ( m_customerId == rhs.m_customerId )
+ && ( m_accountId == rhs.m_accountId );
+}
+
+uint32_t BankAccount::hashcode( ) const
+{
+ return /* not the best hash.. */ m_customerId + ( m_accountId << 3 );
+}
+
+void BankAccount::showAccountIdentifier( ) const
+{
+ printf( "BankAccount( customer: %d, account: %d )\n",
+ m_customerId, m_accountId );
+}
+
+uint32_t BankAccount::objectSize( ) const
+{
+ return sizeof(BankAccount) ;
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/examples/dist/userobjects/BankAccount.hpp
----------------------------------------------------------------------
diff --git a/examples/dist/userobjects/BankAccount.hpp b/examples/dist/userobjects/BankAccount.hpp
new file mode 100644
index 0000000..2a245d8
--- /dev/null
+++ b/examples/dist/userobjects/BankAccount.hpp
@@ -0,0 +1,72 @@
+
+#ifndef __BankAccount_hpp__
+#define __BankAccount_hpp__ 1
+
+
+#include <gfcpp/GemfireCppCache.hpp>
+
+
+class BankAccount;
+typedef gemfire::SharedPtr< BankAccount > BankAccountPtr;
+
+/**
+ * Defines a custom type that can be used as a key in
+ * a gemfire region.
+ */
+class BankAccount : public gemfire::CacheableKey
+{
+ private:
+
+ int m_customerId;
+ int m_accountId;
+
+ public:
+
+ BankAccount( int customerNum, int accountNum );
+
+ /**
+ *@brief serialize this object
+ **/
+ virtual void toData( gemfire::DataOutput& output ) const;
+
+ /**
+ *@brief deserialize this object
+ **/
+ virtual gemfire::Serializable* fromData( gemfire::DataInput& input );
+
+ /**
+ * @brief creation function for strings.
+ */
+ static gemfire::Serializable* createDeserializable( );
+
+ /**
+ *@brief return the classId of the instance being serialized.
+ * This is used by deserialization to determine what instance
+ * type to create and derserialize into.
+ */
+ virtual int32_t classId( ) const;
+
+ /** return true if this key matches other. */
+ virtual bool operator==( const gemfire::CacheableKey& other ) const;
+
+ /** return the hashcode for this key. */
+ virtual uint32_t hashcode( ) const;
+
+ /** Log the state of this in a pretty fashion. */
+ void showAccountIdentifier( ) const;
+
+ virtual uint32_t objectSize() const;
+};
+
+namespace gemfire {
+
+/** overload of gemfire::createKey to pass CacheableInt32Ptr */
+inline CacheableKeyPtr createKey( const BankAccountPtr& value )
+{
+ return value;
+}
+
+}
+
+#endif
+
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/examples/dist/userobjects/EClassIds.hpp
----------------------------------------------------------------------
diff --git a/examples/dist/userobjects/EClassIds.hpp b/examples/dist/userobjects/EClassIds.hpp
new file mode 100644
index 0000000..68fe892
--- /dev/null
+++ b/examples/dist/userobjects/EClassIds.hpp
@@ -0,0 +1,17 @@
+
+#ifndef __EClassIds_hpp__
+#define __EClassIds_hpp__ 1
+
+/** Class that holds the enum with each unique types serialization id. */
+class EClassIds
+{
+ public:
+
+ enum {
+ AccountHistory = 0x02,
+ BankAccount = 0x03
+ };
+};
+
+#endif
+
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/examples/dist/userobjects/ExampleMain.cpp
----------------------------------------------------------------------
diff --git a/examples/dist/userobjects/ExampleMain.cpp b/examples/dist/userobjects/ExampleMain.cpp
new file mode 100644
index 0000000..b160269
--- /dev/null
+++ b/examples/dist/userobjects/ExampleMain.cpp
@@ -0,0 +1,68 @@
+
+#include <gfcpp/GemfireCppCache.hpp>
+#include "BankAccount.hpp"
+#include "AccountHistory.hpp"
+
+using namespace gemfire;
+
+/*
+ This example registers types, creates the cache, creates a
+ region, and then puts and gets user defined type BankAccount.
+*/
+int main( int argc, char** argv )
+{
+ // Register the user defined, serializable type.
+ Serializable::registerType( AccountHistory::createDeserializable );
+ Serializable::registerType( BankAccount::createDeserializable );
+
+ // Create a cache.
+ CacheFactoryPtr cacheFactory = CacheFactory::createCacheFactory();
+ CachePtr cachePtr = cacheFactory->setSubscriptionEnabled(true)->create();
+
+ LOGINFO("Created the GemFire Cache");
+
+ RegionFactoryPtr regionFactory = cachePtr->createRegionFactory(LOCAL);
+
+ LOGINFO("Created the RegionFactory");
+
+ // Create the Region programmatically.
+ RegionPtr regionPtr = regionFactory->create("BankAccounts");
+
+ LOGINFO("Created the Region from the Cache");
+
+ // Place some instances of BankAccount cache region.
+ BankAccountPtr baKeyPtr(new BankAccount(2309, 123091));
+ AccountHistoryPtr ahValPtr(new AccountHistory());
+ ahValPtr->addLog( "Created account" );
+
+ regionPtr->put( baKeyPtr, ahValPtr );
+ printf( "Put an AccountHistory in cache keyed with BankAccount.\n" );
+ // Call custom behavior on instance of BankAccount.
+ baKeyPtr->showAccountIdentifier();
+ // Call custom behavior on instance of AccountHistory.
+ ahValPtr->showAccountHistory();
+
+ // Get a value out of the region.
+ AccountHistoryPtr historyPtr = dynCast<AccountHistoryPtr>( regionPtr->get( baKeyPtr ) );
+ if (historyPtr != NULLPTR) {
+ printf( "Found AccountHistory in the cache.\n" );
+ historyPtr->showAccountHistory();
+
+ historyPtr->addLog( "debit $1,000,000." );
+ regionPtr->put( baKeyPtr, historyPtr );
+ printf( "Updated AccountHistory in the cache.\n" );
+ }
+
+ // Look up the history again.
+ historyPtr = dynCast<AccountHistoryPtr>( regionPtr->get( baKeyPtr ) );
+ if (historyPtr != NULLPTR) {
+ printf( "Found AccountHistory in the cache.\n" );
+ historyPtr->showAccountHistory();
+ }
+
+ // Close the cache.
+ cachePtr->close();
+
+ return 0;
+}
+
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/examples/dist/userobjects/README.html
----------------------------------------------------------------------
diff --git a/examples/dist/userobjects/README.html b/examples/dist/userobjects/README.html
new file mode 100644
index 0000000..09fbc23
--- /dev/null
+++ b/examples/dist/userobjects/README.html
@@ -0,0 +1,107 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"><HTML>
+<HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+<META NAME="GENERATOR" CONTENT="Adobe FrameMaker 7.0/HTML Export Filter">
+
+<TITLE>userobjects: Pivotal™ GemFire® Native Client C++ Example</TITLE>
+</HEAD>
+<BODY>
+ <IMG SRC="../../../docs/PIVOTAL_GemFire_190x81.png" BORDER="0">
+ <DIV>
+ <h1 align="center"><a name="Top" id="Top"></a>userobjects</h1>
+ <h2 align="center">
+ Pivotal<b><sup><font size=-0>™</font></sup></b> GemFire<b><sup><font size=-0>®</font></sup></b> Native Client </h2>
+ <h2 align="center">C++ Programming Example</h2>
+</DIV>
+<DIV>
+<H2>
+<br>
+About the userobjects Example </H2>
+<P>The <code>userobjects</code> example demonstrates the native client C++ API for distributing and retrieving custom-defined user types. The example uses <code>gemfire::CacheableKey</code> to define a key type suitable for storage as a value in the cache. See the C++ API documentation for a description of <code>gemfire::CacheableKey</code>. You can also review the example source code in the <code>userobjects</code> directory. </P>
+<P>The <code>userobjects</code> example is located in <code>NativeClient_InstallDir/SampleCode/examples/userobjects</code>.</P>
+<br>
+</DIV>
+
+<DIV>
+<H2>
+<a name="configuring_environment" id="configuring_environment"></a>Configuring the Environment </H2>
+</DIV>
+ <DIV>
+ <p>The following is a list of the environment configuration commands for the <code>userobjects</code> example. Choose the set of commands that are appropriate for your operating system. The text that you type is shown in <strong><code>bold</code></strong>.</p>
+<p><strong>Bourne and Korn shells (sh, ksh, bash)</strong> </p>
+<blockquote>
+ <p><code> % <strong>GFCPP=<path to NativeClient_InstallDir directory>; export GFCPP </strong><br>
+ % <strong>PATH=$GFCPP/bin:$PATH; export PATH</strong><br>
+ % <strong>LD_LIBRARY_PATH=$GFCPP/lib; export LD_LIBRARY_PATH</strong></code></p>
+</blockquote>
+<p><strong>Windows</strong></p>
+<blockquote>
+ <p><em>The Windows native client installer sets the required environment configurations for you, so they are listed for reference only.</em></p>
+ <p><code>> GFCPP=<path to NativeClient_InstallDir directory><br>
+ > PATH=%GFCPP%\bin;%PATH%<br>
+ <br>
+ <br>
+ </code></p>
+</blockquote>
+</DIV>
+
+<DIV>
+<H2>Running userobjects</H2>
+<P>
+Follow these steps to run the <code>userobjects</code> example. The steps reflect Windows operations, so alter them as needed for your operating system.</P>
+</DIV>
+<DIV>
+<OL>
+<LI CLASS="Numbered-1st">
+ <p>
+Create a session, then configure the session environment according to the steps listed in <a href="#configuring_environment">Configuring the Environment</a><a href="../envsetup.html" target="_blank"></a>.</p>
+</LI>
+<LI CLASS="Numbered-1st">Go to the <code>userobjects</code> example directory.</LI>
+<blockquote>
+ <p><strong> <code>cd NativeClient_InstallDir\SampleCode\examples\userobjects</code></strong></p>
+</blockquote>
+<LI CLASS="Numbered">
+Enter this command to start the example:
+
+ <blockquote>
+ <p><strong>
+ <code>userobjects</code></strong></p>
+ </blockquote>
+ </LI>
+
+<p>The process registers custom serializable types, then connects to the distributed system. It creates a cache and region, then creates a new <code>AccountHistory</code> and puts it in the cache. Next, it gets <code>AccountHistory</code> from the cache and updates it.</p>
+<p>This is the example output:</p>
+<blockquote>
+ <p><code>Put an AccountHistory in cache keyed with BankAccount.<br>
+ BankAccount( customer: 2309, account: 123091 )<br>
+ AccountHistory:<br>
+ Created account<br>
+ Found AccountHistory in the cache.<br>
+ AccountHistory:<br>
+ Created account<br>
+ Updated AccountHistory in the cache.<br>
+ Found AccountHistory in the cache.<br>
+ AccountHistory:<br>
+ Created account<br>
+ debit $1,000,000.</code></p>
+ </blockquote>
+ <LI CLASS="Numbered">Close the session by entering <code>exit</code>.</LI>
+</OL>
+<br>
+</DIV>
+<DIV>
+<H2>
+Changing System Parameters</H2>
+<P>
+By default, this product ships configured for multicast membership resolution. If your network environment does not allow multicast, you can configure GemFire for unicast. See the <em>GemFire User's Guide</em> for instructions on configuring TCP transport for membership and discovery. <code><br>
+ <br>
+</code></P>
+</DIV>
+<a href="#Top">Top</a>
+<P>
+<br>
+<p>Copyright (c) 2006-2014 Pivotal Software, Inc. All rights reserved. This product is protected by U.S. and international copyright and intellectual property laws. Pivotal products are covered by one or more patents listed at http://www.pivotal.io/patents. </p>
+</BODY>
+</HTML>
+
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/examples/dist/userobjects/buildit.bat
----------------------------------------------------------------------
diff --git a/examples/dist/userobjects/buildit.bat b/examples/dist/userobjects/buildit.bat
new file mode 100755
index 0000000..898ae55
--- /dev/null
+++ b/examples/dist/userobjects/buildit.bat
@@ -0,0 +1,7 @@
+@echo off
+
+echo "GFCPP=%GFCPP%"
+
+cl /MD /Zc:wchar_t /GR /EHsc /wd4996 /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NON_CONFORMING_SWPRINTFS /DWINVER=0x0500 /I%GFCPP%\include /Feuserobjects.exe *.cpp %GFCPP%\lib\gfcppcache.lib
+
+del *.obj
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/examples/dist/userobjects/buildit.sh
----------------------------------------------------------------------
diff --git a/examples/dist/userobjects/buildit.sh b/examples/dist/userobjects/buildit.sh
new file mode 100755
index 0000000..1e317d4
--- /dev/null
+++ b/examples/dist/userobjects/buildit.sh
@@ -0,0 +1,42 @@
+#!/bin/bash
+
+
+if [ -z ${GFCPP:-} ]; then
+ echo set GFCPP...
+ exit 1
+fi
+
+OPT=-O3
+LIBDIR=lib
+
+platform=`uname`
+is64bit=__IS_64_BIT__
+if [ "$platform" == "SunOS" ]; then
+ if [ $is64bit -eq 1 ]; then
+ ARCH="-xarch=v9"
+ else
+ ARCH="-xarch=v8plus"
+ fi
+ CC \
+ -D_REENTRANT $OPT $ARCH \
+ -I$GFCPP/include \
+ -L$GFCPP/$LIBDIR \
+ -R$GFCPP/$LIBDIR \
+ *.cpp -o userobjects -lgfcppcache -lrt -lcollector -lkstat
+elif [ "$platform" == "Linux" ]; then
+ if [ $is64bit -eq 1 ]; then
+ ARCH="-m64"
+ else
+ ARCH="-m32"
+ fi
+ g++ \
+ -D_REENTRANT $OPT -Wall -Werror $ARCH \
+ -I$GFCPP/include \
+ -Xlinker -rpath -Xlinker $GFCPP/$LIBDIR -L$GFCPP/$LIBDIR \
+ *.cpp -o userobjects -lgfcppcache
+else
+ echo "This script is not supported on this platform."
+ exit 1
+fi
+
+
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/examples/unix_README.html
----------------------------------------------------------------------
diff --git a/examples/unix_README.html b/examples/unix_README.html
new file mode 100644
index 0000000..e2e3105
--- /dev/null
+++ b/examples/unix_README.html
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"><HTML>
+ <HEAD>
+ <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
+ <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+ <LINK REL="STYLESHEET" HREF="../../docs/DocIndex.css" CHARSET="ISO-8859-1" TYPE="text/css">
+ <TITLE>Pivotal GemFire® Native Client Examples</TITLE>
+ <style type="text/css">
+<!--
+.style1 {font-style: italic}
+.style2 {font-size: medium}
+-->
+ </style>
+</HEAD>
+<BODY bgcolor="#ffffff">
+ <IMG SRC="../../docs/PIVOTAL_GemFire_190x81.png" BORDER="0">
+ <h1 align="left">
+ <FONT size=6><b>Pivotal GemFire<FONT size=6><b><sup><font size=-0>®</font></sup></b></FONT> Native Client C++ Examples </H1></b></FONT>
+ <hr color="#330066" width=650 size="1" align="left">
+ <table border=0 cellspacing=0 cellpadding=5 width=650>
+ <tr>
+ <td valign="top"><strong>C++ Examples</strong></td>
+ <td valign="top"><p><a href="cacheRunner/README.html" target="_blank"><strong>cacheRunner</strong></a></b>:
+ Shows how to modify and view cache contents, perform queries on cached data, maintain highly available client queues after server failover, and authenticate client credentials.</p>
+ <p><a href="userobjects/README.html" target="_blank"><strong>userobjects</strong></a>:
+ Demonstrates the native client C++ API for distributing and retrieving custom-defined user types.</p>
+ <p><a href="cqQuery/README.html" target="_blank"><strong>cqQuery</strong></a>:
+ Demonstrates the native client C++ API for continuous query.</p>
+ <hr color="#330066" width="75%" size="1" align="left"> </td>
+ </tr>
+ <tr>
+ <tr>
+ <td valign="top" width="24%"><a href="../../docs/cppdocs/index.html" target="_blank"><strong>C++ API Reference</strong></a> </td>
+
+ <td valign="top">
+ Online C++ API documentation for the native client.
+
+ <hr color="#330066" width="75%" size="1" align="left"> </td>
+ </tr>
+ </table>
+</BODY>
+</HTML>
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/examples/win_README.html
----------------------------------------------------------------------
diff --git a/examples/win_README.html b/examples/win_README.html
new file mode 100644
index 0000000..2c737f5
--- /dev/null
+++ b/examples/win_README.html
@@ -0,0 +1,57 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"><HTML>
+ <HEAD>
+ <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
+ <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+ <LINK REL="STYLESHEET" HREF="../../docs/DocIndex.css" CHARSET="ISO-8859-1" TYPE="text/css">
+ <TITLE>Pivotal GemFire® Native Client Examples</TITLE>
+ <style type="text/css">
+<!--
+.style1 {font-style: italic}
+.style2 {font-size: medium}
+-->
+ </style>
+</HEAD>
+<BODY bgcolor="#ffffff">
+ <IMG SRC="../../docs/PIVOTAL_GemFire_190x81.png" BORDER="0">
+ <h1 align="left">
+ <FONT size=6><b>Pivotal GemFire</b><FONT size=6><b><sup><font size=-0>®</font></sup></b></FONT></FONT> Native Client C++ and C# Examples </H1>
+ <hr color="#330066" width=650 size="1" align="left">
+ <table border=0 cellspacing=0 cellpadding=5 width=650>
+ <tr>
+ <td valign="top"><strong>C++ Examples</strong></td>
+ <td valign="top"><p><a href="cacheRunner/README.html" target="_blank"><strong>cacheRunner</strong></a></b>:
+ Shows how to modify and view cache contents, perform queries on cached data, maintain highly available client queues after server failover, and authenticate client credentials.</p>
+ <p><a href="userobjects/README.html" target="_blank"><strong>userobjects</strong></a>:
+ Demonstrates the native client C++ API for distributing and retrieving custom-defined user types.</p>
+ <p><a href="cqQuery/README.html" target="_blank"><strong>cqQuery</strong></a>:
+ Demonstrates the native client C++ API for continuous query.</p>
+ <hr color="#330066" width="75%" size="1" align="left"> </td>
+ </tr>
+ <tr>
+ <td valign="top"><strong>C# Examples</strong></td>
+ <td valign="top"><p><a href="cli_ProductBrowser/README.html" target="_blank"><strong>ProductBrowser</strong></a>:
+ Presents heterogeneous client access by using both a .NET client and a Java client to interact with a Java cache server and exchange data between the clients.</p>
+ <p><a href="cli_CacheRunner/README.html" target="_blank"><strong>CacheRunner</strong></a></b>:
+ Shows how to modify and view cache contents, perform queries on cached data, and maintain highly available client queues after server failover.</p>
+ <p><a href="cli_CqQuery/README.html" target="_blank"><strong>CqQuery</strong></a>: Demonstrate the usage of C# continuous query API.
+ <hr color="#330066" width="75%" size="1" align="left"> </td>
+ </tr>
+ <tr>
+ <td valign="top" width="24%"><a href="../../docs/DotNetDocs/index.html" target="_blank"><strong>.NET API Reference</strong></a> </td>
+
+ <td valign="top">
+ Online .NET API documentation for the native client.
+
+ <hr color="#330066" width="75%" size="1" align="left"> </td>
+ </tr>
+ <tr>
+ <td valign="top" width="24%"><a href="../../docs/cppdocs/index.html" target="_blank"><strong>C++ API Reference</strong></a> </td>
+
+ <td valign="top">
+ Online C++ API documentation for the native client.
+
+ <hr color="#330066" width="75%" size="1" align="left"> </td>
+ </tr>
+ </table>
+</BODY>
+</HTML>
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/build-linux.json
----------------------------------------------------------------------
diff --git a/packer/build-linux.json b/packer/build-linux.json
new file mode 100644
index 0000000..9f2cbda
--- /dev/null
+++ b/packer/build-linux.json
@@ -0,0 +1,100 @@
+{
+ "variables":{
+ "region":"us-west-2",
+ "source_ami":"ami-1e41877e",
+ "source_image_name":"X.vmx",
+ "image_name":"build-linux"
+ },
+ "builders":[
+ {
+ "type":"amazon-ebs",
+ "instance_type":"t2.micro",
+ "ami_name":"native-{{user `version`}}-{{user `image_name`}} {{timestamp}}",
+ "access_key":"{{user `aws_access_key`}}",
+ "secret_key":"{{user `aws_secret_key`}}",
+ "region":"{{user `region`}}",
+ "source_ami":"{{user `source_ami`}}",
+ "subnet_id":"{{user `subnet_id`}}",
+ "vpc_id":"{{user `vpc_id`}}",
+ "tags":{
+ "team":"native",
+ "version":"{{user `version`}}",
+ "source_ami":"{{user `source_ami`}}"
+ },
+ "ssh_username":"ec2-user",
+ "ssh_pty":true
+ }
+ ],
+ "provisioners":[
+ {
+ "type":"shell",
+ "script":"rhel/wait-for-cloud-init.sh"
+ },
+ {
+ "type":"shell",
+ "execute_command":"{{.Vars}} sudo -E -S bash '{{.Path}}'",
+ "scripts":[
+ "rhel/update.sh"
+ ]
+ },
+ {
+ "type":"file",
+ "source":"rhel/files",
+ "destination":"/tmp"
+ },
+ {
+ "type":"shell",
+ "execute_command":"{{.Vars}} sudo -E -S bash '{{.Path}}'",
+ "inline":[
+ "cp -rv /tmp/files/* /",
+ "rm -rf /tmp/files",
+ "chmod +x /etc/init-user.sh"
+ ]
+ },
+ {
+ "type":"file",
+ "source":"rhel/init-hosts.rc.local",
+ "destination":"/tmp/init-hosts.rc.local"
+ },
+ {
+ "type":"shell",
+ "execute_command":"{{.Vars}} sudo -E -S bash '{{.Path}}'",
+ "inline":[
+ "cat /tmp/init-hosts.rc.local >> /etc/rc.local"
+ ]
+ },
+ {
+ "type":"shell",
+ "execute_command":"{{.Vars}} sudo -E -S bash '{{.Path}}'",
+ "scripts":[
+ "rhel/disable-selinux.sh",
+ "rhel/add-user-build.sh",
+ "rhel/install-repos.sh",
+ "rhel/install-jdk-1.8.sh",
+ "rhel/install-build-rpms.sh",
+ "rhel/install-scl-devtoolset-3.sh",
+ "rhel/install-cmake.sh"
+ ]
+ },
+ {
+ "type":"file",
+ "source":"{{user `gemfire_archive`}}",
+ "destination":"gemfire.tar.gz"
+ },
+ {
+ "type":"shell",
+ "execute_command":"{{.Vars}} sudo -E -S bash '{{.Path}}'",
+ "scripts":[
+ "rhel/install-gemfire.sh"
+ ]
+ },
+ {
+ "type":"shell",
+ "execute_command":"{{.Vars}} sudo -E -S bash '{{.Path}}'",
+ "scripts":[
+ "rhel/cleanup.sh",
+ "rhel/zerodisk.sh"
+ ]
+ }
+ ]
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/build-solaris-sparc.json
----------------------------------------------------------------------
diff --git a/packer/build-solaris-sparc.json b/packer/build-solaris-sparc.json
new file mode 100644
index 0000000..b91391d
--- /dev/null
+++ b/packer/build-solaris-sparc.json
@@ -0,0 +1,64 @@
+{
+ "variables":{
+ "image_name":"build-solaris-sparc",
+ "openstack_source_image":"7e1e66f1-8256-4e29-a314-ee7f54b2f720",
+ "vmware_source_image_name":"X.vmx"
+ },
+ "builders":[
+ {
+ "type":"openstack",
+ "identity_endpoint":"{{user `openstack_identity_endpoint`}}",
+ "tenant_name":"{{user `openstack_tenant_name`}}",
+ "username":"{{user `openstack_username`}}",
+ "password":"{{user `openstack_password`}}",
+ "region":"{{user `openstack_region`}}",
+ "ssh_username":"root",
+ "image_name":"native-{{user `version`}}-{{user `image_name`}} {{timestamp}}",
+ "source_image":"{{user `openstack_source_image`}}",
+ "flavor":"Oracle Solaris non-global zone - tiny",
+ "insecure":"true"
+ }
+ ],
+ "provisioners":[
+ {
+ "type":"file",
+ "source":"solaris/files/",
+ "destination":"/"
+ },
+ {
+ "type":"shell",
+ "scripts":[
+ "solaris/install-opencsw.sh",
+ "solaris/install-build-tools.sh",
+ "solaris/install-solarisstudio.sh"
+ ]
+ },
+ {
+ "type":"file",
+ "source":"{{user `gemfire_archive`}}",
+ "destination":"gemfire.tar.gz"
+ },
+ {
+ "type":"shell",
+ "scripts":[
+ "solaris/install-gemfire.sh"
+ ]
+ },
+ {
+ "type":"file",
+ "source":"solaris/changepasswd",
+ "destination":"changepasswd"
+ },
+ {
+ "type":"shell",
+ "scripts":"solaris/add-user-build.sh"
+ },
+ {
+ "type":"shell",
+ "scripts":[
+ "solaris/update.sh",
+ "solaris/cleanup.sh"
+ ]
+ }
+ ]
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/build-solaris-x86.json
----------------------------------------------------------------------
diff --git a/packer/build-solaris-x86.json b/packer/build-solaris-x86.json
new file mode 100644
index 0000000..14331c3
--- /dev/null
+++ b/packer/build-solaris-x86.json
@@ -0,0 +1,65 @@
+{
+ "variables":{
+ "image_name":"build-solaris-x86",
+ "openstack_source_image":"c0df7ff9-fc8f-4220-ac1f-fd24924dfe7a",
+ "vmware_source_image_name":"X.vmx",
+ "gemfire_archive":"gemfire.tar.gz"
+ },
+ "builders":[
+ {
+ "type":"openstack",
+ "identity_endpoint":"{{user `openstack_identity_endpoint`}}",
+ "tenant_name":"{{user `openstack_tenant_name`}}",
+ "username":"{{user `openstack_username`}}",
+ "password":"{{user `openstack_password`}}",
+ "region":"{{user `openstack_region`}}",
+ "ssh_username":"root",
+ "image_name":"native-{{user `version`}}-{{user `image_name`}} {{timestamp}}",
+ "source_image":"{{user `openstack_source_image`}}",
+ "flavor":"Oracle Solaris non-global zone - tiny",
+ "insecure":"true"
+ }
+ ],
+ "provisioners":[
+ {
+ "type":"file",
+ "source":"solaris/files/",
+ "destination":"/"
+ },
+ {
+ "type":"shell",
+ "scripts":[
+ "solaris/install-opencsw.sh",
+ "solaris/install-build-tools.sh",
+ "solaris/install-solarisstudio.sh"
+ ]
+ },
+ {
+ "type":"file",
+ "source":"{{user `gemfire_archive`}}",
+ "destination":"gemfire.tar.gz"
+ },
+ {
+ "type":"shell",
+ "scripts":[
+ "solaris/install-gemfire.sh"
+ ]
+ },
+ {
+ "type":"file",
+ "source":"solaris/changepasswd",
+ "destination":"changepasswd"
+ },
+ {
+ "type":"shell",
+ "scripts":"solaris/add-user-build.sh"
+ },
+ {
+ "type":"shell",
+ "scripts":[
+ "solaris/update.sh",
+ "solaris/cleanup.sh"
+ ]
+ }
+ ]
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/build-windows.json
----------------------------------------------------------------------
diff --git a/packer/build-windows.json b/packer/build-windows.json
new file mode 100644
index 0000000..aeea141
--- /dev/null
+++ b/packer/build-windows.json
@@ -0,0 +1,114 @@
+{
+ "variables":{
+ "region":"us-west-2",
+ "source_ami":"ami-4e6ea82e",
+ "source_image_name":"X.vmx",
+ "image_name":"build-windows",
+ "gemfire_archive": "gemfire.zip"
+ },
+ "builders":[
+ {
+ "type":"amazon-ebs",
+ "instance_type":"t2.large",
+ "ami_name":"native-{{user `version`}}-{{user `image_name`}} {{timestamp}}",
+ "access_key":"{{user `aws_access_key`}}",
+ "secret_key":"{{user `aws_secret_key`}}",
+ "region":"{{user `region`}}",
+ "source_ami":"{{user `source_ami`}}",
+ "subnet_id":"{{user `subnet_id`}}",
+ "vpc_id":"{{user `vpc_id`}}",
+ "tags":{
+ "team":"native",
+ "version":"{{user `version`}}",
+ "source_ami":"{{user `source_ami`}}"
+ },
+ "communicator":"winrm",
+ "winrm_username":"Administrator",
+ "launch_block_device_mappings":[
+ {
+ "device_name":"/dev/sda1",
+ "delete_on_termination":true,
+ "volume_size":60
+ }
+ ]
+ }
+ ],
+ "provisioners":[
+ {
+ "pause_before":"30s",
+ "type":"powershell",
+ "inline":[
+ "choco install jdk8 -confirm",
+ "choco install cmake.portable -confirm",
+ "choco install git.install -confirm",
+ "# broken choco install activeperl -confirm",
+ "choco install doxygen.install --allowEmptyChecksums -confirm",
+ "choco install nunit.install --version 2.6.4 -confirm",
+ "choco install netfx-4.5.2-devpack --allowEmptyChecksums -confirm",
+ "choco install nsis -confirm"
+ ]
+ },
+ {
+ "type":"file",
+ "source":"windows/Packer.psm1",
+ "destination":"Documents/WindowsPowerShell/Modules/Packer/Packer.psm1"
+ },
+ {
+ "type":"powershell",
+ "scripts":[
+ "windows/install-perl.ps1",
+ "windows/install-gnuwin.ps1"
+ ]
+ },
+ {
+ "type":"file",
+ "source":"{{user `gemfire_archive`}}",
+ "destination":"gemfire.tar.gz"
+ },
+ {
+ "type":"powershell",
+ "scripts":[
+ "windows/install-gemfire.ps1"
+ ]
+ },
+ {
+ "type":"powershell",
+ "scripts":[
+ "windows/add-user-build.ps1"
+ ]
+ },
+ {
+ "pause_before":"30s",
+ "type":"file",
+ "source":"windows/init-user-build.ps1",
+ "destination":"C:/Users/build/init-user-build.ps1"
+ },
+ {
+ "pause_before":"30s",
+ "type":"powershell",
+ "scripts":[
+ "windows/run-sshd-as-build.ps1"
+ ]
+ },
+ {
+ "type":"file",
+ "source":"windows/buildenv.bat",
+ "destination":"C:/Users/build/buildenv.bat"
+ },
+ {
+ "type":"powershell",
+ "scripts":[
+ "windows/cleanup.ps1"
+ ]
+ },
+ {
+ "type":"powershell",
+ "scripts":[
+ "windows/setup-ec2config.ps1"
+ ],
+ "only":[
+ "amazon-ebs"
+ ]
+ }
+ ]
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/default.json
----------------------------------------------------------------------
diff --git a/packer/default.json b/packer/default.json
new file mode 100644
index 0000000..3532e5b
--- /dev/null
+++ b/packer/default.json
@@ -0,0 +1,6 @@
+{
+ "product_name":"native",
+ "version":"9.1",
+ "region":"us-west-2",
+ "openstack_region":"RegionOne"
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/dev-windows-2012.json
----------------------------------------------------------------------
diff --git a/packer/dev-windows-2012.json b/packer/dev-windows-2012.json
new file mode 100644
index 0000000..501d759
--- /dev/null
+++ b/packer/dev-windows-2012.json
@@ -0,0 +1,69 @@
+{
+ "variables":{
+ "region":"us-west-2",
+ "source_ami":"",
+ "source_image_name":"X.vmx",
+ "image_name":"dev-windows-2012"
+ },
+ "builders":[
+ {
+ "type":"amazon-ebs",
+ "instance_type":"t2.large",
+ "ami_name":"native-{{user `version`}}-{{user `image_name`}} {{timestamp}}",
+ "access_key":"{{user `aws_access_key`}}",
+ "secret_key":"{{user `aws_secret_key`}}",
+ "region":"{{user `region`}}",
+ "source_ami":"{{user `source_ami`}}",
+ "subnet_id":"{{user `subnet_id`}}",
+ "vpc_id":"{{user `vpc_id`}}",
+ "tags":{
+ "team":"native",
+ "version":"{{user `version`}}",
+ "source_ami":"{{user `source_ami`}}"
+ },
+ "communicator":"winrm",
+ "winrm_username":"Administrator",
+ "launch_block_device_mappings":[
+ {
+ "device_name":"/dev/sda1",
+ "delete_on_termination":true,
+ "volume_size":60
+ }
+ ]
+ }
+ ],
+ "provisioners":[
+ {
+ "pause_before":"30s",
+ "type":"powershell",
+ "inline":[
+ "choco install notepadplusplus -confirm",
+ "choco install googlechrome -confirm",
+ "choco install sysinternals -confirm",
+ "choco install windbg -confirm",
+ "choco install emacs -confirm"
+ ]
+ },
+ {
+ "type":"powershell",
+ "inline":[
+ "Remove-Item C:\\Users\\build\\.ssh -Recurse -Force -ErrorAction SilentlyContinue"
+ ]
+ },
+ {
+ "type":"powershell",
+ "scripts":[
+ "windows/cleanup.ps1"
+ ]
+ },
+ {
+ "type":"powershell",
+ "scripts":[
+ "windows/setup-ec2config.ps1"
+ ],
+ "only":[
+ "amazon-ebs"
+ ]
+ }
+ ]
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/rhel-6-base.json
----------------------------------------------------------------------
diff --git a/packer/rhel-6-base.json b/packer/rhel-6-base.json
new file mode 100644
index 0000000..593a18d
--- /dev/null
+++ b/packer/rhel-6-base.json
@@ -0,0 +1,49 @@
+{
+ "variables":{
+ "region":"us-west-2",
+ "source_ami":"ami-6fb7450f",
+ "source_image_name":"X.vmx",
+ "image_name":"rhel-6-base"
+ },
+ "builders":[
+ {
+ "type":"amazon-ebs",
+ "instance_type":"t2.micro",
+ "ami_name":"native-{{user `version`}}-{{user `image_name`}} {{timestamp}}",
+ "access_key":"{{user `aws_access_key`}}",
+ "secret_key":"{{user `aws_secret_key`}}",
+ "region":"{{user `region`}}",
+ "source_ami":"{{user `source_ami`}}",
+ "subnet_id":"{{user `subnet_id`}}",
+ "vpc_id":"{{user `vpc_id`}}",
+ "tags":{
+ "team":"native",
+ "version":"{{user `version`}}",
+ "source_ami":"{{user `source_ami`}}"
+ },
+ "ssh_username":"ec2-user",
+ "ssh_pty":true
+ }
+ ],
+ "provisioners":[
+ {
+ "type":"shell",
+ "script":"rhel/wait-for-cloud-init.sh"
+ },
+ {
+ "type":"shell",
+ "execute_command":"{{.Vars}} sudo -E -S bash '{{.Path}}'",
+ "scripts":[
+ "rhel/update.sh"
+ ]
+ },
+ {
+ "type":"shell",
+ "execute_command":"{{.Vars}} sudo -E -S bash '{{.Path}}'",
+ "scripts":[
+ "rhel/cleanup.sh",
+ "rhel/zerodisk.sh"
+ ]
+ }
+ ]
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/rhel-7-base.json
----------------------------------------------------------------------
diff --git a/packer/rhel-7-base.json b/packer/rhel-7-base.json
new file mode 100644
index 0000000..cd03619
--- /dev/null
+++ b/packer/rhel-7-base.json
@@ -0,0 +1,49 @@
+{
+ "variables":{
+ "region":"us-west-2",
+ "source_ami":"ami-775e4f16",
+ "source_image_name":"X.vmx",
+ "image_name":"rhel-7-base"
+ },
+ "builders":[
+ {
+ "type":"amazon-ebs",
+ "instance_type":"t2.micro",
+ "ami_name":"native-{{user `version`}}-{{user `image_name`}} {{timestamp}}",
+ "access_key":"{{user `aws_access_key`}}",
+ "secret_key":"{{user `aws_secret_key`}}",
+ "region":"{{user `region`}}",
+ "source_ami":"{{user `source_ami`}}",
+ "subnet_id":"{{user `subnet_id`}}",
+ "vpc_id":"{{user `vpc_id`}}",
+ "tags":{
+ "team":"native",
+ "version":"{{user `version`}}",
+ "source_ami":"{{user `source_ami`}}"
+ },
+ "ssh_username":"ec2-user",
+ "ssh_pty":true
+ }
+ ],
+ "provisioners":[
+ {
+ "type":"shell",
+ "script":"rhel/wait-for-cloud-init.sh"
+ },
+ {
+ "type":"shell",
+ "execute_command":"{{.Vars}} sudo -E -S bash '{{.Path}}'",
+ "scripts":[
+ "rhel/update.sh"
+ ]
+ },
+ {
+ "type":"shell",
+ "execute_command":"{{.Vars}} sudo -E -S bash '{{.Path}}'",
+ "scripts":[
+ "rhel/cleanup.sh",
+ "rhel/zerodisk.sh"
+ ]
+ }
+ ]
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/rhel/add-user-build.sh
----------------------------------------------------------------------
diff --git a/packer/rhel/add-user-build.sh b/packer/rhel/add-user-build.sh
new file mode 100755
index 0000000..19a1edc
--- /dev/null
+++ b/packer/rhel/add-user-build.sh
@@ -0,0 +1,6 @@
+#!/usr/bin/env bash
+#set -x -e -o pipefail
+
+useradd build
+
+(crontab -l -u build ; echo "@reboot /etc/init-user.sh") | sort - | uniq - | crontab -u build -
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/rhel/cleanup.sh
----------------------------------------------------------------------
diff --git a/packer/rhel/cleanup.sh b/packer/rhel/cleanup.sh
new file mode 100644
index 0000000..e64686a
--- /dev/null
+++ b/packer/rhel/cleanup.sh
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+set -x -e -o pipefail
+
+yum clean all
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/rhel/disable-selinux.sh
----------------------------------------------------------------------
diff --git a/packer/rhel/disable-selinux.sh b/packer/rhel/disable-selinux.sh
new file mode 100644
index 0000000..884a9de
--- /dev/null
+++ b/packer/rhel/disable-selinux.sh
@@ -0,0 +1,24 @@
+#!/usr/bin/env bash
+set -x -e -o pipefail
+
+bin=`dirname "$0"`
+bin=`cd "$bin">/dev/null; pwd`
+
+main() {
+ cat > /etc/sysconfig/selinux <<EOF
+# This file controls the state of SELinux on the system.
+# SELINUX= can take one of these three values:
+# enforcing - SELinux security policy is enforced.
+# permissive - SELinux prints warnings instead of enforcing.
+# disabled - No SELinux policy is loaded.
+SELINUX=disabled
+
+# SELINUXTYPE= can take one of these two values:
+# targeted - Targeted processes are protected,
+# mls - Multi Level Security protection.
+SELINUXTYPE=targeted
+EOF
+
+}
+
+main "$@"
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/rhel/files/etc/init-user.sh
----------------------------------------------------------------------
diff --git a/packer/rhel/files/etc/init-user.sh b/packer/rhel/files/etc/init-user.sh
new file mode 100644
index 0000000..1a8e528
--- /dev/null
+++ b/packer/rhel/files/etc/init-user.sh
@@ -0,0 +1,35 @@
+#!/usr/bin/env bash
+
+ATTEMPTS=5
+FAILED=0
+# Fetch public key using HTTP
+while [ ! -f ~/.ssh/authorized_keys ]; do
+ tmp_keys=`mktemp -p . -t authorized_keys.XXXXX` || exit $?
+ curl -f http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key > $tmp_keys 2>/dev/null
+ if [ $? -eq 0 ]; then
+ grep -f $tmp_keys ~/.ssh/authorized_keys 2>/dev/null
+ if [ $? -eq 0 ]; then
+ echo "AWS public key was already in authorized_keys, not adding it again"
+ else
+ if [ ! -d ~/.ssh ]; then
+ mkdir ~/.ssh
+ chmod 700 ~/.ssh
+ restorecon ~/.ssh
+ fi
+ cat $tmp_keys >> ~/.ssh/authorized_keys
+ chmod 0600 ~/.ssh/authorized_keys
+ restorecon ~/.ssh/authorized_keys
+ echo "Successfully retrieved AWS public key from instance metadata"
+ fi
+ else
+ FAILED=$(($FAILED + 1))
+ if [ $FAILED -ge $ATTEMPTS ]; then
+ echo "Failed to retrieve AWS public key after $FAILED attempts, quitting"
+ rm -f
+ break
+ fi
+ echo "Could not retrieve AWS public key (attempt #$FAILED/$ATTEMPTS), retrying in 5 seconds..."
+ sleep 5
+ fi
+ rm -f $tmp_keys
+done
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/rhel/init-hosts.rc.local
----------------------------------------------------------------------
diff --git a/packer/rhel/init-hosts.rc.local b/packer/rhel/init-hosts.rc.local
new file mode 100644
index 0000000..4e7dae7
--- /dev/null
+++ b/packer/rhel/init-hosts.rc.local
@@ -0,0 +1,5 @@
+
+# add hostname to /etc/hosts if not set
+if (! getent hosts `hostname` >/dev/null); then
+ echo `/sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'` `hostname` >> /etc/hosts
+fi
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/rhel/install-build-rpms.sh
----------------------------------------------------------------------
diff --git a/packer/rhel/install-build-rpms.sh b/packer/rhel/install-build-rpms.sh
new file mode 100644
index 0000000..e5f5021
--- /dev/null
+++ b/packer/rhel/install-build-rpms.sh
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+set -x -e -o pipefail
+
+yum install -y git2u make doxygen zlib-devel
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/rhel/install-cmake.sh
----------------------------------------------------------------------
diff --git a/packer/rhel/install-cmake.sh b/packer/rhel/install-cmake.sh
new file mode 100644
index 0000000..439b2d2
--- /dev/null
+++ b/packer/rhel/install-cmake.sh
@@ -0,0 +1,10 @@
+#!/usr/bin/env bash
+set -x -e -o pipefail
+
+tmp=`mktemp`
+
+curl -o ${tmp} -v -L https://cmake.org/files/v3.5/cmake-3.5.0-Linux-x86_64.sh
+
+bash ${tmp} --skip-license --prefix=/usr/local
+
+rm -f ${tmp}
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/rhel/install-gemfire.sh
----------------------------------------------------------------------
diff --git a/packer/rhel/install-gemfire.sh b/packer/rhel/install-gemfire.sh
new file mode 100644
index 0000000..6ff888a
--- /dev/null
+++ b/packer/rhel/install-gemfire.sh
@@ -0,0 +1,6 @@
+#!/usr/bin/env bash
+set -x -e -o pipefail
+
+mkdir /gemfire
+tar -zxf gemfire.tar.gz -C /gemfire
+rm gemfire.tar.gz
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/rhel/install-jdk-1.8.sh
----------------------------------------------------------------------
diff --git a/packer/rhel/install-jdk-1.8.sh b/packer/rhel/install-jdk-1.8.sh
new file mode 100644
index 0000000..b55d5ab
--- /dev/null
+++ b/packer/rhel/install-jdk-1.8.sh
@@ -0,0 +1,11 @@
+#!/usr/bin/env bash
+set -x -e -o pipefail
+
+tmp=`mktemp -d`
+
+curl -o ${tmp}/jdk.rpm -v -j -k -L -H "Cookie: oraclelicense=accept-securebackup-cookie" \
+ http://download.oracle.com/otn-pub/java/jdk/8u92-b14/jdk-8u92-linux-x64.rpm
+
+yum install -y ${tmp}/jdk.rpm
+
+rm -rf ${tmp}
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/rhel/install-repos.sh
----------------------------------------------------------------------
diff --git a/packer/rhel/install-repos.sh b/packer/rhel/install-repos.sh
new file mode 100644
index 0000000..7f5eb2d
--- /dev/null
+++ b/packer/rhel/install-repos.sh
@@ -0,0 +1,6 @@
+#!/usr/bin/env bash
+set -x -e -o pipefail
+
+yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
+yum install -y https://rhel6.iuscommunity.org/ius-release.rpm
+
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/rhel/install-scl-devtoolset-3.sh
----------------------------------------------------------------------
diff --git a/packer/rhel/install-scl-devtoolset-3.sh b/packer/rhel/install-scl-devtoolset-3.sh
new file mode 100644
index 0000000..3a090fa
--- /dev/null
+++ b/packer/rhel/install-scl-devtoolset-3.sh
@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+set -x -e -o pipefail
+
+curl -o /etc/yum.repos.d/slc6-scl.repo http://linuxsoft.cern.ch/cern/scl/slc6-scl.repo
+yum -y --nogpgcheck install devtoolset-3-gcc devtoolset-3-gcc-c++
+
+echo "source scl_source enable devtoolset-3" >> ~build/.bashrc
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/rhel/update.sh
----------------------------------------------------------------------
diff --git a/packer/rhel/update.sh b/packer/rhel/update.sh
new file mode 100644
index 0000000..cd23df0
--- /dev/null
+++ b/packer/rhel/update.sh
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+set -x -e -o pipefail
+
+yum update -y
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/rhel/wait-for-cloud-init.sh
----------------------------------------------------------------------
diff --git a/packer/rhel/wait-for-cloud-init.sh b/packer/rhel/wait-for-cloud-init.sh
new file mode 100644
index 0000000..b015c5f
--- /dev/null
+++ b/packer/rhel/wait-for-cloud-init.sh
@@ -0,0 +1,10 @@
+#!/usr/bin/env bash
+
+#set -x
+set -e
+set -o pipefail
+
+# leaves tail running but we should be restarting anyway
+{ tail -n +1 -f /var/log/cloud-init.log /var/log/cloud-init-output.log & } | sed \
+ -e '/Cloud-init .* finished/q' \
+ -e '/Failed at merging in cloud config/q1'
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/rhel/zerodisk.sh
----------------------------------------------------------------------
diff --git a/packer/rhel/zerodisk.sh b/packer/rhel/zerodisk.sh
new file mode 100644
index 0000000..9fa4a9d
--- /dev/null
+++ b/packer/rhel/zerodisk.sh
@@ -0,0 +1,8 @@
+#!/usr/bin/env bash
+
+# TODO does this really help image launch times?
+
+exit 0
+
+dd if=/dev/zero of=/EMPTY bs=1M
+rm -f /
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/solaris/add-user-build.sh
----------------------------------------------------------------------
diff --git a/packer/solaris/add-user-build.sh b/packer/solaris/add-user-build.sh
new file mode 100644
index 0000000..ab057fb
--- /dev/null
+++ b/packer/solaris/add-user-build.sh
@@ -0,0 +1,11 @@
+#!/usr/bin/env bash
+set -x -e -o pipefail
+
+useradd -m -s /usr/bin/bash build
+
+if (! which expect > /dev/null); then
+ pkg install -v --accept shell/expect
+fi
+
+chmod +x ./changepasswd
+./changepasswd build p1votal!
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/solaris/changepasswd
----------------------------------------------------------------------
diff --git a/packer/solaris/changepasswd b/packer/solaris/changepasswd
new file mode 100755
index 0000000..2cfe960
--- /dev/null
+++ b/packer/solaris/changepasswd
@@ -0,0 +1,23 @@
+#!/usr/bin/env expect -f
+
+set force_conservative 0 ;# set to 1 to force conservative mode even if
+ ;# script wasn't run conservatively originally
+if {$force_conservative} {
+ set send_slow {1 .1}
+ proc send {ignore arg} {
+ sleep .1
+ exp_send -s -- $arg
+ }
+}
+
+set username [lindex $argv 0]
+set password [lindex $argv 1]
+
+set timeout -1
+spawn passwd $username
+match_max 100000
+expect "New Password: "
+send -- "$password\r"
+expect "Re-enter new Password: "
+send -- "$password\r"
+expect eof
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/solaris/cleanup.sh
----------------------------------------------------------------------
diff --git a/packer/solaris/cleanup.sh b/packer/solaris/cleanup.sh
new file mode 100755
index 0000000..c4f7659
--- /dev/null
+++ b/packer/solaris/cleanup.sh
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+
+exit 0
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/solaris/files/etc/resolv.conf
----------------------------------------------------------------------
diff --git a/packer/solaris/files/etc/resolv.conf b/packer/solaris/files/etc/resolv.conf
new file mode 100644
index 0000000..6049670
--- /dev/null
+++ b/packer/solaris/files/etc/resolv.conf
@@ -0,0 +1,9 @@
+#######################################################################
+# Puppet controlled file, Do not hand-edit
+# Source: puppet:///modules/resolv/resolv.conf
+#######################################################################
+domain gemstone.com
+nameserver 10.138.44.100
+nameserver 10.118.32.200
+nameserver 10.118.32.201
+#search gemstone.com pune.gemstone.com ad.gemstone.com eng.vmware.com vmware.com
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/solaris/install-build-tools.sh
----------------------------------------------------------------------
diff --git a/packer/solaris/install-build-tools.sh b/packer/solaris/install-build-tools.sh
new file mode 100755
index 0000000..559c196
--- /dev/null
+++ b/packer/solaris/install-build-tools.sh
@@ -0,0 +1,22 @@
+#!/usr/bin/env bash
+set -x -e -o pipefail
+
+# Remove meta-packages that prevent installation of updated tools
+pkg uninstall -v entire consolidation/userland/userland-incorporation consolidation/java-8/java-8-incorporation
+
+# Install required tools
+pkg install -v --accept \
+ system/header \
+ developer/assembler \
+ developer/documentation-tool/doxygen \
+ developer/java/jdk-8 \
+ text/gnu-patch
+
+# broken developer/build/gnu-make \
+
+
+# too old developer/build/cmake
+/opt/csw/bin/pkgutil -i -y cmake gmake gtar
+
+# dependent perl package conflict developer/versioning/git
+/opt/csw/bin/pkgutil -i -y git
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/solaris/install-gemfire.sh
----------------------------------------------------------------------
diff --git a/packer/solaris/install-gemfire.sh b/packer/solaris/install-gemfire.sh
new file mode 100755
index 0000000..2fb49c3
--- /dev/null
+++ b/packer/solaris/install-gemfire.sh
@@ -0,0 +1,6 @@
+#!/usr/bin/env bash
+set -x -e -o pipefail
+
+mkdir /gemfire
+gtar -xzvf gemfire.tar.gz -C /gemfire
+rm gemfire.tar.gz
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/solaris/install-opencsw.sh
----------------------------------------------------------------------
diff --git a/packer/solaris/install-opencsw.sh b/packer/solaris/install-opencsw.sh
new file mode 100644
index 0000000..919b72c
--- /dev/null
+++ b/packer/solaris/install-opencsw.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+set -e
+
+yes | pkgadd -d http://get.opencsw.org/now all
+/opt/csw/bin/pkgutil -U
+
+echo 'PATH=$PATH:/opt/csw/bin; export PATH' >> .profile
+echo 'PATH=$PATH:/opt/csw/bin; export PATH' >> .bashrc
+
+echo 'PATH=$PATH:/opt/csw/bin; export PATH' >> /etc/skel/.profile
+echo 'PATH=$PATH:/opt/csw/bin; export PATH' >> /etc/skel/.bashrc
+
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/solaris/install-solarisstudio.sh
----------------------------------------------------------------------
diff --git a/packer/solaris/install-solarisstudio.sh b/packer/solaris/install-solarisstudio.sh
new file mode 100644
index 0000000..3ae633a
--- /dev/null
+++ b/packer/solaris/install-solarisstudio.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+set -e
+
+pkg set-publisher \
+ -k /var/pkg/ssl/pkg.oracle.com.key.pem \
+ -c /var/pkg/ssl/pkg.oracle.com.certificate.pem \
+ -G '*' -g https://pkg.oracle.com/solarisstudio/release solarisstudio
+
+pkg install -v solarisstudio-124/c++ solarisstudio-124/dbx
+
+echo 'PATH=$PATH:/opt/solarisstudio12.4/bin; export PATH' >> ~/.profile
+
+echo 'PATH=$PATH:/opt/solarisstudio12.4/bin; export PATH' >> ~/.bashrc
+echo 'PATH=$PATH:/opt/csw//bin; export PATH' >> ~/.bashrc
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/solaris/install-test-tools.sh
----------------------------------------------------------------------
diff --git a/packer/solaris/install-test-tools.sh b/packer/solaris/install-test-tools.sh
new file mode 100755
index 0000000..88e576f
--- /dev/null
+++ b/packer/solaris/install-test-tools.sh
@@ -0,0 +1,13 @@
+#!/usr/bin/env bash
+set -x -e -o pipefail
+
+# Remove meta-packages that prevent installation of updated tools
+pkg uninstall -v entire consolidation/userland/userland-incorporation consolidation/java-8/java-8-incorporation
+
+# Install required tools
+pkg install -v --accept \
+ developer/java/jdk-8 \
+ archiver/gnu-tar
+
+# too old developer/build/cmake
+/opt/csw/bin/pkgutil -i -y cmake
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/solaris/update.sh
----------------------------------------------------------------------
diff --git a/packer/solaris/update.sh b/packer/solaris/update.sh
new file mode 100755
index 0000000..62d9c1d
--- /dev/null
+++ b/packer/solaris/update.sh
@@ -0,0 +1,6 @@
+#!/usr/bin/env bash
+
+pkg update -v --no-backup-be --accept
+
+# exits 4 on no update
+exit 0
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/test-rhel-6.json
----------------------------------------------------------------------
diff --git a/packer/test-rhel-6.json b/packer/test-rhel-6.json
new file mode 100644
index 0000000..647559c
--- /dev/null
+++ b/packer/test-rhel-6.json
@@ -0,0 +1,98 @@
+{
+ "variables":{
+ "region":"us-west-2",
+ "source_ami":"",
+ "source_image_name":"X.vmx",
+ "image_name":"test-rhel-6"
+ },
+ "builders":[
+ {
+ "type":"amazon-ebs",
+ "instance_type":"t2.micro",
+ "ami_name":"native-{{user `version`}}-{{user `image_name`}} {{timestamp}}",
+ "access_key":"{{user `aws_access_key`}}",
+ "secret_key":"{{user `aws_secret_key`}}",
+ "region":"{{user `region`}}",
+ "source_ami":"{{user `source_ami`}}",
+ "subnet_id":"{{user `subnet_id`}}",
+ "vpc_id":"{{user `vpc_id`}}",
+ "tags":{
+ "team":"native",
+ "version":"{{user `version`}}",
+ "source_ami":"{{user `source_ami`}}"
+ },
+ "ssh_username":"ec2-user",
+ "ssh_pty":true
+ }
+ ],
+ "provisioners":[
+ {
+ "type":"shell",
+ "script":"rhel/wait-for-cloud-init.sh"
+ },
+ {
+ "type":"shell",
+ "execute_command":"{{.Vars}} sudo -E -S bash '{{.Path}}'",
+ "scripts":[
+ "rhel/update.sh"
+ ]
+ },
+ {
+ "type":"file",
+ "source":"rhel/files",
+ "destination":"/tmp"
+ },
+ {
+ "type":"shell",
+ "execute_command":"{{.Vars}} sudo -E -S bash '{{.Path}}'",
+ "inline":[
+ "cp -rv /tmp/files/* /",
+ "rm -rf /tmp/files",
+ "chmod +x /etc/init-user.sh"
+ ]
+ },
+ {
+ "type":"file",
+ "source":"rhel/init-hosts.rc.local",
+ "destination":"/tmp/init-hosts.rc.local"
+ },
+ {
+ "type":"shell",
+ "execute_command":"{{.Vars}} sudo -E -S bash '{{.Path}}'",
+ "inline":[
+ "cat /tmp/init-hosts.rc.local >> /etc/rc.local"
+ ]
+ },
+ {
+ "type":"shell",
+ "execute_command":"{{.Vars}} sudo -E -S bash '{{.Path}}'",
+ "scripts":[
+ "rhel/disable-selinux.sh",
+ "rhel/add-user-build.sh",
+ "rhel/install-repos.sh",
+ "rhel/install-jdk-1.8.sh",
+ "rhel/install-cmake.sh"
+ ]
+ },
+ {
+ "type":"file",
+ "source":"{{user `gemfire_archive`}}",
+ "destination":"gemfire.tar.gz"
+ },
+ {
+ "type":"shell",
+ "execute_command":"{{.Vars}} sudo -E -S bash '{{.Path}}'",
+ "scripts":[
+ "rhel/install-gemfire.sh"
+ ]
+ },
+ {
+ "type":"shell",
+ "execute_command":"{{.Vars}} sudo -E -S bash '{{.Path}}'",
+ "scripts":[
+ "rhel/cleanup.sh",
+ "rhel/zerodisk.sh"
+ ]
+ }
+ ]
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/test-rhel-7.json
----------------------------------------------------------------------
diff --git a/packer/test-rhel-7.json b/packer/test-rhel-7.json
new file mode 100644
index 0000000..7ca6705
--- /dev/null
+++ b/packer/test-rhel-7.json
@@ -0,0 +1,98 @@
+{
+ "variables":{
+ "region":"us-west-2",
+ "source_ami":"",
+ "source_image_name":"X.vmx",
+ "image_name":"test-rhel-7"
+ },
+ "builders":[
+ {
+ "type":"amazon-ebs",
+ "instance_type":"t2.micro",
+ "ami_name":"native-{{user `version`}}-{{user `image_name`}} {{timestamp}}",
+ "access_key":"{{user `aws_access_key`}}",
+ "secret_key":"{{user `aws_secret_key`}}",
+ "region":"{{user `region`}}",
+ "source_ami":"{{user `source_ami`}}",
+ "subnet_id":"{{user `subnet_id`}}",
+ "vpc_id":"{{user `vpc_id`}}",
+ "tags":{
+ "team":"native",
+ "version":"{{user `version`}}",
+ "source_ami":"{{user `source_ami`}}"
+ },
+ "ssh_username":"ec2-user",
+ "ssh_pty":true
+ }
+ ],
+ "provisioners":[
+ {
+ "type":"shell",
+ "script":"rhel/wait-for-cloud-init.sh"
+ },
+ {
+ "type":"shell",
+ "execute_command":"{{.Vars}} sudo -E -S bash '{{.Path}}'",
+ "scripts":[
+ "rhel/update.sh"
+ ]
+ },
+ {
+ "type":"file",
+ "source":"rhel/files",
+ "destination":"/tmp"
+ },
+ {
+ "type":"shell",
+ "execute_command":"{{.Vars}} sudo -E -S bash '{{.Path}}'",
+ "inline":[
+ "cp -rv /tmp/files/* /",
+ "rm -rf /tmp/files",
+ "chmod +x /etc/init-user.sh"
+ ]
+ },
+ {
+ "type":"file",
+ "source":"rhel/init-hosts.rc.local",
+ "destination":"/tmp/init-hosts.rc.local"
+ },
+ {
+ "type":"shell",
+ "execute_command":"{{.Vars}} sudo -E -S bash '{{.Path}}'",
+ "inline":[
+ "cat /tmp/init-hosts.rc.local >> /etc/rc.local"
+ ]
+ },
+ {
+ "type":"shell",
+ "execute_command":"{{.Vars}} sudo -E -S bash '{{.Path}}'",
+ "scripts":[
+ "rhel/disable-selinux.sh",
+ "rhel/add-user-build.sh",
+ "rhel/install-repos.sh",
+ "rhel/install-jdk-1.8.sh",
+ "rhel/install-cmake.sh"
+ ]
+ },
+ {
+ "type":"file",
+ "source":"{{user `gemfire_archive`}}",
+ "destination":"gemfire.tar.gz"
+ },
+ {
+ "type":"shell",
+ "execute_command":"{{.Vars}} sudo -E -S bash '{{.Path}}'",
+ "scripts":[
+ "rhel/install-gemfire.sh"
+ ]
+ },
+ {
+ "type":"shell",
+ "execute_command":"{{.Vars}} sudo -E -S bash '{{.Path}}'",
+ "scripts":[
+ "rhel/cleanup.sh",
+ "rhel/zerodisk.sh"
+ ]
+ }
+ ]
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/test-solaris-x86.json
----------------------------------------------------------------------
diff --git a/packer/test-solaris-x86.json b/packer/test-solaris-x86.json
new file mode 100644
index 0000000..940aae0
--- /dev/null
+++ b/packer/test-solaris-x86.json
@@ -0,0 +1,63 @@
+{
+ "variables":{
+ "image_name":"test-solaris-x86",
+ "openstack_source_image":"c0df7ff9-fc8f-4220-ac1f-fd24924dfe7a",
+ "vmware_source_image_name":"X.vmx"
+ },
+ "builders":[
+ {
+ "type":"openstack",
+ "identity_endpoint":"{{user `openstack_identity_endpoint`}}",
+ "tenant_name":"{{user `openstack_tenant_name`}}",
+ "username":"{{user `openstack_username`}}",
+ "password":"{{user `openstack_password`}}",
+ "region":"{{user `openstack_region`}}",
+ "ssh_username":"root",
+ "image_name":"native-{{user `version`}}-{{user `image_name`}} {{timestamp}}",
+ "source_image":"{{user `openstack_source_image`}}",
+ "flavor":"Oracle Solaris non-global zone - tiny",
+ "insecure":"true"
+ }
+ ],
+ "provisioners":[
+ {
+ "type":"file",
+ "source":"solaris/files/",
+ "destination":"/"
+ },
+ {
+ "type":"shell",
+ "scripts":[
+ "solaris/install-opencsw.sh",
+ "solaris/install-test-tools.sh"
+ ]
+ },
+ {
+ "type":"file",
+ "source":"{{user `gemfire_archive`}}",
+ "destination":"gemfire.tar.gz"
+ },
+ {
+ "type":"shell",
+ "scripts":[
+ "solaris/install-gemfire.sh"
+ ]
+ },
+ {
+ "type":"file",
+ "source":"solaris/changepasswd",
+ "destination":"changepasswd"
+ },
+ {
+ "type":"shell",
+ "scripts":"solaris/add-user-build.sh"
+ },
+ {
+ "type":"shell",
+ "scripts":[
+ "solaris/update.sh",
+ "solaris/cleanup.sh"
+ ]
+ }
+ ]
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/test-windows-2012-r2.json
----------------------------------------------------------------------
diff --git a/packer/test-windows-2012-r2.json b/packer/test-windows-2012-r2.json
new file mode 100644
index 0000000..488d696
--- /dev/null
+++ b/packer/test-windows-2012-r2.json
@@ -0,0 +1,88 @@
+{
+ "variables":{
+ "region":"us-west-2",
+ "source_ami":"",
+ "source_image_name":"X.vmx",
+ "image_name":"test-windows-2012-r2"
+ },
+ "builders":[
+ {
+ "type":"amazon-ebs",
+ "instance_type":"t2.large",
+ "ami_name":"native-{{user `version`}}-{{user `image_name`}} {{timestamp}}",
+ "access_key":"{{user `aws_access_key`}}",
+ "secret_key":"{{user `aws_secret_key`}}",
+ "region":"{{user `region`}}",
+ "source_ami":"{{user `source_ami`}}",
+ "subnet_id":"{{user `subnet_id`}}",
+ "vpc_id":"{{user `vpc_id`}}",
+ "tags":{
+ "team":"native",
+ "version":"{{user `version`}}",
+ "source_ami":"{{user `source_ami`}}"
+ },
+ "communicator":"winrm",
+ "winrm_username":"Administrator",
+ "launch_block_device_mappings":[
+ {
+ "device_name":"/dev/sda1",
+ "delete_on_termination":true,
+ "volume_size":40
+ }
+ ]
+ }
+ ],
+ "provisioners":[
+ {
+ "pause_before":"30s",
+ "type":"powershell",
+ "inline":[
+ "choco install jdk8 -confirm",
+ "choco install cmake.portable -confirm"
+ ]
+ },
+ {
+ "type":"file",
+ "source":"windows/Packer.psm1",
+ "destination":"Documents/WindowsPowerShell/Modules/Packer/Packer.psm1"
+ },
+ {
+ "type":"file",
+ "source":"{{user `gemfire_archive`}}",
+ "destination":"gemfire.tar.gz"
+ },
+ {
+ "type":"powershell",
+ "scripts":[
+ "windows/install-gemfire.ps1"
+ ]
+ },
+ {
+ "type":"powershell",
+ "scripts":[
+ "windows/add-user-build.ps1"
+ ]
+ },
+ {
+ "pause_before":"30s",
+ "type":"file",
+ "source":"windows/init-user-build.ps1",
+ "destination":"C:/Users/build/init-user-build.ps1"
+ },
+ {
+ "type":"powershell",
+ "scripts":[
+ "windows/cleanup.ps1"
+ ]
+ },
+ {
+ "type":"powershell",
+ "scripts":[
+ "windows/setup-ec2config.ps1"
+ ],
+ "only":[
+ "amazon-ebs"
+ ]
+ }
+ ]
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/test-windows-2012.json
----------------------------------------------------------------------
diff --git a/packer/test-windows-2012.json b/packer/test-windows-2012.json
new file mode 100644
index 0000000..0763805
--- /dev/null
+++ b/packer/test-windows-2012.json
@@ -0,0 +1,88 @@
+{
+ "variables":{
+ "region":"us-west-2",
+ "source_ami":"",
+ "source_image_name":"X.vmx",
+ "image_name":"test-windows-2012"
+ },
+ "builders":[
+ {
+ "type":"amazon-ebs",
+ "instance_type":"t2.large",
+ "ami_name":"native-{{user `version`}}-{{user `image_name`}} {{timestamp}}",
+ "access_key":"{{user `aws_access_key`}}",
+ "secret_key":"{{user `aws_secret_key`}}",
+ "region":"{{user `region`}}",
+ "source_ami":"{{user `source_ami`}}",
+ "subnet_id":"{{user `subnet_id`}}",
+ "vpc_id":"{{user `vpc_id`}}",
+ "tags":{
+ "team":"native",
+ "version":"{{user `version`}}",
+ "source_ami":"{{user `source_ami`}}"
+ },
+ "communicator":"winrm",
+ "winrm_username":"Administrator",
+ "launch_block_device_mappings":[
+ {
+ "device_name":"/dev/sda1",
+ "delete_on_termination":true,
+ "volume_size":40
+ }
+ ]
+ }
+ ],
+ "provisioners":[
+ {
+ "pause_before":"30s",
+ "type":"powershell",
+ "inline":[
+ "choco install jdk8 -confirm",
+ "choco install cmake.portable -confirm"
+ ]
+ },
+ {
+ "type":"file",
+ "source":"windows/Packer.psm1",
+ "destination":"Documents/WindowsPowerShell/Modules/Packer/Packer.psm1"
+ },
+ {
+ "type":"file",
+ "source":"{{user `gemfire_archive`}}",
+ "destination":"gemfire.tar.gz"
+ },
+ {
+ "type":"powershell",
+ "scripts":[
+ "windows/install-gemfire.ps1"
+ ]
+ },
+ {
+ "type":"powershell",
+ "scripts":[
+ "windows/add-user-build.ps1"
+ ]
+ },
+ {
+ "pause_before":"30s",
+ "type":"file",
+ "source":"windows/init-user-build.ps1",
+ "destination":"C:/Users/build/init-user-build.ps1"
+ },
+ {
+ "type":"powershell",
+ "scripts":[
+ "windows/cleanup.ps1"
+ ]
+ },
+ {
+ "type":"powershell",
+ "scripts":[
+ "windows/setup-ec2config.ps1"
+ ],
+ "only":[
+ "amazon-ebs"
+ ]
+ }
+ ]
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/windows-2012-base.json
----------------------------------------------------------------------
diff --git a/packer/windows-2012-base.json b/packer/windows-2012-base.json
new file mode 100644
index 0000000..6a719e0
--- /dev/null
+++ b/packer/windows-2012-base.json
@@ -0,0 +1,80 @@
+{
+ "variables":{
+ "region":"us-west-2",
+ "source_ami":"ami-990acff9",
+ "source_image_name":"X.vmx",
+ "image_name":"windows-2012-base"
+ },
+ "builders":[
+ {
+ "type":"amazon-ebs",
+ "instance_type":"t2.large",
+ "ami_name":"native-{{user `version`}}-{{user `image_name`}} {{timestamp}}",
+ "access_key":"{{user `aws_access_key`}}",
+ "secret_key":"{{user `aws_secret_key`}}",
+ "region":"{{user `region`}}",
+ "source_ami":"{{user `source_ami`}}",
+ "subnet_id":"{{user `subnet_id`}}",
+ "vpc_id":"{{user `vpc_id`}}",
+ "tags":{
+ "team":"native",
+ "version":"{{user `version`}}",
+ "source_ami":"{{user `source_ami`}}"
+ },
+ "communicator":"winrm",
+ "winrm_username":"Administrator",
+ "user_data_file":"windows/winrm.cloud-init"
+ }
+ ],
+ "provisioners":[
+ {
+ "pause_before":"30s",
+ "type":"file",
+ "source":"windows/Packer.psm1",
+ "destination":"Documents/WindowsPowerShell/Modules/Packer/Packer.psm1"
+ },
+ {
+ "type":"powershell",
+ "scripts":[
+ "windows/install-windows-8-wmf-5.ps1"
+ ]
+ },
+ {
+ "type":"powershell",
+ "scripts":[
+ "windows/install-chocolatey.ps1"
+ ]
+ },
+ {
+ "type":"file",
+ "source":"windows/init-ssh.ps1",
+ "destination":"$Env:ProgramFiles/Amazon/Ec2ConfigService/Scripts/init-ssh.ps1"
+ },
+ {
+ "type":"file",
+ "source":"windows/sshd-recovery.bat",
+ "destination":"$Env:ProgramFiles/OpenSSH-Win64/sshd-recovery.bat"
+ },
+ {
+ "type":"powershell",
+ "scripts":[
+ "windows/install-ssh.ps1"
+ ]
+ },
+ {
+ "type":"powershell",
+ "scripts":[
+ "windows/cleanup.ps1"
+ ]
+ },
+ {
+ "type":"powershell",
+ "scripts":[
+ "windows/setup-ec2config.ps1"
+ ],
+ "only":[
+ "amazon-ebs"
+ ]
+ }
+ ]
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/windows-2012-r2-base.json
----------------------------------------------------------------------
diff --git a/packer/windows-2012-r2-base.json b/packer/windows-2012-r2-base.json
new file mode 100644
index 0000000..d211116
--- /dev/null
+++ b/packer/windows-2012-r2-base.json
@@ -0,0 +1,80 @@
+{
+ "variables":{
+ "region":"us-west-2",
+ "source_ami":"",
+ "source_image_name":"X.vmx",
+ "image_name":"windows-2012-r2-base"
+ },
+ "builders":[
+ {
+ "type":"amazon-ebs",
+ "instance_type":"t2.large",
+ "ami_name":"native-{{user `version`}}-{{user `image_name`}} {{timestamp}}",
+ "access_key":"{{user `aws_access_key`}}",
+ "secret_key":"{{user `aws_secret_key`}}",
+ "region":"{{user `region`}}",
+ "source_ami":"{{user `source_ami`}}",
+ "subnet_id":"{{user `subnet_id`}}",
+ "vpc_id":"{{user `vpc_id`}}",
+ "tags":{
+ "team":"native",
+ "version":"{{user `version`}}",
+ "source_ami":"{{user `source_ami`}}"
+ },
+ "communicator":"winrm",
+ "winrm_username":"Administrator",
+ "user_data_file":"windows/winrm.cloud-init"
+ }
+ ],
+ "provisioners":[
+ {
+ "pause_before":"30s",
+ "type":"file",
+ "source":"windows/Packer.psm1",
+ "destination":"Documents/WindowsPowerShell/Modules/Packer/Packer.psm1"
+ },
+ {
+ "type":"powershell",
+ "scripts":[
+ "windows/install-windows-8.1-2012-r2-wmf-5.ps1"
+ ]
+ },
+ {
+ "type":"powershell",
+ "scripts":[
+ "windows/install-chocolatey.ps1"
+ ]
+ },
+ {
+ "type":"file",
+ "source":"windows/init-ssh.ps1",
+ "destination":"$Env:ProgramFiles/Amazon/Ec2ConfigService/Scripts/init-ssh.ps1"
+ },
+ {
+ "type":"file",
+ "source":"windows/sshd-recovery.bat",
+ "destination":"$Env:ProgramFiles/OpenSSH-Win64/sshd-recovery.bat"
+ },
+ {
+ "type":"powershell",
+ "scripts":[
+ "windows/install-ssh.ps1"
+ ]
+ },
+ {
+ "type":"powershell",
+ "scripts":[
+ "windows/cleanup.ps1"
+ ]
+ },
+ {
+ "type":"powershell",
+ "scripts":[
+ "windows/setup-ec2config.ps1"
+ ],
+ "only":[
+ "amazon-ebs"
+ ]
+ }
+ ]
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/geode/blob/2d4a7ecd/packer/windows-2012-vs-2013.json
----------------------------------------------------------------------
diff --git a/packer/windows-2012-vs-2013.json b/packer/windows-2012-vs-2013.json
new file mode 100644
index 0000000..9052aca
--- /dev/null
+++ b/packer/windows-2012-vs-2013.json
@@ -0,0 +1,64 @@
+{
+ "variables":{
+ "region":"us-west-2",
+ "source_ami":"ami-ac5395cc",
+ "source_image_name":"X.vmx",
+ "image_name":"windows-2012-vs-2013"
+ },
+ "builders":[
+ {
+ "type":"amazon-ebs",
+ "instance_type":"t2.large",
+ "ami_name":"native-{{user `version`}}-{{user `image_name`}} {{timestamp}}",
+ "access_key":"{{user `aws_access_key`}}",
+ "secret_key":"{{user `aws_secret_key`}}",
+ "region":"{{user `region`}}",
+ "source_ami":"{{user `source_ami`}}",
+ "subnet_id":"{{user `subnet_id`}}",
+ "vpc_id":"{{user `vpc_id`}}",
+ "tags":{
+ "team":"native",
+ "version":"{{user `version`}}",
+ "source_ami":"{{user `source_ami`}}"
+ },
+ "communicator":"winrm",
+ "winrm_username":"Administrator",
+ "launch_block_device_mappings":[
+ {
+ "device_name":"/dev/sda1",
+ "delete_on_termination":true,
+ "volume_size":60
+ }
+ ]
+ }
+ ],
+ "provisioners":[
+ {
+ "pause_before":"30s",
+ "type":"file",
+ "source":"windows/Packer.psm1",
+ "destination":"Documents/WindowsPowerShell/Modules/Packer/Packer.psm1"
+ },
+ {
+ "type":"powershell",
+ "scripts":[
+ "windows/install-vs-2013-community.ps1"
+ ]
+ },
+ {
+ "type":"powershell",
+ "scripts":[
+ "windows/cleanup.ps1"
+ ]
+ },
+ {
+ "type":"powershell",
+ "scripts":[
+ "windows/setup-ec2config.ps1"
+ ],
+ "only":[
+ "amazon-ebs"
+ ]
+ }
+ ]
+}
\ No newline at end of file