Skip to content

Instantly share code, notes, and snippets.

@toracle
Last active September 7, 2017 15:11
Show Gist options
  • Save toracle/eacdce7a9ce82c3ba9b4496192fdeade to your computer and use it in GitHub Desktop.
Save toracle/eacdce7a9ce82c3ba9b4496192fdeade to your computer and use it in GitHub Desktop.
tutorial-opsworksbot-stack
from bothub_client.bot import BaseBot
from bothub_client.messages import Message
class Bot(BaseBot):
def on_stacks(self, event, context):
data = self.get_user_data()
client = self.get_boto_client(data)
response = client.describe_stacks()
stacks = [(s['StackId'], s['Name']) for s in response['Stacks']]
message = Message(event)
message.set_text('Select one stack:')
for stack in stacks:
message.add_postback_button(stack[1], '/use_stack {} {}'.format(stack[0], stack[1]))
self.send_message(message)
def on_use_stack(self, event, context, stack_id, stack_name):
data = self.get_user_data()
data['stack_id'] = stack_id
self.set_user_data(data)
message = Message(event)
message.set_text('Use stack {} now'.format(stack_name))
message.add_postback_button('Layer list', '/layers')
message.add_postback_button('Deploy', '/deploy')
self.send_message(message)
def get_boto_client(self, data):
credentials = data['credentials']
kwargs = {
'aws_access_key_id': credentials['aws_access_key_id'],
'aws_secret_access_key': credentials['aws_secret_access_key'],
'region_name': 'us-east-1'
}
client = boto3.client('opsworks', **kwargs)
return client
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment