extendingcloudstack) plugins)and)events))(and)*)extendingcloudstack) plugins)and)events))(and)*)...

17
Extending CloudStack Plugins and Events (and *) Rohit Yadav Software Architect, ShapeBlue [email protected] Twitter: @_bhaisaab

Upload: others

Post on 21-Feb-2021

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ExtendingCloudStack) Plugins)and)Events))(and)*)ExtendingCloudStack) Plugins)and)Events))(and)*) Rohit&Yadav& Software)Architect,ShapeBlue) rohit.yadav@shapeblue.com) Twitter:@_bhaisaab)

Extending  CloudStack  Plugins  and  Events    (and  *)  

Rohit  Yadav  Software  Architect,  ShapeBlue  [email protected]  

Twitter:  @_bhaisaab  

Page 2: ExtendingCloudStack) Plugins)and)Events))(and)*)ExtendingCloudStack) Plugins)and)Events))(and)*) Rohit&Yadav& Software)Architect,ShapeBlue) rohit.yadav@shapeblue.com) Twitter:@_bhaisaab)

@shapeblue   #ccceu14  

v  Software  Architect  at  ShapeBlue  v  Specialise  in…  

v  3rd  party  integrations  and  features  v  API,  Auth  and  DB  layer,  SystemVMs  and  Virtual  Router  v  KVM,  Build  system,  Repository,  tooling  and  automation  etc.  v  Author:  CloudMonkey,  SAML2  plugin,  API  discovery,  SystemVM  

building  and  exporting  using  VirtualBox  etc.  v  CloudStack  contributor  and  committer  since  2012  v  B.Tech  and  M.Tech  from  IIT-­‐BHU  

About    Me  

Page 3: ExtendingCloudStack) Plugins)and)Events))(and)*)ExtendingCloudStack) Plugins)and)Events))(and)*) Rohit&Yadav& Software)Architect,ShapeBlue) rohit.yadav@shapeblue.com) Twitter:@_bhaisaab)

@shapeblue   #ccceu14  

 “ShapeBlue  are  expert  builders  of  public  &    private  clouds.  They  are  the  leading  global    

Apache  CloudStack    integrator  &  consultancy”  

 

About  ShapeBlue  

Page 4: ExtendingCloudStack) Plugins)and)Events))(and)*)ExtendingCloudStack) Plugins)and)Events))(and)*) Rohit&Yadav& Software)Architect,ShapeBlue) rohit.yadav@shapeblue.com) Twitter:@_bhaisaab)
Page 5: ExtendingCloudStack) Plugins)and)Events))(and)*)ExtendingCloudStack) Plugins)and)Events))(and)*) Rohit&Yadav& Software)Architect,ShapeBlue) rohit.yadav@shapeblue.com) Twitter:@_bhaisaab)

@shapeblue   #ccceu14  

v  Integrate  with  3rd  party  solutions  v  Create  new  feature  and  functionality,  provide  APIs  v  Building  solutions  on  top  of  CloudStack  v  Get  things  done  

Why  do  I  need  to  extend  CloudStack?  

Page 6: ExtendingCloudStack) Plugins)and)Events))(and)*)ExtendingCloudStack) Plugins)and)Events))(and)*) Rohit&Yadav& Software)Architect,ShapeBlue) rohit.yadav@shapeblue.com) Twitter:@_bhaisaab)

@shapeblue   #ccceu14  

v  Plugins  v  Auth  Plugins  v  Event  consumers  (AMQP)  v  Thrift  Plugin  (RPC  servers/clients)  v  UI  Plugins  

Extending  CloudStack  

Page 7: ExtendingCloudStack) Plugins)and)Events))(and)*)ExtendingCloudStack) Plugins)and)Events))(and)*) Rohit&Yadav& Software)Architect,ShapeBlue) rohit.yadav@shapeblue.com) Twitter:@_bhaisaab)

@shapeblue   #ccceu14  

CloudStack  Architecture  

Page 8: ExtendingCloudStack) Plugins)and)Events))(and)*)ExtendingCloudStack) Plugins)and)Events))(and)*) Rohit&Yadav& Software)Architect,ShapeBlue) rohit.yadav@shapeblue.com) Twitter:@_bhaisaab)

@shapeblue   #ccceu14  

Life  of  an  API  call  

Page 9: ExtendingCloudStack) Plugins)and)Events))(and)*)ExtendingCloudStack) Plugins)and)Events))(and)*) Rohit&Yadav& Software)Architect,ShapeBlue) rohit.yadav@shapeblue.com) Twitter:@_bhaisaab)

@shapeblue   #ccceu14  

Anatomy  of  CloudStack  Plugin  

