Merge pull request #6 from davidsulpy/master

Fixed uninstall bug; addressed update bug; creating bucket on bucket_key set; cleaned some code styling
This commit is contained in:
David Sulpy
2015-09-14 16:38:12 -05:00

View File

@@ -205,6 +205,8 @@ def setBucketKey() {
atomicState.bucketName = "$newBucketName" atomicState.bucketName = "$newBucketName"
atomicState.isBucketCreated = false atomicState.isBucketCreated = false
} }
tryCreateBucket()
} }
def setAccessKey() { def setAccessKey() {
@@ -224,12 +226,12 @@ def setAccessKey() {
} }
def installed() { def installed() {
atomicState.version = "1.0.17" atomicState.version = "1.0.18"
subscribeToEvents() subscribeToEvents()
atomicState.isBucketCreated = false atomicState.isBucketCreated = false
atomicState.grokerSubdomain = "groker" atomicState.grokerSubdomain = "groker"
atomicState.eventBuffer = []; atomicState.eventBuffer = []
runEvery15Minutes(flushBuffer) runEvery15Minutes(flushBuffer)
@@ -242,22 +244,31 @@ def updated() {
if (atomicState.bucketKey != null && atomicState.accessKey != null) { if (atomicState.bucketKey != null && atomicState.accessKey != null) {
atomicState.isBucketCreated = false atomicState.isBucketCreated = false
} }
if (atomicState.eventBuffer == null) {
atomicState.eventBuffer = []
}
subscribeToEvents() subscribeToEvents()
log.debug "updated (version $atomicState.version)" log.debug "updated (version $atomicState.version)"
} }
def uninstalled() { def uninstalled() {
unsubscribe()
unschedule()
log.debug "uninstalled (version $atomicState.version)" log.debug "uninstalled (version $atomicState.version)"
} }
def createBucket() { def tryCreateBucket() {
// if the bucket has already been created, no need to continue
if (atomicState.isBucketCreated) {
return
}
if (!atomicState.bucketName) { if (!atomicState.bucketName) {
atomicState.bucketName = atomicState.bucketKey atomicState.bucketName = atomicState.bucketKey
}
if (!atomicState.accessKey) {
return
} }
def bucketName = "${atomicState.bucketName}" def bucketName = "${atomicState.bucketName}"
def bucketKey = "${atomicState.bucketKey}" def bucketKey = "${atomicState.bucketKey}"
@@ -301,13 +312,7 @@ def genericHandler(evt) {
} }
def value = "$evt.value" def value = "$evt.value"
if (atomicState.accessKey == null || atomicState.bucketKey == null) { tryCreateBucket()
return
}
if (!atomicState.isBucketCreated) {
createBucket()
}
eventHandler(key, value) eventHandler(key, value)
} }
@@ -317,28 +322,34 @@ def genericHandler(evt) {
def flushBuffer() { def flushBuffer() {
log.trace "About to flush the buffer on schedule" log.trace "About to flush the buffer on schedule"
if (atomicState.eventBuffer != null && atomicState.eventBuffer.size() > 0) { if (atomicState.eventBuffer != null && atomicState.eventBuffer.size() > 0) {
shipEvents(); tryShipEvents()
} }
} }
def eventHandler(name, value) { def eventHandler(name, value) {
log.debug atomicState.eventBuffer; log.debug atomicState.eventBuffer
def eventBuffer = atomicState.eventBuffer; def eventBuffer = atomicState.eventBuffer
def epoch = now() / 1000; def epoch = now() / 1000
eventBuffer << [key: "$name", value: "$value", epoch: "$epoch"] eventBuffer << [key: "$name", value: "$value", epoch: "$epoch"]
log.debug eventBuffer; log.debug eventBuffer
atomicState.eventBuffer = eventBuffer; atomicState.eventBuffer = eventBuffer
if (eventBuffer.size() >= 10) { if (eventBuffer.size() >= 10) {
shipEvents(); tryShipEvents()
} }
} }
// a helper function for shipping the atomicState.eventBuffer to Initial State // a helper function for shipping the atomicState.eventBuffer to Initial State
def shipEvents() { def tryShipEvents() {
// can't ship if access key and bucket key are null, so finish trying
if (atomicState.accessKey == null || atomicState.bucketKey == null) {
return
}
def eventPost = [ def eventPost = [
uri: "https://${atomicState.grokerSubdomain}.initialstate.com/api/events", uri: "https://${atomicState.grokerSubdomain}.initialstate.com/api/events",
headers: [ headers: [
@@ -348,7 +359,7 @@ def shipEvents() {
"Accept-Version": "0.0.2" "Accept-Version": "0.0.2"
], ],
body: atomicState.eventBuffer body: atomicState.eventBuffer
]; ]
try { try {
// post the events to initial state // post the events to initial state
@@ -358,7 +369,7 @@ def shipEvents() {
log.error "shipping failed... ${resp.data}" log.error "shipping failed... ${resp.data}"
} else { } else {
// clear the buffer // clear the buffer
atomicState.eventBuffer = []; atomicState.eventBuffer = []
} }
} }
} catch (e) { } catch (e) {