If you need any formatting or dig deeper in hash, use value_callbackYou just have to override #before_exec_command method to set labels and keys, here key are strings id in the hash returned by fog.see /knife/openstack_flavor_list.rb4> Next implement listing of resource - server, image, flavor etcit sets the auth params specific to your cloud. Note since this is fog based the functionality is already implemented in knife-cloud for reuse.3> see /knife/cloud/openstack_service.rb2> Change all references to openstack in both file names and class names1> you can simply use knife-openstack's "knife-cloud" branch as a base for your new implementationSo if you have fog support for your cloud, using knife-cloud would be a lot easier, although you can also use it without fog support.case 1: you have fog support
5> next say create server. see knife/openstack_server_createAgain you override #before_exec_command to setup server_def hash used by fog for create server. You also have #after_exec_command if you want to carry out any post server creation steps, say for openstack we assign floating ip after server creation.
5.1> bootstrap - this is really fog independent. see same openstack_server_create.rbmainly you just have to set the IP address (bootstrap_ip_address in #before_bootstrap) of the newly created VM and rest bootstrap functionality is already in place.
6> you just need file inplace similar to openstack_server_delete with banner. Again functionality using fog delete is in place.case 2: you don't have fog support which is mostly your case for now.
Most of the steps above are same. You will need to dig a little deeper in knife-cloud gem implementation. Say have a look how knife/cloud/fog/service.rb is implemented, you will have to write a similar service using your custom APIs (instead of case1 - point 3 above).
Benefit here is you can reuse framework and additionally the bootstrap part should work as is.Hope that helps.Thanks,KaustubhOn Mon, May 26, 2014 at 5:59 PM, Jek Sirex < " target="_blank"> > wrote:
Thanks for links!But I still can't understand how to use knife-cloud framework. knife-openstack looks like copy-paste from knife-ec2 (and others) BUT there are no references from knife-openstack to knife-cloud plugin. knife-vcloud plugin looks same.For example, to implement this plugin I should do the following steps:1. Implement gem fog-or2 (fog plugin for my cloud. `or2` is short name for this cloud)2. Create empty gem knife-or23. Next, looks like I should copy-paste all from knife-ec2 and replace ec2 to or2In the these steps knife-cloud missing.Or may be I missing something?2014-05-26 14:03 GMT+03:00 Kaustubh Deorukhkar < " target="_blank"> >:You can have a look at http://www.slideshare.net/Clogeny/writing-a-knife-cloud-plugin-for-your-shiny-vmware-vcloud-director
knife-cloud is a framework that can help reuse and structure your cloud plugin.
Here is knife-openstack implementation using knife-cloud (fog based) which can be a good reference.If you want to write non-fog based implementation, please have a look at https://github.com/opscode/knife-cloud/blob/master/lib/chef/knife/cloud/service.rb
This should give you a feel of what needs to be implemented.Thanks,
KaustubhOn Mon, May 26, 2014 at 4:10 PM, Jek Sirex < " target="_blank"> > wrote:
Ohai, Chefs!I have my custom private cloud with custom API. I've implemented gem for talking to this api. Now I'm thinking about knife plugin:knife mycloud server create ...etc...There is hard to find good guide how to do it. Should I copy-paste existing project, like https://github.com/opscode/knife-ec2 or start somewhere else?Also I found https://github.com/opscode/knife-cloudBut it hasn't any documentation or examples about how to use it. Does anyone have such examples?Should I first extend gem fog with my cloud?Thanks!---Yauhen
Archive powered by MHonArc 2.6.16.