Re: Seek guide to extend BOSH to support other IaaSs


Guillaume Berche
 

Hi Dmitry,

Is there official documentation of the external CPI contract ? I had
noticed a draft [1] you mentionned on bosh-dev@ a while ago. An official
doc will be quite helpful as a complement to existing impls as to reduce
the required reverse engineering efforts.

Moving [1] to a markdown file may allow for community contributions (I'm
not sure how submit PR against github wiki). I'm happy to contribute PRs
from your answers to enhance this doc if work on the official doc is low on
the current priority list, and if this could help the community.

In particular, the current_vm and ping actions are listed but currently
lack associated doc [1].

Looking at the warden cpi, it seems the ping maybe optional [2]. [3]
indicates the ping is rather a call made to the agent, which is confirmed
by bosh-init traces, where I see the following:

[httpClient] 2015/06/19 16:10:02 DEBUG - Sending POST request with
body
{"method":"ping","arguments":[],"reply_to":"a09a1d1b-3910-45f3-5312-69eb4ee8ccde"},
endpoint https://mbus:mbus-password(a)10.106.236.106:6868/agent

Should then the cpi ping method be deprecated/removed from [1] ?

Regarding the current_vm method, the CPI ruby interface [2] mentions that
it is only used by the cpi itself. Does this mean that bosh won't call the
current_vm method and that it could be removed from the external cpi doc
[1] ?

I see the other following aspects of the documentation that would ease our
current prototyping work for a java jclouds-based external CPI work [4]
- external cpi instanciation lifecycle you kindly corrected us on [5]
- wire protocol using stdin/stdout (UTF8 encoding?, line feed as command
separator) stderr for traces

Thanks in advance,

Guillaume.

[1] https://github.com/cloudfoundry/bosh/wiki/BOSH-CPI-API-v1-%28WIP%29
[2]
https://github.com/cppforlife/bosh-warden-cpi/blob/e1423b4327b82919bd6e57eba0433fc7b06dae85/action/concrete_factory_test.go#L245
[3]
https://github.com/cloudfoundry/bosh-init/blob/master/docs/architecture.md#deploy-command-flow
[4]
https://github.com/cloudfoundry-community/bosh-cloudstack-cpi-core/blob/a34b5f0046dfb47817438e55fdbc1829cdfa7534/TODO.txt#L3-L21
[5]
https://github.com/Orange-OpenSource/bosh-cloudstack-cpi-release/issues/1#issue-90481443

On Wed, Jun 24, 2015 at 12:00 AM, Dmitriy Kalinin <dkalinin(a)pivotal.io>
wrote:

Hey Jim,

All officially supported CPIs currently come built-in *and* also come as
CPI releases.

CPI releases can be used with bosh-init and the Director. Take a look at
https://bosh.io/docs/init.html which shows an example manifest for each
external CPI used with bosh-init. All of these examples have two things in
common: they reference a CPI release and also configure the Director with
`director.cpi_job: cpi` configuration. That's how Director knows how to
call the CPI.

https://github.com/cppforlife/bosh-warden-cpi &
https://github.com/maximilien/bosh-softlayer-cpi are examples of external
CPIs.

Feel free to ask more questions or if you want to chat on Google Hangout.

Dmitriy

On Tue, Jun 23, 2015 at 1:13 AM, jinsenglin <jinsenglin(a)iii.org.tw> wrote:

Hi Dmitriy

Sorry to bother you.

If my understanding is correct, all the documents [1] are based on the
usage of "built-in CPI". I also found two examples of "external CPI"
implementation [2][3]. My question is how do I enable BOSH Director to use
the specific external CPI? Is there any document?

[1] http://bosh.io/docs
[2] https://github.com/cppforlife/bosh-warden-cpi
[3] https://github.com/maximilien/bosh-softlayer-cpi

Thanks

Jim

-----Original Message-----
From: cf-bosh-bounces(a)lists.cloudfoundry.org [mailto:
cf-bosh-bounces(a)lists.cloudfoundry.org] On Behalf Of James Bayer
Sent: Tuesday, June 23, 2015 12:22 PM
To: Discussions about the Cloud Foundry BOSH project.
Subject: Re: [cf-bosh] Seek guide to extend BOSH to support other IaaSs

dmitriy reads this list and hangs out in the #bosh irc channel [1]. the
softlayer cpi is an example of an external cpi that can be used with bosh
init, so you could probably look at how that one works.

[1] http://webchat.freenode.net/?channels=bosh


On Mon, Jun 22, 2015 at 9:19 PM, jinsenglin <jinsenglin(a)iii.org.tw>
wrote:


Hi James



Thanks for your update. Here are my findings about External CPI:

1. Tracker:
https://www.pivotaltracker.com/n/projects/1133984

2. External API for SoftLayer:
https://github.com/maximilien/bosh-softlayer-cpi



I can see many contributions by Dmitriy but still don’t know how
to contact him.



So far, my understanding is that the team members are developing
a new CPI form called External API. To achieve this goal, they are
modifying BOSH and extracting existing CPIs ,e.g., aws, vsphere, vcloud,
openstack, to be external CPIs. In future, we can write our own External
CPI and then inject it into BOSH without source code adjustments on BOSH
components. Am I correct?



Jim



From: cf-bosh-bounces(a)lists.cloudfoundry.org [mailto:
cf-bosh-bounces(a)lists.cloudfoundry.org] On Behalf Of James Bayer
Sent: Tuesday, June 23, 2015 3:43 AM


To: Discussions about the Cloud Foundry BOSH project.
Subject: Re: [cf-bosh] Seek guide to extend BOSH to support other
IaaSs





that blog is a bit out of date. a track of work called "bosh
external cpi" is about finished that enables plugging in the CPIs without
having to make bosh component adjustments (depends on the target IaaS i
suppose). i encourage you to reach out to dimitriy.



On Mon, Jun 22, 2015 at 12:04 AM, jinsenglin <
jinsenglin(a)iii.org.tw> wrote:

Hi Guillaume



Thanks for your help. The IaaS I am working for is our internal
computing platform, which is developed based on KVM. I also found a useful
blog article [1] about how to build a custom BOSH CPI. Bad news is that to
do so needs make adjustments inside the BOSH components. Such adjustments
will cause upgrade issues in future when newer version of BOSH is released.



[1] http://blog.altoros.com/cloud-foundry-bosh-cpi-for-gce.html



Jim



From: cf-bosh-bounces(a)lists.cloudfoundry.org [mailto:
cf-bosh-bounces(a)lists.cloudfoundry.org] On Behalf Of Guillaume Berche
Sent: Friday, June 19, 2015 2:55 PM
To: Discussions about the Cloud Foundry BOSH project.
Subject: Re: [cf-bosh] Seek guide to extend BOSH to support other
IaaSs



Hi Jim,

Until the bosh contributors get you an official doc, here are
some pointers I collected while studying the development of an external CPI
[1]

* Stdin/stdout API wiki <
https://github.com/cloudfoundry/bosh/wiki/BOSH-CPI-API-v1-%28WIP%29>
* Sequenting of calls <
https://groups.google.com/a/cloudfoundry.org/d/msg/bosh-dev/QbZjCBJwNPE/dazJAUcjIEIJ
* "One way to find out order of all those things is
to run bosh-lite and look at the logs. All cpi methods act on some
resources that have cloud ids. e.g. attach_disk for example takes vm_cid
and disk_cid which means that create_vm and create_disk would be called at
some point before this. Important thing to note is that bosh may call any
of those methods in a different order depending on the situation as long as
bosh is able to provide needed arguments to the methods."
* Another way is to look at the debug traces from
the bosh-init logging <https://bosh.io/docs/using-bosh-init.html#logging>
* diagrams:

* deploy flow <
https://github.com/cloudfoundry/bosh-init/blob/master/docs/architecture.md#deploy-command-flow
* delete flow <
https://github.com/cloudfoundry/bosh-init/blob/master/docs/architecture.md#delete-command-flow

BTW, which Iaas are you looking at developping a CPI for ?

Hope this helps,

Guillaume.


[1]
https://github.com/cloudfoundry-community/bosh-cloudstack-cpi/issues/23#issuecomment-109260841



On Thu, Jun 18, 2015 at 5:37 AM, jinsenglin <
jinsenglin(a)iii.org.tw> wrote:

Hi all



I’m trying to extend BOSH to support other IaaSs. However there
[1] is no document about how to do so, but only few item bullets listed
without hyperlinks. For understanding it, so far what I only can do is to
trace the existing CPI implementation source code, like AWS CPI[2],
OpenStack CPI[3], or vSphere CPI[3]. My question is that is there any
further guide to help get quickly knowledge about it? Thanks you all for
kindness.



[1] https://bosh.io/docs

[2] https://github.com/cloudfoundry/bosh/tree/master/bosh_aws_cpi

[3]
https://github.com/cloudfoundry/bosh/tree/master/bosh_openstack_cpi

[4]
https://github.com/cloudfoundry/bosh/tree/master/bosh_vsphere_cpi



Jim

Software Engineer

jinsenglin(a)iii.org.tw



Data Analytics Technology & Applications Research Institute (DATA)

http://www.iii.org.tw/




_______________________________________________
cf-bosh mailing list
cf-bosh(a)lists.cloudfoundry.org
https://lists.cloudfoundry.org/mailman/listinfo/cf-bosh




_______________________________________________
cf-bosh mailing list
cf-bosh(a)lists.cloudfoundry.org
https://lists.cloudfoundry.org/mailman/listinfo/cf-bosh







--

Thank you,



James Bayer


_______________________________________________
cf-bosh mailing list
cf-bosh(a)lists.cloudfoundry.org
https://lists.cloudfoundry.org/mailman/listinfo/cf-bosh






--

Thank you,

James Bayer


_______________________________________________
cf-bosh mailing list
cf-bosh(a)lists.cloudfoundry.org
https://lists.cloudfoundry.org/mailman/listinfo/cf-bosh

Join cf-bosh@lists.cloudfoundry.org to automatically receive all group messages.