FYI: This is the reason is that there is still n-net. [1] [1] http://docs.openstack.org/openstack-ops/content/nova-network-deprecation.html
Cheers, S On Mon, Mar 28, 2016 at 5:08 PM, joehuang <[email protected]> wrote: > Hi, > > > > Agree, it’s quite important not to use Nova-network in devstack. In devstack > local.conf, make sure the Neutron service is enabled and Nova-network is > disabled. > > > > # Use Neutron instead of nova-network > > disable_service n-net > > enable_service q-svc > > enable_service q-svc1 > > enable_service q-dhcp > > enable_service q-agt > > > > And also check the configuration in Nova to use Neutron > > > > Best Regards > > Chaoyi Huang ( Joe Huang ) > > > > From: Vega Cai [mailto:[email protected]] > Sent: Monday, March 28, 2016 2:55 PM > To: Yipei Niu > Cc: OpenStack Development Mailing List (not for usage questions); joehuang > Subject: Re: [openstack-dev] [tricircle] playing tricircle with two node > configuration > > > > Hi Yipei, > > > > Check "network_api_class" and "use_neutron" options in your nova.conf. It > seems that your nova API is not configured to use neutron. > > > > BR > > Zhiyuan > > > > On 28 March 2016 at 13:25, Yipei Niu <[email protected]> wrote: > > Hi, all, > > > > After I execute the command "nova boot --flavor 1 --image > c30b097c-b185-4f70-9fcd-09ffdaee5793 --nic > net-id=a9059cde-3065-4615-859a-facd6aa66b76 --availability-zone az1 vm1", > there exist some problem with the argument port. In t-ngw.log, I find that > the status of port switches from ACTIVE to DOWN, which is marked as bold > below. Is it the reason why I failed to boot a VM? > > > > 2016-03-28 11:49:44.026 ^[[00;32mDEBUG neutronclient.client > [^[[01;36mreq-414f74df-019a-425c-8d49-a081706b2bd4 ^[[00;36madmin > admin^[[00;32m] ^[[01;35m^[[00;32mREQ: curl -i > http://192.168.56.101:9696//v2.0/ports.json -X POST -H "User-Agent: > python-neutronclient" -H "X-Auth-Token: 7cfcfb91173a4920adaf24db7eebd773" -d > '{"port": {"network_id": "a9059cde-3065-4615-859a-facd6aa66b76", > "admin_state_up": true}}'^[[00m ^[[00;33mfrom (pid=17537) http_log_req > /usr/local/lib/python2.7/dist-packages/neutronclient/common/utils.py:141^[[00m > > 2016-03-28 11:49:44.254 ^[[00;32mDEBUG neutronclient.client > [^[[01;36mreq-414f74df-019a-425c-8d49-a081706b2bd4 ^[[00;36madmin > admin^[[00;32m] ^[[01;35m^[[00;32mRESP: 201 {'Date': 'Mon, 28 Mar 2016 > 03:49:44 GMT', 'Connection': 'keep-alive', 'Content-Type': > 'application/json; charset=UTF-8', 'Content-Length': '384', > 'X-Openstack-Request-Id': 'req-b824dc9e-2fcf-4922-96a5-83beb1f0bff3'} > {"port": {"status": "ACTIVE", "name": "", "admin_state_up": true, > "network_id": "a9059cde-3065-4615-859a-facd6aa66b76", "tenant_id": > "29a524d386754a94850277afea1e569f", "device_owner": "", "mac_address": > "fa:16:3e:11:bd:09", "fixed_ips": [{"subnet_id": > "2bb5f6fd-01b5-4ad3-ac41-eb8a89a6323d", "ip_address": "10.0.8.5"}], "id": > "e27dc15d-188f-4d60-a38c-f48052d6330b", "device_id": ""}}^[[00m > ^[[00;33mfrom (pid=17537) http_log_resp > /usr/local/lib/python2.7/dist-packages/neutronclient/common/utils.py:150^[[00m > > 2016-03-28 11:49:44.277 ^[[00;32mDEBUG neutronclient.client > [^[[01;36mreq-414f74df-019a-425c-8d49-a081706b2bd4 ^[[00;36madmin > admin^[[00;32m] ^[[01;35m^[[00;32mREQ: curl -i > http://192.168.56.101:20001//v2.0/ports.json -X POST -H "User-Agent: > python-neutronclient" -H "X-Auth-Token: 7cfcfb91173a4920adaf24db7eebd773" -d > '{"port": {"name": "e27dc15d-188f-4d60-a38c-f48052d6330b", "admin_state_up": > true, "network_id": "25ebd3c0-ae47-4e77-be35-16d815bffe5c", "tenant_id": > "29a524d386754a94850277afea1e569f", "mac_address": "fa:16:3e:11:bd:09", > "fixed_ips": [{"subnet_id": "fd1abd0d-9398-4848-a3cf-57858868a480", > "ip_address": "10.0.8.5"}]}}'^[[00m ^[[00;33mfrom (pid=17537) http_log_req > /usr/local/lib/python2.7/dist-packages/neutronclient/common/utils.py:141^[[00m > > 2016-03-28 11:49:44.669 ^[[00;32mDEBUG neutronclient.client > [^[[01;36mreq-414f74df-019a-425c-8d49-a081706b2bd4 ^[[00;36madmin > admin^[[00;32m] ^[[01;35m^[[00;32mRESP: 201 {'Date': 'Mon, 28 Mar 2016 > 03:49:44 GMT', 'Connection': 'keep-alive', 'Content-Type': > 'application/json; charset=UTF-8', 'Content-Length': '808', > 'X-Openstack-Request-Id': 'req-d286f85c-bc4b-4d7c-9915-666fe13b48b5'} > {"port": {"status": "DOWN", "binding:host_id": "", "allowed_address_pairs": > [], "dns_assignment": [{"hostname": "host-10-0-8-5", "ip_address": > "10.0.8.5", "fqdn": "host-10-0-8-5.openstacklocal."}], "device_owner": "", > "binding:profile": {}, "port_security_enabled": true, "fixed_ips": > [{"subnet_id": "fd1abd0d-9398-4848-a3cf-57858868a480", "ip_address": > "10.0.8.5"}], "id": "0bbf77a4-c4e4-43ad-89a0-e55f053ef4da", > "security_groups": ["16f02958-2a4f-4f58-b560-b9fa76be1b0c"], "device_id": > "", "name": "e27dc15d-188f-4d60-a38c-f48052d6330b", "admin_state_up": true, > "network_id": "25ebd3c0-ae47-4e77-be35-16d815bffe5c", "dns_name": "", > "binding:vif_details": {}, "binding:vnic_type": "normal", > "binding:vif_type": "unbound", "tenant_id": > "29a524d386754a94850277afea1e569f", "mac_address": > "fa:16:3e:11:bd:09"}}^[[00m ^[[00;33mfrom (pid=17537) http_log_resp > /usr/local/lib/python2.7/dist-packages/neutronclient/common/utils.py:150^[[00m > > 2016-03-28 11:49:44.810 ^[[00;36mINFO eventlet.wsgi.server > [^[[01;36mreq-414f74df-019a-425c-8d49-a081706b2bd4 ^[[00;36madmin > admin^[[00;36m] ^[[01;35m^[[00;36mTraceback (most recent call last): > > File "/usr/local/lib/python2.7/dist-packages/eventlet/wsgi.py", line 454, > in handle_one_response > > result = self.application(self.environ, start_response) > > File > "/usr/local/lib/python2.7/dist-packages/pecan/middleware/recursive.py", line > 56, in __call__ > > return self.application(environ, start_response) > > File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 130, in > __call__ > > resp = self.call_func(req, *args, **self.kwargs) > > File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 195, in > call_func > > return self.func(req, *args, **kwargs) > > File > "/usr/local/lib/python2.7/dist-packages/keystonemiddleware/auth_token/__init__.py", > line 456, in __call__ > > response = req.get_response(self._app) > > File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1317, > in send > > application, catch_exc_info=False) > > File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1281, > in call_application > > app_iter = application(self.environ, start_response) > > File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 130, in > __call__ > > resp = self.call_func(req, *args, **self.kwargs) > > File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 195, in > call_func > > return self.func(req, *args, **kwargs) > > File > "/usr/local/lib/python2.7/dist-packages/oslo_middleware/request_id.py", line > 37, in __call__ > > response = req.get_response(self.application) > > File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1317, > in send > > application, catch_exc_info=False) > > File "/usr/local/lib/python2.7/dist-packages/eventlet/wsgi.py", line 454, > in handle_one_response > > result = self.application(self.environ, start_response) > > File > "/usr/local/lib/python2.7/dist-packages/pecan/middleware/recursive.py", line > 56, in __call__ > > return self.application(environ, start_response) > > File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 130, in > __call__ > > resp = self.call_func(req, *args, **self.kwargs) > > File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 195, in > call_func > > return self.func(req, *args, **kwargs) > > File > "/usr/local/lib/python2.7/dist-packages/keystonemiddleware/auth_token/__init__.py", > line 456, in __call__ > > response = req.get_response(self._app) > > File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1317, > in send > > application, catch_exc_info=False) > > File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1281, > in call_application > > app_iter = application(self.environ, start_response) > > File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 130, in > __call__ > > resp = self.call_func(req, *args, **self.kwargs) > > File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 195, in > call_func > > return self.func(req, *args, **kwargs) > > File > "/usr/local/lib/python2.7/dist-packages/oslo_middleware/request_id.py", line > 37, in __call__ > > response = req.get_response(self.application) > > File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1317, > in send > > application, catch_exc_info=False) > > return self.func(req, *args, **kwargs) > > File > "/usr/local/lib/python2.7/dist-packages/oslo_middleware/request_id.py", line > 37, in __call__ > > response = req.get_response(self.application) > > File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1317, > in send > > application, catch_exc_info=False) > > File "/usr/local/lib/python2.7/dist-packages/pecan/core.py", line 829, in > __call__ > > return super(Pecan, self).__call__(environ, start_response) > > File "/usr/local/lib/python2.7/dist-packages/pecan/core.py", line 678, in > __call__ > > self.invoke_controller(controller, args, kwargs, state) > > File "/usr/local/lib/python2.7/dist-packages/pecan/core.py", line 572, in > invoke_controller > > result = controller(*args, **kwargs) > > File "/opt/stack/tricircle/tricircle/nova_apigw/controllers/server.py", > line 376, in post > > nics=nics) > > File "/opt/stack/tricircle/tricircle/common/client.py", line 87, in > handle_args > > return func(*args, **kwargs) > > File "/opt/stack/tricircle/tricircle/common/client.py", line 358, in > create_resources > > return handle.handle_create(cxt, resource, *args, **kwargs) > > File "/opt/stack/tricircle/tricircle/common/resource_handle.py", line 227, > in handle_create > > *args, **kwargs).to_dict() > > File "/usr/local/lib/python2.7/dist-packages/novaclient/v2/servers.py", > line 1038, in create > > **boot_kwargs) > > File "/usr/local/lib/python2.7/dist-packages/novaclient/v2/servers.py", > line 555, in _boot > > return_raw=return_raw, **kwargs) > > File "/usr/local/lib/python2.7/dist-packages/novaclient/base.py", line > 302, in _create > > _resp, body = self.api.client.post(url, body=body) > > File "/usr/local/lib/python2.7/dist-packages/novaclient/client.py", line > 451, in post > > return self._cs_request(url, 'POST', **kwargs) > > File "/usr/local/lib/python2.7/dist-packages/novaclient/client.py", line > 426, in _cs_request > > resp, body = self._time_request(url, method, **kwargs) > > File "/usr/local/lib/python2.7/dist-packages/novaclient/client.py", line > 399, in _time_request > > resp, body = self.request(url, method, **kwargs) > > File "/usr/local/lib/python2.7/dist-packages/novaclient/client.py", line > 393, in request > > raise exceptions.from_response(resp, body, url, method) > > BadRequest: Unknown argument: port (HTTP 400) (Request-ID: > req-d6719f21-ee97-49ed-a058-a303b16abcf1) > > ^[[00m > > 2016-03-28 11:49:44.814 ^[[00;36mINFO eventlet.wsgi.server > [^[[01;36mreq-414f74df-019a-425c-8d49-a081706b2bd4 ^[[00;36madmin > admin^[[00;36m] ^[[01;35m^[[00;36m192.168.56.101 "POST > /v2.1/29a524d386754a94850277afea1e569f/servers HTTP/1.1" status: 500 len: > 139 time: 2.1919141^[[00m > > > > Best regards, > > Yipei > > > > On Wed, Mar 23, 2016 at 1:19 PM, Shinobu Kinjo <[email protected]> wrote: > > On Wed, Mar 23, 2016 at 12:41 PM, joehuang <[email protected]> wrote: >> Hi, Yipei, >> >> >> >> When you play Tricircle, it’s important to know that Tricircle is the >> OpenStack API gateway to other OpenStack instances. In the Readme, Pod1, >> Pod2 are two OpenStack instances, before trying Tricircle, you can make >> sure >> the environment is normal or not by executeing command separately on Pod1, >> Pod2, just Nova –os-region-name Pod1, or Nova –os-region-name Pod2, in >> fact, because Pod1,Pod2 are two normal OpenStack instances, any command to >> Pod1,Pod2 should be successful. Otherwise that means there are some issue >> in the installation of the environment itself. Only when each bottom >> OpenStack can work correctly, then you can even manually add Tricircle, or >> through the scripts in the github to install Tircircle automaticly, as the >> API gateway to Pod1 and Pod2, just like you add one load balancer before >> your multiple web servers. > > Yeah, above explanation is really essential for the tricircle. > > >> >> >> >> After the Tricircle was added, then the API will flow from Tricircle >> services like Nova-APIGW/Cinder-APIGW/Neutron API to the bottom Pod1, >> Pod2. >> >> >> >> So if you use Nova boot, and some error happened, you can ask question: >> >> 1. Is the command sent to the Tricircle Nova-APIGW? >> >> 2. What’ll will do for the Nova-APIGW for the next step? >> >> 3. Is the API request forwarded by Tricircle correctly to the proper >> bottom OpenStack? >> >> 4. Is the bottom OpenStack working normal even without Tricircle? >> >> 5. Is the API request forwarded by Tricircle includes the correct >> request content? >> >> 6. … >> >> >> >> You can carry the map before you try to fix the issue. And break down a >> big >> system into smaller part, and make sure which part works fine, which not >> in >> order. >> >> >> >> From the information you provided, can’t make judgment the error is >> occurred >> at Tricircle services, or bottom pod, or which pod. Don’t know which step >> the error occurred. And don’t know the request information, how the >> requested will be routed and processed, a lot of context needed to >> diagnose >> an error. >> >> >> >> Best Regards >> >> Chaoyi Huang ( Joe Huang ) >> >> >> >> From: Yipei Niu [mailto:[email protected]] >> Sent: Wednesday, March 23, 2016 10:36 AM >> To: OpenStack Development Mailing List (not for usage questions) >> Cc: joehuang; Zhiyuan Cai >> Subject: [tricircle] playing tricircle with two node configuration >> >> >> >> Hi, Joe and Zhiyuan, >> >> >> >> I have already finished installing devstack in two nodes with tricircle. I >> encounter some errors when testing cross-pod L3 networking with DevStack. >> I >> followed the README.md in github, every thing goes well until I boot >> virtual >> machines with the following command: >> >> >> >> nova boot --flavor 1 --image 60a8184b-a4be-463d-a8a1-48719edc37a3 --nic >> net-id=76356099-f3bd-40a5-83bd-600b78b671eb --availability-zone az1 vm1 >> >> >> >> The info in the terminal is as follows: >> >> Your request was processed by a Nova API which does not support >> microversions (X-OpenStack-Nova-API-Version header is missing from >> response). Warning: Response may be incorrect. >> >> Your request was processed by a Nova API which does not support >> microversions (X-OpenStack-Nova-API-Version header is missing from >> response). Warning: Response may be incorrect. >> >> Your request was processed by a Nova API which does not support >> microversions (X-OpenStack-Nova-API-Version header is missing from >> response). Warning: Response may be incorrect. >> >> ERROR (ClientException): Unknown Error (HTTP 500) >> >> >> >> I run rejoin-stack.sh and find some error in n-api screen. In n-api.log, >> the >> error is as follows: >> >> 2016-03-22 19:19:38.248 ^[[01;31mERROR nova.api.openstack.extensions >> [^[[01;36mreq-cf58e7aa-bd7d-483f-aa57-bca5268ce963 ^[[00;36madmin >> admin^[[01;31m] ^[[01;35m^[[01;31mUnexpected exception in API method^[[00m >> >> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions >> ^[[01;35m^[[00mTraceback (most recent call last): >> >> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions >> ^[[01;35m^[[00m File "/opt/stack/nova/nova/api/openstack/extensions.py", >> line 478, in wrapped >> >> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions >> ^[[01;35m^[[00m return f(*args, **kwargs) >> >> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions >> ^[[01;35m^[[00m File "/opt/stack/nova/nova/api/validation/__init__.py", >> line 73, in wrapper >> >> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions >> ^[[01;35m^[[00m return func(*args, **kwargs) >> >> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions >> ^[[01;35m^[[00m File "/opt/stack/nova/nova/api/validation/__init__.py", >> line 73, in wrapper >> >> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions >> ^[[01;35m^[[00m return func(*args, **kwargs) >> >> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions >> ^[[01;35m^[[00m File >> "/opt/stack/nova/nova/api/openstack/compute/servers.py", line 604, in >> create >> >> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions >> ^[[01;35m^[[00m **create_kwargs) >> >> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions >> ^[[01;35m^[[00m File "/opt/stack/nova/nova/hooks.py", line 149, in inner >> >> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions >> ^[[01;35m^[[00m rv = f(*args, **kwargs) >> >> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions >> ^[[01;35m^[[00m File "/opt/stack/nova/nova/compute/api.py", line 1504, in >> create >> >> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions >> ^[[01;35m^[[00m check_server_group_quota=check_server_group_quota) >> >> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions >> ^[[01;35m^[[00m File "/opt/stack/nova/nova/compute/api.py", line 1097, in >> _create_instance >> >> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions >> ^[[01;35m^[[00m auto_disk_config, reservation_id, max_count) >> >> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions >> ^[[01;35m^[[00m File "/opt/stack/nova/nova/compute/api.py", line 871, in >> _validate_and_build_base_options >> >> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions >> ^[[01;35m^[[00m pci_request_info, requested_networks) >> >> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions >> ^[[01;35m^[[00m File "/opt/stack/nova/nova/network/neutronv2/api.py", >> line >> 981, in create_pci_requests_for_sriov_ports >> >> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions >> ^[[01;35m^[[00m neutron = get_client(context, admin=True) >> >> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions >> ^[[01;35m^[[00m File "/opt/stack/nova/nova/network/neutronv2/api.py", >> line >> 149, in get_client >> >> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions >> ^[[01;35m^[[00m _ADMIN_AUTH = _load_auth_plugin(CONF) >> >> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions >> ^[[01;35m^[[00m File "/opt/stack/nova/nova/network/neutronv2/api.py", >> line >> 125, in _load_auth_plugin >> >> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions >> ^[[01;35m^[[00m raise neutron_client_exc.Unauthorized(message=err_msg) >> >> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions >> ^[[01;35m^[[00mUnauthorized: Unknown auth plugin: None >> >> ^[[01;31m2016-03-22 19:19:38.248 TRACE nova.api.openstack.extensions >> ^[[01;35m^[[00m >> >> 2016-03-22 20:04:19.992 ^[[00;36mINFO nova.api.openstack.wsgi >> [^[[01;36mreq-ed35efe8-5dc0-40b0-bb2b-c1a73618aa50 ^[[00;36madmin >> admin^[[00;36m] ^[[01;35m^[[00;36mHTTP exception thrown: Unexpected API >> Error. Please report this at http://bugs.launchpad.net/nova/ and attach >> the >> Nova API log if possible. >> >> <class 'neutronclient.common.exceptions.Unauthorized'>^[[00m >> >> 2016-03-22 20:04:19.993 ^[[00;32mDEBUG nova.api.openstack.wsgi >> [^[[01;36mreq-ed35efe8-5dc0-40b0-bb2b-c1a73618aa50 ^[[00;36madmin >> admin^[[00;32m] ^[[01;35m^[[00;32mReturning 500 to user: Unexpected API >> Error. Please report this at http://bugs.launchpad.net/nova/ and attach >> the >> Nova API log if possible. >> >> <class 'neutronclient.common.exceptions.Unauthorized'>^[[00m ^[[00;33mfrom >> (pid=17273) __call__ /opt/stack/nova/nova/api/openstack/wsgi.py:1180^[[00m >> >> 2016-03-22 20:04:20.007 ^[[00;36mINFO nova.osapi_compute.wsgi.server >> [^[[01;36mreq-ed35efe8-5dc0-40b0-bb2b-c1a73618aa50 ^[[00;36madmin >> admin^[[00;36m] ^[[01;35m^[[00;36m192.168.56.101 "POST >> /v2.1/1f824c3b19a64fa1a401125f41324731/servers HTTP/1.1" status: 500 len: >> 520 time: 1.1018770^[[00m >> >> >> >> Best regards, >> >> Yipei >> >> > >> __________________________________________________________________________ >> OpenStack Development Mailing List (not for usage questions) >> Unsubscribe: [email protected]?subject:unsubscribe >> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >> > > > > -- > Email: > [email protected] > GitHub: > shinobu-x > Blog: > Life with Distributed Computational System based on OpenSource > > > > > > > __________________________________________________________________________ > OpenStack Development Mailing List (not for usage questions) > Unsubscribe: [email protected]?subject:unsubscribe > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev > -- Email: [email protected] GitHub: shinobu-x Blog: Life with Distributed Computational System based on OpenSource __________________________________________________________________________ OpenStack Development Mailing List (not for usage questions) Unsubscribe: [email protected]?subject:unsubscribe http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