Page 10: ExtendingCloudStack) Plugins)and)Events))(and)*)ExtendingCloudStack) Plugins)and)Events))(and)*) Rohit&Yadav& Software)Architect,ShapeBlue) rohit.yadav@shapeblue.com) Twitter:@_bhaisaab)

@shapeblue   #ccceu14  

 Covered  in  previous  CCC  talks,  

so  let’s  move  on  J  

How  to  write  a  plugin?  

Page 11: ExtendingCloudStack) Plugins)and)Events))(and)*)ExtendingCloudStack) Plugins)and)Events))(and)*) Rohit&Yadav& Software)Architect,ShapeBlue) rohit.yadav@shapeblue.com) Twitter:@_bhaisaab)

@shapeblue   #ccceu14  

v  Implement  a  PluggableAPIAuthenticator:      -­‐  List<Class<?>>  getAuthCommands();  

v  Implement  APIAuthenticator  for  API  endpoints:      -­‐  String  authenticate(…);      -­‐  APIAuthenticationType  getAPIType();      -­‐  setAuthenticators(List<PluggableAPIAuthenticator>  authenticators);  

v  Endpoint  type,  APIAuthenticationType:  LOGIN_API,  LOGOUT_API  

Extending  CloudStack:  Auth  Plugin  

Page 12: ExtendingCloudStack) Plugins)and)Events))(and)*)ExtendingCloudStack) Plugins)and)Events))(and)*) Rohit&Yadav& Software)Architect,ShapeBlue) rohit.yadav@shapeblue.com) Twitter:@_bhaisaab)

@shapeblue   #ccceu14  

Walkthrough  &  Demo  SAML2  Auth  Plugin  

Page 13: ExtendingCloudStack) Plugins)and)Events))(and)*)ExtendingCloudStack) Plugins)and)Events))(and)*) Rohit&Yadav& Software)Architect,ShapeBlue) rohit.yadav@shapeblue.com) Twitter:@_bhaisaab)

@shapeblue   #ccceu14  

v  Consumer  CloudStack  Events  over  AMQP  event  bus  v  Better  programming  model:  Event  driven  vs.  Polling  v  Choice  of  stack  for  implementing  Event  consumers,  such  as  

Python,  Go,  Ruby,  PHP,  Java,  C++  etc.  v  Easy  setup:  Install  RabbitMQ,  put  a  Spring  bean  config  xml  file  in  

minimum  change  required,  put  a  bean  in  /etc/cloudstack/management/META-­‐INF/cloudstack/core  (http://cloudstack-­‐administration.readthedocs.org/en/latest/events.html)  

Extending  CloudStack:  AMQP  Consumer  

Page 14: ExtendingCloudStack) Plugins)and)Events))(and)*)ExtendingCloudStack) Plugins)and)Events))(and)*) Rohit&Yadav& Software)Architect,ShapeBlue) rohit.yadav@shapeblue.com) Twitter:@_bhaisaab)

@shapeblue   #ccceu14  

Extending  CloudStack:  AMQP  Consumer  

Page 15: ExtendingCloudStack) Plugins)and)Events))(and)*)ExtendingCloudStack) Plugins)and)Events))(and)*) Rohit&Yadav& Software)Architect,ShapeBlue) rohit.yadav@shapeblue.com) Twitter:@_bhaisaab)

@shapeblue   #ccceu14  

v  Apache  Thrift  –  software  framework  for  scalable  cross-­‐language  service  deployment,  combines  software  stack  …  

v   A  new  idea  to  develop  independent  components  bound  a  common  interface  (thrift  definition)  written  in  different  languages  

v  Interface  bindings  are  auto-­‐generated  so  changes  can  be  automatically  handled  and  fixed  in  many  cases  

v   Freedom  to  choice  of  stacks,  implementation  v  Demo  and  walkthrough  

Writing  a  Thrift  Plugin  (RPC  Server/Client)  

Page 16: ExtendingCloudStack) Plugins)and)Events))(and)*)ExtendingCloudStack) Plugins)and)Events))(and)*) Rohit&Yadav& Software)Architect,ShapeBlue) rohit.yadav@shapeblue.com) Twitter:@_bhaisaab)

@shapeblue   #ccceu14  

v  Write  a  plugin:  ui/plugins/CCCPlugin  v  Enable  plugin  in  ui/plugins/plugins.js  v  Demo  

Extending  CloudStack:  UI  Plugin  

Page 17: ExtendingCloudStack) Plugins)and)Events))(and)*)ExtendingCloudStack) Plugins)and)Events))(and)*) Rohit&Yadav& Software)Architect,ShapeBlue) rohit.yadav@shapeblue.com) Twitter:@_bhaisaab)

www.shapeblue.com   #ccceu14  

Thank  You  

   

Q&A