Advertisement
Guest User

Untitled

a guest
Feb 28th, 2016
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.27 KB | None | 0 0
  1. #!/bin/bash
  2. #Mantiki imageMediaLoader
  3. #by Zarren Spry <zarren.spry@virginwines.co.uk>
  4.  
  5. #VARS
  6. BASEDIR="/vwnfs/mantiki/imageMediaLoader"
  7. DATADIR="$BASEDIR/interfaces/data/inbox/imageMediaLoader"
  8. MYSQL_HOST=""
  9. MYSQL_USER=""
  10. MYSQL_PASSWORD=""
  11. MYSQL_DB=""
  12. BOTTLEIMG_DIR="/vwnfs/mantiki/bottleImages"
  13. MEDIA_DIR="/vwnfs/mantiki/media"
  14. LOGDIR="$BASEDIR/logs"
  15. LIBDIR=$(dirname $0)./lib-mantiki
  16. XSDDIR=$(dirname $0)./xsd
  17. JAVA_OVERRIDE=imageMediaLoader.properties
  18. CLASSPATH=$XSDDIR:$BASEDIR/conf:$(find $LIBDIR -regex '.*\.jar' -printf :%p)
  19. JAVA_BIN=""
  20. TIME=1
  21.  
  22. #MLV
  23. CONTROL_FILE_PNG=$(cat <<EOF
  24. select '"Filename","Media Class","Media subclass","Store code"," Key","Attribute","Preserve filename","Description","Alt Text","Title","Caption","Tags","Remove original"' as ''
  25. union
  26. select concat('"', p.product_code, '.png", "Product", "", "default", "', p.product_code, '", "product_images", "0", "', p.name , '", "', p.name, '", "', p.name, '", "', p.name, '", "', p.name, '", "0"') as ''
  27. from product p
  28. where p.product_code like 'Z%'
  29. union
  30. select concat('"', left(p.product_code, 6), '_XL.jpg", "Product", "", "default", "', p.product_code, '", "product_images", "0", "', p.name , '", "', p.name, '", "', p.name, '", "', p.name, '", "', p.name, '", "0"') as ''
  31. from product p
  32. where p.product_code like 'Y%';
  33. EOF
  34. )
  35.  
  36. WGET_SQL=$(cat <<EOF
  37. select concat('wget -P $DATADIR/images/ http://d1f6pkbpgobziu.cloudfront.net/media2/lib/images/productimages/', p.product_code, '_HiRes.jpg') as ''
  38. from product p
  39. where p.product_code like 'Z%'
  40. union
  41. select concat('wget -P $DATADIR/images/ http://d1f6pkbpgobziu.cloudfront.net/media2/lib/images/caseshots/', left(p.product_code, 6), '_XL.jpg') as ''
  42. from product p
  43. where p.product_code like 'Y%';
  44. EOF
  45. )
  46.  
  47. UPDATE_PROCESS_CONTROL=$(cat <<EOF
  48. UPDATE process_control_attribute SET value='$DATADIR/processed' WHERE process_control_id=(SELECT id FROM process_control WHERE name='Media Images Loader') AND name='processed.dir';
  49. UPDATE process_control_attribute SET value='$DATADIR/work' WHERE process_control_id=(SELECT id FROM process_control WHERE name='Media Images Loader') AND name='working.dir';
  50. UPDATE process_control_attribute SET value='$DATADIR/error' WHERE process_control_id=(SELECT id FROM process_control WHERE name='Media Images Loader') AND name='error.dir';
  51. UPDATE process_control_attribute SET value='$DATADIR/control' WHERE process_control_id=(SELECT id FROM process_control WHERE name='Media Images Loader') AND name='control.dir';
  52. UPDATE process_control_attribute SET value='$DATADIR/images' WHERE process_control_id=(SELECT id FROM process_control WHERE name='Media Images Loader') AND name='images.dir';
  53. UPDATE process_control_attribute SET value='$DATADIR/log' WHERE process_control_id=(SELECT id FROM process_control WHERE name='Media Images Loader') AND name='log.dir';
  54. DELETE FROM mantiki_config WHERE name='media.format.aspect.ratio.tolerance';
  55. INSERT INTO mantiki_config
  56. ( name, value, version, created_by, created_on,last_modified_by,last_modified_on)
  57. VALUES
  58. ('media.format.aspect.ratio.tolerance', 10, 1, 1, now(), 1, now());
  59. UPDATE process_control SET state='Idle', sequence_number_handling='None' WHERE name='Media Images Loader';
  60. DELETE FROM process_run WHERE process_control_id=(SELECT id FROM process_control WHERE name='Media Images Loader');
  61. EOF
  62. )
  63.  
  64. # Functions
  65. function sanityCheck {
  66. echo "Running sanity checks."
  67. if [ ! -d "$BASEDIR" ]; then
  68. echo "$BASEDIR doesn't exist. Creating now."
  69. mkdir -p $BASEDIR/{conf,logs}
  70. fi
  71. if [ ! -d "$DATADIR" ]; then
  72. echo "$DATADIR doesn't exist. Creating now."
  73. mkdir -p $DATADIR/{work,control,archive,error,images,inbox,log,processed}
  74. fi
  75. if [ ! -d "$MEDIA_DIR" ]; then
  76. echo "$MEDIA_DIR doesn't exist. Creating now."
  77. mkdir -p $MEDIA_DIR/live-master-media-base/{shared,store}
  78. mkdir -p $MEDIA_DIR/staging-media-base/{shared,store}
  79. fi
  80. if [ ! -d "$BOTTLEIMG_DIR" ]; then
  81. echo "$BOTTLEIMG_DIR doesn't exist ? We need images to continue, check your setup and try again."
  82. exit 1
  83. fi
  84.  
  85. echo "Testing mysql connection to $MYSQL_HOST."
  86. mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST -e exit
  87. if [ $? -eq 0 ]; then
  88. if ! mysql -D$MYSQL_DB -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST -e exit; then
  89. echo "$MYSQL_DB doesn't exist !"
  90. exit 1
  91. else
  92. echo "DB checks complete."
  93. fi
  94. else
  95. echo "There's a problem connection to $MYSQL_HOST. Check and try again"
  96. exit 1
  97. fi
  98.  
  99. if [ -z $JAVA_BIN ]; then
  100. JAVA_BIN="$(which java)"
  101. if [ -z $JAVA_BIN ]; then
  102. echo "No java found ! Please specify by setting JAVA_BIN."
  103. exit 1
  104. fi
  105. fi
  106. }
  107.  
  108. function cleanUp {
  109. echo "Clean up old files."
  110. rm -rf $DATADIR/work/*
  111. rm -rf $DATADIR/control/*
  112. rm -rf $DATADIR/images/*
  113. rm -rf $MEDIA_DIR/staging-media-base/*
  114. rm -rf $MEDIA_DIR/live-master-media-base/*
  115. rm -rf $LOGDIR/*
  116. rm -rf $BASEDIR/conf/*
  117. }
  118.  
  119. function buildConfig {
  120. echo "Writing application configuration files."
  121. cat > $BASEDIR/conf/imageMediaLoader.properties <<EOF
  122. jdbc.driverClassName=com.mysql.jdbc.Driver
  123. jdbc.url=jdbc:mysql://$MYSQL_HOST:3306/vwshopstg
  124. jdbc.username=$MYSQL_USER
  125. jdbc.password=$MYSQL_PASSWORD
  126. default.store=0
  127. caches.enabled=false
  128. log.config.location=$BASEDIR/conf/log4j.xml
  129. log.poll.interval=0
  130. media.service.executable.path=/usr/bin
  131. staging.media.base.directory=file:$MEDIA_DIR/staging-media-base
  132. EOF
  133.  
  134. cat > $BASEDIR/conf/log4j.xml <<EOF
  135. <?xml version="1.0" encoding="UTF-8" ?>
  136. <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
  137. <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
  138. <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
  139. <layout class="org.apache.log4j.PatternLayout">
  140. <param name="ConversionPattern"
  141. value="%d - %p - %C{1}.%M(%L) | %m%n"/>
  142. </layout>
  143. </appender>
  144. <appender name="FILE" class="org.apache.log4j.DailyRollingFileAppender">
  145. <param name="File" value="$BASEDIR/logs/imageMediaLoader.log"/>
  146. <param name="DatePattern" value="'.'yyyy-MM-dd"/>
  147. <param name="Append" value="true"/>
  148. <param name="Threshold" value="DEBUG"/>
  149. <layout class="org.apache.log4j.PatternLayout">
  150. <param name="ConversionPattern" value="%d{HH:mm:ss:SSS} - %p - %C{1} - %m%n"/>
  151. </layout>
  152. </appender>
  153. <logger name="net.sf.ehcache">
  154. <level value="ERROR"/>
  155. </logger>
  156. <logger name="org.apache">
  157. <level value="WARN"/>
  158. </logger>
  159. <logger name="org.springframework">
  160. <level value="WARN"/>
  161. </logger>
  162. <logger name="org.springframework.jdbc.core.JdbcTemplate">
  163. <level value="WARN"/>
  164. </logger>
  165. <root>
  166. <level value="DEBUG"/>
  167. <appender-ref ref="CONSOLE"/>
  168. <appender-ref ref="FILE"/>
  169. </root>
  170. </log4j:configuration>
  171. EOF
  172. }
  173.  
  174. function createControlCSV {
  175. echo "Creating $DATADIR/control/control.csv"
  176. echo $CONTROL_FILE_PNG | mysql -D$MYSQL_DB -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST > $DATADIR/control/control.csv
  177. if [ $? -ne 0 ]; then
  178. echo "Something went wrong."
  179. exit 1
  180. fi
  181. }
  182.  
  183. function moveImages {
  184. echo "Moving cp $BOTTLEIMG_DIR/* $DATADIR/images/"
  185. cp $BOTTLEIMG_DIR/* $DATADIR/images/ >>$LOGDIR/imageprocessor.log 2>&1
  186. if [ $? -ne 0 ]; then
  187. echo "Something went wrong ! Check $LOGDIR/imageprocessor.log for more info"
  188. exit 1
  189. fi
  190.  
  191. }
  192.  
  193. function createWGET {
  194. echo "Creating $DATADIR/images/wget.sh"
  195. echo $WGET_SQL | mysql -D$MYSQL_DB -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST > $DATADIR/images/wget.sh
  196. if [ $? -ne 0 ]; then
  197. echo "Something went wrong ! Check $LOGDIR/imageprocessor.log for more info."
  198. exit 1
  199. fi
  200. chmod u+x $DATADIR/images/wget.sh
  201. }
  202.  
  203. function runWGET {
  204. echo "Pulling data... Please wait."
  205. $DATADIR/images/wget.sh >>$LOGDIR/imageprocessor.log 2>&1
  206. if [ $? -ne 0 ]; then
  207. echo "Something went wrong ! Check $LOGDIR/imageprocessor.log for more info."
  208. exit 1
  209. fi
  210. echo "Stage 1 complete !!! Please check everything and run stage 2."
  211. }
  212.  
  213. function updateDB {
  214. echo "Updating database"
  215. echo $UPDATE_PROCESS_CONTROL | mysql -D$MYSQL_DB -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST >>$LOGDIR/imageprocessor.log 2>&1
  216. if [ $? -ne 0 ]; then
  217. echo "Something went wrong ! Check $LOGDIR/imageprocessor.log for more info."
  218. exit 1
  219. fi
  220. }
  221.  
  222. function imageMediaLoader {
  223. echo "Processing images, this may take a while !!!"
  224. $JAVA_BIN -Doverride-file=$JAVA_OVERRIDE -cp .:$CLASSPATH com.mantiki.demo.loader.media.ImageMediaLoaderExec -createPackage >>$LOGDIR/imageprocessor.log 2>&1
  225. if [ $? -ne 0 ]; then
  226. echo "Something went wrong ! Check $LOGDIR/imageprocessor.log for more info."
  227. exit 1
  228. fi
  229. chown mantiki:mantiki -R $MEDIA_DIR
  230. }
  231.  
  232. function timer () {
  233. diff="(($2-$1))"
  234. ((sec=diff%60, diff/=60, min=diff%60, hrs=diff/60))
  235. time=$(printf "%dh %02dm %02ds" $hrs $min $sec)
  236. echo "Process took $time to complete" >>$LOGDIR/imageprocessor.log
  237. echo "Process took $time to complete"
  238. }
  239.  
  240. echo """Welcone to Zarren's Mantiki image processor.
  241. A simple wrapper around the Mantiki imagemagick java application.
  242. """
  243. case "$1" in
  244. stage1)
  245. if [ $TIME -eq 1 ]; then
  246. START=$(date +%s)
  247. cleanUp
  248. sanityCheck
  249. createControlCSV
  250. moveImages
  251. createWGET
  252. runWGET
  253. END=$(date +%s)
  254. timer $START $END
  255. else
  256. cleanUp
  257. sanityCheck
  258. createControlCSV
  259. moveImages
  260. createWGET
  261. runWGET
  262. fi
  263. ;;
  264. stage2)
  265. if [ $TIME -eq 1 ]; then
  266. START=$(date +%s)
  267. sanityCheck
  268. if [ ! -f "$BASEDIR/conf/imageMediaLoader.properties" ]; then
  269. buildConfig
  270. fi
  271. updateDB
  272. imageMediaLoader
  273. END=$(date +%s)
  274. timer $START $END
  275. else
  276. sanityCheck
  277. if [ ! -f "$BASEDIR/conf/imageMediaLoader.properties" ]; then
  278. buildConfig
  279. fi
  280. updateDB
  281. imageMediaLoader
  282. fi
  283. ;;
  284. cleanup)
  285. cleanUp
  286. ;;
  287. *)
  288. echo "Usage: $0 stage1 / stage2 / cleanup"
  289. exit 1
  290. esac
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement