{"action":"created","issue":{"url":"https://api.github.com/repos/01org/ciao/issues/556","repository_url":"https://api.github.com/repos/01org/ciao","labels_url":"https://api.github.com/repos/01org/ciao/issues/556/labels{/name}","comments_url":"https://api.github.com/repos/01org/ciao/issues/556/comments","events_url":"https://api.github.com/repos/01org/ciao/issues/556/events","html_url":"https://github.com/01org/ciao/issues/556","id":176954910,"number":556,"title":"Floating IP Support: Controller and Web UI Requirements","user":{"login":"mcastelino","id":7387737,"avatar_url":"https://avatars.githubusercontent.com/u/7387737?v=3","gravatar_id":"","url":"https://api.github.com/users/mcastelino","html_url":"https://github.com/mcastelino","followers_url":"https://api.github.com/users/mcastelino/followers","following_url":"https://api.github.com/users/mcastelino/following{/other_user}","gists_url":"https://api.github.com/users/mcastelino/gists{/gist_id}","starred_url":"https://api.github.com/users/mcastelino/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mcastelino/subscriptions","organizations_url":"https://api.github.com/users/mcastelino/orgs","repos_url":"https://api.github.com/users/mcastelino/repos","events_url":"https://api.github.com/users/mcastelino/events{/privacy}","received_events_url":"https://api.github.com/users/mcastelino/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/01org/ciao/labels/ciao-cli","name":"ciao-cli","color":"fbca04"},{"url":"https://api.github.com/repos/01org/ciao/labels/ciao-cnci-agent","name":"ciao-cnci-agent","color":"0052cc"},{"url":"https://api.github.com/repos/01org/ciao/labels/ciao-controller","name":"ciao-controller","color":"d4c5f9"},{"url":"https://api.github.com/repos/01org/ciao/labels/configuration","name":"configuration","color":"1d76db"},{"url":"https://api.github.com/repos/01org/ciao/labels/datastore","name":"datastore","color":"5319e7"},{"url":"https://api.github.com/repos/01org/ciao/labels/documentation","name":"documentation","color":"0052cc"},{"url":"https://api.github.com/repos/01org/ciao/labels/networking","name":"networking","color":"fef2c0"},{"url":"https://api.github.com/repos/01org/ciao/labels/new-feature","name":"new-feature","color":"0052cc"},{"url":"https://api.github.com/repos/01org/ciao/labels/P1","name":"P1","color":"b60205"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2016-09-14T16:26:41Z","updated_at":"2016-09-14T17:08:32Z","closed_at":null,"body":"Folks,\r\n\r\nFloating IP support is being enabled in the CNCI.\r\n\r\nQuick summary:\r\n---------------------\r\n- SSNTP supports two commands today\r\n\thttps://github.com/01org/ciao/blob/56930eab39e00665cbdcd9f56bd0748f3129ee67/payloads/assignpublicIP.go\r\n\t- CommandAssignPublicIP\r\n\t- CommandReleasePublicIP\r\n- The CNCI will start supporting these two commands\r\n- These two commands allow assignment of a Public IP to a given InstanceUUID\r\n\r\nWhat is a Public IP:\r\n------------------------\r\n- A public IP can be any IP that is routable at the Data Center underlay (physical layer)\r\n\t- Hence it can be an internet routable IP or\r\n\t- A data center local IP which is only routable within the data center\r\n- The CNCI is sitting on the underlay. Hence as long as the traffic makes it to the physical network segment on which the CNCI resides the CNCI will pick it up\r\n\r\nNote: Routing of the data center traffic such that the public IP gets routed to the CNCI is outside the scope of Ciao today. BGP or OSPF can be setup on the NN to advertise the fact that a given NN is hosting a CNCI which is hosting a given public IP.\r\n\r\nConcepts:\r\n----------------\r\n- Public IP Pool: The pool of public IP's available to Ciao to assign to instances across tenants. The public IP pool is global to Ciao and _not_ tenant specific. \r\n\t- The public IP pool can be specified in multiple formats\r\n\t- CIDR: a.b.c.d/p\r\n\t- Range: a.b.c.d-a.b.x.y\r\n\t- Individual IPs: a1.b1.c1.d1,a2.b2.c2.d2\r\n\r\n- Ciao can have multiple pools at any given time\r\n\r\n- Currently there are no plans to assign a pool to a tenant\r\n\r\n- A tenant will not be able to choose an IP for a given instance\r\n\t- The tenant _may_ in the future get to choose which pool the IP can come from\r\n        - Even in this case the pool will be an _abstract_ admin defined context\r\n\r\n\r\nRequirements for other components:\r\n-----------------------------------------------\r\nController:\r\n-------------\r\nExternal API:\r\n- should support creation of a pool of public IPs\r\n- should support creation of multiple such pools\r\n- should support assignment of public IP from a given pool to a given instance\r\n- should support release of public IP from a given instance\r\n- may support public IP stats\r\n          - free/in use per pool\r\n\r\nNote: In the first version we can support a single default pool for all tenants\r\n\r\nInternal Implementation\r\n-------------------------------\r\n- Should pick a free IP from the pool and generate a CommandAssignPublicIP and send it to the CNCI belonging to that tenant\r\n\t- The controller decides the IP to assign (not the user)\r\n- Should flag an error if the pool is exhausted\r\n- in the future when we support multiple CNCI's per tenant, it should be sent to the CNCI hosting the instance\r\n- Instance deletion handling\r\n          - the controller should first release the public IP before deleting the instance\r\n\r\n\r\nWebUI\r\n--------\r\n- should support creation of a pool (admin only)\r\n- should support creation of multiple pools (admin only)\r\n- should support display of available pools\r\n- should support assignment of public IP to a given instance (tenant and admin)\r\n- should support release of public IP from a given instance (tenant and admin)\r\n- may support a admin view that shows Public IP mapping\r\n        - IP stats (available, free)\r\n        - within tenant (tenant view)\r\n        - across tenants (admin view)\r\n\r\nDeletion of a pool\r\n--------------------\r\n- Currently out of scope. But will involve freeing all instances with that IP and then deleting the pool\r\n\r\n\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/01org/ciao/issues/comments/247084681","html_url":"https://github.com/01org/ciao/issues/556#issuecomment-247084681","issue_url":"https://api.github.com/repos/01org/ciao/issues/556","id":247084681,"user":{"login":"tpepper","id":2745300,"avatar_url":"https://avatars.githubusercontent.com/u/2745300?v=3","gravatar_id":"","url":"https://api.github.com/users/tpepper","html_url":"https://github.com/tpepper","followers_url":"https://api.github.com/users/tpepper/followers","following_url":"https://api.github.com/users/tpepper/following{/other_user}","gists_url":"https://api.github.com/users/tpepper/gists{/gist_id}","starred_url":"https://api.github.com/users/tpepper/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tpepper/subscriptions","organizations_url":"https://api.github.com/users/tpepper/orgs","repos_url":"https://api.github.com/users/tpepper/repos","events_url":"https://api.github.com/users/tpepper/events{/privacy}","received_events_url":"https://api.github.com/users/tpepper/received_events","type":"User","site_admin":false},"created_at":"2016-09-14T17:08:32Z","updated_at":"2016-09-14T17:08:32Z","body":"While the external routing is out of scope currently...what can we do for testability?  Could the CNCI / NN at least do gratuitous ARP announcements upon CommandAssignPublicIP processing?"}}
{"actor":{"display_login":"tpepper"}}