<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.openstack.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Arnaud+Legendre</id>
		<title>OpenStack - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.openstack.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Arnaud+Legendre"/>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/wiki/Special:Contributions/Arnaud_Legendre"/>
		<updated>2026-06-30T08:34:11Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.28.2</generator>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Glance/JunoCycleMeetup&amp;diff=59023</id>
		<title>Glance/JunoCycleMeetup</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Glance/JunoCycleMeetup&amp;diff=59023"/>
				<updated>2014-07-25T22:57:29Z</updated>
		
		<summary type="html">&lt;p&gt;Arnaud Legendre: /* Schedule and Content */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Glance Juno Cycle Meetup ==&lt;br /&gt;
=== Basic Details ===&lt;br /&gt;
==== What ====&lt;br /&gt;
The Catalog Program Meetup.&lt;br /&gt;
&lt;br /&gt;
All OpenStack ATCs and associated technical product folks are welcome, however space is limited and only a few spots remain available. If you plan to attend please contact alegendre at vmware dot com.&lt;br /&gt;
&lt;br /&gt;
==== Where ====&lt;br /&gt;
VMware, Inc &lt;br /&gt;
&lt;br /&gt;
3425 Hillview Avenue - Building Hilltop A&lt;br /&gt;
&lt;br /&gt;
Palo Alto, CA 94304&lt;br /&gt;
&lt;br /&gt;
==== When ====&lt;br /&gt;
[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20140725T09&amp;amp;p1=1240 July 25-26 2014, 9:00 AM - 5:30 PM each day in PST time zone]&lt;br /&gt;
&lt;br /&gt;
=== Schedule and Content ===&lt;br /&gt;
&lt;br /&gt;
Ideas page: https://etherpad.openstack.org/p/glance-juno-mid-cycle-meeting&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=3 | Thursday, July 25&lt;br /&gt;
|-&lt;br /&gt;
! Time&lt;br /&gt;
! Lead(s)&lt;br /&gt;
! width=400 | Description&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 8:30 AM&lt;br /&gt;
! colspan=2 | Breakfast (provided)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 9:00 AM&lt;br /&gt;
| Mark Washenberger and Arnaud legendre&lt;br /&gt;
| Summit Kickoff&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 9:20 AM&lt;br /&gt;
| Mark Washenberger and Brian Rosmaita&lt;br /&gt;
| Community Image Sharing&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 9:50 AM&lt;br /&gt;
| Nikhil Komawar&lt;br /&gt;
| Moving testing out of Glance&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 10:20 AM&lt;br /&gt;
! colspan=2 | Break&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 10:40 AM&lt;br /&gt;
| Brian Rosmaita&lt;br /&gt;
| Glance schemas&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 11:20 AM&lt;br /&gt;
| Nikhil Komawar, Brian Rosmaita and Arnaud Legendre&lt;br /&gt;
| Tasks and Cloning&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 12:00 PM&lt;br /&gt;
! colspan=2 | Lunch (provided)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1:30 PM&lt;br /&gt;
| Nikhil Komawar and Mark Washenberger&lt;br /&gt;
| Transfer Service&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 2:30 PM&lt;br /&gt;
| Stuart McLaren&lt;br /&gt;
| Keystone Composite Auth&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 3:15 PM&lt;br /&gt;
! colspan=2 | Break&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 3:30 PM&lt;br /&gt;
! colspan=2 | Post-It session Part 1&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4:15 PM&lt;br /&gt;
| Mark Washenberger and Arnaud Legendre&lt;br /&gt;
| Improving the development process&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | 5:30 PM&lt;br /&gt;
! colspan=2 | Break For Day&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=3 | Friday, July 25&lt;br /&gt;
|-&lt;br /&gt;
! Time&lt;br /&gt;
! Lead(s)&lt;br /&gt;
! width=400 | Description&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 8:30 AM&lt;br /&gt;
! colspan=2 | Breakfast (provided)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 9:00 AM&lt;br /&gt;
| Alexander Tivelkov&lt;br /&gt;
| Artifiacts Part 1&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 9:45 AM&lt;br /&gt;
! colspan=2 | Break&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 10:00 AM&lt;br /&gt;
| Alexander Tivelkov&lt;br /&gt;
| Artifacts Part 2&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 10:45 AM&lt;br /&gt;
! colspan=2 | Post-It session Part 2&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 11:15 AM&lt;br /&gt;
| Erno Kuvaja&lt;br /&gt;
| Diagnostic&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 12:15 PM&lt;br /&gt;
! colspan=2 | Lunch (provided)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1:30 PM&lt;br /&gt;
| Travis Tripp, Lakshmi Sampath, Wayne Okume&lt;br /&gt;
| Graffiti Part 1&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 2:15 PM&lt;br /&gt;
! colspan=2 | Break&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 2:30 PM&lt;br /&gt;
| Travis Tripp, Lakshmi Sampath, Wayne Okume&lt;br /&gt;
| Graffiti Part 2&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 3:15 PM&lt;br /&gt;
! colspan=2 | Break&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 3:30 PM&lt;br /&gt;
|&lt;br /&gt;
| More Artifacts and Metadata and more...&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4:30 PM&lt;br /&gt;
|&lt;br /&gt;
| Open Discussion&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | 5:15 PM&lt;br /&gt;
! colspan=2 | Break For Day&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Open Discussion Format ====&lt;br /&gt;
During the meetup, there will be several opportunities for open discussion. To make sure everyone's ideas have an opportunity to be heard,&lt;br /&gt;
we will be following a lightweight structure for these sessions. In the first 5 minutes, each attendee will submit ideas on post-it notes and the&lt;br /&gt;
whole group will vote on which topics to discuss. Then the remainder of the session will focus on the ideas we chose.&lt;br /&gt;
&lt;br /&gt;
=== Joining Remotely ===&lt;br /&gt;
It will be possible to join remotely through Webex. This requires the Webex client installed on the machine and a phone to be able to dial in. Please ping arnaud on irc or send email&lt;br /&gt;
in order to get the Webex details (URL and passcode).&lt;br /&gt;
Live feedback can be given on IRC (freenode) in the #openstack-glance channel. We will have a local moderator&lt;br /&gt;
monitoring the IRC channel and relaying questions and comments as appropriate.&lt;br /&gt;
&lt;br /&gt;
=== Summit Notes ===&lt;br /&gt;
Here is a list of etherpads and slides that were used during the summit&lt;br /&gt;
* https://etherpad.openstack.org/p/glance-juno-mid-cycle-community-sharing&lt;br /&gt;
* https://etherpad.openstack.org/p/glance-juno-mid-cycle-tasks-and-cloning&lt;br /&gt;
* https://etherpad.openstack.org/p/glance-juno-mid-cycle-schemas&lt;br /&gt;
* https://etherpad.openstack.org/p/image-transfer-service-proposal-juno&lt;br /&gt;
* https://etherpad.openstack.org/p/glance-metadata-catalog-juno-mid-cycle-meeting&lt;br /&gt;
* https://etherpad.openstack.org/p/glance-tests-move-to-tempest-juno&lt;br /&gt;
* https://etherpad.openstack.org/p/glance-juno-mid-cycle-artifacts&lt;/div&gt;</summary>
		<author><name>Arnaud Legendre</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Glance/JunoCycleMeetup&amp;diff=58876</id>
		<title>Glance/JunoCycleMeetup</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Glance/JunoCycleMeetup&amp;diff=58876"/>
				<updated>2014-07-24T03:20:01Z</updated>
		
		<summary type="html">&lt;p&gt;Arnaud Legendre: Created page with &amp;quot;== Glance Juno Cycle Meetup == === Basic Details === ==== What ==== The Catalog Program Meetup.  All OpenStack ATCs and associated technical product folks are welcome, however...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Glance Juno Cycle Meetup ==&lt;br /&gt;
=== Basic Details ===&lt;br /&gt;
==== What ====&lt;br /&gt;
The Catalog Program Meetup.&lt;br /&gt;
&lt;br /&gt;
All OpenStack ATCs and associated technical product folks are welcome, however space is limited and only a few spots remain available. If you plan to attend please contact alegendre at vmware dot com.&lt;br /&gt;
&lt;br /&gt;
==== Where ====&lt;br /&gt;
VMware, Inc &lt;br /&gt;
&lt;br /&gt;
3425 Hillview Avenue - Building Hilltop A&lt;br /&gt;
&lt;br /&gt;
Palo Alto, CA 94304&lt;br /&gt;
&lt;br /&gt;
==== When ====&lt;br /&gt;
[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20140725T09&amp;amp;p1=1240 July 25-26 2014, 9:00 AM - 5:30 PM each day in PST time zone]&lt;br /&gt;
&lt;br /&gt;
=== Schedule and Content ===&lt;br /&gt;
&lt;br /&gt;
Ideas page: https://etherpad.openstack.org/p/glance-juno-mid-cycle-meeting&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=3 | Thursday, July 25&lt;br /&gt;
|-&lt;br /&gt;
! Time&lt;br /&gt;
! Lead(s)&lt;br /&gt;
! width=400 | Description&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 8:30 AM&lt;br /&gt;
! colspan=2 | Breakfast (provided)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 9:00 AM&lt;br /&gt;
| Mark Washenberger and Arnaud legendre&lt;br /&gt;
| Summit Kickoff&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 9:20 AM&lt;br /&gt;
| Mark Washenberger and Brian Rosmaita&lt;br /&gt;
| Community Image Sharing&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 9:50 AM&lt;br /&gt;
| Nikhil Komawar&lt;br /&gt;
| Moving testing out of Glance&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 10:20 AM&lt;br /&gt;
! colspan=2 | Break&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 10:40 AM&lt;br /&gt;
| Brian Rosmaita&lt;br /&gt;
| Glance schemas&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 11:20 AM&lt;br /&gt;
| Nikhil Komawar, Brian Rosmaita and Arnaud Legendre&lt;br /&gt;
| Tasks and Cloning&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 12:00 PM&lt;br /&gt;
! colspan=2 | Lunch (provided)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1:30 PM&lt;br /&gt;
| Nikhil Komawar and Mark Washenberger&lt;br /&gt;
| Transfer Service&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 2:30 PM&lt;br /&gt;
| Stuart McLaren&lt;br /&gt;
| Keystone Composite Auth&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 3:15 PM&lt;br /&gt;
! colspan=2 | Break&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 3:30 PM&lt;br /&gt;
! colspan=2 | Post-It session Part 1&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4:15 PM&lt;br /&gt;
| Mark Washenberger and Arnaud Legendre&lt;br /&gt;
| Improving the development process&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | 5:30 PM&lt;br /&gt;
! colspan=2 | Break For Day&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=3 | Friday, July 25&lt;br /&gt;
|-&lt;br /&gt;
! Time&lt;br /&gt;
! Lead(s)&lt;br /&gt;
! width=400 | Description&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 8:30 AM&lt;br /&gt;
! colspan=2 | Breakfast (provided)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 9:00 AM&lt;br /&gt;
| Alexander Tivelkov&lt;br /&gt;
| Artifiacts Part 1&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 9:45 AM&lt;br /&gt;
! colspan=2 | Break&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 10:00 AM&lt;br /&gt;
| Alexander Tivelkov&lt;br /&gt;
| Artifacts Part 2&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 10:45 AM&lt;br /&gt;
! colspan=2 | Post-It session Part 2&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 11:15 AM&lt;br /&gt;
| Erno Kuvaja&lt;br /&gt;
| Diagnostic&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 12:15 PM&lt;br /&gt;
! colspan=2 | Lunch (provided)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1:30 PM&lt;br /&gt;
| Travis Tripp, Lakshmi Sampath, Wayne Okume&lt;br /&gt;
| Graffiti Part 1&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 2:15 PM&lt;br /&gt;
! colspan=2 | Break&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 2:30 PM&lt;br /&gt;
| Travis Tripp, Lakshmi Sampath, Wayne Okume&lt;br /&gt;
| Graffiti Part 2&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 3:15 PM&lt;br /&gt;
! colspan=2 | Break&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 3:30 PM&lt;br /&gt;
| Arnaud Legendre&lt;br /&gt;
| Getting teeth into a bug&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4:30 PM&lt;br /&gt;
|&lt;br /&gt;
| Open Discussion&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | 5:15 PM&lt;br /&gt;
! colspan=2 | Break For Day&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Open Discussion Format ====&lt;br /&gt;
During the meetup, there will be several opportunities for open discussion. To make sure everyone's ideas have an opportunity to be heard,&lt;br /&gt;
we will be following a lightweight structure for these sessions. In the first 5 minutes, each attendee will submit ideas on post-it notes and the&lt;br /&gt;
whole group will vote on which topics to discuss. Then the remainder of the session will focus on the ideas we chose.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Joining Remotely ===&lt;br /&gt;
It will be possible to join remotely through Webex. This requires the Webex client installed on the machine and a phone to be able to dial in. Please ping arnaud on irc or send email&lt;br /&gt;
in order to get the Webex details (URL and passcode).&lt;br /&gt;
Live feedback can be given on IRC (freenode) in the #openstack-glance channel. We will have a local moderator&lt;br /&gt;
monitoring the IRC channel and relaying questions and comments as appropriate.&lt;br /&gt;
&lt;br /&gt;
=== Summit Notes ===&lt;br /&gt;
Here is a list of etherpads and slides that were used during the summit&lt;br /&gt;
* https://etherpad.openstack.org/p/glance-juno-mid-cycle-community-sharing&lt;br /&gt;
* https://etherpad.openstack.org/p/glance-juno-mid-cycle-tasks-and-cloning&lt;br /&gt;
* https://etherpad.openstack.org/p/glance-juno-mid-cycle-schemas&lt;br /&gt;
* https://etherpad.openstack.org/p/image-transfer-service-proposal-juno&lt;br /&gt;
* https://etherpad.openstack.org/p/glance-metadata-catalog-juno-mid-cycle-meeting&lt;br /&gt;
* https://etherpad.openstack.org/p/glance-tests-move-to-tempest-juno&lt;/div&gt;</summary>
		<author><name>Arnaud Legendre</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Sprints&amp;diff=56334</id>
		<title>Sprints</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Sprints&amp;diff=56334"/>
				<updated>2014-06-19T14:07:58Z</updated>
		
		<summary type="html">&lt;p&gt;Arnaud Legendre: /* Under discussion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Future sprints ===&lt;br /&gt;
&lt;br /&gt;
Here is a chronological list of future sprints. please keep it ordered and remove past ones.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
|- bgcolor=#eeeeee&lt;br /&gt;
| Date&lt;br /&gt;
| Location&lt;br /&gt;
| Theme&lt;br /&gt;
| More information at&lt;br /&gt;
|-&lt;br /&gt;
| June 17 - 19&lt;br /&gt;
| San Antonio, TX, USA&lt;br /&gt;
| LBaaS in Neutron&lt;br /&gt;
| [https://etherpad.openstack.org/p/neutron-juno-lbaas-mid-cycle]&lt;br /&gt;
|-&lt;br /&gt;
| July 2 - 4&lt;br /&gt;
| Paris, France&lt;br /&gt;
| Ceilometer/All projects&lt;br /&gt;
| [[Sprints/ParisJuno2014]]&lt;br /&gt;
|-&lt;br /&gt;
| July 7 - 9&lt;br /&gt;
| San Antonio, TX, USA&lt;br /&gt;
| Barbican&lt;br /&gt;
| TBD, [[Meetings/Barbican]]&lt;br /&gt;
|-&lt;br /&gt;
| July 9 - 11&lt;br /&gt;
| Bloomington, MN, USA&lt;br /&gt;
| Neutron&lt;br /&gt;
| [https://etherpad.openstack.org/p/neutron-juno-mid-cycle-meeting]&lt;br /&gt;
|-&lt;br /&gt;
| July 9 - 11&lt;br /&gt;
| San Antonio, TX, USA&lt;br /&gt;
| Keystone&lt;br /&gt;
| [http://dolphm.com/openstack-keystone-hackathon-for-juno/]&lt;br /&gt;
|-&lt;br /&gt;
| July 14 - 18&lt;br /&gt;
| Darmstadt, Germany&lt;br /&gt;
| QA &amp;amp; Infra&lt;br /&gt;
| [[Qa_Infra_Meetup_2014]]&lt;br /&gt;
|-&lt;br /&gt;
| July 14 - 18&lt;br /&gt;
| Seattle, USA&lt;br /&gt;
| Security Group&lt;br /&gt;
| [https://etherpad.openstack.org/p/ossg-juno-meetup]&lt;br /&gt;
|-&lt;br /&gt;
| July 21 - July 25&lt;br /&gt;
| Raleigh, NC, USA&lt;br /&gt;
| TripleO &amp;amp; Heat&lt;br /&gt;
| [https://etherpad.openstack.org/p/juno-midcycle-meetup]&lt;br /&gt;
|-&lt;br /&gt;
| July 28 - Jul 30&lt;br /&gt;
| Beaverton, OR, USA&lt;br /&gt;
| Nova &amp;amp; Ironic&lt;br /&gt;
| [[Sprints/BeavertonJunoSprint]]&lt;br /&gt;
|-&lt;br /&gt;
| Aug 11 - Aug 15&lt;br /&gt;
| Fort Collins, CO&lt;br /&gt;
| Cinder&lt;br /&gt;
| [[https://etherpad.openstack.org/p/CinderMidCycleMeetupAug2014]]&lt;br /&gt;
|-&lt;br /&gt;
| Aug 20 - Aug 23&lt;br /&gt;
| Cambridge, MA, USA&lt;br /&gt;
| Trove&lt;br /&gt;
| [[Trove/JunoCycleMeetup|Link]]&lt;br /&gt;
|-&lt;br /&gt;
| July 24 - July 25&lt;br /&gt;
| Palo Alto, CA, USA&lt;br /&gt;
| Glance&lt;br /&gt;
| [[https://etherpad.openstack.org/p/glance-juno-mid-cycle-meeting]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Arnaud Legendre</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Sprints&amp;diff=56333</id>
		<title>Sprints</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Sprints&amp;diff=56333"/>
				<updated>2014-06-19T14:07:37Z</updated>
		
		<summary type="html">&lt;p&gt;Arnaud Legendre: /* Future sprints */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Future sprints ===&lt;br /&gt;
&lt;br /&gt;
Here is a chronological list of future sprints. please keep it ordered and remove past ones.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
|- bgcolor=#eeeeee&lt;br /&gt;
| Date&lt;br /&gt;
| Location&lt;br /&gt;
| Theme&lt;br /&gt;
| More information at&lt;br /&gt;
|-&lt;br /&gt;
| June 17 - 19&lt;br /&gt;
| San Antonio, TX, USA&lt;br /&gt;
| LBaaS in Neutron&lt;br /&gt;
| [https://etherpad.openstack.org/p/neutron-juno-lbaas-mid-cycle]&lt;br /&gt;
|-&lt;br /&gt;
| July 2 - 4&lt;br /&gt;
| Paris, France&lt;br /&gt;
| Ceilometer/All projects&lt;br /&gt;
| [[Sprints/ParisJuno2014]]&lt;br /&gt;
|-&lt;br /&gt;
| July 7 - 9&lt;br /&gt;
| San Antonio, TX, USA&lt;br /&gt;
| Barbican&lt;br /&gt;
| TBD, [[Meetings/Barbican]]&lt;br /&gt;
|-&lt;br /&gt;
| July 9 - 11&lt;br /&gt;
| Bloomington, MN, USA&lt;br /&gt;
| Neutron&lt;br /&gt;
| [https://etherpad.openstack.org/p/neutron-juno-mid-cycle-meeting]&lt;br /&gt;
|-&lt;br /&gt;
| July 9 - 11&lt;br /&gt;
| San Antonio, TX, USA&lt;br /&gt;
| Keystone&lt;br /&gt;
| [http://dolphm.com/openstack-keystone-hackathon-for-juno/]&lt;br /&gt;
|-&lt;br /&gt;
| July 14 - 18&lt;br /&gt;
| Darmstadt, Germany&lt;br /&gt;
| QA &amp;amp; Infra&lt;br /&gt;
| [[Qa_Infra_Meetup_2014]]&lt;br /&gt;
|-&lt;br /&gt;
| July 14 - 18&lt;br /&gt;
| Seattle, USA&lt;br /&gt;
| Security Group&lt;br /&gt;
| [https://etherpad.openstack.org/p/ossg-juno-meetup]&lt;br /&gt;
|-&lt;br /&gt;
| July 21 - July 25&lt;br /&gt;
| Raleigh, NC, USA&lt;br /&gt;
| TripleO &amp;amp; Heat&lt;br /&gt;
| [https://etherpad.openstack.org/p/juno-midcycle-meetup]&lt;br /&gt;
|-&lt;br /&gt;
| July 28 - Jul 30&lt;br /&gt;
| Beaverton, OR, USA&lt;br /&gt;
| Nova &amp;amp; Ironic&lt;br /&gt;
| [[Sprints/BeavertonJunoSprint]]&lt;br /&gt;
|-&lt;br /&gt;
| Aug 11 - Aug 15&lt;br /&gt;
| Fort Collins, CO&lt;br /&gt;
| Cinder&lt;br /&gt;
| [[https://etherpad.openstack.org/p/CinderMidCycleMeetupAug2014]]&lt;br /&gt;
|-&lt;br /&gt;
| Aug 20 - Aug 23&lt;br /&gt;
| Cambridge, MA, USA&lt;br /&gt;
| Trove&lt;br /&gt;
| [[Trove/JunoCycleMeetup|Link]]&lt;br /&gt;
|-&lt;br /&gt;
| July 24 - July 25&lt;br /&gt;
| Palo Alto, CA, USA&lt;br /&gt;
| Glance&lt;br /&gt;
| [[https://etherpad.openstack.org/p/glance-juno-mid-cycle-meeting]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Under discussion ===&lt;br /&gt;
&lt;br /&gt;
These are still under discussion and don't have a final date/location yet.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
|- bgcolor=#eeeeee&lt;br /&gt;
| Date&lt;br /&gt;
| Location&lt;br /&gt;
| Theme&lt;br /&gt;
| More information at&lt;br /&gt;
|-&lt;br /&gt;
| End of July&lt;br /&gt;
| CA, USA&lt;br /&gt;
| Glance&lt;br /&gt;
| [https://etherpad.openstack.org/p/glance-juno-mid-cycle-meeting]&lt;/div&gt;</summary>
		<author><name>Arnaud Legendre</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Sprints&amp;diff=55028</id>
		<title>Sprints</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Sprints&amp;diff=55028"/>
				<updated>2014-06-05T18:09:35Z</updated>
		
		<summary type="html">&lt;p&gt;Arnaud Legendre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a chronological list of future sprints.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
|- bgcolor=#eeeeee&lt;br /&gt;
| Date&lt;br /&gt;
| Location&lt;br /&gt;
| Theme&lt;br /&gt;
| More information at&lt;br /&gt;
|-&lt;br /&gt;
| June 17 - 19&lt;br /&gt;
| San Antonio, TX, USA&lt;br /&gt;
| LBaaS in Neutron&lt;br /&gt;
| [https://etherpad.openstack.org/p/neutron-juno-lbaas-mid-cycle]&lt;br /&gt;
|-&lt;br /&gt;
| July 2 - 4&lt;br /&gt;
| Paris, France&lt;br /&gt;
| Ceilometer/All projects&lt;br /&gt;
| [[Sprints/ParisJuno2014]]&lt;br /&gt;
|-&lt;br /&gt;
| July 7 - 9&lt;br /&gt;
| San Antonio, TX, USA&lt;br /&gt;
| Barbican&lt;br /&gt;
| TBD, [[Meetings/Barbican]]&lt;br /&gt;
|-&lt;br /&gt;
| July 9 - 11&lt;br /&gt;
| Bloomington, MN, USA&lt;br /&gt;
| Neutron&lt;br /&gt;
| [https://etherpad.openstack.org/p/neutron-juno-mid-cycle-meeting]&lt;br /&gt;
|-&lt;br /&gt;
| July 9 - 11&lt;br /&gt;
| San Antonio, TX, USA&lt;br /&gt;
| Keystone&lt;br /&gt;
| [http://dolphm.com/openstack-keystone-hackathon-for-juno/]&lt;br /&gt;
|-&lt;br /&gt;
| July 14 - 18&lt;br /&gt;
| Darmstadt, Germany&lt;br /&gt;
| QA &amp;amp; Infra&lt;br /&gt;
| tbd&lt;br /&gt;
|-&lt;br /&gt;
| July 28 - Aug 1&lt;br /&gt;
| Raleigh, NC, USA&lt;br /&gt;
| TripleO &amp;amp; Ironic&lt;br /&gt;
| [https://etherpad.openstack.org/p/juno-midcycle-meetup]&lt;br /&gt;
|-&lt;br /&gt;
| Aug 20 - Aug 23&lt;br /&gt;
| Cambridge, MA, USA&lt;br /&gt;
| Trove&lt;br /&gt;
| TBA&lt;br /&gt;
|-&lt;br /&gt;
| 2nd half July&lt;br /&gt;
| Portland, OR&lt;br /&gt;
| Nova&lt;br /&gt;
| Survey [https://docs.google.com/forms/d/1ws6iezBwQHvvEP5_9lOI2MclJOLFi75XwbPfji4ea_M/viewform]&lt;br /&gt;
|-&lt;br /&gt;
| End of July&lt;br /&gt;
| CA, USA&lt;br /&gt;
| Glance&lt;br /&gt;
| [https://etherpad.openstack.org/p/glance-juno-mid-cycle-meeting]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Arnaud Legendre</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Sprints&amp;diff=55027</id>
		<title>Sprints</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Sprints&amp;diff=55027"/>
				<updated>2014-06-05T18:09:20Z</updated>
		
		<summary type="html">&lt;p&gt;Arnaud Legendre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a chronological list of future sprints.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
|- bgcolor=#eeeeee&lt;br /&gt;
| Date&lt;br /&gt;
| Location&lt;br /&gt;
| Theme&lt;br /&gt;
| More information at&lt;br /&gt;
|-&lt;br /&gt;
| June 17 - 19&lt;br /&gt;
| San Antonio, TX, USA&lt;br /&gt;
| LBaaS in Neutron&lt;br /&gt;
| [https://etherpad.openstack.org/p/neutron-juno-lbaas-mid-cycle]&lt;br /&gt;
|-&lt;br /&gt;
| July 2 - 4&lt;br /&gt;
| Paris, France&lt;br /&gt;
| Ceilometer/All projects&lt;br /&gt;
| [[Sprints/ParisJuno2014]]&lt;br /&gt;
|-&lt;br /&gt;
| July 7 - 9&lt;br /&gt;
| San Antonio, TX, USA&lt;br /&gt;
| Barbican&lt;br /&gt;
| TBD, [[Meetings/Barbican]]&lt;br /&gt;
|-&lt;br /&gt;
| July 9 - 11&lt;br /&gt;
| Bloomington, MN, USA&lt;br /&gt;
| Neutron&lt;br /&gt;
| [https://etherpad.openstack.org/p/neutron-juno-mid-cycle-meeting]&lt;br /&gt;
|-&lt;br /&gt;
| July 9 - 11&lt;br /&gt;
| San Antonio, TX, USA&lt;br /&gt;
| Keystone&lt;br /&gt;
| [http://dolphm.com/openstack-keystone-hackathon-for-juno/]&lt;br /&gt;
|-&lt;br /&gt;
| July 14 - 18&lt;br /&gt;
| Darmstadt, Germany&lt;br /&gt;
| QA &amp;amp; Infra&lt;br /&gt;
| tbd&lt;br /&gt;
|-&lt;br /&gt;
| July 28 - Aug 1&lt;br /&gt;
| Raleigh, NC, USA&lt;br /&gt;
| TripleO &amp;amp; Ironic&lt;br /&gt;
| [https://etherpad.openstack.org/p/juno-midcycle-meetup]&lt;br /&gt;
|-&lt;br /&gt;
| Aug 20 - Aug 23&lt;br /&gt;
| Cambridge, MA, USA&lt;br /&gt;
| Trove&lt;br /&gt;
| TBA&lt;br /&gt;
|-&lt;br /&gt;
| 2nd half July&lt;br /&gt;
| Portland, OR&lt;br /&gt;
| Nova&lt;br /&gt;
| Survey [https://docs.google.com/forms/d/1ws6iezBwQHvvEP5_9lOI2MclJOLFi75XwbPfji4ea_M/viewform]&lt;br /&gt;
|-&lt;br /&gt;
| End of July&lt;br /&gt;
| CA&lt;br /&gt;
| Glance&lt;br /&gt;
| [https://etherpad.openstack.org/p/glance-juno-mid-cycle-meeting]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Arnaud Legendre</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=NovaVMware/DeveloperGuide&amp;diff=49318</id>
		<title>NovaVMware/DeveloperGuide</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=NovaVMware/DeveloperGuide&amp;diff=49318"/>
				<updated>2014-04-18T22:51:45Z</updated>
		
		<summary type="html">&lt;p&gt;Arnaud Legendre: /* Upload your VMDK to glance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Developer's DevStack + vSphere Guide=&lt;br /&gt;
&lt;br /&gt;
This is a short guide for developers interested in working on OpenStack and [[vSphere]] (ESX, [[ESXi]], and [[vCenter]]) drivers.&lt;br /&gt;
&lt;br /&gt;
==vSphere Environment and Inventory==&lt;br /&gt;
&lt;br /&gt;
Set up a vSphere 5.1 (or better) developer's environment. For development purposes, you'll need to have one of this inventory type:&lt;br /&gt;
&lt;br /&gt;
[[File:VCenter cluster inventory.png|framed|none|inventory with a DRS cluster]]&lt;br /&gt;
&lt;br /&gt;
Note: The cluster should be DRS enabled with &amp;quot;Fully automated&amp;quot; placement turned on. Also, if you can't get two or more ESX hosts to work with, you can still work with one host in the cluster, but you won't be able to observe VM placement behaviors since there won't be anywhere to place the VMs except for the solitary host.&lt;br /&gt;
&lt;br /&gt;
=Development Environment=&lt;br /&gt;
== Get an Ubuntu 12.04 (suggested) VM setup==&lt;br /&gt;
This Ubuntu workstation can run as a VM itself, but it should have public internet access (ideally direct, but http proxy is workable if you don’t need to commit code back to OpenStack if you do, see the troubleshooting page for steps that ''may'' help).  It should also have a reasonably high bandwidth link to the the vSphere hosts, as it will need to stream images from the Ubuntu workstation to the vSphere host. &lt;br /&gt;
&lt;br /&gt;
We suggest your Ubuntu workstation have&lt;br /&gt;
* at least 10 GB disk, with 20+ GB being ideal. &lt;br /&gt;
* at least one vCPU, with 2 being ideal.&lt;br /&gt;
* 4 GB of RAM.&lt;br /&gt;
&lt;br /&gt;
=== optional setup ===&lt;br /&gt;
If you are using a remote workstation (not running locally on your physical computer) you may have to follow some of the extra steps under [[NovaVMware/DeveloperGuide#Networking_Troubleshooting|Network Troubleshooting]]&lt;br /&gt;
&lt;br /&gt;
==install Devstack (http://devstack.org/) in your new VM==&lt;br /&gt;
Once booted, run: &lt;br /&gt;
 sudo apt-get install git&lt;br /&gt;
 git clone http://github.com/openstack-dev/devstack.git&lt;br /&gt;
 cd devstack&lt;br /&gt;
&lt;br /&gt;
=Setup localrc for DevStack=&lt;br /&gt;
create a file named “localrc” in your devstack directory with the content shown below (for each item with $variable_name, you will need to enter values specific to your environment, the rest you can just leave as is).  &lt;br /&gt;
&lt;br /&gt;
file ~/devstack/''localrc''&lt;br /&gt;
 ENABLED_SERVICES=g-api,g-reg,key,n-api,n-crt,n-cpu,n-net,n-cond,n-sch,n-novnc,n-cauth,rabbit,mysql,horizon&lt;br /&gt;
 VIRT_DRIVER=vsphere&lt;br /&gt;
 VMWAREAPI_IP='''$your_vCenter_ip_address'''&lt;br /&gt;
 VMWAREAPI_USER=root&lt;br /&gt;
 VMWAREAPI_PASSWORD='''$password_goes_here'''&lt;br /&gt;
 VMWAREAPI_CLUSTER='''$your_cluster_name'''&lt;br /&gt;
 DATABASE_PASSWORD=nova&lt;br /&gt;
 RABBIT_PASSWORD=nova&lt;br /&gt;
 SERVICE_TOKEN=nova&lt;br /&gt;
 SERVICE_PASSWORD=nova&lt;br /&gt;
 ADMIN_PASSWORD=nova&lt;br /&gt;
 HOST_IP='''$your_development_vm_ip'''&lt;br /&gt;
&lt;br /&gt;
Note: if you would like to use a specific datastore then configure ''VMWAREAPI_DATASTORE_REGEX''&lt;br /&gt;
&lt;br /&gt;
Note: omit the line ''VMWAREAPI_CLUSTER'' if you are using the ''trivial'' inventory example.&lt;br /&gt;
&lt;br /&gt;
Note: If you want the logs to be written to disk (not just accessible via screen), use the define SCREEN_LOGDIR to point to path &lt;br /&gt;
where you want to the logs to reside.  For example&lt;br /&gt;
&lt;br /&gt;
SCREEN_LOGDIR=/var/log&lt;br /&gt;
&lt;br /&gt;
=start stack (first time)=&lt;br /&gt;
 ./stack.sh&lt;br /&gt;
This will take a long time the first time, as it pulls down all code and dependencies.&lt;br /&gt;
Note: may fail on first start.&lt;br /&gt;
&lt;br /&gt;
=Credentials and Environment Variables=&lt;br /&gt;
get the OpenStack API credentials in your environment variables:&lt;br /&gt;
&lt;br /&gt;
 $ source openrc demo demo&lt;br /&gt;
&lt;br /&gt;
This is needed anytime you make a call using an openstack CLI client like ‘nova’, ‘glance’, or ‘quantum’.  You can rerun this at any time from the devstack directory if you need to re-login in at a later point.  If you want admin credentials then use admin ($ source openrc admin admin)&lt;br /&gt;
&lt;br /&gt;
=Glance Initial Setup=&lt;br /&gt;
Get a VMDK to use as a disk image and upload it to OpenStack using the Glance API.  The latest code (mid-Aug) has a change which uploads the image when you 1st run devstack.  After glance starts, run the following command to see if you have a pre-configured image in glance&lt;br /&gt;
&lt;br /&gt;
$ glance image-list&lt;br /&gt;
&lt;br /&gt;
==Get an initial VMDK to work with==&lt;br /&gt;
There are a lot of “gotchas” around what VMDK disks work with OpenStack + vSphere, so we strongly suggest using the provided image to start.  In the Appendix there is information about creating/converting your own images.  &lt;br /&gt;
&lt;br /&gt;
download the image 1 GB debian disk image (user/password to login this image after booting is nicira/nicira).  &lt;br /&gt;
 http://partnerweb.vmware.com/programs/vmdkimage/debian-2.6.32-i686.vmdk &lt;br /&gt;
Place the file under your home directory &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;~/&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: if you are using nested hyper-visors you will need to obtain a 32bit image to use or troubleshoot: how to enable nested ESXi &amp;amp; other Hypervisors in vSphere 5.1 - See more at: http://www.virtuallyghetto.com/2012/08/how-to-enable-nested-esxi-other.html#sthash.NJ2VNiwt.dpuf&lt;br /&gt;
&lt;br /&gt;
==Upload your VMDK to glance==&lt;br /&gt;
It is recommended to use the upload_images.sh script provided in the Devstack to upload images to Glance: &lt;br /&gt;
 https://github.com/openstack-dev/devstack/blob/master/tools/upload_image.sh&lt;br /&gt;
upload_image.sh has a dependency:&lt;br /&gt;
 https://github.com/openstack-dev/devstack/blob/master/functions&lt;br /&gt;
The script will introspect the image provided to extract the metadata.&lt;br /&gt;
It expects a URL as unique argument. The scheme of the URL can be http(s) or file. When a flat disk (*-flat.vmdk) is provided, the script will attempt to retrieve the descriptor (*.vmdk) associated to find the correct metadata. The same way, the user can specify a descriptor: in this case, the script will try to find the flat disk. &lt;br /&gt;
If a *-flat.vmdk disk is provided and the descriptor cannot be found, &amp;quot;ide&amp;quot; will be used as the default adapter_type and &amp;quot;preallocated&amp;quot; as the default disk_type.&lt;br /&gt;
&lt;br /&gt;
Example of execution:&lt;br /&gt;
 $ cd ~/devstack&lt;br /&gt;
 $ ./tools/upload_image.sh http://partnerweb.vmware.com/programs/vmdkimage/debian-2.6.32-i686.vmdk&lt;br /&gt;
 $ ./tools/upload_image.sh file:///home/user/images/debian-2.6.32-i686.vmdk&lt;br /&gt;
 $ ./tools/upload_image.sh &amp;quot;http://partnerweb.vmware.com/programs/vmdkimage/trend-tinyvm1-flat-;ide;.vmdk&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Specific metadata can be provided: the expected format of the image filename is &amp;lt;name&amp;gt;-&amp;lt;disk type&amp;gt;;&amp;lt;storage adapter&amp;gt;;&amp;lt;network adapter&amp;gt;.vmdk&lt;br /&gt;
By default, the Nova driver will be using adapter_type &amp;quot;lsiLogic&amp;quot; and and disk_type &amp;quot;preallocated&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To avoid problems with the metadata, it is highly recommended to provide a monolithicSparse or monolithicFlat disk where the descriptor and flat disk are in the same directory.&lt;br /&gt;
For information about disk types supported by the VMware driver, see http://docs.openstack.org/trunk/config-reference/content/vmware.html . For general information about disk types: http://sanbarrow.com/vmdk-basics.html. &lt;br /&gt;
&lt;br /&gt;
Alternatively, it is possible to call directly the Glance client (the following commands are using the V1 of the Glance client):&lt;br /&gt;
&lt;br /&gt;
 $ glance image-create --name Debian --is-public=True --container-format=bare --disk-format=vmdk --property vmware-disktype=&amp;quot;preallocated&amp;quot; &amp;lt; debian-2.6.32-i686.vmdk &lt;br /&gt;
&lt;br /&gt;
This will print out an &amp;lt;image-id&amp;gt; for use below.  If you forget it, you can always run “glance image-list” to see all existing images.&lt;br /&gt;
&lt;br /&gt;
There is also an IDE based image that can be used. &lt;br /&gt;
&lt;br /&gt;
 wget &amp;quot;http://partnerweb.vmware.com/programs/vmdkimage/trend-tinyvm1-flat-;ide;.vmdk&amp;quot;&lt;br /&gt;
Note the vmware_adaptertype is set to &amp;quot;ide&amp;quot;&lt;br /&gt;
 $ glance image-create --name trend-thin --is-public=True --container-format=bare --disk-format=vmdk --property vmware_adaptertype=&amp;quot;ide&amp;quot; &amp;lt; &amp;quot;trend-tinyvm1-flat-;ide;.vmdk&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Nova Boot=&lt;br /&gt;
boot a VM using the “&amp;lt;image-id&amp;gt;” from above&lt;br /&gt;
&lt;br /&gt;
 $ nova boot --image &amp;lt;image-id&amp;gt; --flavor 1 test1&lt;br /&gt;
&lt;br /&gt;
Now you can interact with the image using other nova client commands.  &lt;br /&gt;
For example&lt;br /&gt;
 $ nova list&lt;br /&gt;
 +--------------------------------------+-------+--------+------------+-------------+------------------+&lt;br /&gt;
 | ID                                   | Name  | Status | Task State | Power State | Networks         |&lt;br /&gt;
 +--------------------------------------+-------+--------+------------+-------------+------------------+&lt;br /&gt;
 | 9bb724bf-298d-4a63-a653-dab7fcbd9ac7 | test1 | ACTIVE  | None       | NOSTATE     | private=10.0.0.2 |&lt;br /&gt;
 +--------------------------------------+-------+--------+------------+-------------+------------------+&lt;br /&gt;
&lt;br /&gt;
Note: if your disk is big, it can take a VERY long time to stream the image from glance to your datastore (e.g., ~7 minutes for a 1 GB thick image).   This will happen only the first time a new image UUID is used on a datastore. You can monitor progress by viewing the size of the file in the vmware_base directory of the filestore.  &lt;br /&gt;
&lt;br /&gt;
Once this is done, you can view the VM using vCenter. The username/password for the above Debian image is nicira/nicira .&lt;br /&gt;
&lt;br /&gt;
You can access the OpenStack Web GUI (called horizon) by accessing your Ubuntu host on port 80, though currently VNC access via Horizon is broken (see: https://review.openstack.org/#/c/30036/ for a patch to fix this).&lt;br /&gt;
&lt;br /&gt;
=Using Screen=&lt;br /&gt;
Use screen to interact with individual openstack services&lt;br /&gt;
&lt;br /&gt;
 $ screen -x stack&lt;br /&gt;
&lt;br /&gt;
See: http://www.gnu.org/software/screen/manual/screen.html &amp;lt;- for how to use&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Control + a&amp;quot; enters command mode... enter this for each new command character&lt;br /&gt;
characters 0 through 9 switch tabs&lt;br /&gt;
** the 'd' character detaches the session&lt;br /&gt;
** the '[' character enters &amp;quot;copy mode&amp;quot; which allows you to navigate the screen trace and 'escape' escapes the copy mode.&lt;br /&gt;
** the '&amp;quot;' character shows a list of screens which you can navigate with the up and down arrows&lt;br /&gt;
&lt;br /&gt;
For example the nova-compute service runs on the n-cpu tab which is usually number 6. So to navigate to it, hit Ctrl+a then press '6' and you'll tab to it. You can then interact with the terminal for n-cpu.&lt;br /&gt;
&lt;br /&gt;
=Working the Development Environment=&lt;br /&gt;
If you want to reset your environment, run: &lt;br /&gt;
 ./unstack.sh &lt;br /&gt;
 ./stack.sh &lt;br /&gt;
&lt;br /&gt;
* This run of stack.sh will be faster (~1 minute) as it resets all database and service state, but does not need to re-download packages or source code.  &lt;br /&gt;
* After running ./unstack be sure to clean out all your datastores and delete any files left behind on accident. This will prevent a great number of problems people won't see in production environments. (For example: partially uploaded VMDK.)&lt;br /&gt;
&lt;br /&gt;
Note: the source code is not automatically updated when you reset your environment.  This is valuable, as you can manage your source code manually via git, having many branches, etc.  &lt;br /&gt;
&lt;br /&gt;
= Remote Debugger =&lt;br /&gt;
&lt;br /&gt;
To use the pycharm remote debugger (any maybe [http://wiki.xbmc.org/index.php?title=How-to:Debug_Python_Scripts_with_Eclipse eclipse]), make the following changes in your nova code&lt;br /&gt;
&lt;br /&gt;
index 0e7ecdc,87edf9b..0000000&lt;br /&gt;
--- a/nova/cmd/__init__.py&lt;br /&gt;
+++ b/nova/cmd/__init__.py&lt;br /&gt;
@@@ -31,8 -31,4 +31,8 @@@ &lt;br /&gt;
  os.environ['EVENTLET_NO_GREENDNS'] = 'y&lt;br /&gt;
  &lt;br /&gt;
  import eventlet&lt;br /&gt;
  &lt;br /&gt;
 -eventlet.monkey_patch(os=False)&lt;br /&gt;
 +if '--debug-host' and '--debug-port' in sys.argv:&lt;br /&gt;
 +    eventlet.monkey_patch(all=False,socket=True,time=True,os=False,thread=False)&lt;br /&gt;
 +else:&lt;br /&gt;
 +    eventlet.monkey_patch(os=False)&lt;br /&gt;
 +&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
diff --combined nova/cmd/compute.py&lt;br /&gt;
index 61cf434,f03a9bd..0000000&lt;br /&gt;
--- a/nova/cmd/compute.py&lt;br /&gt;
+++ b/nova/cmd/compute.py&lt;br /&gt;
@@@ -33,19 -33,10 +33,19 @@@ &lt;br /&gt;
  from nova.openstack.common import log a&lt;br /&gt;
  from nova import service&lt;br /&gt;
  from nova import utils&lt;br /&gt;
  &lt;br /&gt;
 +cli_opts = [&lt;br /&gt;
 +        cfg.StrOpt('debug-host',&lt;br /&gt;
 +                    default=None,&lt;br /&gt;
 +                    help='Connect to debug host'),&lt;br /&gt;
 +        cfg.IntOpt('debug-port',&lt;br /&gt;
 +                    default=None,&lt;br /&gt;
 +                    help='Connect to debug host port'),&lt;br /&gt;
 +    ]&lt;br /&gt;
 +&lt;br /&gt;
  CONF = cfg.CONF&lt;br /&gt;
  CONF.import_opt('compute_topic', 'nova.compute.rpcapi')&lt;br /&gt;
  CONF.import_opt('use_local', 'nova.conductor.api', group='conductor')&lt;br /&gt;
 -&lt;br /&gt;
 +CONF.register_cli_opts(cli_opts)&lt;br /&gt;
  &lt;br /&gt;
  def block_db_access():&lt;br /&gt;
      class NoDB(object):&lt;br /&gt;
@@@ -72,16 -63,6 +72,16 @@@ def main()&lt;br /&gt;
          objects_base.NovaObject.indirection_api = \&lt;br /&gt;
              conductor_rpcapi.ConductorAPI()&lt;br /&gt;
  &lt;br /&gt;
 +    if CONF.debug_host:&lt;br /&gt;
 +        from pydev import pydevd&lt;br /&gt;
 +        print ('Listening on ' + str(CONF.debug_port) + ' for host ' +&lt;br /&gt;
 +                                    CONF.debug_host)&lt;br /&gt;
 +        pydevd.settrace(host=CONF.debug_host,&lt;br /&gt;
 +                        port=CONF.debug_port,&lt;br /&gt;
 +                        stdoutToServer=False,&lt;br /&gt;
 +                        stderrToServer=False)&lt;br /&gt;
 +&lt;br /&gt;
 +&lt;br /&gt;
      server = service.Service.create(binary='nova-compute',&lt;br /&gt;
                                      topic=CONF.compute_topic,&lt;br /&gt;
                                      db_allowed=False)&lt;br /&gt;
&lt;br /&gt;
Then in pycharm, create a remote debug session with host localhost and port whatever you want.  When you run it, use --debug_host &amp;lt;your IP&amp;gt; and --debug_port &amp;lt;your port&amp;gt;.  That's it!&lt;br /&gt;
&lt;br /&gt;
=Testing=&lt;br /&gt;
==Install python support libraries==&lt;br /&gt;
===apt-get libs===&lt;br /&gt;
 $ sudo apt-get install python-dev libmysqlclient-dev python-pip build-essential &lt;br /&gt;
 $ sudo apt-get install libxml2-dev libxslt1-dev libpq-dev&lt;br /&gt;
&lt;br /&gt;
===pip based tool installs===&lt;br /&gt;
 $ sudo pip install --upgrade pip &lt;br /&gt;
 $ sudo pip install --upgrade virtualenv&lt;br /&gt;
 $ sudo pip install MySQL-python&lt;br /&gt;
 $ sudo pip install tox&lt;br /&gt;
 $ sudo pip install python-subunit&lt;br /&gt;
&lt;br /&gt;
====pip proxy troubleshooting====&lt;br /&gt;
If you get connection refused here - try this&lt;br /&gt;
 export PIP_INDEX_URL=&amp;quot;http://pypi.openstack.org/openstack&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If you get the following error: &amp;quot;pip's wheel support requires setuptools &amp;gt;= 0.8 for dist-info support&amp;quot;, try this command&lt;br /&gt;
  sudo pip install setuptools --no-use-wheel --upgrade&lt;br /&gt;
&lt;br /&gt;
====Install OpenStack libs====&lt;br /&gt;
 $ cd /opt/stack/nova&lt;br /&gt;
 $ sudo pip install -i http://pypi.openstack.org/openstack  -r requirements.txt -r test-requirements.txt &lt;br /&gt;
&lt;br /&gt;
Note: make sure everything in the requires lists gets installed. Some installers have individual issues that you may have to clear one at a time. In particular lxslt has some issues that may require attention to properly clear.&lt;br /&gt;
&lt;br /&gt;
==Using TOX for testing==&lt;br /&gt;
See: https://wiki.openstack.org/wiki/ProjectTestingInterface&lt;br /&gt;
&lt;br /&gt;
Important tests to run before submitting for code review are&lt;br /&gt;
 tox -e py26,py27&lt;br /&gt;
 tox -e pep8&lt;br /&gt;
&lt;br /&gt;
As of this writing the run_tests.sh is the better way to run tests.&lt;br /&gt;
&lt;br /&gt;
== Using run_tests.sh for testing ==&lt;br /&gt;
 $ cd /opt/stack/nova&lt;br /&gt;
 $ ./run_tests.sh&lt;br /&gt;
... or ...&lt;br /&gt;
 $ ./run_tests.sh nova.tests.virt.vmwareapi&lt;br /&gt;
... to run only the vmware unit tests.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: If you want to use the python packages in your normal (non-virtual) environment then pass the -N flag&lt;br /&gt;
&lt;br /&gt;
==Code Coverage tests and information==&lt;br /&gt;
&lt;br /&gt;
=== with tox ===&lt;br /&gt;
 $ cd /opt/stack/nova&lt;br /&gt;
 $ tox -e cover  (code coverage)&lt;br /&gt;
&lt;br /&gt;
look under the cover directory for html reports on the code coverage for that module.  The file index.html contains the overall coverage report&lt;br /&gt;
&lt;br /&gt;
NOTE: tests may run 10, 20, or as long as 65 minutes (depending on your hardware, network, and system) and produce no output until they complete. This is normal. You system may become sluggish but should not lock up entirely, a system hang can be symptomatic of an improperly configured test environment. Tests will run on Mac OSX. 2 Cores with 2GB of RAM on an Ubuntu 12.04 machine that is properly configured should take between 10 and 20 minutes to complete.&lt;br /&gt;
&lt;br /&gt;
=== with run_tests.sh ===&lt;br /&gt;
  $ cd /opt/stack/nova&lt;br /&gt;
  $ ./run_tests.sh --coverage&lt;br /&gt;
&lt;br /&gt;
==Additional setup==&lt;br /&gt;
If you are on Ubuntu 12.04 and need to use Python 2.6 (which OpenStack needs for some test scripts) install the old version of python by doing the following:&lt;br /&gt;
&lt;br /&gt;
 $ sudo add-apt-repository ppa:fkrull/deadsnakes&lt;br /&gt;
 $ sudo apt-get update&lt;br /&gt;
 $ sudo apt-get install python2.6 python2.6-dev&lt;br /&gt;
&lt;br /&gt;
== Disabling verbose logging subsystems ==&lt;br /&gt;
&lt;br /&gt;
Add this line to nova.conf to disable the amqp logging (for example)&lt;br /&gt;
&lt;br /&gt;
default_log_levels=amqp=WARN,amqplib=WARN,sqlalchemy=WARN,boto=WARN,suds=INFO,keystone=INFO,eventlet.wsgi.server=WARN,nova.openstack.common.rpc.amqp=WARN&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
''Some workplaces may have to use special networking and/or proxy settings and that these may change when you are mobile. Those issues can cause problems with apt-get, git and other parts of OpenStack. If you are in a place that needs special proxy rules, [https://help.ubuntu.com/community/AptGet/Howto/#Setting_up_apt-get_to_use_a_http-proxy setup apt-get with a proxy]. You may also have to set [http://askubuntu.com/questions/158557/setting-proxy-from-terminal other proxy settings] depending on your company's particular firewall rules.''&lt;br /&gt;
&lt;br /&gt;
== Logging ==&lt;br /&gt;
You may have a situation where you need to monitor devstack's log files. Here's how you set up logging to file with the least amount of fuss.&lt;br /&gt;
&lt;br /&gt;
To set up logging of screen windows set the shell variable SCREEN_LOGDIR to the directory you want the log files to go. Log files will appear with names like ''screen-$SERVICE_NAME-$TIMESTAMP.log'' in that dir and symbolic link screen-$SERVICE_NAME.log will link to the latest log file. Logs are kept for as long specified in the LOGDAYS variable.&lt;br /&gt;
&lt;br /&gt;
Both SCREEN_LOGDIR and LOGDAYS are shell variables so you need to set them either in your shell or in localrc. Use shell commands if you only want the logs to work this one time. Use ''localrc'' if you always want to have log files appear.&lt;br /&gt;
&lt;br /&gt;
Assuming you have already made a directory...&lt;br /&gt;
&lt;br /&gt;
 $ mkdir ~/log&lt;br /&gt;
&lt;br /&gt;
Then, if you only want logs this one time, in your bash shell say...&lt;br /&gt;
&lt;br /&gt;
 $ export SCREEN_LOGDIR=~/log&lt;br /&gt;
 $ export LOGDAYS=2&lt;br /&gt;
&lt;br /&gt;
... or if you ''always'' want log files, in your localrc add the lines ...&lt;br /&gt;
&lt;br /&gt;
 SCREEN_LOGDIR=~/log&lt;br /&gt;
 LOGDAYS=2&lt;br /&gt;
&lt;br /&gt;
The stack.sh script will automatically rotate the log files for you.&lt;br /&gt;
&lt;br /&gt;
== MySQL issues ==&lt;br /&gt;
If you get stuck with Keystone try...&lt;br /&gt;
 $ mysql -u root -pnova&lt;br /&gt;
... if that doesn't work you probably have a broken mysql install. If you have problems getting mysql to behave, try purging the OpenStack version of the install and install the database manually. Here’s how to rip everything down and install mysql-server from scratch yourself.&lt;br /&gt;
&lt;br /&gt;
 $ ./unstack&lt;br /&gt;
 $ sudo apt-get purge mysql-server&lt;br /&gt;
... you may need to use the name mysql-server-5.5 instead ...&lt;br /&gt;
 $ sudo apt-get autoremove&lt;br /&gt;
 $ sudo apt-get install mysql-server-5.5&lt;br /&gt;
 $ sudo mysql_install_db&lt;br /&gt;
 $ sudo mysqladmin -u root password 'nova'&lt;br /&gt;
 $ sudo service mysql restart&lt;br /&gt;
 $ ./stack&lt;br /&gt;
&lt;br /&gt;
== Keystone Issues ==&lt;br /&gt;
If you get stuck when you are checking your keystone connection via curl then it’s your proxy settings.  Try setting the following in /etc/environment&lt;br /&gt;
 no_proxy=localhost,127.0.0.0/8,127.0.1.1,127.0.1.1*,local.home&lt;br /&gt;
&lt;br /&gt;
== General Database Issues ==&lt;br /&gt;
If you have trouble with testing or other database heavy activities you may need to follow:&lt;br /&gt;
 http://codeinthehole.com/writing/how-to-set-up-mysql-for-python-on-ubuntu/&lt;br /&gt;
&lt;br /&gt;
== rootwrap Issues ==&lt;br /&gt;
If networking suddenly stops working with an error like this&lt;br /&gt;
&lt;br /&gt;
 Traceback (most recent call last):&lt;br /&gt;
   File &amp;quot;/usr/bin/nova-rootwrap&amp;quot;, line 59, in &amp;lt;module&amp;gt;&lt;br /&gt;
     from nova.rootwrap import wrapper&lt;br /&gt;
 ImportError: No module named rootwrap&lt;br /&gt;
&lt;br /&gt;
Then something has added a broken rootwrap to /usr/bin.  Remove the /usr/bin/nova-rootwrap and it will use the correct one in /usr/local/bin&lt;br /&gt;
&lt;br /&gt;
=== Check if nova-compute is running ===&lt;br /&gt;
 $ screen -x&lt;br /&gt;
Note the tab n-cpu is running in. It is usually #6 but it could be a different tab on occasion. Tab to n-cpu's tab. '''ctl+a''' then '''6'''. If you see:&lt;br /&gt;
 $ cd /opt/stack/nova &amp;amp;&amp;amp; sg  '/usr/local/bin/nova-compute --config-file /etc/nova/nova.conf' || touch &amp;quot;/opt/stack/status/stack/n-cpu.failure&amp;quot;&lt;br /&gt;
 sg: group '/usr/local/bin/nova-compute --config-file /etc/nova/nova.conf' does not exist&lt;br /&gt;
 $&lt;br /&gt;
... then nova-compute did not start. You can manually start nova-compute by editing the command to read:&lt;br /&gt;
 $ cd /opt/stack/nova &amp;amp;&amp;amp; /usr/local/bin/nova-compute --config-file /etc/nova/nova.conf || touch &amp;quot;/opt/stack/status/stack/n-cpu.failure&amp;quot;&lt;br /&gt;
... which is permissible for development (but not for production).&lt;br /&gt;
&lt;br /&gt;
== Networking Troubleshooting ==&lt;br /&gt;
Remotely accessed workstations need to have an IP for you to SSH or VNC into in order to do work. These instructions mostly assume a ''locally accessible'' VM or physical machine. If you are working with a remotely hosted Ubuntu developer's workstation, you may have special networking concerns. If you find your use of nova-network is stealing your workstations IP in your environment (does not manifest in all environments so it's located here as a troubleshooting step) then set up a second interface for nova-network to use. &lt;br /&gt;
&lt;br /&gt;
=== Configure a fake networking interface ===&lt;br /&gt;
Configure a fake interface so that nova-network does not steal the real IP that you need to access the host remotely.  On Ubuntu: &lt;br /&gt;
&lt;br /&gt;
 $ sudo ip tuntap add dev tapfoo mode tap&lt;br /&gt;
 $ sudo ifconfig tapfoo $some_ip up &lt;br /&gt;
&lt;br /&gt;
NOTE: assign the interface an ip address that will be appropriate for your environment.&lt;br /&gt;
&lt;br /&gt;
Now that you have a fake ethernet interface, change your localrc and re-run ./stack.sh so that you can start nova-network on the new interface.&lt;br /&gt;
&lt;br /&gt;
add to your ''localrc'' file&lt;br /&gt;
 FLAT_INTERFACE=tapfoo&lt;br /&gt;
&lt;br /&gt;
=== Configure a Proxy ===&lt;br /&gt;
Some workplaces may have to use special networking and/or proxy settings and that these may change when you are mobile. Those issues can cause problems with apt-get, git and other parts of OpenStack. If you are in a place that needs special proxy rules, [https://help.ubuntu.com/community/AptGet/Howto/#Setting_up_apt-get_to_use_a_http-proxy setup apt-get with a proxy]. You may also have to set [http://askubuntu.com/questions/158557/setting-proxy-from-terminal other proxy settings] depending on your company's particular firewall rules.&lt;br /&gt;
&lt;br /&gt;
=Appendix=&lt;br /&gt;
&lt;br /&gt;
==Converting Images==&lt;br /&gt;
&lt;br /&gt;
===Converting other disk images to vmdk using qemu-img=== &lt;br /&gt;
Disk images in several formats (e.g. qcow2) can be converted to the VMDK format usable by the vmware nova driver using the qemu-img utility.&lt;br /&gt;
&lt;br /&gt;
For example the following command can be used to convert a qcow2 Ubuntu Precise cloud image (downloadable from http://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img):&lt;br /&gt;
 &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt; qemu-img convert -f raw ~/Downloads/precise-server-cloudimg-amd64-disk1.img -O vmdk precise-server-cloudimg-amd64-disk1.vmdk&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Converting a sparse vmdk to an ESX-compatible format=== &lt;br /&gt;
&lt;br /&gt;
Due to a bug (fixed with the following proposed [https://review.openstack.org/#/c/43994/ patch], currently under review) in how sparse vmdk disks are handled in the VC driver, &lt;br /&gt;
sparse disks have to be pre-converted to thin-provisioned or preallocated disks before they can be uploaded to glance to be used by the driver.&lt;br /&gt;
&lt;br /&gt;
There are several ways to perform such a conversion:&lt;br /&gt;
&lt;br /&gt;
====1. Using vSphere CLI (or sometimes called the remote CLI or rCLI) tools.====&lt;br /&gt;
&lt;br /&gt;
The latest version from the date this was written is 5.1 and the link is [https://my.vmware.com/web/vmware/details?downloadGroup=VSP510-VCLI-510&amp;amp;productId=285 here].&lt;br /&gt;
&lt;br /&gt;
Assuming that the sparse disk is made available on a datastore accessible by an ESX host, the following command converts it to preallocated format:&lt;br /&gt;
&lt;br /&gt;
 vmkfstools --server=ip_of_some_ESX_host -i /vmfs/volumes/datastore1/sparse.vmdk /vmfs/volumes/datastore1/converted.vmdk&lt;br /&gt;
&lt;br /&gt;
(note the vifs tool from the same CLI package can be used to upload the disk to be converted and downloaded the converted disk if necessary)&lt;br /&gt;
&lt;br /&gt;
====2. Using vmkfstools directly on the ESX host====&lt;br /&gt;
&lt;br /&gt;
If the SSH service is enabled on an ESX host, the sparse disk can be uploaded to the ESX datastore via scp, and the vmkfstools local to the ESX host can use used to perform the conversion: &lt;br /&gt;
&lt;br /&gt;
(After logging to the host via ssh)&lt;br /&gt;
 vmkfstools -i /vmfs/volumes/datastore1/sparse.vmdk /vmfs/volumes/datastore1/converted.vmdk&lt;br /&gt;
&lt;br /&gt;
====3. vmware-vdiskmanager====&lt;br /&gt;
&lt;br /&gt;
vmware-vdiskmanager is a utility that comes bundled with VMware Fusion and VMware Workstation. &lt;br /&gt;
Below is an example of converting a sparse disk to preallocated format:&lt;br /&gt;
&lt;br /&gt;
 '/Applications/VMware Fusion.app/Contents/Library/vmware-vdiskmanager' -r sparse.vmdk -t 4 converted.vmdk&lt;br /&gt;
&lt;br /&gt;
In all the above cases, the converted vmdk is actually a pair of files, the descriptor file &amp;lt;i&amp;gt;converted&amp;lt;/i&amp;gt;.vmdk and the actual virtual disk data file &amp;lt;i&amp;gt;converted&amp;lt;/i&amp;gt;-flat.vmdk. The file to be uploaded to glance is &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;converted&amp;lt;/i&amp;gt;-flat.vmdk&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
===Specifying correct adapter type when uploading and image to glance===&lt;br /&gt;
&lt;br /&gt;
Currently, there is a limitation that OS boot vmdk disks with an ide adapter type cannot be attached to a virtual SCSI controller, and likewise disks with one of the scsi adapter types (e.g. busLogic, lsiLogic) cannot be attached to the IDE controller. Therefore it is important when uploading an image to glance that the correct vmware_adaptertype property be set. In particular, vmdk disks converted from other formats via qemu-img will _always_ be a monolithic sparse vmdk with an IDE adapter type. So using the above example of the Precise Ubuntu image, after the qemu-img conversion and conversion to a preallocated disk, the command to upload the vmdk disk should be something like:&lt;br /&gt;
&lt;br /&gt;
   glance image-create --name precise-cloud --is-public=True --container-format=bare --disk-format=vmdk --property vmware_disktype=&amp;quot;preallocated&amp;quot; --property vmware_adaptertype=&amp;quot;ide&amp;quot; &amp;lt; converted-flat.vmdk&lt;br /&gt;
&lt;br /&gt;
====Obtaining the adapter type associated with a vmdk====&lt;br /&gt;
&lt;br /&gt;
If the vmdk is a monolithic file (such as one produced by the qemu-img conversion) the adapter type can be retrieved by &lt;br /&gt;
&lt;br /&gt;
   head -20 some_monolithic.vmdk&lt;br /&gt;
&lt;br /&gt;
and looking for the ddb.adapterType=XXX property&lt;br /&gt;
&lt;br /&gt;
If the vmdk has a descriptor/data file pair (foo.vmdk and foo-XXXX.vmdk). The descriptor file foo.vmdk can be examined for the same ddb.adapterType property)&lt;br /&gt;
&lt;br /&gt;
==List of Reviews in progress==&lt;br /&gt;
https://review.openstack.org/#/q/message:vmware+OR+message:vcenter+OR+message:vsphere+OR+message:esx+OR+message:vcdriver+OR+message:datastore,n,z&lt;/div&gt;</summary>
		<author><name>Arnaud Legendre</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Python3&amp;diff=43949</id>
		<title>Python3</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Python3&amp;diff=43949"/>
				<updated>2014-03-03T19:15:37Z</updated>
		
		<summary type="html">&lt;p&gt;Arnaud Legendre: /* Dependencies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page tracks the progress of Python 3 effort porting for OpenStack.&lt;br /&gt;
&lt;br /&gt;
== Python 3 ==&lt;br /&gt;
&lt;br /&gt;
[http://techs.enovance.com/6521/openstack_python3 Why should OpenStack move to Python 3 right now?]&lt;br /&gt;
:''Python 3 is usually seen as the new Python version which breaks compatibility and raises new Unicode issues. Python 3 is much more than that. It’s a new clean language which has a more consistent syntax. It has many new features, not less than 15 new modules. Python 3 is already well supported by major Linux distributions, whereas Python 2.7 reached its end-of-life. Slowly, some bugs cannot be fixed in Python 2.7 anymore and are only fixed in the latest Python 3 release. Python 3 is now 5 years old and considered as a mature programming language.''&lt;br /&gt;
&lt;br /&gt;
== Port Python 2 code to Python 3 ==&lt;br /&gt;
&lt;br /&gt;
OpenStack project chose to use the same code base for Python 2 and Python 3. The [http://pythonhosted.org/six/ Six: Python 2 and 3 Compatibility Library] helps to write code working on both versions.&lt;br /&gt;
&lt;br /&gt;
=== References to port Python 2 code to Python 3 ===&lt;br /&gt;
* [http://python3porting.com/ Porting to Python 3 Book] by Lennart Regebro, especially the [http://python3porting.com/differences.html Language differences and workarounds].&lt;br /&gt;
* [http://docs.python.org/dev/howto/pyporting.html HOWTO: Porting Python 2 Code to Python 3] by Brett Cannon&lt;br /&gt;
* [https://wiki.python.org/moin/PortingPythonToPy3k Porting Python Code to 3.x]&lt;br /&gt;
* [http://code.google.com/p/python-incompatibility/  python-incompatibility]: Demonstrates incompatibilities between Python versions.&lt;br /&gt;
&lt;br /&gt;
=== Common pitfalls ===&lt;br /&gt;
&lt;br /&gt;
==== What is a string ? ====&lt;br /&gt;
You should definitely not talk about &amp;quot;strings&amp;quot; in your commit logs/reviews. In Python 2, a 'string' is bytes; in Python 3, it's a Unicode text string. The following code snippet may help in understanding the difference:&lt;br /&gt;
&lt;br /&gt;
Python 2:&lt;br /&gt;
    &amp;gt;&amp;gt;&amp;gt; type('foo')&lt;br /&gt;
    &amp;lt;type 'str'&amp;gt;&lt;br /&gt;
    &amp;gt;&amp;gt;&amp;gt; type(u'foo')&lt;br /&gt;
    &amp;lt;type 'unicode'&amp;gt;&lt;br /&gt;
    &amp;gt;&amp;gt;&amp;gt; type(b'foo')&lt;br /&gt;
    &amp;lt;type 'str'&amp;gt;&lt;br /&gt;
    &amp;gt;&amp;gt;&amp;gt; isinstance('foo', six.text_type)&lt;br /&gt;
    False&lt;br /&gt;
    &amp;gt;&amp;gt;&amp;gt; isinstance(u'foo', six.text_type)&lt;br /&gt;
    True&lt;br /&gt;
    &amp;gt;&amp;gt;&amp;gt; bytes is str&lt;br /&gt;
    True&lt;br /&gt;
    &amp;gt;&amp;gt;&amp;gt; b'foo'[0]&lt;br /&gt;
    'f'&lt;br /&gt;
&lt;br /&gt;
Python 3:&lt;br /&gt;
    &amp;gt;&amp;gt;&amp;gt; type('foo')&lt;br /&gt;
    &amp;lt;class 'str'&amp;gt;&lt;br /&gt;
    &amp;gt;&amp;gt;&amp;gt; type(u'foo')&lt;br /&gt;
    &amp;lt;class 'str'&amp;gt;&lt;br /&gt;
    &amp;gt;&amp;gt;&amp;gt; type(b'foo')&lt;br /&gt;
    &amp;lt;class 'bytes'&amp;gt;&lt;br /&gt;
    &amp;gt;&amp;gt;&amp;gt; isinstance('foo', six.text_type)&lt;br /&gt;
    True&lt;br /&gt;
    &amp;gt;&amp;gt;&amp;gt; isinstance(b'foo', six.text_type)&lt;br /&gt;
    False&lt;br /&gt;
    &amp;gt;&amp;gt;&amp;gt; bytes is str&lt;br /&gt;
    False&lt;br /&gt;
    &amp;gt;&amp;gt;&amp;gt; b'foo'[0]&lt;br /&gt;
    102&lt;br /&gt;
&lt;br /&gt;
== Python 3 of OpenStack Dependencies ==&lt;br /&gt;
&lt;br /&gt;
'''Blocker Pointer:''' it's not yet possible to specify different list of dependencies for Python 2 and Python 3. For example, mox only works on Python 2, mox3 can be used on Python 3.&lt;br /&gt;
&lt;br /&gt;
* Julien Danjou proposed to add requirements-py3.txt: [https://review.openstack.org/#/c/58770/ openstack/requirements patch] and [https://review.openstack.org/#/c/63236/ openstack-dev/pbr patch]&lt;br /&gt;
* An alternative is to support markers in requirements (in pip): [https://github.com/pypa/pip/issues/1433 pip issue: Support markers in setup(install_requires)?]; [https://github.com/pypa/pip/pull/1472 Victor Stinner's pull request: &amp;quot;parse requirements in markers&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
OpenStack Dependencies:&lt;br /&gt;
&lt;br /&gt;
* mox: use mox3 or port tests on mock which works on Python 3 (mock has been integrated in Python 3.3 as unittest.mock)&lt;br /&gt;
* eventlet: not available on Python 3 yet, alternatives: [http://docs.python.org/dev/library/asyncio.html asyncio] ([http://code.google.com/p/tulip/ Tulip] for Python 3.3+/[https://bitbucket.org/haypo/trollius Trollius] for Python 2), [http://www.tornadoweb.org/ Tornado]&lt;br /&gt;
&lt;br /&gt;
== Portage in progress ==&lt;br /&gt;
&lt;br /&gt;
* Oslo Messaging: Portage in Progress by Victor Stinner ([https://review.openstack.org/#/dashboard/9107 dashboard])&lt;br /&gt;
* glanceclient: Portage in Progress by Cyril Roelandt ([https://review.openstack.org/#/dashboard/8122 dashboard])&lt;br /&gt;
* heatclient: Portage in Progress by Cyril Roelandt ([https://review.openstack.org/#/dashboard/8122 dashboard])&lt;br /&gt;
* neutronclient: Portage in Progress by Cyril Roelandt ([https://review.openstack.org/#/dashboard/8122 dashboard])&lt;br /&gt;
* glanceclient: Portage in Progress by Cyril Roelandt ([https://review.openstack.org/#/dashboard/8122 dashboard])&lt;br /&gt;
&lt;br /&gt;
== Portage done ==&lt;br /&gt;
* keystoneclient: Portage in Progress by Cyril Roelandt ([https://review.openstack.org/#/dashboard/8122 dashboard])&lt;br /&gt;
&lt;br /&gt;
== Python 3 Status of OpenStack projects ==&lt;br /&gt;
&lt;br /&gt;
See also [[Python3Deps]].&lt;br /&gt;
&lt;br /&gt;
=== OpenStack clients ===&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Project !! Python 3 compatibility !! CI tests running? !! Python 3 classifiers ? !! Blocked by !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| [https://pypi.python.org/pypi/python-ceilometerclient python-ceilometerclient] || style=&amp;quot;background-color: lightgreen;&amp;quot; | Yes || style=&amp;quot;background-color: lightgreen;&amp;quot; | Voting || style=&amp;quot;background-color:orange;&amp;quot; | In the Git repo, not on PyPI || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://pypi.python.org/pypi/python-cinderclient python-cinderclient] || style=&amp;quot;background-color: lightgreen;&amp;quot; | Yes || style=&amp;quot;background-color: lightgreen&amp;quot; | Voting ||https://review.openstack.org/#/c/73844/ ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://pypi.python.org/pypi/python-ganttclient python-ganttclient] ||  ? || ? || ? || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://pypi.python.org/pypi/python-glanceclient python-glanceclient]  || style=&amp;quot;background-color: orange;&amp;quot; | In Progress || style=&amp;quot;background-color: orange&amp;quot; | Non-voting || || python-keystoneclient || &lt;br /&gt;
|-&lt;br /&gt;
| [https://pypi.python.org/pypi/python-heatclient python-heatclient] || style=&amp;quot;background-color: orange;&amp;quot; | In progress  || style=&amp;quot;background-color: orange;&amp;quot; | Non-voting ||   || || https://review.openstack.org/#/dashboard/8122&lt;br /&gt;
|-&lt;br /&gt;
| [https://pypi.python.org/pypi/python-ironicclient python-ironicclient]  || style=&amp;quot;background-color: lightgreen;&amp;quot; | Yes ||  style=&amp;quot;background-color: lightgreen&amp;quot; | Voting || style=&amp;quot;background-color: lightgreen;&amp;quot;  | On PyPI || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://pypi.python.org/pypi/python-keystoneclient python-keystoneclient] || style=&amp;quot;background-color: lightgreen;&amp;quot; | Yes || style=&amp;quot;background-color:lightgreen;&amp;quot; | Voting || style=&amp;quot;background-color: orange;&amp;quot; | In the Git repo, not on PyPI || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://pypi.python.org/pypi/python-marconiclient python-marconiclient]|| style=&amp;quot;background-color: lightgreen;&amp;quot; | Yes || style=&amp;quot;background-color: lightgreen;&amp;quot; | Voting || style=&amp;quot;background-color: red;&amp;quot; | No ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://pypi.python.org/pypi/python-melangeclient python-melangeclient] ||  ? || ? || ? || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://pypi.python.org/pypi/python-novaclient python-novaclient]  || style=&amp;quot;background-color: lightgreen;&amp;quot; | Yes || style=&amp;quot;background-color: lightgreen;&amp;quot; | Voting || https://review.openstack.org/#/c/75964/ ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://pypi.python.org/pypi/python-neutronclient python-neutronclient] || style=&amp;quot;background-color: orange;&amp;quot; | In progress || style=&amp;quot;background-color: orange;&amp;quot; | Non-voting   || || Differences between Python 2 and 3 ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://pypi.python.org/pypi/python-openstackclient python-openstackclient]      || style=&amp;quot;background-color: orange&amp;quot; | In Progress || style=&amp;quot;background-color: orange&amp;quot; | Non-Voting || || Works with glanceclient HEAD ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://pypi.python.org/pypi/python-savannaclient python-savannaclient]    || style=&amp;quot;background-color: orange;&amp;quot; | In progress || style=&amp;quot;background-color: orange&amp;quot; | Non-voting || || python-keystoneclient || https://review.openstack.org/#/c/73128/&lt;br /&gt;
|-&lt;br /&gt;
| [https://pypi.python.org/pypi/python-swiftclient python-swiftclient]    || style=&amp;quot;background-color: orange;&amp;quot; | In progress || style=&amp;quot;background-color: orange;&amp;quot; | Non-voting   || || Differences between Python 2 and 3  || &lt;br /&gt;
|-&lt;br /&gt;
| [https://pypi.python.org/pypi/python-ceilometerclient python-tuskarclient]   || style=&amp;quot;background-color: lightgreen;&amp;quot; | Yes || style=&amp;quot;background-color: lightgreen;&amp;quot; | Voting || style=&amp;quot;background-color: red;&amp;quot; | No|| || https://review.openstack.org/#/c/73130/&lt;br /&gt;
|-&lt;br /&gt;
| [https://pypi.python.org/pypi/python-troveclient python-troveclient] || style=&amp;quot;background-color: lightgreen;&amp;quot; | Yes || style=&amp;quot;background-color: lightgreen;&amp;quot; | Voting || https://review.openstack.org/#/c/75075/ || || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Core OpenStack projects ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Project !! Python 3 compatibility !! CI tests running? !! Trove classifiers !! Blocked by !! Comment&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| [https://pypi.python.org/pypi/ceilometer ceilometer] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No ||&lt;br /&gt;
*  eventlet&lt;br /&gt;
*  hacking&lt;br /&gt;
*  mysql-python&lt;br /&gt;
*  oslo.config&lt;br /&gt;
*  oslosphinx&lt;br /&gt;
*  python-ceilometerclient&lt;br /&gt;
*  python-glanceclient&lt;br /&gt;
*  python-swiftclient&lt;br /&gt;
*  sphinxcontrib-docbookrestapi&lt;br /&gt;
*  sphinxcontrib-httpdomain&lt;br /&gt;
*  sphinxcontrib-pecanwsme&lt;br /&gt;
*  sqlalchemy-migrate&lt;br /&gt;
*  swift&lt;br /&gt;
*  thrift (which is blocking happybase)&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| [https://pypi.python.org/pypi/cinder cinder] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No ||&lt;br /&gt;
*  ecdsa (which is blocking paramiko)&lt;br /&gt;
*  eventlet&lt;br /&gt;
*  hacking&lt;br /&gt;
*  mysql-python&lt;br /&gt;
*  oslo.config&lt;br /&gt;
*  oslo.rootwrap&lt;br /&gt;
*  oslo.sphinx&lt;br /&gt;
*  paste&lt;br /&gt;
*  python-glanceclient&lt;br /&gt;
*  python-swiftclient&lt;br /&gt;
*  rtslib-fb&lt;br /&gt;
*  sqlalchemy-migrate&lt;br /&gt;
*  suds&lt;br /&gt;
*  taskflow&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| [https://pypi.python.org/pypi/glance glance] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No ||&lt;br /&gt;
*  boto&lt;br /&gt;
*  eventlet&lt;br /&gt;
*  hacking&lt;br /&gt;
*  mysql-python&lt;br /&gt;
*  oslo.config&lt;br /&gt;
*  oslo.messaging&lt;br /&gt;
*  oslosphinx&lt;br /&gt;
*  paste&lt;br /&gt;
*  python-cinderclient&lt;br /&gt;
*  python-swiftclient&lt;br /&gt;
*  qpid-python&lt;br /&gt;
*  sqlalchemy-migrate&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| [https://pypi.python.org/pypi/heat heat] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No ||&lt;br /&gt;
*  ecdsa (which is blocking paramiko)&lt;br /&gt;
*  eventlet&lt;br /&gt;
*  hacking&lt;br /&gt;
*  oslo.config&lt;br /&gt;
*  oslo.sphinx&lt;br /&gt;
*  python-ceilometerclient&lt;br /&gt;
*  python-cinderclient&lt;br /&gt;
*  python-glanceclient&lt;br /&gt;
*  python-heatclient&lt;br /&gt;
*  python-neutronclient&lt;br /&gt;
*  python-swiftclient&lt;br /&gt;
*  python-troveclient&lt;br /&gt;
*  qpid-python&lt;br /&gt;
*  sqlalchemy-migrate&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| [https://pypi.python.org/pypi/horizon horizon] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No ||&lt;br /&gt;
*  django-compressor&lt;br /&gt;
*  django-openstack-auth&lt;br /&gt;
*  eventlet&lt;br /&gt;
*  hacking&lt;br /&gt;
*  nose-exclude&lt;br /&gt;
*  nosehtmloutput&lt;br /&gt;
*  nosexcover&lt;br /&gt;
*  openstack.nose-plugin&lt;br /&gt;
*  oslo.sphinx&lt;br /&gt;
*  python-ceilometerclient&lt;br /&gt;
*  python-cinderclient&lt;br /&gt;
*  python-glanceclient&lt;br /&gt;
*  python-heatclient&lt;br /&gt;
*  python-neutronclient&lt;br /&gt;
*  python-swiftclient&lt;br /&gt;
*  python-troveclient&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| [https://pypi.python.org/pypi/keystone keystone] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No ||&lt;br /&gt;
*  eventlet&lt;br /&gt;
*  hacking&lt;br /&gt;
*  oslo.config&lt;br /&gt;
*  oslo.messaging&lt;br /&gt;
*  oslosphinx&lt;br /&gt;
*  pam&lt;br /&gt;
*  paste&lt;br /&gt;
*  pycadf&lt;br /&gt;
*  python-ldap&lt;br /&gt;
*  sqlalchemy-migrate&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| [https://pypi.python.org/pypi/neutron neutron] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No ||&lt;br /&gt;
*  eventlet&lt;br /&gt;
*  hacking&lt;br /&gt;
*  jsonrpclib&lt;br /&gt;
*  oslo.config&lt;br /&gt;
*  oslo.rootwrap&lt;br /&gt;
*  paste&lt;br /&gt;
*  python-neutronclient&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| [https://pypi.python.org/pypi/nova nova] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No ||&lt;br /&gt;
*  boto&lt;br /&gt;
*  ecdsa (which is blocking paramiko)&lt;br /&gt;
*  eventlet&lt;br /&gt;
*  hacking&lt;br /&gt;
*  mysql-python&lt;br /&gt;
*  oslo.config&lt;br /&gt;
*  oslo.messaging&lt;br /&gt;
*  oslo.rootwrap&lt;br /&gt;
*  oslosphinx&lt;br /&gt;
*  paste&lt;br /&gt;
*  pycadf&lt;br /&gt;
*  python-cinderclient&lt;br /&gt;
*  python-glanceclient&lt;br /&gt;
*  python-neutronclient&lt;br /&gt;
*  sqlalchemy-migrate&lt;br /&gt;
*  suds&lt;br /&gt;
*  websockify&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| [https://pypi.python.org/pypi/swift swift] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No ||&lt;br /&gt;
*  dnspython&lt;br /&gt;
*  eventlet&lt;br /&gt;
*  hacking&lt;br /&gt;
*  netifaces&lt;br /&gt;
*  nosehtmloutput&lt;br /&gt;
*  nosexcover&lt;br /&gt;
*  openstack.nose-plugin&lt;br /&gt;
*  python-swiftclient&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Dependencies ===&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Project !! Python 3 compatibility !! CI tests running? !! Python 3 classifiers ? !! Blocked by !! Comment&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| [https://pypi.python.org/pypi/boto boto] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| [https://pypi.python.org/pypi/django-compressor django-compressor] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || || https://github.com/django-compressor/django-compressor/issues/484&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| [https://pypi.python.org/pypi/django-openstack-auth django-openstack-auth] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| [https://pypi.python.org/pypi/dnspython dnspython] || style=&amp;quot;background-color:lightgreen;&amp;quot; | Yes || N/A|| style=&amp;quot;background-color: lightgreen;&amp;quot; | Yes || || Must use the [https://pypi.python.org/pypi/dnspython3/ Python 3 version], see https://github.com/rthalley/dnspython/issues/60&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| [https://pypi.python.org/pypi/ecdsa ecdsa] || style=&amp;quot;background-color:lightgreen;&amp;quot; | No || N/A || style=&amp;quot;background-color: orange;&amp;quot; | In the Git repo || ||Py3 support merge before the 0.10 release (see https://github.com/warner/python-ecdsa/commits/master)&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| [https://pypi.python.org/pypi/eventlet eventlet] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || || &lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| [https://pypi.python.org/pypi/hacking hacking] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| [https://pypi.python.org/pypi/jsonrpclib jsonrpclib] || style=&amp;quot;background-color:red;&amp;quot; | No || N/A || style=&amp;quot;background-color: red;&amp;quot; | No || || The project seems dead :(&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| [https://pypi.python.org/pypi/mysql-python mysql-python] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| [https://pypi.python.org/pypi/netifaces netifaces] || style=&amp;quot;background-color:red;&amp;quot; | No || N/A|| style=&amp;quot;background-color: red;&amp;quot; | No || || Patch sent by Victor Stinner (in private), Debian has patches too&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| [https://pypi.python.org/pypi/nose-exclude nose-exclude] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || || https://bitbucket.org/kgrandis/nose-exclude/issue/10/test-failures-with-python-3&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| [https://pypi.python.org/pypi/nosehtmloutput nosehtmloutput] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || ||&lt;br /&gt;
https://bugs.launchpad.net/ubuntu/+source/python-nosehtmloutput/+bug/1287247&lt;br /&gt;
|-&lt;br /&gt;
| [https://pypi.python.org/pypi/nosexcover nosexcover] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || || There have been Python 3 fixes, but there are no tests, so it's hard to say whether this works&lt;br /&gt;
|-&lt;br /&gt;
| [https://pypi.python.org/pypi/openstack.nose-plugin openstack.nose-plugin] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://pypi.python.org/pypi/oslo.vmware oslo.vmware] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: lightgreen;&amp;quot; | Voting || style=&amp;quot;background-color: lightgreen;&amp;quot; | Yes || suds || &lt;br /&gt;
|-&lt;br /&gt;
| [https://pypi.python.org/pypi/oslo.config oslo.config] || style=&amp;quot;background-color:lightgreen;&amp;quot; | Yes || style=&amp;quot;background-color: lightgreen;&amp;quot; | Voting || style=&amp;quot;background-color: orange;&amp;quot; | In the git repo, not on PyPI || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://pypi.python.org/pypi/oslo.messaging oslo.messaging] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://pypi.python.org/pypi/oslo.rootwrap oslo.rootwrap] || style=&amp;quot;background-color:lightgreen;&amp;quot; | Yes || style=&amp;quot;background-color: lightgreen;&amp;quot; | Yes || style=&amp;quot;background-color: orange;&amp;quot; | https://review.openstack.org/#/c/77652/ || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://pypi.python.org/pypi/oslosphinx oslosphinx] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://pypi.python.org/pypi/oslo.sphinx oslo.sphinx] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://pypi.python.org/pypi/pam pam] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || || Dead project, does not work with Py3&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| [https://pypi.python.org/pypi/paste paste] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || || https://bitbucket.org/ianb/paste/pull-request/9/python-3-support/diff&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| [https://pypi.python.org/pypi/pycadf pycadf] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| [https://pypi.python.org/pypi/python-ldap python-ldap] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || || The project seems dead.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| [https://pypi.python.org/pypi/qpid-python qpid-python] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://pypi.python.org/pypi/rtslib-fb rtslib-fb] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://pypi.python.org/pypi/sphinxcontrib-docbookrestapi sphinxcontrib-docbookrestapi] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://pypi.python.org/pypi/sphinxcontrib-httpdomain sphinxcontrib-httpdomain] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://pypi.python.org/pypi/sphinxcontrib-pecanwsme sphinxcontrib-pecanwsme] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://pypi.python.org/pypi/sqlalchemy-migrate sqlalchemy-migrate] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://pypi.python.org/pypi/suds suds] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://pypi.python.org/pypi/taskflow taskflow] || style=&amp;quot;background-color:lightgreen;&amp;quot; | Yes || style=&amp;quot;background-color: lightgreen;&amp;quot; | Yes || style=&amp;quot;background-color: orange;&amp;quot; | In the Git repo, not on PyPI || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://pypi.python.org/pypi/thrift thrift] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://pypi.python.org/pypi/websockify websockify] || style=&amp;quot;background-color:red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || style=&amp;quot;background-color: red;&amp;quot; | No || ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Reports at OpenStack Summits ==&lt;br /&gt;
&lt;br /&gt;
* Havana summit notes: https://etherpad.openstack.org/p/havana-python3&lt;br /&gt;
* Icehouse summit notes: https://etherpad.openstack.org/p/IcehousePypyPy3&lt;br /&gt;
&lt;br /&gt;
== Dependencies ==&lt;br /&gt;
&lt;br /&gt;
This is an attempt to document which OpenStack dependencies work under Python 3.  We're starting with oslo, since it's the base of everything else, then gradually including other projects.&lt;br /&gt;
&lt;br /&gt;
The [https://pypi.python.org/pypi/caniusepython3 caniusepython3] tool can be used to do quick yes/no Python 3 support checks.&lt;br /&gt;
&lt;br /&gt;
=== oslo.config ===&lt;br /&gt;
&lt;br /&gt;
==== pip-requires ====&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;argparse&amp;lt;/span&amp;gt; - included with Python 2.7+.  The separate package is only needed for 2.6.&lt;br /&gt;
&lt;br /&gt;
==== test-requires ====&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: orange;&amp;quot;&amp;gt;mox&amp;lt;/span&amp;gt; - mox3 supports Python, or replace mox with mock (which is now included in python 3.3)&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;nose&amp;lt;/span&amp;gt; - supports Python 3&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;nose-exclude&amp;lt;/span&amp;gt; - 2.6-2.7, 3.1-3.3&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;testtools&amp;lt;/span&amp;gt; - 2.6-2.7, 3.2-3.3&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;coverage&amp;lt;/span&amp;gt; - supports 2.3-3.3&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;sphinx&amp;lt;/span&amp;gt; - supports Python 3&lt;br /&gt;
&lt;br /&gt;
=== oslo-incubator ===&lt;br /&gt;
&lt;br /&gt;
==== pip-requires ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;PasteDeploy&amp;lt;/span&amp;gt;: supports 2.5-3.3&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;WebOb&amp;lt;/span&amp;gt;: support Python 3&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;eventlet&amp;lt;/span&amp;gt;: NO (MAJOR PAIN POINT) (gevent doesn't either, though there are some old forks that tried)&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: orange;&amp;quot;&amp;gt;greenlet&amp;lt;/span&amp;gt;: supports 2.4-3.2 (lack of 3.3 may be false negative)&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;lxml&amp;lt;/span&amp;gt;: supports 2.4-3.3&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;routes&amp;lt;/span&amp;gt;: supports 2.6-3.3&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;iso8601&amp;lt;/span&amp;gt;: NO (perhaps try [http://labix.org/python-dateutil python-dateutil], specifically the parser module?)&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: orange;&amp;quot;&amp;gt;anyjson&amp;lt;/span&amp;gt;: 2.4-3.1 (lack of 3.2-3.3 may be false negatives)&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;kombu&amp;lt;/span&amp;gt;: supports Python 3 (exact version not given)&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;argparse&amp;lt;/span&amp;gt;: included in Python 2.7+&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;stevedore&amp;lt;/span&amp;gt;: supports 2.7, 3.2, and 3.3&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;SQLAlchemy&amp;lt;/span&amp;gt;: supports Python 3 (exact version not given)&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;qpid-python&amp;lt;/span&amp;gt;: NO&lt;br /&gt;
&lt;br /&gt;
==== test-requires ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;distribute&amp;lt;/span&amp;gt;: 2.4-3.3&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;coverage&amp;lt;/span&amp;gt;: 2.3-3.3&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fixtures&amp;lt;/span&amp;gt;: supports Python 3 (exact version not given)&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;mock&amp;lt;/span&amp;gt;: 2.5-3.3&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: orange;&amp;quot;&amp;gt;mox&amp;lt;/span&amp;gt;: use mox3, or replace mox with mock (which is now included in python 3.3)&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;mysql-python&amp;lt;/span&amp;gt;: NO (maybe try pymysql instead?)&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;nose&amp;lt;/span&amp;gt;: Supports Python 3&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;nose-exclude&amp;lt;/span&amp;gt;: 2.6-2.7, 3.1-3.3&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;nosexcover&amp;lt;/span&amp;gt;: NO (bug in tracker from 2012-05; no comments)&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;nosehtmloutput&amp;lt;/span&amp;gt;: ?&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;pep8&amp;lt;/span&amp;gt;: Supports Python 3&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;pyflakes&amp;lt;/span&amp;gt;: Supports Python 3&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;pylint&amp;lt;/span&amp;gt;: Supports Python 3 (tested with Python 3.2)&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;pyzmq&amp;lt;/span&amp;gt;: Supports 2.6-2.7, 3.2+&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;redis&amp;lt;/span&amp;gt;: Supports 2.5-2.7, 3.2+&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;setuptools-git&amp;lt;/span&amp;gt;: 2.4-2.7, 3.1-3.3&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;sphinx&amp;lt;/span&amp;gt;: Supports Python 3&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;testtools&amp;lt;/span&amp;gt;: 2.6-2.7, 3.2-3.3&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;webtest&amp;lt;/span&amp;gt;: 2.6-2.7, 3.2-3.3&lt;/div&gt;</summary>
		<author><name>Arnaud Legendre</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=GSoC2014&amp;diff=43794</id>
		<title>GSoC2014</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=GSoC2014&amp;diff=43794"/>
				<updated>2014-03-01T01:49:41Z</updated>
		
		<summary type="html">&lt;p&gt;Arnaud Legendre: /* Mentors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Google Summer of Code 2014 ==&lt;br /&gt;
&lt;br /&gt;
[http://www.openstack.org/software/ OpenStack] is applying as a mentoring organization for the [http://www.google-melange.com/gsoc/homepage/google/gsoc2014 2014 Google Summer of Code]. Check [https://developers.google.com/open-source/soc/ Google Developers site] for more information on how the program works.&lt;br /&gt;
We need to get in this time!&lt;br /&gt;
&lt;br /&gt;
Link to call for participation: [http://google-opensource.blogspot.com/2014/02/mentoring-organization-applications-now.html here]&lt;br /&gt;
&lt;br /&gt;
Link to FAQs: [http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2014/help_page here]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What is Openstack? ===&lt;br /&gt;
&lt;br /&gt;
[http://www.openstack.org/software/ Openstack] is an open-source IaaS cloud computing platform. Its mission is to provide a flexible solution for both public and private clouds of any size, and for this matter two basic requirements are considered: clouds must be simple to implement and massively scalable. &lt;br /&gt;
&lt;br /&gt;
To meet these principles OpenStack is divided into different components that work together. It's [http://www.openstack.org/software/openstack-compute/ computing], [http://www.openstack.org/software/openstack-storage/ storage], [http://www.openstack.org/software/openstack-networking/ networking], and all the other bits that help make this project, '''The Cloud'''.&lt;br /&gt;
&lt;br /&gt;
OpenStack is [http://i.imgur.com/gAyoiF8.png continuously growing] and new and exciting projects are being discussed everyday.&lt;br /&gt;
&lt;br /&gt;
We encourage new contributors to participate and help us make OpenStack the most complete, reliable and flexible open-source cloud service!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
&lt;br /&gt;
If you're interested in mentoring for this round, please add your name, email, IRC handle and the kind of projects you're interested in mentoring below. Please ensure that the projects are official projects in OpenStack and are registered in the [https://github.com/openstack/governance/blob/master/reference/programs.yaml governance projects.yaml]&lt;br /&gt;
&lt;br /&gt;
* Davanum Srinivas - dims - Nova, Oslo&lt;br /&gt;
* Debo Dutta - dedutta - Nova, Ceilometer&lt;br /&gt;
* [[User:Alejandro_Cabrera|Alejandro Cabrera]] - alcabrera - Marconi, Oslo&lt;br /&gt;
* Yathiraj Udupi - Yathi - Nova, Ceilometer&lt;br /&gt;
* Fei Long Wang - flwang- Glance&lt;br /&gt;
* Boris Pavlovic - boris-42 - Rally&lt;br /&gt;
* [[User:Sergey_Lukjanov|Sergey Lukjanov]] - SergeyLukjanov - Savanna (proxy to help find mentor in Savanna community)&lt;br /&gt;
* [[User:colinmcnamara|Colin McNamara]] - colinmcnamara - OpenStack Docs, OpenStack Training and ToolChains&lt;br /&gt;
* [[User:sriramhere|Sriram Subramanian]] - Fuzz Testing, OpenStack Security&lt;br /&gt;
* Balint Kovacs - blint@balabit.hu - Zorp&lt;br /&gt;
* Szilard Pfeiffer - floss@pfeifferszilard.hu - Zorp&lt;br /&gt;
* Arnaud Legendre - arnaud, alegendre@vmware.com - Oslo&lt;br /&gt;
* Joshua Hesketh - jhesketh, joshua.hesketh@rackspace.com - OpenStack Infrastructure&lt;br /&gt;
&lt;br /&gt;
=== Students ===&lt;br /&gt;
&lt;br /&gt;
Students application period opens March 10 and ends on March 21.&lt;br /&gt;
&lt;br /&gt;
If you'd like to get started on your proposal early, go ahead and add your name, location, e-mail, IRC handle and the project you are interested in (if you already know about that!) here:&lt;br /&gt;
*Manishanker Talusani,India,shanker.mani0@gmail.com[Project not selected yet]&lt;br /&gt;
*Saket Sinha, India, saket.sinha89@gmail.com [project not selected yet]&lt;br /&gt;
* Adnan Khan, Canada, khnd06@gmail.com [project not selected yet]&lt;br /&gt;
* Anastasios Andronidis, Greece, andronat_asf@hotmail.com. Proposed: [https://docs.google.com/document/d/1mWWSyftZYXxfXKzOBVeVma8KJbQRmYNPnns3oixHVMk/edit?usp=sharing Glance Scalable Image Precaching]&lt;br /&gt;
* Artem Shepelev, Russia, e-mail: shepelev.artem@gmail.com, ashepelev at irc.freenode.net, [[GSoC2014/Scheduler/CrossServicesScheduler|OpenStack/Gantt Cross-services Scheduler]].&lt;br /&gt;
* Fabio Morais, Brazil, fabio.jorge@gmail.com [Ceilometer; Proposed: [[GSoC2014/Ceilometer/UnderstandingBurstsLifecycle|Applying OpenStack telemetry to understand the bursts lifecycle in resource usage]]]&lt;br /&gt;
* [[User:Vkmc|Victoria Martínez de la Cruz]] - Argentina - victoria@vmartinezdelacruz.com - vkmc - OpenStack Message Queuing (Marconi)&lt;br /&gt;
* [[User:Damon_Wang|Wei Wang]], China, damon.devops@gmail.com, Neutron &amp;amp; Keystone&lt;br /&gt;
* Kumar Rishabh, India, email: shailrishabh@gmail.com [would fill more details later]&lt;br /&gt;
* Marc Solanas Tarre, US, email: marc@solanas.cat, mst89, [Monitoring and Telemetry how to detect network anomalies from telemetry data within Openstack]&lt;br /&gt;
* Pengfei Zhang, US, lalasjtu@gmail.com, Sparky, [Monitoring and Telemetry Monitoring &amp;amp; Tuning network for QoS within Openstack]&lt;br /&gt;
* RobberPhex, China, robberphex@gmail.com, Rally&lt;br /&gt;
* Rodrigo Duarte, Brazil, rodrigodsousa@gmail.com, rodrigods at irc.freenode.net [Gantt]&lt;br /&gt;
* Rishi Raj Singh, India, rishiraj.devel@gmail.com, [project not selected yet]&lt;br /&gt;
* [[User:Telles Nobrega|Telles Nóbrega]], Brazil, tellesnobrega@gmail.com, tellesnobrega at irc.freenode.net [Keystone, Nova, Savanna, Ceilometer]&lt;br /&gt;
* Md Ali Ahsan Rana, Canada, aliahsanrana@gmail.com, [Oslo, Rally]&lt;br /&gt;
* George Ebbinason, India, ebbinason@hotmail.com, [OpenStack Networking (Neutron) - Implement an application-level FWaaS driver]&lt;br /&gt;
* Masaru Nomura, UK, massa.nomura@gmail.com, [OpenStack Incubator (Oslo) - Implement a re-usable shared library for vmware (oslo.vmware)]&lt;br /&gt;
* Santosh Iyer, US, mails2santosh@gmail.com, [Nova, Ceilometer, Savanna]&lt;br /&gt;
* Chenchong Qin, China, qinchenchong@gmail.com, Neutron&lt;br /&gt;
* Andrew Chul, Russia, andymitrich@gmail.com, [project not selected yet]&lt;br /&gt;
* Fang Zhen, China, fz1989fz@gmail.com,[Gantt, Ceilometer]&lt;br /&gt;
* Abhinav Saxena, India, abhinav.saxena.57@gmail.com [project not yet selected]&lt;br /&gt;
* Pranav Singh, India, singh.pranavkumar10@gmail.com, purple_haze, [project not yet selected]&lt;br /&gt;
* Demontiê dos Santos, Brazil, demontiejunior@gmail.com, dsantos_ at irc.freenode.net, [Nova]&lt;br /&gt;
* [[User:Danielbrunos|Daniel Bruno]], Brazil, danielbrunos@gmail.com, danielbruno, [Heat, Savanna, Nova, Neutron]&lt;br /&gt;
* Dániel Csubák, Hungary, cyrrian@gmail.com, [OpenStack Networking (Neutron) - Implement an application-level FWaaS driver]&lt;br /&gt;
* Bruno Criado, Brazil, brunocriado@gmail.com, dropped at irc.freenode.net, [Implement a Fuzz testing framework that can be run on Tempest or a similar framework]&lt;br /&gt;
* Ondra Machacek, Czech Republic machacek.ondra@gmail.com, omachace [infra]&lt;br /&gt;
&lt;br /&gt;
=== Communication ===&lt;br /&gt;
&lt;br /&gt;
Get in touch with mentors and students through the [http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev openstack-dev mailing list].&lt;br /&gt;
&lt;br /&gt;
Also, you can find us at IRC in #openstack-gsoc at irc.freenode.org.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ideas ===&lt;br /&gt;
&lt;br /&gt;
Here are some project suggestions students can choose for their applications. This doesn't mean students have to stick strictly to this list; don't hesitate in propose projects by your own. For the latter, it would be great if you could submit a draft proposal and a estimated timeline.&lt;br /&gt;
&lt;br /&gt;
When writing your proposal, try to estimate your timeline to fit the 4 month period of GSoC coding. Also, take into account that '''GSoC does not consider other projects than coding''', so other ideas (like community tasks or i18n efforts) are not suitable for this internship.&lt;br /&gt;
&lt;br /&gt;
'''Click on the proposed project that caught your attention to get the details about the assumed knowledge, the project goals and more details related to it.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fuzz Testing (various projects) ====&lt;br /&gt;
&lt;br /&gt;
Fuzz testing or fuzzing is a software testing technique, often automated or semi-automated, that involves providing invalid, unexpected, or random data to the inputs of a computer program. The program is then monitored for exceptions such as crashes, or failing built-in code assertions or for finding potential memory leaks. Fuzzing is commonly used to test for security problems in software or computer systems.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Difficulty || Hard&lt;br /&gt;
|-&lt;br /&gt;
| Topics || testing, tempest&lt;br /&gt;
|-&lt;br /&gt;
| Mentor || Sriram Subramanian&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Proposed ideas,&lt;br /&gt;
&lt;br /&gt;
* [[GSoC2014/Testing/Fuzz|Implement a Fuzz testing framework that can be run on Tempest or a similar framework]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Common Scheduler (Gantt) ====&lt;br /&gt;
&lt;br /&gt;
Gantt provides a common scheduler framework for use by various OpenStack components.&lt;br /&gt;
&lt;br /&gt;
Check out more details about [https://github.com/openstack/gantt Gantt]!&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Difficulty || Medium&lt;br /&gt;
|-&lt;br /&gt;
| Topics || schedulers, python, gantt&lt;br /&gt;
|-&lt;br /&gt;
| Mentor || Debo&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Proposed ideas,&lt;br /&gt;
&lt;br /&gt;
* [[GSoC2014/Scheduler/StandAloneScheduler|Implement a stand-alone scheduler based on the scheduler forklift code]]&lt;br /&gt;
* [[GSoC2014/Scheduler/ScalableScheduler|Implement a scalable scheduler]] &lt;br /&gt;
* [[GSoC2014/Scheduler/CrossServicesScheduler|Implement a cross-services scheduler]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== OpenStack Monitoring and Telemetry (Ceilometer) ====&lt;br /&gt;
&lt;br /&gt;
Ceilometer aims to deliver a unique point of contact for billing systems to acquire all counters they need to establish customer billing, across all current and future OpenStack components. The delivery of counters must be traceable and auditable. The counters must be easily extensible to support new projects, and agents doing data collections should be independent of the overall system.&lt;br /&gt;
&lt;br /&gt;
For more details about Ceilometer project, check out the [[Ceilometer#OpenStack_Telemetry_.28Ceilometer.29|wiki]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Difficulty || Medium&lt;br /&gt;
|-&lt;br /&gt;
| Topics || ceilometer, data science&lt;br /&gt;
|-&lt;br /&gt;
| Mentor || Debo&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Proposed ideas,&lt;br /&gt;
&lt;br /&gt;
* [[GSoC2014/Scheduler/NetworkAnomalyDetection|How to detect network anomalies from telemetry data within Openstack]]&lt;br /&gt;
* [[Monitoring &amp;amp; Tuning network for QoS within Openstack]]&lt;br /&gt;
* [[GSoC2014/Ceilometer/UnderstandingBurstsLifecycle|Applying OpenStack telemetry to understand the bursts lifecycle in resource usage]]&lt;br /&gt;
&lt;br /&gt;
==== OpenStack Message Queuing Service (Marconi) ====&lt;br /&gt;
&lt;br /&gt;
Openstack Message Queuing Service (Marconi) provides a distributed queue. The basic concept is simple:&lt;br /&gt;
&lt;br /&gt;
* Create a queue&lt;br /&gt;
* Post messages&lt;br /&gt;
* Read them or claim them&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For full details on Marconi project, check out the [https://wiki.openstack.org/wiki/Marconi wiki]!&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Difficulty || Medium&lt;br /&gt;
|-&lt;br /&gt;
| Topics || storage, python, marconi&lt;br /&gt;
|-&lt;br /&gt;
| Mentor || Alejandro Cabrera&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Proposed ideas,&lt;br /&gt;
&lt;br /&gt;
* [[GSoC2014/Queues/Storage | Add a New Storage Backend]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== OpenStack Common Libraries (Oslo) ====&lt;br /&gt;
&lt;br /&gt;
The Oslo program produces a set of python libraries containing infrastructure code shared by OpenStack projects. The APIs provided by these libraries should be high quality, stable, consistent and generally useful.&lt;br /&gt;
&lt;br /&gt;
Check out more details about Oslo project on the [https://wiki.openstack.org/wiki/oslo wiki]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Difficulty || Medium - Hard&lt;br /&gt;
|-&lt;br /&gt;
| Topics || storage, python, oslo&lt;br /&gt;
|-&lt;br /&gt;
| Mentor || Alejandro Cabrera, Davanum Srinivas&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Proposed ideas,&lt;br /&gt;
&lt;br /&gt;
* [[GSoC2014/Incubator/Storage|Add a new backend to oslo.cache]]&lt;br /&gt;
* [[GSoC2014/Incubator/SharedLib|Implement a re-usable shared library for vmware (oslo.vmware) to be consumed by various OpenStack projects like Nova, Cinder or Glance]]&lt;br /&gt;
* [[GSoC2014/Incubator/Plugin|Define a new layer/abstraction in Nova for plugging-in vCenter and ovirt (since they span multiple hosts)]] (WIP)&lt;br /&gt;
&lt;br /&gt;
==== Benchmarking System (Rally) ====&lt;br /&gt;
&lt;br /&gt;
OpenStack QA team mostly works on CI/CD that ensures that new patches don't break specific single node installation of OpenStack. On the other hand it's clear that such CI/CD is only an indication and does not cover all cases (e.g. if cloud works well on single node installation it doesn't mean that it will work good as well on 1k servers installation under high load).. Rally aims to fix this and help us to get answer on question &amp;quot;How OpenStack works at scale&amp;quot;. To make it possible we are going to automate and unify all steps that are required for benchmarking OpenStack at scale: multi node OS deployment, verification, benchmarking &amp;amp; profiling.&lt;br /&gt;
&lt;br /&gt;
[[File:Rally-Actions.png|500px|center]]&lt;br /&gt;
&lt;br /&gt;
* Deploy is not yet another deployer of OpenStack it is just a plugable mechanism that allows to unify &amp;amp; simplify work with different deployers like: DevStack, Fuel, Anvil on hardware/VMs that you have.&lt;br /&gt;
* Verify - (work in progress) Use tempest to verify functionality of deployed openstack. In future Rally will support other OS verifiers.&lt;br /&gt;
* Benchmark - Smart combination of Framework, Load generation &amp;amp; Big repository of benchmarks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For more details about Rally project, check out [https://wiki.openstack.org/wiki/rally wiki]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Difficulty || Medium&lt;br /&gt;
|-&lt;br /&gt;
| Topics || rally, benchmarks, deploying, python, tempest,&lt;br /&gt;
|-&lt;br /&gt;
| Mentor || Boris Pavlovic&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Proposed ideas,&lt;br /&gt;
&lt;br /&gt;
* Benchmarking OpenStack&lt;br /&gt;
* Writing new benchmarks&lt;br /&gt;
* Integration of Rally &amp;amp; Tempest &lt;br /&gt;
* Processing Results &lt;br /&gt;
* Improving Rally deploying system&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== OpenStack Networking (Neutron) ====&lt;br /&gt;
&lt;br /&gt;
Neutron is an OpenStack project to provide Networking-as-a-Service between interface devices (e.g., vNICs) managed by other Openstack services (e.g., Nova).&lt;br /&gt;
&lt;br /&gt;
For full details about Neutron, check out the [https://wiki.openstack.org/wiki/Neutron wiki]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Difficulty || Medium&lt;br /&gt;
|-&lt;br /&gt;
| Topics || drivers, python, networking, fwaas, neutron&lt;br /&gt;
|-&lt;br /&gt;
| Mentor || Balint Kovacs, Szilard Pfeiffer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Proposed ideas,&lt;br /&gt;
&lt;br /&gt;
* [[GSoC2014/Network/Driver|Implement an application-level FWaaS driver]] ([https://github.com/balabit/zorp/wiki/zorp Zorp])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== OpenStack Data Processing (Savanna) ====&lt;br /&gt;
&lt;br /&gt;
Savanna aims to provide users with simple means to provision a Hadoop cluster by specifying several parameters like Hadoop version, cluster topology, nodes hardware details and a few more. The aim of this project is to enable users provision and management of Hadoop clusters on OpenStack.&lt;br /&gt;
&lt;br /&gt;
Check out the [https://wiki.openstack.org/wiki/Savanna wiki] to learn more about Savanna &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Difficulty ||&lt;br /&gt;
|-&lt;br /&gt;
| Topics || plugins, hadoop provision, savanna&lt;br /&gt;
|-&lt;br /&gt;
| Mentor ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Proposed ideas,&lt;br /&gt;
&lt;br /&gt;
* [[GSoC2014/DataProcessing/Plugin|Develop a new plugin for Savanna to extend savanna.plugins.provisioning:ProvisioningPluginBase class and implement all the required methods.]] (WIP)&lt;br /&gt;
&lt;br /&gt;
==== OpenStack Infrastructure (infra) ====&lt;br /&gt;
&lt;br /&gt;
The project infrastructure encompasses all of the systems that are used in the day to day operation of the OpenStack project as a whole. This includes development, testing, and collaboration tools. All of the software that we run is open source, and its configuration is public. The project still uses a number of systems that do not yet fall under this umbrella (notably, the main website), but we’re working to incorporate them so that people may just as easily contribute to those areas. All new services used by the project should begin as part of the infrastructure project to ensure easy collaboration from the start.&lt;br /&gt;
&lt;br /&gt;
Proposed ideas,&lt;br /&gt;
&lt;br /&gt;
* [[GSoC2014/ReplaceJenkins|Replace Jenkins with a more scalable solution based on the zuul-gearman protocol]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Projects ===&lt;br /&gt;
&lt;br /&gt;
Current mentors are willing to supervise students in the following projects:&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Nova Openstack Compute (Nova)]&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Climate Resource Reservation (Climate)]&lt;br /&gt;
* [https://github.com/openstack/gantt Common Scheduler (Gantt)]&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Marconi OpenStack Message Queuing (Marconi)]&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Oslo OpenStack Common Libraries (Oslo)]&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Neutron OpenStack Networking (Neutron)]&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Swift OpenStack Object Storage (Swift)]&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Cinder OpenStack Block Storage (Cinder)]&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Heat OpenStack Orchestration (Heat)]&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Savanna OpenStack Data Processing (Savanna)]&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Ceilometer OpenStack Telemetry (Ceilometer)]&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Rally Benchmarking System (Rally) ]&lt;/div&gt;</summary>
		<author><name>Arnaud Legendre</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=GSoC2014&amp;diff=43391</id>
		<title>GSoC2014</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=GSoC2014&amp;diff=43391"/>
				<updated>2014-02-25T22:25:58Z</updated>
		
		<summary type="html">&lt;p&gt;Arnaud Legendre: /* Mentors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Google Summer of Code 2014 ==&lt;br /&gt;
&lt;br /&gt;
[http://www.openstack.org/software/ OpenStack] is applying as a mentoring organization for the [http://www.google-melange.com/gsoc/homepage/google/gsoc2014 2014 Google Summer of Code]. Check [https://developers.google.com/open-source/soc/ Google Developers site] for more information on how the program works.&lt;br /&gt;
We need to get in this time!&lt;br /&gt;
&lt;br /&gt;
Link to call for participation: [http://google-opensource.blogspot.com/2014/02/mentoring-organization-applications-now.html here]&lt;br /&gt;
&lt;br /&gt;
Link to FAQs: [http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2014/help_page here]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What is Openstack? ===&lt;br /&gt;
&lt;br /&gt;
[http://www.openstack.org/software/ Openstack] is an open-source IaaS cloud computing platform. Its mission is to provide a flexible solution for both public and private clouds of any size, and for this matter two basic requirements are considered: clouds must be simple to implement and massively scalable. &lt;br /&gt;
&lt;br /&gt;
To meet these principles OpenStack is divided into different components that work together. It's [http://www.openstack.org/software/openstack-compute/ computing], [http://www.openstack.org/software/openstack-storage/ storage], [http://www.openstack.org/software/openstack-networking/ networking], and all the other bits that help make this project, '''The Cloud'''.&lt;br /&gt;
&lt;br /&gt;
OpenStack is [http://i.imgur.com/gAyoiF8.png continuously growing] and new and exciting projects are being discussed everyday.&lt;br /&gt;
&lt;br /&gt;
We encourage new contributors to participate and help us make OpenStack the most complete, reliable and flexible open-source cloud service!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
&lt;br /&gt;
If you're interested in mentoring for this round, please add your name, email, IRC handle and the kind of projects you're interested in mentoring below. Please ensure that the projects are official projects in OpenStack and are registered in the [https://github.com/openstack/governance/blob/master/reference/programs.yaml governance projects.yaml]&lt;br /&gt;
&lt;br /&gt;
* Davanum Srinivas - dims - Nova, Oslo&lt;br /&gt;
* Debo Dutta - dedutta - Nova, Ceilometer&lt;br /&gt;
* [[User:Alejandro_Cabrera|Alejandro Cabrera]] - alcabrera - Marconi, Oslo&lt;br /&gt;
* Yathiraj Udupi - Yathi - Nova, Ceilometer&lt;br /&gt;
* Fei Long Wang - flwang- Glance&lt;br /&gt;
* Boris Pavlovic - boris-42 - Rally&lt;br /&gt;
* [[User:Sergey_Lukjanov|Sergey Lukjanov]] - SergeyLukjanov - Savanna (proxy to help find mentor in Savanna community)&lt;br /&gt;
* [[User:colinmcnamara|Colin McNamara]] - colinmcnamara - OpenStack Docs, OpenStack Training and ToolChains&lt;br /&gt;
* [[User:sriramhere|Sriram Subramanian]] - Fuzz Testing, OpenStack Security&lt;br /&gt;
* Balint Kovacs - blint@balabit.hu - Zorp&lt;br /&gt;
* Szilard Pfeiffer - floss@pfeifferszilard.hu - Zorp&lt;br /&gt;
* Arnaud Legendre - arnaud - Oslo&lt;br /&gt;
&lt;br /&gt;
=== Students ===&lt;br /&gt;
&lt;br /&gt;
Students application period opens March 10 and ends on March 21.&lt;br /&gt;
&lt;br /&gt;
If you'd like to get started on your proposal early, go ahead and add your name, location, e-mail, IRC handle and the project you are interested in (if you already know about that!) here:&lt;br /&gt;
*Manishanker Talusani,India,shanker.mani0@gmail.com[Project not selected yet]&lt;br /&gt;
*Saket Sinha, India, saket.sinha89@gmail.com [project not selected yet]&lt;br /&gt;
* Adnan Khan, Canada, khnd06@gmail.com [project not selected yet]&lt;br /&gt;
* Anastasios Andronidis, Greece, andronat_asf@hotmail.com. Proposed: [https://docs.google.com/document/d/1mWWSyftZYXxfXKzOBVeVma8KJbQRmYNPnns3oixHVMk/edit?usp=sharing Glance Scalable Image Precaching]&lt;br /&gt;
* Artem Shepelev, Russia, e-mail: shepelev.artem@gmail.com, ashepelev at irc.freenode.net, OpenStack Scheduler.&lt;br /&gt;
* Fabio Morais, Brazil, fabio.jorge@gmail.com [Ceilometer; Proposed: [[GSoC2014/Ceilometer/UnderstandingBurstsLifecycle|Applying OpenStack telemetry to understand the bursts lifecycle in resource usage]]]&lt;br /&gt;
* Victoria Martínez de la Cruz - Argentina - victoria@vmartinezdelacruz.com - vkmc - OpenStack Message Queuing (Marconi)&lt;br /&gt;
* [[User:Damon_Wang|Wei Wang]], China, damon.devops@gmail.com, Neutron &amp;amp; Keystone&lt;br /&gt;
* Kumar Rishabh, India, email: shailrishabh@gmail.com [would fill more details later]&lt;br /&gt;
* Marc Solanas Tarre, US, email: marc@solanas.cat, mst89, [Monitoring and Telemetry how to detect network anomalies from telemetry data within Openstack]&lt;br /&gt;
* Pengfei Zhang, US, lalasjtu@gmail.com, Sparky, [Monitoring and Telemetry Monitoring &amp;amp; Tuning network for QoS within Openstack]&lt;br /&gt;
* RobberPhex, China, robberphex@gmail.com, [project not selected yet]&lt;br /&gt;
* Rodrigo Duarte, Brazil, rodrigodsousa@gmail.com, OpenStack Scheduler (Gantt)&lt;br /&gt;
* Rishi Raj Singh, India, rishiraj.devel@gmail.com, [project not selected yet]&lt;br /&gt;
* [[User:Telles Nobrega|Telles Nóbrega]], Brazil, tellesnobrega@gmail.com, tellesnobrega at irc.freenode.net [Keystone, Nova, Savanna, Ceilometer]&lt;br /&gt;
* Md Ali Ahsan Rana, Canada, aliahsanrana@gmail.com, [Oslo, Rally]&lt;br /&gt;
* George Ebbinason, India, ebbinason@hotmail.com, [OpenStack Networking (Neutron) - Implement an application-level FWaaS driver]&lt;br /&gt;
* Masaru Nomura, UK, massa.nomura@gmail.com, [OpenStack Incubator (Oslo) - Implement a re-usable shared library for vmware (oslo.vmware)]&lt;br /&gt;
* Santosh Iyer, US, mails2santosh@gmail.com, [Nova, Ceilometer, Savanna]&lt;br /&gt;
&lt;br /&gt;
=== Communication ===&lt;br /&gt;
&lt;br /&gt;
Get in touch with mentors and students through the [http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev openstack-dev mailing list].&lt;br /&gt;
&lt;br /&gt;
Also, you can find us at IRC in #openstack-gsoc at irc.freenode.org.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ideas ===&lt;br /&gt;
&lt;br /&gt;
Here are some project suggestions students can choose for their applications. This doesn't mean students have to stick strictly to this list; don't hesitate in propose projects by your own. For the latter, it would be great if you could submit a draft proposal and a estimated timeline.&lt;br /&gt;
&lt;br /&gt;
When writing your proposal, try to estimate your timeline to fit the 4 month period of GSoC coding. Also, take into account that '''GSoC does not consider other projects than coding''', so other ideas (like community tasks or i18n efforts) are not suitable for this internship.&lt;br /&gt;
&lt;br /&gt;
'''Click on the proposed project that caught your attention to get the details about the assumed knowledge, the project goals and more details related to it.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fuzz Testing (various projects) ====&lt;br /&gt;
&lt;br /&gt;
Fuzz testing or fuzzing is a software testing technique, often automated or semi-automated, that involves providing invalid, unexpected, or random data to the inputs of a computer program. The program is then monitored for exceptions such as crashes, or failing built-in code assertions or for finding potential memory leaks. Fuzzing is commonly used to test for security problems in software or computer systems.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Difficulty || Hard&lt;br /&gt;
|-&lt;br /&gt;
| Topics || testing, tempest&lt;br /&gt;
|-&lt;br /&gt;
| Mentor || Sriram Subramanian&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Proposed ideas,&lt;br /&gt;
&lt;br /&gt;
* [[GSoC2014/Testing/Fuzz|Implement a Fuzz testing framework that can be run on Tempest or a similar framework]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== OpenStack Scheduler (Gantt) ====&lt;br /&gt;
&lt;br /&gt;
Gantt provides a common scheduler framework for use by various OpenStack components.&lt;br /&gt;
&lt;br /&gt;
Check out more details about [https://github.com/openstack/gantt Gantt]!&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Difficulty || Medium&lt;br /&gt;
|-&lt;br /&gt;
| Topics || schedulers, python, gantt&lt;br /&gt;
|-&lt;br /&gt;
| Mentor || Debo&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Proposed ideas,&lt;br /&gt;
&lt;br /&gt;
* [[GSoC2014/Scheduler/StandAloneScheduler|Implement a stand-alone scheduler based on the scheduler forklift code]]&lt;br /&gt;
* [[GSoC2014/Scheduler/ScalableScheduler|Implement a scalable scheduler]] &lt;br /&gt;
* [[GSoC2014/Scheduler/CrossServicesScheduler|Implement a cross-services scheduler]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== OpenStack Monitoring and Telemetry (Ceilometer) ====&lt;br /&gt;
&lt;br /&gt;
Ceilometer aims to deliver a unique point of contact for billing systems to acquire all counters they need to establish customer billing, across all current and future OpenStack components. The delivery of counters must be traceable and auditable. The counters must be easily extensible to support new projects, and agents doing data collections should be independent of the overall system.&lt;br /&gt;
&lt;br /&gt;
For more details about Ceilometer project, check out the [[Ceilometer#OpenStack_Telemetry_.28Ceilometer.29|wiki]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Difficulty || Medium&lt;br /&gt;
|-&lt;br /&gt;
| Topics || ceilometer, data science&lt;br /&gt;
|-&lt;br /&gt;
| Mentor || Debo&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Proposed ideas,&lt;br /&gt;
&lt;br /&gt;
* [[GSoC2014/Scheduler/NetworkAnomalyDetection|How to detect network anomalies from telemetry data within Openstack]]&lt;br /&gt;
* [[Monitoring &amp;amp; Tuning network for QoS within Openstack]]&lt;br /&gt;
* [[GSoC2014/Ceilometer/UnderstandingBurstsLifecycle|Applying OpenStack telemetry to understand the bursts lifecycle in resource usage]]&lt;br /&gt;
&lt;br /&gt;
==== OpenStack Message Queuing Service (Marconi) ====&lt;br /&gt;
&lt;br /&gt;
Openstack Message Queuing Service (Marconi) provides a distributed queue. The basic concept is simple:&lt;br /&gt;
&lt;br /&gt;
* Create a queue&lt;br /&gt;
* Post messages&lt;br /&gt;
* Read them or claim them&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For full details on Marconi project, check out the [https://wiki.openstack.org/wiki/Marconi wiki]!&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Difficulty || Medium&lt;br /&gt;
|-&lt;br /&gt;
| Topics || storage, python, marconi&lt;br /&gt;
|-&lt;br /&gt;
| Mentor || Alejandro Cabrera&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Proposed ideas,&lt;br /&gt;
&lt;br /&gt;
* [[GSoC2014/Queues/Storage | Add a New Storage Backend]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== OpenStack Incubator (Oslo) ====&lt;br /&gt;
&lt;br /&gt;
The Oslo program produces a set of python libraries containing infrastructure code shared by OpenStack projects. The APIs provided by these libraries should be high quality, stable, consistent and generally useful.&lt;br /&gt;
&lt;br /&gt;
Check out more details about Oslo project on the [https://wiki.openstack.org/wiki/oslo wiki]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Difficulty || Medium - Hard&lt;br /&gt;
|-&lt;br /&gt;
| Topics || storage, python, oslo&lt;br /&gt;
|-&lt;br /&gt;
| Mentor || Alejandro Cabrera, Davanum Srinivas&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Proposed ideas,&lt;br /&gt;
&lt;br /&gt;
* [[GSoC2014/Incubator/Storage|Add a new backend to oslo.cache]]&lt;br /&gt;
* [[GSoC2014/Incubator/SharedLib|Implement a re-usable shared library for vmware (oslo.vmware) to be consumed by various OpenStack projects like Nova, Cinder or Glance]]&lt;br /&gt;
* [[GSoC2014/Incubator/Plugin|Define a new layer/abstraction in Nova for plugging-in vCenter and ovirt (since they span multiple hosts)]] (WIP)&lt;br /&gt;
&lt;br /&gt;
==== OpenStack Benchmarking System (Rally) ====&lt;br /&gt;
&lt;br /&gt;
OpenStack QA team mostly works on CI/CD that ensures that new patches don't break specific single node installation of OpenStack. On the other hand it's clear that such CI/CD is only an indication and does not cover all cases (e.g. if cloud works well on single node installation it doesn't mean that it will work good as well on 1k servers installation under high load).. Rally aims to fix this and help us to get answer on question &amp;quot;How OpenStack works at scale&amp;quot;. To make it possible we are going to automate and unify all steps that are required for benchmarking OpenStack at scale: multi node OS deployment, verification, benchmarking &amp;amp; profiling.&lt;br /&gt;
&lt;br /&gt;
[[File:Rally-Actions.png|500px|center]]&lt;br /&gt;
&lt;br /&gt;
* Deploy is not yet another deployer of OpenStack it is just a plugable mechanism that allows to unify &amp;amp; simplify work with different deployers like: DevStack, Fuel, Anvil on hardware/VMs that you have.&lt;br /&gt;
* Verify - (work in progress) Use tempest to verify functionality of deployed openstack. In future Rally will support other OS verifiers.&lt;br /&gt;
* Benchmark - Smart combination of Framework, Load generation &amp;amp; Big repository of benchmarks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For more details about Rally project, check out [https://wiki.openstack.org/wiki/rally wiki]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Difficulty || Medium&lt;br /&gt;
|-&lt;br /&gt;
| Topics || rally, benchmarks, deploying, python, tempest,&lt;br /&gt;
|-&lt;br /&gt;
| Mentor || Boris Pavlovic&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Proposed ideas,&lt;br /&gt;
&lt;br /&gt;
* Benchmarking OpenStack&lt;br /&gt;
* Writing new benchmarks&lt;br /&gt;
* Integration of Rally &amp;amp; Tempest &lt;br /&gt;
* Processing Results &lt;br /&gt;
* Improving Rally deploying system&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== OpenStack Networking (Neutron) ====&lt;br /&gt;
&lt;br /&gt;
Neutron is an OpenStack project to provide Networking-as-a-Service between interface devices (e.g., vNICs) managed by other Openstack services (e.g., Nova).&lt;br /&gt;
&lt;br /&gt;
For full details about Neutron, check out the [https://wiki.openstack.org/wiki/Neutron wiki]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Difficulty || Medium&lt;br /&gt;
|-&lt;br /&gt;
| Topics || drivers, python, networking, fwaas, neutron&lt;br /&gt;
|-&lt;br /&gt;
| Mentor || Balint Kovacs, Szilard Pfeiffer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Proposed ideas,&lt;br /&gt;
&lt;br /&gt;
* [[GSoC2014/Network/Driver|Implement an application-level FWaaS driver]] ([https://github.com/balabit/zorp/wiki/zorp Zorp])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== OpenStack Data Processing (Savanna) ====&lt;br /&gt;
&lt;br /&gt;
Savanna aims to provide users with simple means to provision a Hadoop cluster by specifying several parameters like Hadoop version, cluster topology, nodes hardware details and a few more. The aim of this project is to enable users provision and management of Hadoop clusters on OpenStack.&lt;br /&gt;
&lt;br /&gt;
Check out the [https://wiki.openstack.org/wiki/Savanna wiki] to learn more about Savanna &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Difficulty ||&lt;br /&gt;
|-&lt;br /&gt;
| Topics || plugins, hadoop provision, savanna&lt;br /&gt;
|-&lt;br /&gt;
| Mentor ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Proposed ideas,&lt;br /&gt;
&lt;br /&gt;
* [[GSoC2014/DataProcessing/Plugin|Develop a new plugin for Savanna to extend savanna.plugins.provisioning:ProvisioningPluginBase class and implement all the required methods.]] (WIP)&lt;br /&gt;
&lt;br /&gt;
=== Projects ===&lt;br /&gt;
&lt;br /&gt;
Current mentors are willing to supervise students in the following projects:&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Nova Openstack Compute (Nova)]&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Climate OpenStack Reservation (Climate)]&lt;br /&gt;
* [https://github.com/openstack/gantt OpenStack Common Scheduler (Gantt)]&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Marconi OpenStack Message Queuing (Marconi)]&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Oslo OpenStack Common Libraries (Oslo)]&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Neutron OpenStack Networking (Neutron)]&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Swift OpenStack Object Storage (Swift)]&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Cinder OpenStack Block Storage (Cinder)]&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Heat OpenStack Orchestration (Heat)]&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Savanna OpenStack Data Processing (Savanna)]&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Ceilometer OpenStack Telemetry (Ceilometer)]&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Rally OpenStack Benchmarking System (Rally) ]&lt;/div&gt;</summary>
		<author><name>Arnaud Legendre</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=GSoC2014/Incubator/SharedLib&amp;diff=43285</id>
		<title>GSoC2014/Incubator/SharedLib</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=GSoC2014/Incubator/SharedLib&amp;diff=43285"/>
				<updated>2014-02-25T04:19:11Z</updated>
		
		<summary type="html">&lt;p&gt;Arnaud Legendre: /* Project Goals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Implement a re-usable shared library for vmware (oslo.vmware) to be consumed by various OpenStack projects =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Difficulty || Medium&lt;br /&gt;
|-&lt;br /&gt;
| Topics || VMware API, Python, Nova/Glance/Cinder&lt;br /&gt;
|-&lt;br /&gt;
| Mentor || Arnaud Legendre&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The VMware API is consumed by OpenStack using the oslo.vmware library [1]. This library recently created specifically for OpenStack is shared by several projects such as Nova, Glance and Cinder. Internally, it is using SOAP calls to communicate with vCenter server and ESXi.&lt;br /&gt;
Instead of consuming the API through SOAP calls, it would be possible to use PyVmomi which is a Python SDK for the VMware vSphere API [2]. This work will give the opportunity to redefine a clean and more performant API.&lt;br /&gt;
It involves:&lt;br /&gt;
&lt;br /&gt;
# Deep dive the current API and how it is consumed by the OpenStack services&lt;br /&gt;
# Deep dive in PyVmomi&lt;br /&gt;
# Define an API&lt;br /&gt;
# Provide an implementation for this API using PyVmomi&lt;br /&gt;
# Make sure existing tests are working or modify them accordingly&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[1] https://github.com/openstack/oslo.vmware/&lt;br /&gt;
&lt;br /&gt;
[2] https://github.com/vmware/pyvmomi&lt;br /&gt;
&lt;br /&gt;
== Assumed Knowledge ==&lt;br /&gt;
* Python - basics, class/module management&lt;br /&gt;
* Command Line - a little bit of git, code editing, navigation&lt;br /&gt;
* Already played with virtual machines&lt;br /&gt;
* Experience with API definition&lt;br /&gt;
* Some basic knowledge of what VMware does would be a plus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Refer to [https://github.com/cabrera/python-openstack-and-you/ Python, Openstack, and You] if you'd like to get a head start.&lt;br /&gt;
I will be able to help you!! &lt;br /&gt;
&lt;br /&gt;
== Project Goals ==&lt;br /&gt;
&lt;br /&gt;
* Provide a clean interface for the OpenStack VMware library&lt;br /&gt;
* Provide an implementation for it using PyVmomi&lt;br /&gt;
* Provide a test suite&lt;br /&gt;
&lt;br /&gt;
== Project Nice-to-Haves ==&lt;br /&gt;
&lt;br /&gt;
* Performance evaluation of PyVmomi compared to the current codebase&lt;br /&gt;
* Provide some documentation for the API&lt;br /&gt;
&lt;br /&gt;
====== Suggestions ======&lt;br /&gt;
&lt;br /&gt;
* vCenter and ESX:&lt;br /&gt;
&lt;br /&gt;
vCenter server: http://www.vmware.com/products/vcenter-server&lt;br /&gt;
&lt;br /&gt;
VMware ESX: http://en.wikipedia.org/wiki/VMware_ESX&lt;br /&gt;
&lt;br /&gt;
* How to write APIs:&lt;br /&gt;
&lt;br /&gt;
https://ep2013.europython.eu/conference/talks/guidelines-to-writing-a-python-api&lt;br /&gt;
&lt;br /&gt;
* OpenStack:&lt;br /&gt;
&lt;br /&gt;
Cinder: https://wiki.openstack.org/wiki/Cinder&lt;br /&gt;
&lt;br /&gt;
Glance: http://docs.openstack.org/developer/glance/&lt;br /&gt;
&lt;br /&gt;
Nova: http://docs.openstack.org/developer/nova/&lt;/div&gt;</summary>
		<author><name>Arnaud Legendre</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=GSoC2014/Incubator/SharedLib&amp;diff=43284</id>
		<title>GSoC2014/Incubator/SharedLib</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=GSoC2014/Incubator/SharedLib&amp;diff=43284"/>
				<updated>2014-02-25T04:18:54Z</updated>
		
		<summary type="html">&lt;p&gt;Arnaud Legendre: /* Project Goals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Implement a re-usable shared library for vmware (oslo.vmware) to be consumed by various OpenStack projects =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Difficulty || Medium&lt;br /&gt;
|-&lt;br /&gt;
| Topics || VMware API, Python, Nova/Glance/Cinder&lt;br /&gt;
|-&lt;br /&gt;
| Mentor || Arnaud Legendre&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The VMware API is consumed by OpenStack using the oslo.vmware library [1]. This library recently created specifically for OpenStack is shared by several projects such as Nova, Glance and Cinder. Internally, it is using SOAP calls to communicate with vCenter server and ESXi.&lt;br /&gt;
Instead of consuming the API through SOAP calls, it would be possible to use PyVmomi which is a Python SDK for the VMware vSphere API [2]. This work will give the opportunity to redefine a clean and more performant API.&lt;br /&gt;
It involves:&lt;br /&gt;
&lt;br /&gt;
# Deep dive the current API and how it is consumed by the OpenStack services&lt;br /&gt;
# Deep dive in PyVmomi&lt;br /&gt;
# Define an API&lt;br /&gt;
# Provide an implementation for this API using PyVmomi&lt;br /&gt;
# Make sure existing tests are working or modify them accordingly&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[1] https://github.com/openstack/oslo.vmware/&lt;br /&gt;
&lt;br /&gt;
[2] https://github.com/vmware/pyvmomi&lt;br /&gt;
&lt;br /&gt;
== Assumed Knowledge ==&lt;br /&gt;
* Python - basics, class/module management&lt;br /&gt;
* Command Line - a little bit of git, code editing, navigation&lt;br /&gt;
* Already played with virtual machines&lt;br /&gt;
* Experience with API definition&lt;br /&gt;
* Some basic knowledge of what VMware does would be a plus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Refer to [https://github.com/cabrera/python-openstack-and-you/ Python, Openstack, and You] if you'd like to get a head start.&lt;br /&gt;
I will be able to help you!! &lt;br /&gt;
&lt;br /&gt;
== Project Goals ==&lt;br /&gt;
&lt;br /&gt;
* Provide a clean interface for the OpenStack VMware library&lt;br /&gt;
* Provide an implementation for it using PyVmomi&lt;br /&gt;
* Provide a Test suite&lt;br /&gt;
&lt;br /&gt;
== Project Nice-to-Haves ==&lt;br /&gt;
&lt;br /&gt;
* Performance evaluation of PyVmomi compared to the current codebase&lt;br /&gt;
* Provide some documentation for the API&lt;br /&gt;
&lt;br /&gt;
====== Suggestions ======&lt;br /&gt;
&lt;br /&gt;
* vCenter and ESX:&lt;br /&gt;
&lt;br /&gt;
vCenter server: http://www.vmware.com/products/vcenter-server&lt;br /&gt;
&lt;br /&gt;
VMware ESX: http://en.wikipedia.org/wiki/VMware_ESX&lt;br /&gt;
&lt;br /&gt;
* How to write APIs:&lt;br /&gt;
&lt;br /&gt;
https://ep2013.europython.eu/conference/talks/guidelines-to-writing-a-python-api&lt;br /&gt;
&lt;br /&gt;
* OpenStack:&lt;br /&gt;
&lt;br /&gt;
Cinder: https://wiki.openstack.org/wiki/Cinder&lt;br /&gt;
&lt;br /&gt;
Glance: http://docs.openstack.org/developer/glance/&lt;br /&gt;
&lt;br /&gt;
Nova: http://docs.openstack.org/developer/nova/&lt;/div&gt;</summary>
		<author><name>Arnaud Legendre</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=GSoC2014&amp;diff=43283</id>
		<title>GSoC2014</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=GSoC2014&amp;diff=43283"/>
				<updated>2014-02-25T04:17:26Z</updated>
		
		<summary type="html">&lt;p&gt;Arnaud Legendre: /* OpenStack Incubator (Oslo) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Google Summer of Code 2014 ==&lt;br /&gt;
&lt;br /&gt;
[http://www.openstack.org/software/ OpenStack] is applying as a mentoring organization for the [http://www.google-melange.com/gsoc/homepage/google/gsoc2014 2014 Google Summer of Code]. Check [https://developers.google.com/open-source/soc/ Google Developers site] for more information on how the program works.&lt;br /&gt;
We need to get in this time!&lt;br /&gt;
&lt;br /&gt;
Link to call for participation: [http://google-opensource.blogspot.com/2014/02/mentoring-organization-applications-now.html here]&lt;br /&gt;
&lt;br /&gt;
Link to FAQs: [http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2014/help_page here]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What is Openstack? ===&lt;br /&gt;
&lt;br /&gt;
[http://www.openstack.org/software/ Openstack] is an open-source IaaS cloud computing platform. Its mission is to provide a flexible solution for both public and private clouds of any size, and for this matter two basic requirements are considered: clouds must be simple to implement and massively scalable. &lt;br /&gt;
&lt;br /&gt;
To meet these principles OpenStack is divided into different components that work together. It's [http://www.openstack.org/software/openstack-compute/ computing], [http://www.openstack.org/software/openstack-storage/ storage], [http://www.openstack.org/software/openstack-networking/ networking], and all the other bits that help make this project, '''The Cloud'''.&lt;br /&gt;
&lt;br /&gt;
OpenStack is [http://i.imgur.com/gAyoiF8.png continuously growing] and new and exciting projects are being discussed everyday.&lt;br /&gt;
&lt;br /&gt;
We encourage new contributors to participate and help us make OpenStack the most complete, reliable and flexible open-source cloud service!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
&lt;br /&gt;
If you're interested in mentoring for this round, please add your name, email, IRC handle and the kind of projects you're interested in mentoring below. Please ensure that the projects are official projects in OpenStack and are registered in the [https://github.com/openstack/governance/blob/master/reference/programs.yaml governance projects.yaml]&lt;br /&gt;
&lt;br /&gt;
* Davanum Srinivas - dims - Nova, Oslo&lt;br /&gt;
* Debo Dutta - dedutta - Nova, Ceilometer&lt;br /&gt;
* [[User:Alejandro_Cabrera|Alejandro Cabrera]] - alcabrera - Marconi, Oslo&lt;br /&gt;
* Yathiraj Udupi - Yathi - Nova, Ceilometer&lt;br /&gt;
* Fei Long Wang - flwang- Glance&lt;br /&gt;
* Boris Pavlovic - boris-42 - Rally&lt;br /&gt;
* [[User:Sergey_Lukjanov|Sergey Lukjanov]] - SergeyLukjanov - Savanna (proxy to help find mentor in Savanna community)&lt;br /&gt;
* [[User:colinmcnamara|Colin McNamara]] - colinmcnamara - OpenStack Docs, OpenStack Training and ToolChains&lt;br /&gt;
* [[User:sriramhere|Sriram Subramanian]] - Fuzz Testing, OpenStack Security&lt;br /&gt;
* Balint Kovacs - blint@balabit.hu - Zorp&lt;br /&gt;
* Szilard Pfeiffer - floss@pfeifferszilard.hu - Zorp&lt;br /&gt;
&lt;br /&gt;
=== Students ===&lt;br /&gt;
&lt;br /&gt;
Students application period opens March 10 and ends on March 21.&lt;br /&gt;
&lt;br /&gt;
If you'd like to get started on your proposal early, go ahead and add your name, location, e-mail, IRC handle and the project you are interested in (if you already know about that!) here:&lt;br /&gt;
&lt;br /&gt;
*Saket Sinha, India, saket.sinha89@gmail.com [project not selected yet]&lt;br /&gt;
* Adnan Khan, Canada, khnd06@gmail.com [project not selected yet]&lt;br /&gt;
* Anastasios Andronidis, Greece, andronat_asf@hotmail.com. Proposed: [https://docs.google.com/document/d/1mWWSyftZYXxfXKzOBVeVma8KJbQRmYNPnns3oixHVMk/edit?usp=sharing Glance Scalable Image Precaching]&lt;br /&gt;
* Artem Shepelev, Russia, e-mail: shepelev.artem@gmail.com, ashepelev at irc.freenode.net, OpenStack Scheduler.&lt;br /&gt;
* Fabio Morais, Brazil, fabio.jorge@gmail.com [Ceilometer; Proposed: [[GSoC2014/Ceilometer/UnderstandingBurstsLifecycle|Applying OpenStack telemetry to understand the bursts lifecycle in resource usage]]]&lt;br /&gt;
* Victoria Martínez de la Cruz - Argentina - victoria@vmartinezdelacruz.com - vkmc - OpenStack Message Queuing (Marconi)&lt;br /&gt;
* [[User:Damon_Wang|Wei Wang]], China, damon.devops@gmail.com, Neutron &amp;amp; Keystone&lt;br /&gt;
* Kumar Rishabh, India, email: shailrishabh@gmail.com [would fill more details later]&lt;br /&gt;
* Marc Solanas Tarre, US, email: marc@solanas.cat, mst89, [Monitoring and Telemetry how to detect network anomalies from telemetry data within Openstack]&lt;br /&gt;
* Pengfei Zhang, US, lalasjtu@gmail.com, Sparky, [Monitoring and Telemetry Monitoring &amp;amp; Tuning network for QoS within Openstack]&lt;br /&gt;
* RobberPhex, China, robberphex@gmail.com, [project not selected yet]&lt;br /&gt;
* Rodrigo Duarte, Brazil, rodrigodsousa@gmail.com, OpenStack Scheduler (Gantt)&lt;br /&gt;
* Rishi Raj Singh, India, rishiraj.devel@gmail.com, [project not selected yet]&lt;br /&gt;
* [[User:Telles Nobrega|Telles Nóbrega]], Brazil, tellesnobrega@gmail.com, tellesnobrega at irc.freenode.net [Keystone, Nova, Savanna, Ceilometer]&lt;br /&gt;
&lt;br /&gt;
=== Communication ===&lt;br /&gt;
&lt;br /&gt;
Get in touch with mentors and students through the [http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev openstack-dev mailing list].&lt;br /&gt;
&lt;br /&gt;
Also, you can find us at IRC in #openstack-gsoc at irc.freenode.org.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ideas ===&lt;br /&gt;
&lt;br /&gt;
Here are some project suggestions students can choose for their applications. This doesn't mean students have to stick strictly to this list; don't hesitate in propose projects by your own. For the latter, it would be great if you could submit a draft proposal and a estimated timeline.&lt;br /&gt;
&lt;br /&gt;
When writing your proposal, try to estimate your timeline to fit the 4 month period of GSoC coding. Also, take into account that '''GSoC does not consider other projects than coding''', so other ideas (like community tasks or i18n efforts) are not suitable for this internship.&lt;br /&gt;
&lt;br /&gt;
'''Click on the proposed project that caught your attention to get the details about the assumed knowledge, the project goals and more details related to it.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fuzz Testing (various projects) ====&lt;br /&gt;
&lt;br /&gt;
Fuzz testing or fuzzing is a software testing technique, often automated or semi-automated, that involves providing invalid, unexpected, or random data to the inputs of a computer program. The program is then monitored for exceptions such as crashes, or failing built-in code assertions or for finding potential memory leaks. Fuzzing is commonly used to test for security problems in software or computer systems.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Difficulty || Hard&lt;br /&gt;
|-&lt;br /&gt;
| Topics || testing, tempest&lt;br /&gt;
|-&lt;br /&gt;
| Mentor || Sriram Subramanian&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Proposed ideas,&lt;br /&gt;
&lt;br /&gt;
* [[GSoC2014/Testing/Fuzz|Implement a Fuzz testing framework that can be run on Tempest or a similar framework]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== OpenStack Scheduler (Gantt) ====&lt;br /&gt;
&lt;br /&gt;
Gantt provides a common scheduler framework for use by various OpenStack components.&lt;br /&gt;
&lt;br /&gt;
Check out more details about [https://github.com/openstack/gantt Gantt]!&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Difficulty || Medium&lt;br /&gt;
|-&lt;br /&gt;
| Topics || schedulers, python, gantt&lt;br /&gt;
|-&lt;br /&gt;
| Mentor || Debo&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Proposed ideas,&lt;br /&gt;
&lt;br /&gt;
* [[GSoC2014/Scheduler/StandAloneScheduler|Implement a stand-alone scheduler based on the scheduler forklift code]]&lt;br /&gt;
* [[GSoC2014/Scheduler/ScalableScheduler|Implement a scalable scheduler]] &lt;br /&gt;
* [[GSoC2014/Scheduler/CrossServicesScheduler|Implement a cross-services scheduler]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== OpenStack Monitoring and Telemetry (Ceilometer) ====&lt;br /&gt;
&lt;br /&gt;
Ceilometer aims to deliver a unique point of contact for billing systems to acquire all counters they need to establish customer billing, across all current and future OpenStack components. The delivery of counters must be traceable and auditable. The counters must be easily extensible to support new projects, and agents doing data collections should be independent of the overall system.&lt;br /&gt;
&lt;br /&gt;
For more details about Ceilometer project, check out the [[Ceilometer#OpenStack_Telemetry_.28Ceilometer.29|wiki]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Difficulty || Medium&lt;br /&gt;
|-&lt;br /&gt;
| Topics || ceilometer, data science&lt;br /&gt;
|-&lt;br /&gt;
| Mentor || Debo&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Proposed ideas,&lt;br /&gt;
&lt;br /&gt;
* [[GSoC2014/Scheduler/NetworkAnomalyDetection|How to detect network anomalies from telemetry data within Openstack]]&lt;br /&gt;
* [[Monitoring &amp;amp; Tuning network for QoS within Openstack]]&lt;br /&gt;
* [[GSoC2014/Ceilometer/UnderstandingBurstsLifecycle|Applying OpenStack telemetry to understand the bursts lifecycle in resource usage]]&lt;br /&gt;
&lt;br /&gt;
==== OpenStack Message Queuing Service (Marconi) ====&lt;br /&gt;
&lt;br /&gt;
Openstack Message Queuing Service (Marconi) provides a distributed queue. The basic concept is simple:&lt;br /&gt;
&lt;br /&gt;
* Create a queue&lt;br /&gt;
* Post messages&lt;br /&gt;
* Read them or claim them&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For full details on Marconi project, check out the [https://wiki.openstack.org/wiki/Marconi wiki]!&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Difficulty || Medium&lt;br /&gt;
|-&lt;br /&gt;
| Topics || storage, python, marconi&lt;br /&gt;
|-&lt;br /&gt;
| Mentor || Alejandro Cabrera&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Proposed ideas,&lt;br /&gt;
&lt;br /&gt;
* [[GSoC2014/Queues/Storage | Add a New Storage Backend]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== OpenStack Incubator (Oslo) ====&lt;br /&gt;
&lt;br /&gt;
The Oslo program produces a set of python libraries containing infrastructure code shared by OpenStack projects. The APIs provided by these libraries should be high quality, stable, consistent and generally useful.&lt;br /&gt;
&lt;br /&gt;
Check out more details about Oslo project on the [https://wiki.openstack.org/wiki/oslo wiki]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Difficulty || Medium - Hard&lt;br /&gt;
|-&lt;br /&gt;
| Topics || storage, python, oslo&lt;br /&gt;
|-&lt;br /&gt;
| Mentor || Alejandro Cabrera, Davanum Srinivas&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Proposed ideas,&lt;br /&gt;
&lt;br /&gt;
* [[GSoC2014/Incubator/Storage|Add a new backend to oslo.cache]]&lt;br /&gt;
* [[GSoC2014/Incubator/SharedLib|Implement a re-usable shared library for vmware (oslo.vmware) to be consumed by various OpenStack projects like Nova, Cinder or Glance]]&lt;br /&gt;
* [[GSoC2014/Incubator/Plugin|Define a new layer/abstraction in Nova for plugging-in vCenter and ovirt (since they span multiple hosts)]] (WIP)&lt;br /&gt;
&lt;br /&gt;
==== OpenStack Benchmarking System (Rally) ====&lt;br /&gt;
&lt;br /&gt;
OpenStack QA team mostly works on CI/CD that ensures that new patches don't break specific single node installation of OpenStack. On the other hand it's clear that such CI/CD is only an indication and does not cover all cases (e.g. if cloud works well on single node installation it doesn't mean that it will work good as well on 1k servers installation under high load).. Rally aims to fix this and help us to get answer on question &amp;quot;How OpenStack works at scale&amp;quot;. To make it possible we are going to automate and unify all steps that are required for benchmarking OpenStack at scale: multi node OS deployment, verification, benchmarking &amp;amp; profiling.&lt;br /&gt;
&lt;br /&gt;
[[File:Rally-Actions.png|500px|center]]&lt;br /&gt;
&lt;br /&gt;
* Deploy is not yet another deployer of OpenStack it is just a plugable mechanism that allows to unify &amp;amp; simplify work with different deployers like: DevStack, Fuel, Anvil on hardware/VMs that you have.&lt;br /&gt;
* Verify - (work in progress) Use tempest to verify functionality of deployed openstack. In future Rally will support other OS verifiers.&lt;br /&gt;
* Benchmark - Smart combination of Framework, Load generation &amp;amp; Big repository of benchmarks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For more details about Rally project, check out [https://wiki.openstack.org/wiki/rally wiki]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Difficulty || Medium&lt;br /&gt;
|-&lt;br /&gt;
| Topics || rally, benchmarks, deploying, python, tempest,&lt;br /&gt;
|-&lt;br /&gt;
| Mentor || Boris Pavlovic&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Proposed ideas,&lt;br /&gt;
&lt;br /&gt;
* Benchmarking OpenStack&lt;br /&gt;
* Writing new benchmarks&lt;br /&gt;
* Integration of Rally &amp;amp; Tempest &lt;br /&gt;
* Processing Results &lt;br /&gt;
* Improving Rally deploying system&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== OpenStack Networking (Neutron) ====&lt;br /&gt;
&lt;br /&gt;
Neutron is an OpenStack project to provide Networking-as-a-Service between interface devices (e.g., vNICs) managed by other Openstack services (e.g., Nova).&lt;br /&gt;
&lt;br /&gt;
For full details about Neutron, check out the [https://wiki.openstack.org/wiki/Neutron wiki]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Difficulty || Medium&lt;br /&gt;
|-&lt;br /&gt;
| Topics || drivers, python, networking, fwaas, neutron&lt;br /&gt;
|-&lt;br /&gt;
| Mentor || Balint Kovacs, Szilard Pfeiffer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Proposed ideas,&lt;br /&gt;
&lt;br /&gt;
* [[GSoC2014/Network/Driver|Implement an application-level FWaaS driver]] ([https://github.com/balabit/zorp/wiki/zorp Zorp])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== OpenStack Data Processing (Savanna) ====&lt;br /&gt;
&lt;br /&gt;
Savanna aims to provide users with simple means to provision a Hadoop cluster by specifying several parameters like Hadoop version, cluster topology, nodes hardware details and a few more. The aim of this project is to enable users provision and management of Hadoop clusters on OpenStack.&lt;br /&gt;
&lt;br /&gt;
Check out the [https://wiki.openstack.org/wiki/Savanna wiki] to learn more about Savanna &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Difficulty ||&lt;br /&gt;
|-&lt;br /&gt;
| Topics || plugins, hadoop provision, savanna&lt;br /&gt;
|-&lt;br /&gt;
| Mentor ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Proposed ideas,&lt;br /&gt;
&lt;br /&gt;
* [[GSoC2014/DataProcessing/Plugin|Develop a new plugin for Savanna to extend savanna.plugins.provisioning:ProvisioningPluginBase class and implement all the required methods.]] (WIP)&lt;br /&gt;
&lt;br /&gt;
=== Projects ===&lt;br /&gt;
&lt;br /&gt;
Current mentors are willing to supervise students in the following projects:&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Nova Openstack Compute (Nova)]&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Climate OpenStack Reservation (Climate)]&lt;br /&gt;
* [https://github.com/openstack/gantt OpenStack Common Scheduler (Gantt)]&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Marconi OpenStack Message Queuing (Marconi)]&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Oslo OpenStack Common Libraries (Oslo)]&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Neutron OpenStack Networking (Neutron)]&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Swift OpenStack Object Storage (Swift)]&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Cinder OpenStack Block Storage (Cinder)]&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Heat OpenStack Orchestration (Heat)]&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Savanna OpenStack Data Processing (Savanna)]&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Ceilometer OpenStack Telemetry (Ceilometer)]&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Rally OpenStack Benchmarking System (Rally) ]&lt;/div&gt;</summary>
		<author><name>Arnaud Legendre</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=GSoC2014/Incubator/SharedLib&amp;diff=43282</id>
		<title>GSoC2014/Incubator/SharedLib</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=GSoC2014/Incubator/SharedLib&amp;diff=43282"/>
				<updated>2014-02-25T04:16:57Z</updated>
		
		<summary type="html">&lt;p&gt;Arnaud Legendre: /* Implement a re-usable shared library for vmware (oslo.vmware) to be consumed by various OpenStack projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Implement a re-usable shared library for vmware (oslo.vmware) to be consumed by various OpenStack projects =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Difficulty || Medium&lt;br /&gt;
|-&lt;br /&gt;
| Topics || VMware API, Python, Nova/Glance/Cinder&lt;br /&gt;
|-&lt;br /&gt;
| Mentor || Arnaud Legendre&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The VMware API is consumed by OpenStack using the oslo.vmware library [1]. This library recently created specifically for OpenStack is shared by several projects such as Nova, Glance and Cinder. Internally, it is using SOAP calls to communicate with vCenter server and ESXi.&lt;br /&gt;
Instead of consuming the API through SOAP calls, it would be possible to use PyVmomi which is a Python SDK for the VMware vSphere API [2]. This work will give the opportunity to redefine a clean and more performant API.&lt;br /&gt;
It involves:&lt;br /&gt;
&lt;br /&gt;
# Deep dive the current API and how it is consumed by the OpenStack services&lt;br /&gt;
# Deep dive in PyVmomi&lt;br /&gt;
# Define an API&lt;br /&gt;
# Provide an implementation for this API using PyVmomi&lt;br /&gt;
# Make sure existing tests are working or modify them accordingly&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[1] https://github.com/openstack/oslo.vmware/&lt;br /&gt;
&lt;br /&gt;
[2] https://github.com/vmware/pyvmomi&lt;br /&gt;
&lt;br /&gt;
== Assumed Knowledge ==&lt;br /&gt;
* Python - basics, class/module management&lt;br /&gt;
* Command Line - a little bit of git, code editing, navigation&lt;br /&gt;
* Already played with virtual machines&lt;br /&gt;
* Experience with API definition&lt;br /&gt;
* Some basic knowledge of what VMware does would be a plus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Refer to [https://github.com/cabrera/python-openstack-and-you/ Python, Openstack, and You] if you'd like to get a head start.&lt;br /&gt;
I will be able to help you!! &lt;br /&gt;
&lt;br /&gt;
== Project Goals ==&lt;br /&gt;
&lt;br /&gt;
* Provide a clean interface for the OpenStack VMware library&lt;br /&gt;
* Provide an implementation for it using PyVmomi&lt;br /&gt;
* Test suite&lt;br /&gt;
&lt;br /&gt;
== Project Nice-to-Haves ==&lt;br /&gt;
&lt;br /&gt;
* Performance evaluation of PyVmomi compared to the current codebase&lt;br /&gt;
* Provide some documentation for the API&lt;br /&gt;
&lt;br /&gt;
====== Suggestions ======&lt;br /&gt;
&lt;br /&gt;
* vCenter and ESX:&lt;br /&gt;
&lt;br /&gt;
vCenter server: http://www.vmware.com/products/vcenter-server&lt;br /&gt;
&lt;br /&gt;
VMware ESX: http://en.wikipedia.org/wiki/VMware_ESX&lt;br /&gt;
&lt;br /&gt;
* How to write APIs:&lt;br /&gt;
&lt;br /&gt;
https://ep2013.europython.eu/conference/talks/guidelines-to-writing-a-python-api&lt;br /&gt;
&lt;br /&gt;
* OpenStack:&lt;br /&gt;
&lt;br /&gt;
Cinder: https://wiki.openstack.org/wiki/Cinder&lt;br /&gt;
&lt;br /&gt;
Glance: http://docs.openstack.org/developer/glance/&lt;br /&gt;
&lt;br /&gt;
Nova: http://docs.openstack.org/developer/nova/&lt;/div&gt;</summary>
		<author><name>Arnaud Legendre</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=NovaVMware/DeveloperGuide&amp;diff=41207</id>
		<title>NovaVMware/DeveloperGuide</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=NovaVMware/DeveloperGuide&amp;diff=41207"/>
				<updated>2014-02-04T02:17:45Z</updated>
		
		<summary type="html">&lt;p&gt;Arnaud Legendre: /* Upload your VMDK to glance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Developer's DevStack + vSphere Guide=&lt;br /&gt;
&lt;br /&gt;
This is a short guide for developers interested in working on OpenStack and [[vSphere]] (ESX, [[ESXi]], and [[vCenter]]) drivers.&lt;br /&gt;
&lt;br /&gt;
==vSphere Environment and Inventory==&lt;br /&gt;
&lt;br /&gt;
Set up a vSphere 5.1 (or better) developer's environment. For development purposes, you'll need to have one of this inventory type:&lt;br /&gt;
&lt;br /&gt;
[[File:VCenter cluster inventory.png|framed|none|inventory with a DRS cluster]]&lt;br /&gt;
&lt;br /&gt;
Note: The cluster should be DRS enabled with &amp;quot;Fully automated&amp;quot; placement turned on. Also, if you can't get two or more ESX hosts to work with, you can still work with one host in the cluster, but you won't be able to observe VM placement behaviors since there won't be anywhere to place the VMs except for the solitary host.&lt;br /&gt;
&lt;br /&gt;
=Development Environment=&lt;br /&gt;
== Get an Ubuntu 12.04 (suggested) VM setup==&lt;br /&gt;
This Ubuntu workstation can run as a VM itself, but it should have public internet access (ideally direct, but http proxy is workable if you don’t need to commit code back to OpenStack if you do, see the troubleshooting page for steps that ''may'' help).  It should also have a reasonably high bandwidth link to the the vSphere hosts, as it will need to stream images from the Ubuntu workstation to the vSphere host. &lt;br /&gt;
&lt;br /&gt;
We suggest your Ubuntu workstation have&lt;br /&gt;
* at least 10 GB disk, with 20+ GB being ideal. &lt;br /&gt;
* at least one vCPU, with 2 being ideal.&lt;br /&gt;
* 4 GB of RAM.&lt;br /&gt;
&lt;br /&gt;
=== optional setup ===&lt;br /&gt;
If you are using a remote workstation (not running locally on your physical computer) you may have to follow some of the extra steps under [[NovaVMware/DeveloperGuide#Networking_Troubleshooting|Network Troubleshooting]]&lt;br /&gt;
&lt;br /&gt;
==install Devstack (http://devstack.org/) in your new VM==&lt;br /&gt;
Once booted, run: &lt;br /&gt;
 sudo apt-get install git&lt;br /&gt;
 git clone http://github.com/openstack-dev/devstack.git&lt;br /&gt;
 cd devstack&lt;br /&gt;
&lt;br /&gt;
=Setup localrc for DevStack=&lt;br /&gt;
create a file named “localrc” in your devstack directory with the content shown below (for each item with $variable_name, you will need to enter values specific to your environment, the rest you can just leave as is).  &lt;br /&gt;
&lt;br /&gt;
file ~/devstack/''localrc''&lt;br /&gt;
 ENABLED_SERVICES=g-api,g-reg,key,n-api,n-crt,n-cpu,n-net,n-cond,n-sch,n-novnc,n-cauth,rabbit,mysql,horizon&lt;br /&gt;
 VIRT_DRIVER=vsphere&lt;br /&gt;
 VMWAREAPI_IP='''$your_vCenter_ip_address'''&lt;br /&gt;
 VMWAREAPI_USER=root&lt;br /&gt;
 VMWAREAPI_PASSWORD='''$password_goes_here'''&lt;br /&gt;
 VMWAREAPI_CLUSTER='''$your_cluster_name'''&lt;br /&gt;
 DATABASE_PASSWORD=nova&lt;br /&gt;
 RABBIT_PASSWORD=nova&lt;br /&gt;
 SERVICE_TOKEN=nova&lt;br /&gt;
 SERVICE_PASSWORD=nova&lt;br /&gt;
 ADMIN_PASSWORD=nova&lt;br /&gt;
 HOST_IP='''$your_development_vm_ip'''&lt;br /&gt;
&lt;br /&gt;
Note: if you would like to use a specific datastore then configure ''VMWAREAPI_DATASTORE_REGEX''&lt;br /&gt;
&lt;br /&gt;
Note: omit the line ''VMWAREAPI_CLUSTER'' if you are using the ''trivial'' inventory example.&lt;br /&gt;
&lt;br /&gt;
Note: If you want the logs to be written to disk (not just accessible via screen), use the define SCREEN_LOGDIR to point to path &lt;br /&gt;
where you want to the logs to reside.  For example&lt;br /&gt;
&lt;br /&gt;
SCREEN_LOGDIR=/var/log&lt;br /&gt;
&lt;br /&gt;
=start stack (first time)=&lt;br /&gt;
 ./stack.sh&lt;br /&gt;
This will take a long time the first time, as it pulls down all code and dependencies.&lt;br /&gt;
Note: may fail on first start.&lt;br /&gt;
&lt;br /&gt;
=Credentials and Environment Variables=&lt;br /&gt;
get the OpenStack API credentials in your environment variables:&lt;br /&gt;
&lt;br /&gt;
 $ source openrc demo demo&lt;br /&gt;
&lt;br /&gt;
This is needed anytime you make a call using an openstack CLI client like ‘nova’, ‘glance’, or ‘quantum’.  You can rerun this at any time from the devstack directory if you need to re-login in at a later point.  If you want admin credentials then use admin ($ source openrc admin admin)&lt;br /&gt;
&lt;br /&gt;
=Glance Initial Setup=&lt;br /&gt;
Get a VMDK to use as a disk image and upload it to OpenStack using the Glance API.  The latest code (mid-Aug) has a change which uploads the image when you 1st run devstack.  After glance starts, run the following command to see if you have a pre-configured image in glance&lt;br /&gt;
&lt;br /&gt;
$ glance image-list&lt;br /&gt;
&lt;br /&gt;
==Get an initial VMDK to work with==&lt;br /&gt;
There are a lot of “gotchas” around what VMDK disks work with OpenStack + vSphere, so we strongly suggest using the provided image to start.  In the Appendix there is information about creating/converting your own images.  &lt;br /&gt;
&lt;br /&gt;
download the image 1 GB debian disk image (user/password to login this image after booting is nicira/nicira).  &lt;br /&gt;
 http://partnerweb.vmware.com/programs/vmdkimage/debian-2.6.32-i686.vmdk &lt;br /&gt;
Place the file under your home directory &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;~/&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: if you are using nested hyper-visors you will need to obtain a 32bit image to use or troubleshoot: how to enable nested ESXi &amp;amp; other Hypervisors in vSphere 5.1 - See more at: http://www.virtuallyghetto.com/2012/08/how-to-enable-nested-esxi-other.html#sthash.NJ2VNiwt.dpuf&lt;br /&gt;
&lt;br /&gt;
==Upload your VMDK to glance==&lt;br /&gt;
It is recommended to use the upload_images.sh script provided in the Devstack to upload images to Glance: &lt;br /&gt;
 https://github.com/openstack-dev/devstack/blob/master/tools/upload_image.sh&lt;br /&gt;
upload_image.sh has a dependency:&lt;br /&gt;
 https://github.com/openstack-dev/devstack/blob/master/functions&lt;br /&gt;
The script will introspect the image provided to extract the metadata.&lt;br /&gt;
It expects a URL as unique argument. The scheme of the URL can be http(s) or file. When a flat disk (*-flat.vmdk) is provided, the script will attempt to retrieve the descriptor (*.vmdk) associated to find the correct metadata. The same way, the user can specify a descriptor: in this case, the script will try to find the flat disk. &lt;br /&gt;
If a *-flat.vmdk disk is provided and the descriptor cannot be found, &amp;quot;ide&amp;quot; will be used as the default adapter_type and &amp;quot;preallocated&amp;quot; as the default disk_type.&lt;br /&gt;
&lt;br /&gt;
Example of execution:&lt;br /&gt;
 $ cd ~/devstack&lt;br /&gt;
 $ ./tools/upload_image.sh http://partnerweb.vmware.com/programs/vmdkimage/debian-2.6.32-i686.vmdk&lt;br /&gt;
 $ ./tools/upload_image.sh file:///home/user/images/debian-2.6.32-i686.vmdk&lt;br /&gt;
 $ ./tools/upload_image.sh &amp;quot;http://partnerweb.vmware.com/programs/vmdkimage/trend-tinyvm1-flat-;ide;.vmdk&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Specific metadata can be provided: the expected format of the image filename is &amp;lt;name&amp;gt;-&amp;lt;disk type&amp;gt;;&amp;lt;storage adapter&amp;gt;;&amp;lt;network adapter&amp;gt;.vmdk&lt;br /&gt;
By default, the Nova driver will be using adapter_type &amp;quot;lsilogic&amp;quot; and and disk_type &amp;quot;preallocated&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To avoid problems with the metadata, it is highly recommended to provide a monolithicSparse or monolithicFlat disk where the descriptor and flat disk are in the same directory.&lt;br /&gt;
For more information about disk types: http://sanbarrow.com/vmdk-basics.html&lt;br /&gt;
&lt;br /&gt;
Alternatively, it is possible to call directly the Glance client (the following commands are using the V1 of the Glance client):&lt;br /&gt;
&lt;br /&gt;
 $ glance image-create --name Debian --is-public=True --container-format=bare --disk-format=vmdk --property vmware-disktype=&amp;quot;preallocated&amp;quot; &amp;lt; debian-2.6.32-i686.vmdk &lt;br /&gt;
&lt;br /&gt;
This will print out an &amp;lt;image-id&amp;gt; for use below.  If you forget it, you can always run “glance image-list” to see all existing images.&lt;br /&gt;
&lt;br /&gt;
There is also an IDE based image that can be used. &lt;br /&gt;
&lt;br /&gt;
 wget &amp;quot;http://partnerweb.vmware.com/programs/vmdkimage/trend-tinyvm1-flat-;ide;.vmdk&amp;quot;&lt;br /&gt;
Note the vmware_adaptertype is set to &amp;quot;ide&amp;quot;&lt;br /&gt;
 $ glance image-create --name trend-thin --is-public=True --container-format=bare --disk-format=vmdk --property vmware_adaptertype=&amp;quot;ide&amp;quot; &amp;lt; &amp;quot;trend-tinyvm1-flat-;ide;.vmdk&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Nova Boot=&lt;br /&gt;
boot a VM using the “&amp;lt;image-id&amp;gt;” from above&lt;br /&gt;
&lt;br /&gt;
 $ nova boot --image &amp;lt;image-id&amp;gt; --flavor 1 test1&lt;br /&gt;
&lt;br /&gt;
Now you can interact with the image using other nova client commands.  &lt;br /&gt;
For example&lt;br /&gt;
 $ nova list&lt;br /&gt;
 +--------------------------------------+-------+--------+------------+-------------+------------------+&lt;br /&gt;
 | ID                                   | Name  | Status | Task State | Power State | Networks         |&lt;br /&gt;
 +--------------------------------------+-------+--------+------------+-------------+------------------+&lt;br /&gt;
 | 9bb724bf-298d-4a63-a653-dab7fcbd9ac7 | test1 | ACTIVE  | None       | NOSTATE     | private=10.0.0.2 |&lt;br /&gt;
 +--------------------------------------+-------+--------+------------+-------------+------------------+&lt;br /&gt;
&lt;br /&gt;
Note: if your disk is big, it can take a VERY long time to stream the image from glance to your datastore (e.g., ~7 minutes for a 1 GB thick image).   This will happen only the first time a new image UUID is used on a datastore. You can monitor progress by viewing the size of the file in the vmware_base directory of the filestore.  &lt;br /&gt;
&lt;br /&gt;
Once this is done, you can view the VM using vCenter. The username/password for the above Debian image is nicira/nicira .&lt;br /&gt;
&lt;br /&gt;
You can access the OpenStack Web GUI (called horizon) by accessing your Ubuntu host on port 80, though currently VNC access via Horizon is broken (see: https://review.openstack.org/#/c/30036/ for a patch to fix this).&lt;br /&gt;
&lt;br /&gt;
=Using Screen=&lt;br /&gt;
Use screen to interact with individual openstack services&lt;br /&gt;
&lt;br /&gt;
 $ screen -x stack&lt;br /&gt;
&lt;br /&gt;
See: http://www.gnu.org/software/screen/manual/screen.html &amp;lt;- for how to use&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Control + a&amp;quot; enters command mode... enter this for each new command character&lt;br /&gt;
characters 0 through 9 switch tabs&lt;br /&gt;
** the 'd' character detaches the session&lt;br /&gt;
** the '[' character enters &amp;quot;copy mode&amp;quot; which allows you to navigate the screen trace and 'escape' escapes the copy mode.&lt;br /&gt;
** the '&amp;quot;' character shows a list of screens which you can navigate with the up and down arrows&lt;br /&gt;
&lt;br /&gt;
For example the nova-compute service runs on the n-cpu tab which is usually number 6. So to navigate to it, hit Ctrl+a then press '6' and you'll tab to it. You can then interact with the terminal for n-cpu.&lt;br /&gt;
&lt;br /&gt;
=Working the Development Environment=&lt;br /&gt;
If you want to reset your environment, run: &lt;br /&gt;
 ./unstack.sh &lt;br /&gt;
 ./stack.sh &lt;br /&gt;
&lt;br /&gt;
* This run of stack.sh will be faster (~1 minute) as it resets all database and service state, but does not need to re-download packages or source code.  &lt;br /&gt;
* After running ./unstack be sure to clean out all your datastores and delete any files left behind on accident. This will prevent a great number of problems people won't see in production environments. (For example: partially uploaded VMDK.)&lt;br /&gt;
&lt;br /&gt;
Note: the source code is not automatically updated when you reset your environment.  This is valuable, as you can manage your source code manually via git, having many branches, etc.  &lt;br /&gt;
&lt;br /&gt;
= Remote Debugger =&lt;br /&gt;
&lt;br /&gt;
To use the pycharm remote debugger (any maybe [http://wiki.xbmc.org/index.php?title=How-to:Debug_Python_Scripts_with_Eclipse eclipse]), make the following changes in your nova code&lt;br /&gt;
&lt;br /&gt;
index 0e7ecdc,87edf9b..0000000&lt;br /&gt;
--- a/nova/cmd/__init__.py&lt;br /&gt;
+++ b/nova/cmd/__init__.py&lt;br /&gt;
@@@ -31,8 -31,4 +31,8 @@@ &lt;br /&gt;
  os.environ['EVENTLET_NO_GREENDNS'] = 'y&lt;br /&gt;
  &lt;br /&gt;
  import eventlet&lt;br /&gt;
  &lt;br /&gt;
 -eventlet.monkey_patch(os=False)&lt;br /&gt;
 +if '--debug-host' and '--debug-port' in sys.argv:&lt;br /&gt;
 +    eventlet.monkey_patch(all=False,socket=True,time=True,os=False,thread=False)&lt;br /&gt;
 +else:&lt;br /&gt;
 +    eventlet.monkey_patch(os=False)&lt;br /&gt;
 +&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
diff --combined nova/cmd/compute.py&lt;br /&gt;
index 61cf434,f03a9bd..0000000&lt;br /&gt;
--- a/nova/cmd/compute.py&lt;br /&gt;
+++ b/nova/cmd/compute.py&lt;br /&gt;
@@@ -33,19 -33,10 +33,19 @@@ &lt;br /&gt;
  from nova.openstack.common import log a&lt;br /&gt;
  from nova import service&lt;br /&gt;
  from nova import utils&lt;br /&gt;
  &lt;br /&gt;
 +cli_opts = [&lt;br /&gt;
 +        cfg.StrOpt('debug-host',&lt;br /&gt;
 +                    default=None,&lt;br /&gt;
 +                    help='Connect to debug host'),&lt;br /&gt;
 +        cfg.IntOpt('debug-port',&lt;br /&gt;
 +                    default=None,&lt;br /&gt;
 +                    help='Connect to debug host port'),&lt;br /&gt;
 +    ]&lt;br /&gt;
 +&lt;br /&gt;
  CONF = cfg.CONF&lt;br /&gt;
  CONF.import_opt('compute_topic', 'nova.compute.rpcapi')&lt;br /&gt;
  CONF.import_opt('use_local', 'nova.conductor.api', group='conductor')&lt;br /&gt;
 -&lt;br /&gt;
 +CONF.register_cli_opts(cli_opts)&lt;br /&gt;
  &lt;br /&gt;
  def block_db_access():&lt;br /&gt;
      class NoDB(object):&lt;br /&gt;
@@@ -72,16 -63,6 +72,16 @@@ def main()&lt;br /&gt;
          objects_base.NovaObject.indirection_api = \&lt;br /&gt;
              conductor_rpcapi.ConductorAPI()&lt;br /&gt;
  &lt;br /&gt;
 +    if CONF.debug_host:&lt;br /&gt;
 +        from pydev import pydevd&lt;br /&gt;
 +        print ('Listening on ' + str(CONF.debug_port) + ' for host ' +&lt;br /&gt;
 +                                    CONF.debug_host)&lt;br /&gt;
 +        pydevd.settrace(host=CONF.debug_host,&lt;br /&gt;
 +                        port=CONF.debug_port,&lt;br /&gt;
 +                        stdoutToServer=False,&lt;br /&gt;
 +                        stderrToServer=False)&lt;br /&gt;
 +&lt;br /&gt;
 +&lt;br /&gt;
      server = service.Service.create(binary='nova-compute',&lt;br /&gt;
                                      topic=CONF.compute_topic,&lt;br /&gt;
                                      db_allowed=False)&lt;br /&gt;
&lt;br /&gt;
Then in pycharm, create a remote debug session with host localhost and port whatever you want.  When you run it, use --debug_host &amp;lt;your IP&amp;gt; and --debug_port &amp;lt;your port&amp;gt;.  That's it!&lt;br /&gt;
&lt;br /&gt;
=Testing=&lt;br /&gt;
==Install python support libraries==&lt;br /&gt;
===apt-get libs===&lt;br /&gt;
 $ sudo apt-get install python-dev libmysqlclient-dev python-pip build-essential &lt;br /&gt;
 $ sudo apt-get install libxml2-dev libxslt1-dev libpq-dev&lt;br /&gt;
&lt;br /&gt;
===pip based tool installs===&lt;br /&gt;
 $ sudo pip install --upgrade pip &lt;br /&gt;
 $ sudo pip install --upgrade virtualenv&lt;br /&gt;
 $ sudo pip install MySQL-python&lt;br /&gt;
 $ sudo pip install tox&lt;br /&gt;
 $ sudo pip install python-subunit&lt;br /&gt;
&lt;br /&gt;
====pip proxy troubleshooting====&lt;br /&gt;
If you get connection refused here - try this&lt;br /&gt;
 export PIP_INDEX_URL=&amp;quot;http://pypi.openstack.org/openstack&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If you get the following error: &amp;quot;pip's wheel support requires setuptools &amp;gt;= 0.8 for dist-info support&amp;quot;, try this command&lt;br /&gt;
  sudo pip install setuptools --no-use-wheel --upgrade&lt;br /&gt;
&lt;br /&gt;
====Install OpenStack libs====&lt;br /&gt;
 $ cd /opt/stack/nova&lt;br /&gt;
 $ sudo pip install -i http://pypi.openstack.org/openstack  -r requirements.txt -r test-requirements.txt &lt;br /&gt;
&lt;br /&gt;
Note: make sure everything in the requires lists gets installed. Some installers have individual issues that you may have to clear one at a time. In particular lxslt has some issues that may require attention to properly clear.&lt;br /&gt;
&lt;br /&gt;
==Using TOX for testing==&lt;br /&gt;
See: https://wiki.openstack.org/wiki/ProjectTestingInterface&lt;br /&gt;
&lt;br /&gt;
Important tests to run before submitting for code review are&lt;br /&gt;
 tox -e py26,py27&lt;br /&gt;
 tox -e pep8&lt;br /&gt;
&lt;br /&gt;
As of this writing the run_tests.sh is the better way to run tests.&lt;br /&gt;
&lt;br /&gt;
== Using run_tests.sh for testing ==&lt;br /&gt;
 $ cd /opt/stack/nova&lt;br /&gt;
 $ ./run_tests.sh&lt;br /&gt;
... or ...&lt;br /&gt;
 $ ./run_tests.sh nova.tests.virt.vmwareapi&lt;br /&gt;
... to run only the vmware unit tests.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: If you want to use the python packages in your normal (non-virtual) environment then pass the -N flag&lt;br /&gt;
&lt;br /&gt;
==Code Coverage tests and information==&lt;br /&gt;
&lt;br /&gt;
=== with tox ===&lt;br /&gt;
 $ cd /opt/stack/nova&lt;br /&gt;
 $ tox -e cover  (code coverage)&lt;br /&gt;
&lt;br /&gt;
look under the cover directory for html reports on the code coverage for that module.  The file index.html contains the overall coverage report&lt;br /&gt;
&lt;br /&gt;
NOTE: tests may run 10, 20, or as long as 65 minutes (depending on your hardware, network, and system) and produce no output until they complete. This is normal. You system may become sluggish but should not lock up entirely, a system hang can be symptomatic of an improperly configured test environment. Tests will run on Mac OSX. 2 Cores with 2GB of RAM on an Ubuntu 12.04 machine that is properly configured should take between 10 and 20 minutes to complete.&lt;br /&gt;
&lt;br /&gt;
=== with run_tests.sh ===&lt;br /&gt;
  $ cd /opt/stack/nova&lt;br /&gt;
  $ ./run_tests.sh --coverage&lt;br /&gt;
&lt;br /&gt;
==Additional setup==&lt;br /&gt;
If you are on Ubuntu 12.04 and need to use Python 2.6 (which OpenStack needs for some test scripts) install the old version of python by doing the following:&lt;br /&gt;
&lt;br /&gt;
 $ sudo add-apt-repository ppa:fkrull/deadsnakes&lt;br /&gt;
 $ sudo apt-get update&lt;br /&gt;
 $ sudo apt-get install python2.6 python2.6-dev&lt;br /&gt;
&lt;br /&gt;
== Disabling verbose logging subsystems ==&lt;br /&gt;
&lt;br /&gt;
Add this line to nova.conf to disable the amqp logging (for example)&lt;br /&gt;
&lt;br /&gt;
default_log_levels=amqp=WARN,amqplib=WARN,sqlalchemy=WARN,boto=WARN,suds=INFO,keystone=INFO,eventlet.wsgi.server=WARN,nova.openstack.common.rpc.amqp=WARN&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
''Some workplaces may have to use special networking and/or proxy settings and that these may change when you are mobile. Those issues can cause problems with apt-get, git and other parts of OpenStack. If you are in a place that needs special proxy rules, [https://help.ubuntu.com/community/AptGet/Howto/#Setting_up_apt-get_to_use_a_http-proxy setup apt-get with a proxy]. You may also have to set [http://askubuntu.com/questions/158557/setting-proxy-from-terminal other proxy settings] depending on your company's particular firewall rules.''&lt;br /&gt;
&lt;br /&gt;
== Logging ==&lt;br /&gt;
You may have a situation where you need to monitor devstack's log files. Here's how you set up logging to file with the least amount of fuss.&lt;br /&gt;
&lt;br /&gt;
To set up logging of screen windows set the shell variable SCREEN_LOGDIR to the directory you want the log files to go. Log files will appear with names like ''screen-$SERVICE_NAME-$TIMESTAMP.log'' in that dir and symbolic link screen-$SERVICE_NAME.log will link to the latest log file. Logs are kept for as long specified in the LOGDAYS variable.&lt;br /&gt;
&lt;br /&gt;
Both SCREEN_LOGDIR and LOGDAYS are shell variables so you need to set them either in your shell or in localrc. Use shell commands if you only want the logs to work this one time. Use ''localrc'' if you always want to have log files appear.&lt;br /&gt;
&lt;br /&gt;
Assuming you have already made a directory...&lt;br /&gt;
&lt;br /&gt;
 $ mkdir ~/log&lt;br /&gt;
&lt;br /&gt;
Then, if you only want logs this one time, in your bash shell say...&lt;br /&gt;
&lt;br /&gt;
 $ export SCREEN_LOGDIR=~/log&lt;br /&gt;
 $ export LOGDAYS=2&lt;br /&gt;
&lt;br /&gt;
... or if you ''always'' want log files, in your localrc add the lines ...&lt;br /&gt;
&lt;br /&gt;
 SCREEN_LOGDIR=~/log&lt;br /&gt;
 LOGDAYS=2&lt;br /&gt;
&lt;br /&gt;
The stack.sh script will automatically rotate the log files for you.&lt;br /&gt;
&lt;br /&gt;
== MySQL issues ==&lt;br /&gt;
If you get stuck with Keystone try...&lt;br /&gt;
 $ mysql -u root -pnova&lt;br /&gt;
... if that doesn't work you probably have a broken mysql install. If you have problems getting mysql to behave, try purging the OpenStack version of the install and install the database manually. Here’s how to rip everything down and install mysql-server from scratch yourself.&lt;br /&gt;
&lt;br /&gt;
 $ ./unstack&lt;br /&gt;
 $ sudo apt-get purge mysql-server&lt;br /&gt;
... you may need to use the name mysql-server-5.5 instead ...&lt;br /&gt;
 $ sudo apt-get autoremove&lt;br /&gt;
 $ sudo apt-get install mysql-server-5.5&lt;br /&gt;
 $ sudo mysql_install_db&lt;br /&gt;
 $ sudo mysqladmin -u root password 'nova'&lt;br /&gt;
 $ sudo service mysql restart&lt;br /&gt;
 $ ./stack&lt;br /&gt;
&lt;br /&gt;
== Keystone Issues ==&lt;br /&gt;
If you get stuck when you are checking your keystone connection via curl then it’s your proxy settings.  Try setting the following in /etc/environment&lt;br /&gt;
 no_proxy=localhost,127.0.0.0/8,127.0.1.1,127.0.1.1*,local.home&lt;br /&gt;
&lt;br /&gt;
== General Database Issues ==&lt;br /&gt;
If you have trouble with testing or other database heavy activities you may need to follow:&lt;br /&gt;
 http://codeinthehole.com/writing/how-to-set-up-mysql-for-python-on-ubuntu/&lt;br /&gt;
&lt;br /&gt;
== rootwrap Issues ==&lt;br /&gt;
If networking suddenly stops working with an error like this&lt;br /&gt;
&lt;br /&gt;
 Traceback (most recent call last):&lt;br /&gt;
   File &amp;quot;/usr/bin/nova-rootwrap&amp;quot;, line 59, in &amp;lt;module&amp;gt;&lt;br /&gt;
     from nova.rootwrap import wrapper&lt;br /&gt;
 ImportError: No module named rootwrap&lt;br /&gt;
&lt;br /&gt;
Then something has added a broken rootwrap to /usr/bin.  Remove the /usr/bin/nova-rootwrap and it will use the correct one in /usr/local/bin&lt;br /&gt;
&lt;br /&gt;
=== Check if nova-compute is running ===&lt;br /&gt;
 $ screen -x&lt;br /&gt;
Note the tab n-cpu is running in. It is usually #6 but it could be a different tab on occasion. Tab to n-cpu's tab. '''ctl+a''' then '''6'''. If you see:&lt;br /&gt;
 $ cd /opt/stack/nova &amp;amp;&amp;amp; sg  '/usr/local/bin/nova-compute --config-file /etc/nova/nova.conf' || touch &amp;quot;/opt/stack/status/stack/n-cpu.failure&amp;quot;&lt;br /&gt;
 sg: group '/usr/local/bin/nova-compute --config-file /etc/nova/nova.conf' does not exist&lt;br /&gt;
 $&lt;br /&gt;
... then nova-compute did not start. You can manually start nova-compute by editing the command to read:&lt;br /&gt;
 $ cd /opt/stack/nova &amp;amp;&amp;amp; /usr/local/bin/nova-compute --config-file /etc/nova/nova.conf || touch &amp;quot;/opt/stack/status/stack/n-cpu.failure&amp;quot;&lt;br /&gt;
... which is permissible for development (but not for production).&lt;br /&gt;
&lt;br /&gt;
== Networking Troubleshooting ==&lt;br /&gt;
Remotely accessed workstations need to have an IP for you to SSH or VNC into in order to do work. These instructions mostly assume a ''locally accessible'' VM or physical machine. If you are working with a remotely hosted Ubuntu developer's workstation, you may have special networking concerns. If you find your use of nova-network is stealing your workstations IP in your environment (does not manifest in all environments so it's located here as a troubleshooting step) then set up a second interface for nova-network to use. &lt;br /&gt;
&lt;br /&gt;
=== Configure a fake networking interface ===&lt;br /&gt;
Configure a fake interface so that nova-network does not steal the real IP that you need to access the host remotely.  On Ubuntu: &lt;br /&gt;
&lt;br /&gt;
 $ sudo ip tuntap add dev tapfoo mode tap&lt;br /&gt;
 $ sudo ifconfig tapfoo $some_ip up &lt;br /&gt;
&lt;br /&gt;
NOTE: assign the interface an ip address that will be appropriate for your environment.&lt;br /&gt;
&lt;br /&gt;
Now that you have a fake ethernet interface, change your localrc and re-run ./stack.sh so that you can start nova-network on the new interface.&lt;br /&gt;
&lt;br /&gt;
add to your ''localrc'' file&lt;br /&gt;
 FLAT_INTERFACE=tapfoo&lt;br /&gt;
&lt;br /&gt;
=== Configure a Proxy ===&lt;br /&gt;
Some workplaces may have to use special networking and/or proxy settings and that these may change when you are mobile. Those issues can cause problems with apt-get, git and other parts of OpenStack. If you are in a place that needs special proxy rules, [https://help.ubuntu.com/community/AptGet/Howto/#Setting_up_apt-get_to_use_a_http-proxy setup apt-get with a proxy]. You may also have to set [http://askubuntu.com/questions/158557/setting-proxy-from-terminal other proxy settings] depending on your company's particular firewall rules.&lt;br /&gt;
&lt;br /&gt;
=Appendix=&lt;br /&gt;
&lt;br /&gt;
==Converting Images==&lt;br /&gt;
&lt;br /&gt;
===Converting other disk images to vmdk using qemu-img=== &lt;br /&gt;
Disk images in several formats (e.g. qcow2) can be converted to the VMDK format usable by the vmware nova driver using the qemu-img utility.&lt;br /&gt;
&lt;br /&gt;
For example the following command can be used to convert a qcow2 Ubuntu Precise cloud image (downloadable from http://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img):&lt;br /&gt;
 &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt; qemu-img convert -f raw ~/Downloads/precise-server-cloudimg-amd64-disk1.img -O vmdk precise-server-cloudimg-amd64-disk1.vmdk&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Converting a sparse vmdk to an ESX-compatible format=== &lt;br /&gt;
&lt;br /&gt;
Due to a bug (fixed with the following proposed [https://review.openstack.org/#/c/43994/ patch], currently under review) in how sparse vmdk disks are handled in the VC driver, &lt;br /&gt;
sparse disks have to be pre-converted to thin-provisioned or preallocated disks before they can be uploaded to glance to be used by the driver.&lt;br /&gt;
&lt;br /&gt;
There are several ways to perform such a conversion:&lt;br /&gt;
&lt;br /&gt;
====1. Using vSphere CLI (or sometimes called the remote CLI or rCLI) tools.====&lt;br /&gt;
&lt;br /&gt;
The latest version from the date this was written is 5.1 and the link is [https://my.vmware.com/web/vmware/details?downloadGroup=VSP510-VCLI-510&amp;amp;productId=285 here].&lt;br /&gt;
&lt;br /&gt;
Assuming that the sparse disk is made available on a datastore accessible by an ESX host, the following command converts it to preallocated format:&lt;br /&gt;
&lt;br /&gt;
 vmkfstools --server=ip_of_some_ESX_host -i /vmfs/volumes/datastore1/sparse.vmdk /vmfs/volumes/datastore1/converted.vmdk&lt;br /&gt;
&lt;br /&gt;
(note the vifs tool from the same CLI package can be used to upload the disk to be converted and downloaded the converted disk if necessary)&lt;br /&gt;
&lt;br /&gt;
====2. Using vmkfstools directly on the ESX host====&lt;br /&gt;
&lt;br /&gt;
If the SSH service is enabled on an ESX host, the sparse disk can be uploaded to the ESX datastore via scp, and the vmkfstools local to the ESX host can use used to perform the conversion: &lt;br /&gt;
&lt;br /&gt;
(After logging to the host via ssh)&lt;br /&gt;
 vmkfstools -i /vmfs/volumes/datastore1/sparse.vmdk /vmfs/volumes/datastore1/converted.vmdk&lt;br /&gt;
&lt;br /&gt;
====3. vmware-vdiskmanager====&lt;br /&gt;
&lt;br /&gt;
vmware-vdiskmanager is a utility that comes bundled with VMware Fusion and VMware Workstation. &lt;br /&gt;
Below is an example of converting a sparse disk to preallocated format:&lt;br /&gt;
&lt;br /&gt;
 '/Applications/VMware Fusion.app/Contents/Library/vmware-vdiskmanager' -r sparse.vmdk -t 4 converted.vmdk&lt;br /&gt;
&lt;br /&gt;
In all the above cases, the converted vmdk is actually a pair of files, the descriptor file &amp;lt;i&amp;gt;converted&amp;lt;/i&amp;gt;.vmdk and the actual virtual disk data file &amp;lt;i&amp;gt;converted&amp;lt;/i&amp;gt;-flat.vmdk. The file to be uploaded to glance is &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;converted&amp;lt;/i&amp;gt;-flat.vmdk&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
===Specifying correct adapter type when uploading and image to glance===&lt;br /&gt;
&lt;br /&gt;
Currently, there is a limitation that OS boot vmdk disks with an ide adapter type cannot be attached to a virtual SCSI controller, and likewise disks with one of the scsi adapter types (e.g. busLogic, lsiLogic) cannot be attached to the IDE controller. Therefore it is important when uploading an image to glance that the correct vmware_adaptertype property be set. In particular, vmdk disks converted from other formats via qemu-img will _always_ be a monolithic sparse vmdk with an IDE adapter type. So using the above example of the Precise Ubuntu image, after the qemu-img conversion and conversion to a preallocated disk, the command to upload the vmdk disk should be something like:&lt;br /&gt;
&lt;br /&gt;
   glance image-create --name precise-cloud --is-public=True --container-format=bare --disk-format=vmdk --property vmware_disktype=&amp;quot;preallocated&amp;quot; --property vmware_adaptertype=&amp;quot;ide&amp;quot; &amp;lt; converted-flat.vmdk&lt;br /&gt;
&lt;br /&gt;
====Obtaining the adapter type associated with a vmdk====&lt;br /&gt;
&lt;br /&gt;
If the vmdk is a monolithic file (such as one produced by the qemu-img conversion) the adapter type can be retrieved by &lt;br /&gt;
&lt;br /&gt;
   head -20 some_monolithic.vmdk&lt;br /&gt;
&lt;br /&gt;
and looking for the ddb.adapterType=XXX property&lt;br /&gt;
&lt;br /&gt;
If the vmdk has a descriptor/data file pair (foo.vmdk and foo-XXXX.vmdk). The descriptor file foo.vmdk can be examined for the same ddb.adapterType property)&lt;br /&gt;
&lt;br /&gt;
==List of Reviews in progress==&lt;br /&gt;
https://review.openstack.org/#/q/message:vmware+OR+message:vcenter+OR+message:vsphere+OR+message:esx+OR+message:vcdriver+OR+message:datastore,n,z&lt;/div&gt;</summary>
		<author><name>Arnaud Legendre</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=NovaVMware/DeveloperGuide&amp;diff=40493</id>
		<title>NovaVMware/DeveloperGuide</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=NovaVMware/DeveloperGuide&amp;diff=40493"/>
				<updated>2014-01-25T01:35:48Z</updated>
		
		<summary type="html">&lt;p&gt;Arnaud Legendre: /* Upload your VMDK to glance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Developer's DevStack + vSphere Guide=&lt;br /&gt;
&lt;br /&gt;
This is a short guide for developers interested in working on OpenStack and [[vSphere]] (ESX, [[ESXi]], and [[vCenter]]) drivers.&lt;br /&gt;
&lt;br /&gt;
==vSphere Environment and Inventory==&lt;br /&gt;
&lt;br /&gt;
Set up a vSphere 5.1 (or better) developer's environment. For development purposes, you'll need to have one of this inventory type:&lt;br /&gt;
&lt;br /&gt;
[[File:VCenter cluster inventory.png|framed|none|inventory with a DRS cluster]]&lt;br /&gt;
&lt;br /&gt;
Note: The cluster should be DRS enabled with &amp;quot;Fully automated&amp;quot; placement turned on. Also, if you can't get two or more ESX hosts to work with, you can still work with one host in the cluster, but you won't be able to observe VM placement behaviors since there won't be anywhere to place the VMs except for the solitary host.&lt;br /&gt;
&lt;br /&gt;
=Development Environment=&lt;br /&gt;
== Get an Ubuntu 12.04 (suggested) VM setup==&lt;br /&gt;
This Ubuntu workstation can run as a VM itself, but it should have public internet access (ideally direct, but http proxy is workable if you don’t need to commit code back to OpenStack if you do, see the troubleshooting page for steps that ''may'' help).  It should also have a reasonably high bandwidth link to the the vSphere hosts, as it will need to stream images from the Ubuntu workstation to the vSphere host. &lt;br /&gt;
&lt;br /&gt;
We suggest your Ubuntu workstation have&lt;br /&gt;
* at least 10 GB disk, with 20+ GB being ideal. &lt;br /&gt;
* at least one vCPU, with 2 being ideal.&lt;br /&gt;
* 4 GB of RAM.&lt;br /&gt;
&lt;br /&gt;
=== optional setup ===&lt;br /&gt;
If you are using a remote workstation (not running locally on your physical computer) you may have to follow some of the extra steps under [[NovaVMware/DeveloperGuide#Networking_Troubleshooting|Network Troubleshooting]]&lt;br /&gt;
&lt;br /&gt;
==install Devstack (http://devstack.org/) in your new VM==&lt;br /&gt;
Once booted, run: &lt;br /&gt;
 sudo apt-get install git&lt;br /&gt;
 git clone http://github.com/openstack-dev/devstack.git&lt;br /&gt;
 cd devstack&lt;br /&gt;
&lt;br /&gt;
=Setup localrc for DevStack=&lt;br /&gt;
create a file named “localrc” in your devstack directory with the content shown below (for each item with $variable_name, you will need to enter values specific to your environment, the rest you can just leave as is).  &lt;br /&gt;
&lt;br /&gt;
file ~/devstack/''localrc''&lt;br /&gt;
 ENABLED_SERVICES=g-api,g-reg,key,n-api,n-crt,n-cpu,n-net,n-cond,n-sch,n-novnc,n-cauth,rabbit,mysql,horizon&lt;br /&gt;
 VIRT_DRIVER=vsphere&lt;br /&gt;
 VMWAREAPI_IP='''$your_vCenter_ip_address'''&lt;br /&gt;
 VMWAREAPI_USER=root&lt;br /&gt;
 VMWAREAPI_PASSWORD='''$password_goes_here'''&lt;br /&gt;
 VMWAREAPI_CLUSTER='''$your_cluster_name'''&lt;br /&gt;
 DATABASE_PASSWORD=nova&lt;br /&gt;
 RABBIT_PASSWORD=nova&lt;br /&gt;
 SERVICE_TOKEN=nova&lt;br /&gt;
 SERVICE_PASSWORD=nova&lt;br /&gt;
 ADMIN_PASSWORD=nova&lt;br /&gt;
 HOST_IP='''$your_development_vm_ip'''&lt;br /&gt;
&lt;br /&gt;
Note: if you would like to use a specific datastore then configure ''VMWAREAPI_DATASTORE_REGEX''&lt;br /&gt;
&lt;br /&gt;
Note: omit the line ''VMWAREAPI_CLUSTER'' if you are using the ''trivial'' inventory example.&lt;br /&gt;
&lt;br /&gt;
Note: If you want the logs to be written to disk (not just accessible via screen), use the define SCREEN_LOGDIR to point to path &lt;br /&gt;
where you want to the logs to reside.  For example&lt;br /&gt;
&lt;br /&gt;
SCREEN_LOGDIR=/var/log&lt;br /&gt;
&lt;br /&gt;
=start stack (first time)=&lt;br /&gt;
 ./stack.sh&lt;br /&gt;
This will take a long time the first time, as it pulls down all code and dependencies.&lt;br /&gt;
Note: may fail on first start.&lt;br /&gt;
&lt;br /&gt;
=Credentials and Environment Variables=&lt;br /&gt;
get the OpenStack API credentials in your environment variables:&lt;br /&gt;
&lt;br /&gt;
 $ source openrc demo demo&lt;br /&gt;
&lt;br /&gt;
This is needed anytime you make a call using an openstack CLI client like ‘nova’, ‘glance’, or ‘quantum’.  You can rerun this at any time from the devstack directory if you need to re-login in at a later point.  If you want admin credentials then use admin ($ source openrc admin admin)&lt;br /&gt;
&lt;br /&gt;
=Glance Initial Setup=&lt;br /&gt;
Get a VMDK to use as a disk image and upload it to OpenStack using the Glance API.  The latest code (mid-Aug) has a change which uploads the image when you 1st run devstack.  After glance starts, run the following command to see if you have a pre-configured image in glance&lt;br /&gt;
&lt;br /&gt;
$ glance image-list&lt;br /&gt;
&lt;br /&gt;
==Get an initial VMDK to work with==&lt;br /&gt;
There are a lot of “gotchas” around what VMDK disks work with OpenStack + vSphere, so we strongly suggest using the provided image to start.  In the Appendix there is information about creating/converting your own images.  &lt;br /&gt;
&lt;br /&gt;
download the image 1 GB debian disk image (user/password to login this image after booting is nicira/nicira).  &lt;br /&gt;
 http://partnerweb.vmware.com/programs/vmdkimage/debian-2.6.32-i686.vmdk &lt;br /&gt;
Place the file under your home directory &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;~/&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: if you are using nested hyper-visors you will need to obtain a 32bit image to use or troubleshoot: how to enable nested ESXi &amp;amp; other Hypervisors in vSphere 5.1 - See more at: http://www.virtuallyghetto.com/2012/08/how-to-enable-nested-esxi-other.html#sthash.NJ2VNiwt.dpuf&lt;br /&gt;
&lt;br /&gt;
==Upload your VMDK to glance==&lt;br /&gt;
It is recommended to use the upload_images.sh script provided in the Devstack to upload images to Glance: &lt;br /&gt;
 https://github.com/openstack-dev/devstack/blob/master/tools/upload_image.sh&lt;br /&gt;
upload_image.sh has a dependency:&lt;br /&gt;
 https://github.com/openstack-dev/devstack/blob/master/functions&lt;br /&gt;
The script will introspect the image provided to extract the metadata.&lt;br /&gt;
It expects a URL as unique argument. The scheme of the URL can be http(s) or file. When a flat disk (*-flat.vmdk) is provided, the script will attempt to retrieve the descriptor (*.vmdk) associated to find the correct metadata. The same way, the user can specify a descriptor: in this case, the script will try to find the flat disk. &lt;br /&gt;
If a *-flat.vmdk disk is provided and the descriptor cannot be found, &amp;quot;ide&amp;quot; will be used as the default adapter_type and &amp;quot;preallocated&amp;quot; as the default disk_type.&lt;br /&gt;
&lt;br /&gt;
Example of execution:&lt;br /&gt;
 $ cd ~/devstack/tools&lt;br /&gt;
 $ ./upload_image.sh http://partnerweb.vmware.com/programs/vmdkimage/debian-2.6.32-i686.vmdk&lt;br /&gt;
 $ ./upload_image.sh file:///home/user/images/debian-2.6.32-i686.vmdk&lt;br /&gt;
 $ ./upload_image.sh &amp;quot;http://partnerweb.vmware.com/programs/vmdkimage/trend-tinyvm1-flat-;ide;.vmdk&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Specific metadata can be provided: the expected format of the image filename is &amp;lt;name&amp;gt;-&amp;lt;disk type&amp;gt;;&amp;lt;storage adapter&amp;gt;;&amp;lt;network adapter&amp;gt;.vmdk&lt;br /&gt;
&lt;br /&gt;
To avoid problems with the metadata, it is highly recommended to provide a monolithicSparse or monolithicFlat disk where the descriptor and flat disk are in the same directory.&lt;br /&gt;
For more information about disk types: http://sanbarrow.com/vmdk-basics.html&lt;br /&gt;
&lt;br /&gt;
Alternatively, it is possible to call directly the Glance client (the following commands are using the V1 of the Glance client):&lt;br /&gt;
&lt;br /&gt;
 $ glance image-create --name Debian --is-public=True --container-format=bare --disk-format=vmdk --property vmware-disktype=&amp;quot;preallocated&amp;quot; &amp;lt; debian-2.6.32-i686.vmdk &lt;br /&gt;
&lt;br /&gt;
This will print out an &amp;lt;image-id&amp;gt; for use below.  If you forget it, you can always run “glance image-list” to see all existing images.&lt;br /&gt;
&lt;br /&gt;
There is also an IDE based image that can be used. &lt;br /&gt;
&lt;br /&gt;
 wget &amp;quot;http://partnerweb.vmware.com/programs/vmdkimage/trend-tinyvm1-flat-;ide;.vmdk&amp;quot;&lt;br /&gt;
Note the vmware_adaptertype is set to &amp;quot;ide&amp;quot;&lt;br /&gt;
 $ glance image-create --name trend-thin --is-public=True --container-format=bare --disk-format=vmdk --property vmware_adaptertype=&amp;quot;ide&amp;quot; &amp;lt; &amp;quot;trend-tinyvm1-flat-;ide;.vmdk&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Nova Boot=&lt;br /&gt;
boot a VM using the “&amp;lt;image-id&amp;gt;” from above&lt;br /&gt;
&lt;br /&gt;
 $ nova boot --image &amp;lt;image-id&amp;gt; --flavor 1 test1&lt;br /&gt;
&lt;br /&gt;
Now you can interact with the image using other nova client commands.  &lt;br /&gt;
For example&lt;br /&gt;
 $ nova list&lt;br /&gt;
 +--------------------------------------+-------+--------+------------+-------------+------------------+&lt;br /&gt;
 | ID                                   | Name  | Status | Task State | Power State | Networks         |&lt;br /&gt;
 +--------------------------------------+-------+--------+------------+-------------+------------------+&lt;br /&gt;
 | 9bb724bf-298d-4a63-a653-dab7fcbd9ac7 | test1 | ACTIVE  | None       | NOSTATE     | private=10.0.0.2 |&lt;br /&gt;
 +--------------------------------------+-------+--------+------------+-------------+------------------+&lt;br /&gt;
&lt;br /&gt;
Note: if your disk is big, it can take a VERY long time to stream the image from glance to your datastore (e.g., ~7 minutes for a 1 GB thick image).   This will happen only the first time a new image UUID is used on a datastore. You can monitor progress by viewing the size of the file in the vmware_base directory of the filestore.  &lt;br /&gt;
&lt;br /&gt;
Once this is done, you can view the VM using vCenter. The username/password for the above Debian image is nicira/nicira .&lt;br /&gt;
&lt;br /&gt;
You can access the OpenStack Web GUI (called horizon) by accessing your Ubuntu host on port 80, though currently VNC access via Horizon is broken (see: https://review.openstack.org/#/c/30036/ for a patch to fix this).&lt;br /&gt;
&lt;br /&gt;
=Using Screen=&lt;br /&gt;
Use screen to interact with individual openstack services&lt;br /&gt;
&lt;br /&gt;
 $ screen -x stack&lt;br /&gt;
&lt;br /&gt;
See: http://www.gnu.org/software/screen/manual/screen.html &amp;lt;- for how to use&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Control + a&amp;quot; enters command mode... enter this for each new command character&lt;br /&gt;
characters 0 through 9 switch tabs&lt;br /&gt;
** the 'd' character detaches the session&lt;br /&gt;
** the '[' character enters &amp;quot;copy mode&amp;quot; which allows you to navigate the screen trace and 'escape' escapes the copy mode.&lt;br /&gt;
** the '&amp;quot;' character shows a list of screens which you can navigate with the up and down arrows&lt;br /&gt;
&lt;br /&gt;
For example the nova-compute service runs on the n-cpu tab which is usually number 6. So to navigate to it, hit Ctrl+a then press '6' and you'll tab to it. You can then interact with the terminal for n-cpu.&lt;br /&gt;
&lt;br /&gt;
=Working the Development Environment=&lt;br /&gt;
If you want to reset your environment, run: &lt;br /&gt;
 ./unstack.sh &lt;br /&gt;
 ./stack.sh &lt;br /&gt;
&lt;br /&gt;
* This run of stack.sh will be faster (~1 minute) as it resets all database and service state, but does not need to re-download packages or source code.  &lt;br /&gt;
* After running ./unstack be sure to clean out all your datastores and delete any files left behind on accident. This will prevent a great number of problems people won't see in production environments. (For example: partially uploaded VMDK.)&lt;br /&gt;
&lt;br /&gt;
Note: the source code is not automatically updated when you reset your environment.  This is valuable, as you can manage your source code manually via git, having many branches, etc.  &lt;br /&gt;
&lt;br /&gt;
= Remote Debugger =&lt;br /&gt;
&lt;br /&gt;
To use the pycharm remote debugger (any maybe [http://wiki.xbmc.org/index.php?title=How-to:Debug_Python_Scripts_with_Eclipse eclipse]), make the following changes in your nova code&lt;br /&gt;
&lt;br /&gt;
index 0e7ecdc,87edf9b..0000000&lt;br /&gt;
--- a/nova/cmd/__init__.py&lt;br /&gt;
+++ b/nova/cmd/__init__.py&lt;br /&gt;
@@@ -31,8 -31,4 +31,8 @@@ &lt;br /&gt;
  os.environ['EVENTLET_NO_GREENDNS'] = 'y&lt;br /&gt;
  &lt;br /&gt;
  import eventlet&lt;br /&gt;
  &lt;br /&gt;
 -eventlet.monkey_patch(os=False)&lt;br /&gt;
 +if '--debug-host' and '--debug-port' in sys.argv:&lt;br /&gt;
 +    eventlet.monkey_patch(all=False,socket=True,time=True,os=False,thread=False)&lt;br /&gt;
 +else:&lt;br /&gt;
 +    eventlet.monkey_patch(os=False)&lt;br /&gt;
 +&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
diff --combined nova/cmd/compute.py&lt;br /&gt;
index 61cf434,f03a9bd..0000000&lt;br /&gt;
--- a/nova/cmd/compute.py&lt;br /&gt;
+++ b/nova/cmd/compute.py&lt;br /&gt;
@@@ -33,19 -33,10 +33,19 @@@ &lt;br /&gt;
  from nova.openstack.common import log a&lt;br /&gt;
  from nova import service&lt;br /&gt;
  from nova import utils&lt;br /&gt;
  &lt;br /&gt;
 +cli_opts = [&lt;br /&gt;
 +        cfg.StrOpt('debug-host',&lt;br /&gt;
 +                    default=None,&lt;br /&gt;
 +                    help='Connect to debug host'),&lt;br /&gt;
 +        cfg.IntOpt('debug-port',&lt;br /&gt;
 +                    default=None,&lt;br /&gt;
 +                    help='Connect to debug host port'),&lt;br /&gt;
 +    ]&lt;br /&gt;
 +&lt;br /&gt;
  CONF = cfg.CONF&lt;br /&gt;
  CONF.import_opt('compute_topic', 'nova.compute.rpcapi')&lt;br /&gt;
  CONF.import_opt('use_local', 'nova.conductor.api', group='conductor')&lt;br /&gt;
 -&lt;br /&gt;
 +CONF.register_cli_opts(cli_opts)&lt;br /&gt;
  &lt;br /&gt;
  def block_db_access():&lt;br /&gt;
      class NoDB(object):&lt;br /&gt;
@@@ -72,16 -63,6 +72,16 @@@ def main()&lt;br /&gt;
          objects_base.NovaObject.indirection_api = \&lt;br /&gt;
              conductor_rpcapi.ConductorAPI()&lt;br /&gt;
  &lt;br /&gt;
 +    if CONF.debug_host:&lt;br /&gt;
 +        from pydev import pydevd&lt;br /&gt;
 +        print ('Listening on ' + str(CONF.debug_port) + ' for host ' +&lt;br /&gt;
 +                                    CONF.debug_host)&lt;br /&gt;
 +        pydevd.settrace(host=CONF.debug_host,&lt;br /&gt;
 +                        port=CONF.debug_port,&lt;br /&gt;
 +                        stdoutToServer=False,&lt;br /&gt;
 +                        stderrToServer=False)&lt;br /&gt;
 +&lt;br /&gt;
 +&lt;br /&gt;
      server = service.Service.create(binary='nova-compute',&lt;br /&gt;
                                      topic=CONF.compute_topic,&lt;br /&gt;
                                      db_allowed=False)&lt;br /&gt;
&lt;br /&gt;
Then in pycharm, create a remote debug session with host localhost and port whatever you want.  When you run it, use --debug_host &amp;lt;your IP&amp;gt; and --debug_port &amp;lt;your port&amp;gt;.  That's it!&lt;br /&gt;
&lt;br /&gt;
=Testing=&lt;br /&gt;
==Install python support libraries==&lt;br /&gt;
===apt-get libs===&lt;br /&gt;
 $ sudo apt-get install python-dev libmysqlclient-dev python-pip build-essential &lt;br /&gt;
 $ sudo apt-get install libxml2-dev libxslt1-dev libpq-dev&lt;br /&gt;
&lt;br /&gt;
===pip based tool installs===&lt;br /&gt;
 $ sudo pip install --upgrade pip &lt;br /&gt;
 $ sudo pip install --upgrade virtualenv&lt;br /&gt;
 $ sudo pip install MySQL-python&lt;br /&gt;
 $ sudo pip install tox&lt;br /&gt;
 $ sudo pip install python-subunit&lt;br /&gt;
&lt;br /&gt;
====pip proxy troubleshooting====&lt;br /&gt;
If you get connection refused here - try this&lt;br /&gt;
 export PIP_INDEX_URL=&amp;quot;http://pypi.openstack.org/openstack&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If you get the following error: &amp;quot;pip's wheel support requires setuptools &amp;gt;= 0.8 for dist-info support&amp;quot;, try this command&lt;br /&gt;
  sudo pip install setuptools --no-use-wheel --upgrade&lt;br /&gt;
&lt;br /&gt;
====Install OpenStack libs====&lt;br /&gt;
 $ cd /opt/stack/nova&lt;br /&gt;
 $ sudo pip install -i http://pypi.openstack.org/openstack  -r requirements.txt -r test-requirements.txt &lt;br /&gt;
&lt;br /&gt;
Note: make sure everything in the requires lists gets installed. Some installers have individual issues that you may have to clear one at a time. In particular lxslt has some issues that may require attention to properly clear.&lt;br /&gt;
&lt;br /&gt;
==Using TOX for testing==&lt;br /&gt;
See: https://wiki.openstack.org/wiki/ProjectTestingInterface&lt;br /&gt;
&lt;br /&gt;
Important tests to run before submitting for code review are&lt;br /&gt;
 tox -e py26,py27&lt;br /&gt;
 tox -e pep8&lt;br /&gt;
&lt;br /&gt;
As of this writing the run_tests.sh is the better way to run tests.&lt;br /&gt;
&lt;br /&gt;
== Using run_tests.sh for testing ==&lt;br /&gt;
 $ cd /opt/stack/nova&lt;br /&gt;
 $ ./run_tests.sh&lt;br /&gt;
... or ...&lt;br /&gt;
 $ ./run_tests.sh nova.tests.virt.vmwareapi&lt;br /&gt;
... to run only the vmware unit tests.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: If you want to use the python packages in your normal (non-virtual) environment then pass the -N flag&lt;br /&gt;
&lt;br /&gt;
==Code Coverage tests and information==&lt;br /&gt;
&lt;br /&gt;
=== with tox ===&lt;br /&gt;
 $ cd /opt/stack/nova&lt;br /&gt;
 $ tox -e cover  (code coverage)&lt;br /&gt;
&lt;br /&gt;
look under the cover directory for html reports on the code coverage for that module.  The file index.html contains the overall coverage report&lt;br /&gt;
&lt;br /&gt;
NOTE: tests may run 10, 20, or as long as 65 minutes (depending on your hardware, network, and system) and produce no output until they complete. This is normal. You system may become sluggish but should not lock up entirely, a system hang can be symptomatic of an improperly configured test environment. Tests will run on Mac OSX. 2 Cores with 2GB of RAM on an Ubuntu 12.04 machine that is properly configured should take between 10 and 20 minutes to complete.&lt;br /&gt;
&lt;br /&gt;
=== with run_tests.sh ===&lt;br /&gt;
  $ cd /opt/stack/nova&lt;br /&gt;
  $ ./run_tests.sh --coverage&lt;br /&gt;
&lt;br /&gt;
==Additional setup==&lt;br /&gt;
If you are on Ubuntu 12.04 and need to use Python 2.6 (which OpenStack needs for some test scripts) install the old version of python by doing the following:&lt;br /&gt;
&lt;br /&gt;
 $ sudo add-apt-repository ppa:fkrull/deadsnakes&lt;br /&gt;
 $ sudo apt-get update&lt;br /&gt;
 $ sudo apt-get install python2.6 python2.6-dev&lt;br /&gt;
&lt;br /&gt;
== Disabling verbose logging subsystems ==&lt;br /&gt;
&lt;br /&gt;
Add this line to nova.conf to disable the amqp logging (for example)&lt;br /&gt;
&lt;br /&gt;
default_log_levels=amqp=WARN,amqplib=WARN,sqlalchemy=WARN,boto=WARN,suds=INFO,keystone=INFO,eventlet.wsgi.server=WARN,nova.openstack.common.rpc.amqp=WARN&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
''Some workplaces may have to use special networking and/or proxy settings and that these may change when you are mobile. Those issues can cause problems with apt-get, git and other parts of OpenStack. If you are in a place that needs special proxy rules, [https://help.ubuntu.com/community/AptGet/Howto/#Setting_up_apt-get_to_use_a_http-proxy setup apt-get with a proxy]. You may also have to set [http://askubuntu.com/questions/158557/setting-proxy-from-terminal other proxy settings] depending on your company's particular firewall rules.''&lt;br /&gt;
&lt;br /&gt;
== Logging ==&lt;br /&gt;
You may have a situation where you need to monitor devstack's log files. Here's how you set up logging to file with the least amount of fuss.&lt;br /&gt;
&lt;br /&gt;
To set up logging of screen windows set the shell variable SCREEN_LOGDIR to the directory you want the log files to go. Log files will appear with names like ''screen-$SERVICE_NAME-$TIMESTAMP.log'' in that dir and symbolic link screen-$SERVICE_NAME.log will link to the latest log file. Logs are kept for as long specified in the LOGDAYS variable.&lt;br /&gt;
&lt;br /&gt;
Both SCREEN_LOGDIR and LOGDAYS are shell variables so you need to set them either in your shell or in localrc. Use shell commands if you only want the logs to work this one time. Use ''localrc'' if you always want to have log files appear.&lt;br /&gt;
&lt;br /&gt;
Assuming you have already made a directory...&lt;br /&gt;
&lt;br /&gt;
 $ mkdir ~/log&lt;br /&gt;
&lt;br /&gt;
Then, if you only want logs this one time, in your bash shell say...&lt;br /&gt;
&lt;br /&gt;
 $ export SCREEN_LOGDIR=~/log&lt;br /&gt;
 $ export LOGDAYS=2&lt;br /&gt;
&lt;br /&gt;
... or if you ''always'' want log files, in your localrc add the lines ...&lt;br /&gt;
&lt;br /&gt;
 SCREEN_LOGDIR=~/log&lt;br /&gt;
 LOGDAYS=2&lt;br /&gt;
&lt;br /&gt;
The stack.sh script will automatically rotate the log files for you.&lt;br /&gt;
&lt;br /&gt;
== MySQL issues ==&lt;br /&gt;
If you get stuck with Keystone try...&lt;br /&gt;
 $ mysql -u root -pnova&lt;br /&gt;
... if that doesn't work you probably have a broken mysql install. If you have problems getting mysql to behave, try purging the OpenStack version of the install and install the database manually. Here’s how to rip everything down and install mysql-server from scratch yourself.&lt;br /&gt;
&lt;br /&gt;
 $ ./unstack&lt;br /&gt;
 $ sudo apt-get purge mysql-server&lt;br /&gt;
... you may need to use the name mysql-server-5.5 instead ...&lt;br /&gt;
 $ sudo apt-get autoremove&lt;br /&gt;
 $ sudo apt-get install mysql-server-5.5&lt;br /&gt;
 $ sudo mysql_install_db&lt;br /&gt;
 $ sudo mysqladmin -u root password 'nova'&lt;br /&gt;
 $ sudo service mysql restart&lt;br /&gt;
 $ ./stack&lt;br /&gt;
&lt;br /&gt;
== Keystone Issues ==&lt;br /&gt;
If you get stuck when you are checking your keystone connection via curl then it’s your proxy settings.  Try setting the following in /etc/environment&lt;br /&gt;
 no_proxy=localhost,127.0.0.0/8,127.0.1.1,127.0.1.1*,local.home&lt;br /&gt;
&lt;br /&gt;
== General Database Issues ==&lt;br /&gt;
If you have trouble with testing or other database heavy activities you may need to follow:&lt;br /&gt;
 http://codeinthehole.com/writing/how-to-set-up-mysql-for-python-on-ubuntu/&lt;br /&gt;
&lt;br /&gt;
== rootwrap Issues ==&lt;br /&gt;
If networking suddenly stops working with an error like this&lt;br /&gt;
&lt;br /&gt;
 Traceback (most recent call last):&lt;br /&gt;
   File &amp;quot;/usr/bin/nova-rootwrap&amp;quot;, line 59, in &amp;lt;module&amp;gt;&lt;br /&gt;
     from nova.rootwrap import wrapper&lt;br /&gt;
 ImportError: No module named rootwrap&lt;br /&gt;
&lt;br /&gt;
Then something has added a broken rootwrap to /usr/bin.  Remove the /usr/bin/nova-rootwrap and it will use the correct one in /usr/local/bin&lt;br /&gt;
&lt;br /&gt;
=== Check if nova-compute is running ===&lt;br /&gt;
 $ screen -x&lt;br /&gt;
Note the tab n-cpu is running in. It is usually #6 but it could be a different tab on occasion. Tab to n-cpu's tab. '''ctl+a''' then '''6'''. If you see:&lt;br /&gt;
 $ cd /opt/stack/nova &amp;amp;&amp;amp; sg  '/usr/local/bin/nova-compute --config-file /etc/nova/nova.conf' || touch &amp;quot;/opt/stack/status/stack/n-cpu.failure&amp;quot;&lt;br /&gt;
 sg: group '/usr/local/bin/nova-compute --config-file /etc/nova/nova.conf' does not exist&lt;br /&gt;
 $&lt;br /&gt;
... then nova-compute did not start. You can manually start nova-compute by editing the command to read:&lt;br /&gt;
 $ cd /opt/stack/nova &amp;amp;&amp;amp; /usr/local/bin/nova-compute --config-file /etc/nova/nova.conf || touch &amp;quot;/opt/stack/status/stack/n-cpu.failure&amp;quot;&lt;br /&gt;
... which is permissible for development (but not for production).&lt;br /&gt;
&lt;br /&gt;
== Networking Troubleshooting ==&lt;br /&gt;
Remotely accessed workstations need to have an IP for you to SSH or VNC into in order to do work. These instructions mostly assume a ''locally accessible'' VM or physical machine. If you are working with a remotely hosted Ubuntu developer's workstation, you may have special networking concerns. If you find your use of nova-network is stealing your workstations IP in your environment (does not manifest in all environments so it's located here as a troubleshooting step) then set up a second interface for nova-network to use. &lt;br /&gt;
&lt;br /&gt;
=== Configure a fake networking interface ===&lt;br /&gt;
Configure a fake interface so that nova-network does not steal the real IP that you need to access the host remotely.  On Ubuntu: &lt;br /&gt;
&lt;br /&gt;
 $ sudo ip tuntap add dev tapfoo mode tap&lt;br /&gt;
 $ sudo ifconfig tapfoo $some_ip up &lt;br /&gt;
&lt;br /&gt;
NOTE: assign the interface an ip address that will be appropriate for your environment.&lt;br /&gt;
&lt;br /&gt;
Now that you have a fake ethernet interface, change your localrc and re-run ./stack.sh so that you can start nova-network on the new interface.&lt;br /&gt;
&lt;br /&gt;
add to your ''localrc'' file&lt;br /&gt;
 FLAT_INTERFACE=tapfoo&lt;br /&gt;
&lt;br /&gt;
=== Configure a Proxy ===&lt;br /&gt;
Some workplaces may have to use special networking and/or proxy settings and that these may change when you are mobile. Those issues can cause problems with apt-get, git and other parts of OpenStack. If you are in a place that needs special proxy rules, [https://help.ubuntu.com/community/AptGet/Howto/#Setting_up_apt-get_to_use_a_http-proxy setup apt-get with a proxy]. You may also have to set [http://askubuntu.com/questions/158557/setting-proxy-from-terminal other proxy settings] depending on your company's particular firewall rules.&lt;br /&gt;
&lt;br /&gt;
=Appendix=&lt;br /&gt;
&lt;br /&gt;
==Converting Images==&lt;br /&gt;
&lt;br /&gt;
===Converting other disk images to vmdk using qemu-img=== &lt;br /&gt;
Disk images in several formats (e.g. qcow2) can be converted to the VMDK format usable by the vmware nova driver using the qemu-img utility.&lt;br /&gt;
&lt;br /&gt;
For example the following command can be used to convert a qcow2 Ubuntu Precise cloud image (downloadable from http://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img):&lt;br /&gt;
 &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt; qemu-img convert -f raw ~/Downloads/precise-server-cloudimg-amd64-disk1.img -O vmdk precise-server-cloudimg-amd64-disk1.vmdk&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Converting a sparse vmdk to an ESX-compatible format=== &lt;br /&gt;
&lt;br /&gt;
Due to a bug (fixed with the following proposed [https://review.openstack.org/#/c/43994/ patch], currently under review) in how sparse vmdk disks are handled in the VC driver, &lt;br /&gt;
sparse disks have to be pre-converted to thin-provisioned or preallocated disks before they can be uploaded to glance to be used by the driver.&lt;br /&gt;
&lt;br /&gt;
There are several ways to perform such a conversion:&lt;br /&gt;
&lt;br /&gt;
====1. Using vSphere CLI (or sometimes called the remote CLI or rCLI) tools.====&lt;br /&gt;
&lt;br /&gt;
The latest version from the date this was written is 5.1 and the link is [https://my.vmware.com/web/vmware/details?downloadGroup=VSP510-VCLI-510&amp;amp;productId=285 here].&lt;br /&gt;
&lt;br /&gt;
Assuming that the sparse disk is made available on a datastore accessible by an ESX host, the following command converts it to preallocated format:&lt;br /&gt;
&lt;br /&gt;
 vmkfstools --server=ip_of_some_ESX_host -i /vmfs/volumes/datastore1/sparse.vmdk /vmfs/volumes/datastore1/converted.vmdk&lt;br /&gt;
&lt;br /&gt;
(note the vifs tool from the same CLI package can be used to upload the disk to be converted and downloaded the converted disk if necessary)&lt;br /&gt;
&lt;br /&gt;
====2. Using vmkfstools directly on the ESX host====&lt;br /&gt;
&lt;br /&gt;
If the SSH service is enabled on an ESX host, the sparse disk can be uploaded to the ESX datastore via scp, and the vmkfstools local to the ESX host can use used to perform the conversion: &lt;br /&gt;
&lt;br /&gt;
(After logging to the host via ssh)&lt;br /&gt;
 vmkfstools -i /vmfs/volumes/datastore1/sparse.vmdk /vmfs/volumes/datastore1/converted.vmdk&lt;br /&gt;
&lt;br /&gt;
====3. vmware-vdiskmanager====&lt;br /&gt;
&lt;br /&gt;
vmware-vdiskmanager is a utility that comes bundled with VMware Fusion and VMware Workstation. &lt;br /&gt;
Below is an example of converting a sparse disk to preallocated format:&lt;br /&gt;
&lt;br /&gt;
 '/Applications/VMware Fusion.app/Contents/Library/vmware-vdiskmanager' -r sparse.vmdk -t 4 converted.vmdk&lt;br /&gt;
&lt;br /&gt;
In all the above cases, the converted vmdk is actually a pair of files, the descriptor file &amp;lt;i&amp;gt;converted&amp;lt;/i&amp;gt;.vmdk and the actual virtual disk data file &amp;lt;i&amp;gt;converted&amp;lt;/i&amp;gt;-flat.vmdk. The file to be uploaded to glance is &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;converted&amp;lt;/i&amp;gt;-flat.vmdk&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
===Specifying correct adapter type when uploading and image to glance===&lt;br /&gt;
&lt;br /&gt;
Currently, there is a limitation that OS boot vmdk disks with an ide adapter type cannot be attached to a virtual SCSI controller, and likewise disks with one of the scsi adapter types (e.g. busLogic, lsiLogic) cannot be attached to the IDE controller. Therefore it is important when uploading an image to glance that the correct vmware_adaptertype property be set. In particular, vmdk disks converted from other formats via qemu-img will _always_ be a monolithic sparse vmdk with an IDE adapter type. So using the above example of the Precise Ubuntu image, after the qemu-img conversion and conversion to a preallocated disk, the command to upload the vmdk disk should be something like:&lt;br /&gt;
&lt;br /&gt;
   glance image-create --name precise-cloud --is-public=True --container-format=bare --disk-format=vmdk --property vmware_disktype=&amp;quot;preallocated&amp;quot; --property vmware_adaptertype=&amp;quot;ide&amp;quot; &amp;lt; converted-flat.vmdk&lt;br /&gt;
&lt;br /&gt;
====Obtaining the adapter type associated with a vmdk====&lt;br /&gt;
&lt;br /&gt;
If the vmdk is a monolithic file (such as one produced by the qemu-img conversion) the adapter type can be retrieved by &lt;br /&gt;
&lt;br /&gt;
   head -20 some_monolithic.vmdk&lt;br /&gt;
&lt;br /&gt;
and looking for the ddb.adapterType=XXX property&lt;br /&gt;
&lt;br /&gt;
If the vmdk has a descriptor/data file pair (foo.vmdk and foo-XXXX.vmdk). The descriptor file foo.vmdk can be examined for the same ddb.adapterType property)&lt;br /&gt;
&lt;br /&gt;
==List of Reviews in progress==&lt;br /&gt;
https://review.openstack.org/#/q/message:vmware+OR+message:vcenter+OR+message:vsphere+OR+message:esx+OR+message:vcdriver+OR+message:datastore,n,z&lt;/div&gt;</summary>
		<author><name>Arnaud Legendre</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=NovaVMware/DeveloperGuide&amp;diff=40492</id>
		<title>NovaVMware/DeveloperGuide</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=NovaVMware/DeveloperGuide&amp;diff=40492"/>
				<updated>2014-01-25T01:35:09Z</updated>
		
		<summary type="html">&lt;p&gt;Arnaud Legendre: /* Upload your VMDK to glance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Developer's DevStack + vSphere Guide=&lt;br /&gt;
&lt;br /&gt;
This is a short guide for developers interested in working on OpenStack and [[vSphere]] (ESX, [[ESXi]], and [[vCenter]]) drivers.&lt;br /&gt;
&lt;br /&gt;
==vSphere Environment and Inventory==&lt;br /&gt;
&lt;br /&gt;
Set up a vSphere 5.1 (or better) developer's environment. For development purposes, you'll need to have one of this inventory type:&lt;br /&gt;
&lt;br /&gt;
[[File:VCenter cluster inventory.png|framed|none|inventory with a DRS cluster]]&lt;br /&gt;
&lt;br /&gt;
Note: The cluster should be DRS enabled with &amp;quot;Fully automated&amp;quot; placement turned on. Also, if you can't get two or more ESX hosts to work with, you can still work with one host in the cluster, but you won't be able to observe VM placement behaviors since there won't be anywhere to place the VMs except for the solitary host.&lt;br /&gt;
&lt;br /&gt;
=Development Environment=&lt;br /&gt;
== Get an Ubuntu 12.04 (suggested) VM setup==&lt;br /&gt;
This Ubuntu workstation can run as a VM itself, but it should have public internet access (ideally direct, but http proxy is workable if you don’t need to commit code back to OpenStack if you do, see the troubleshooting page for steps that ''may'' help).  It should also have a reasonably high bandwidth link to the the vSphere hosts, as it will need to stream images from the Ubuntu workstation to the vSphere host. &lt;br /&gt;
&lt;br /&gt;
We suggest your Ubuntu workstation have&lt;br /&gt;
* at least 10 GB disk, with 20+ GB being ideal. &lt;br /&gt;
* at least one vCPU, with 2 being ideal.&lt;br /&gt;
* 4 GB of RAM.&lt;br /&gt;
&lt;br /&gt;
=== optional setup ===&lt;br /&gt;
If you are using a remote workstation (not running locally on your physical computer) you may have to follow some of the extra steps under [[NovaVMware/DeveloperGuide#Networking_Troubleshooting|Network Troubleshooting]]&lt;br /&gt;
&lt;br /&gt;
==install Devstack (http://devstack.org/) in your new VM==&lt;br /&gt;
Once booted, run: &lt;br /&gt;
 sudo apt-get install git&lt;br /&gt;
 git clone http://github.com/openstack-dev/devstack.git&lt;br /&gt;
 cd devstack&lt;br /&gt;
&lt;br /&gt;
=Setup localrc for DevStack=&lt;br /&gt;
create a file named “localrc” in your devstack directory with the content shown below (for each item with $variable_name, you will need to enter values specific to your environment, the rest you can just leave as is).  &lt;br /&gt;
&lt;br /&gt;
file ~/devstack/''localrc''&lt;br /&gt;
 ENABLED_SERVICES=g-api,g-reg,key,n-api,n-crt,n-cpu,n-net,n-cond,n-sch,n-novnc,n-cauth,rabbit,mysql,horizon&lt;br /&gt;
 VIRT_DRIVER=vsphere&lt;br /&gt;
 VMWAREAPI_IP='''$your_vCenter_ip_address'''&lt;br /&gt;
 VMWAREAPI_USER=root&lt;br /&gt;
 VMWAREAPI_PASSWORD='''$password_goes_here'''&lt;br /&gt;
 VMWAREAPI_CLUSTER='''$your_cluster_name'''&lt;br /&gt;
 DATABASE_PASSWORD=nova&lt;br /&gt;
 RABBIT_PASSWORD=nova&lt;br /&gt;
 SERVICE_TOKEN=nova&lt;br /&gt;
 SERVICE_PASSWORD=nova&lt;br /&gt;
 ADMIN_PASSWORD=nova&lt;br /&gt;
 HOST_IP='''$your_development_vm_ip'''&lt;br /&gt;
&lt;br /&gt;
Note: if you would like to use a specific datastore then configure ''VMWAREAPI_DATASTORE_REGEX''&lt;br /&gt;
&lt;br /&gt;
Note: omit the line ''VMWAREAPI_CLUSTER'' if you are using the ''trivial'' inventory example.&lt;br /&gt;
&lt;br /&gt;
Note: If you want the logs to be written to disk (not just accessible via screen), use the define SCREEN_LOGDIR to point to path &lt;br /&gt;
where you want to the logs to reside.  For example&lt;br /&gt;
&lt;br /&gt;
SCREEN_LOGDIR=/var/log&lt;br /&gt;
&lt;br /&gt;
=start stack (first time)=&lt;br /&gt;
 ./stack.sh&lt;br /&gt;
This will take a long time the first time, as it pulls down all code and dependencies.&lt;br /&gt;
Note: may fail on first start.&lt;br /&gt;
&lt;br /&gt;
=Credentials and Environment Variables=&lt;br /&gt;
get the OpenStack API credentials in your environment variables:&lt;br /&gt;
&lt;br /&gt;
 $ source openrc demo demo&lt;br /&gt;
&lt;br /&gt;
This is needed anytime you make a call using an openstack CLI client like ‘nova’, ‘glance’, or ‘quantum’.  You can rerun this at any time from the devstack directory if you need to re-login in at a later point.  If you want admin credentials then use admin ($ source openrc admin admin)&lt;br /&gt;
&lt;br /&gt;
=Glance Initial Setup=&lt;br /&gt;
Get a VMDK to use as a disk image and upload it to OpenStack using the Glance API.  The latest code (mid-Aug) has a change which uploads the image when you 1st run devstack.  After glance starts, run the following command to see if you have a pre-configured image in glance&lt;br /&gt;
&lt;br /&gt;
$ glance image-list&lt;br /&gt;
&lt;br /&gt;
==Get an initial VMDK to work with==&lt;br /&gt;
There are a lot of “gotchas” around what VMDK disks work with OpenStack + vSphere, so we strongly suggest using the provided image to start.  In the Appendix there is information about creating/converting your own images.  &lt;br /&gt;
&lt;br /&gt;
download the image 1 GB debian disk image (user/password to login this image after booting is nicira/nicira).  &lt;br /&gt;
 http://partnerweb.vmware.com/programs/vmdkimage/debian-2.6.32-i686.vmdk &lt;br /&gt;
Place the file under your home directory &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;~/&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: if you are using nested hyper-visors you will need to obtain a 32bit image to use or troubleshoot: how to enable nested ESXi &amp;amp; other Hypervisors in vSphere 5.1 - See more at: http://www.virtuallyghetto.com/2012/08/how-to-enable-nested-esxi-other.html#sthash.NJ2VNiwt.dpuf&lt;br /&gt;
&lt;br /&gt;
==Upload your VMDK to glance==&lt;br /&gt;
It is recommended to use the upload_images.sh script provided in the Devstack to upload images to Glance: &lt;br /&gt;
 https://github.com/openstack-dev/devstack/blob/master/tools/upload_image.sh&lt;br /&gt;
upload_image.sh has a dependency:&lt;br /&gt;
 https://github.com/openstack-dev/devstack/blob/master/functions&lt;br /&gt;
The script will introspect the image provided to extract the metadata.&lt;br /&gt;
It expects a URL as unique argument. The scheme of the URL can be http(s) or file. When a flat disk (*-flat.vmdk) is provided, the script will attempt to retrieve the descriptor (*.vmdk) associated to find the correct metadata. The same way, the user can specify a descriptor: in this case, the script will try to find the flat disk. &lt;br /&gt;
If a *-flat.vmdk disk is provided and the descriptor cannot be found, &amp;quot;ide&amp;quot; will be used as the default adapter_type and &amp;quot;preallocated&amp;quot; as the default disk_type.&lt;br /&gt;
&lt;br /&gt;
Example of execution:&lt;br /&gt;
 $ cd ~/devstack/tools&lt;br /&gt;
 $ ./upload_image.sh http://partnerweb.vmware.com/programs/vmdkimage/debian-2.6.32-i686.vmdk&lt;br /&gt;
 $ ./upload_image.sh file:///home/user/images/debian-2.6.32-i686.vmdk&lt;br /&gt;
 $ ./upload_image.sh &amp;quot;http://partnerweb.vmware.com/programs/vmdkimage/trend-tinyvm1-flat-;ide;.vmdk&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Specific metadata can be provided: the expected format of the image filename is &amp;lt;name&amp;gt;-&amp;lt;disk type&amp;gt;;&amp;lt;storage adapter&amp;gt;;&amp;lt;network adapter&amp;gt;.vmdk&lt;br /&gt;
&lt;br /&gt;
To avoid problems with the metadata, it is highly recommended to provide a monolithicSparse or monolithicFlat disk where the descriptor and flat disk are in the same directory.&lt;br /&gt;
For more information about disk types: http://sanbarrow.com/vmdk-basics.html&lt;br /&gt;
&lt;br /&gt;
Alternatively, it is possible to call directly the Glance client (the following commands are using the V1 of the Glance client):&lt;br /&gt;
&lt;br /&gt;
 $ glance image-create --name Debian --is-public=True --container-format=bare --disk-format=vmdk --property vmware-disktype=&amp;quot;preallocated&amp;quot; &amp;lt; debian-2.6.32-i686.vmdk &lt;br /&gt;
&lt;br /&gt;
This will print out an &amp;lt;image-id&amp;gt; for use below.  If you forget it, you can always run “glance image-list” to see all existing images.&lt;br /&gt;
&lt;br /&gt;
There is also an IDE based image that can be used. &lt;br /&gt;
&lt;br /&gt;
 wget http://partnerweb.vmware.com/programs/vmdkimage/trend-tinyvm1-flat-;ide;.vmdk &lt;br /&gt;
Note the vmware_adaptertype is set to &amp;quot;ide&amp;quot;&lt;br /&gt;
 $ glance image-create --name trend-thin --is-public=True --container-format=bare --disk-format=vmdk --property vmware_adaptertype=&amp;quot;ide&amp;quot; &amp;lt; trend-tinyvm1-flat.vmdk&lt;br /&gt;
&lt;br /&gt;
=Nova Boot=&lt;br /&gt;
boot a VM using the “&amp;lt;image-id&amp;gt;” from above&lt;br /&gt;
&lt;br /&gt;
 $ nova boot --image &amp;lt;image-id&amp;gt; --flavor 1 test1&lt;br /&gt;
&lt;br /&gt;
Now you can interact with the image using other nova client commands.  &lt;br /&gt;
For example&lt;br /&gt;
 $ nova list&lt;br /&gt;
 +--------------------------------------+-------+--------+------------+-------------+------------------+&lt;br /&gt;
 | ID                                   | Name  | Status | Task State | Power State | Networks         |&lt;br /&gt;
 +--------------------------------------+-------+--------+------------+-------------+------------------+&lt;br /&gt;
 | 9bb724bf-298d-4a63-a653-dab7fcbd9ac7 | test1 | ACTIVE  | None       | NOSTATE     | private=10.0.0.2 |&lt;br /&gt;
 +--------------------------------------+-------+--------+------------+-------------+------------------+&lt;br /&gt;
&lt;br /&gt;
Note: if your disk is big, it can take a VERY long time to stream the image from glance to your datastore (e.g., ~7 minutes for a 1 GB thick image).   This will happen only the first time a new image UUID is used on a datastore. You can monitor progress by viewing the size of the file in the vmware_base directory of the filestore.  &lt;br /&gt;
&lt;br /&gt;
Once this is done, you can view the VM using vCenter. The username/password for the above Debian image is nicira/nicira .&lt;br /&gt;
&lt;br /&gt;
You can access the OpenStack Web GUI (called horizon) by accessing your Ubuntu host on port 80, though currently VNC access via Horizon is broken (see: https://review.openstack.org/#/c/30036/ for a patch to fix this).&lt;br /&gt;
&lt;br /&gt;
=Using Screen=&lt;br /&gt;
Use screen to interact with individual openstack services&lt;br /&gt;
&lt;br /&gt;
 $ screen -x stack&lt;br /&gt;
&lt;br /&gt;
See: http://www.gnu.org/software/screen/manual/screen.html &amp;lt;- for how to use&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Control + a&amp;quot; enters command mode... enter this for each new command character&lt;br /&gt;
characters 0 through 9 switch tabs&lt;br /&gt;
** the 'd' character detaches the session&lt;br /&gt;
** the '[' character enters &amp;quot;copy mode&amp;quot; which allows you to navigate the screen trace and 'escape' escapes the copy mode.&lt;br /&gt;
** the '&amp;quot;' character shows a list of screens which you can navigate with the up and down arrows&lt;br /&gt;
&lt;br /&gt;
For example the nova-compute service runs on the n-cpu tab which is usually number 6. So to navigate to it, hit Ctrl+a then press '6' and you'll tab to it. You can then interact with the terminal for n-cpu.&lt;br /&gt;
&lt;br /&gt;
=Working the Development Environment=&lt;br /&gt;
If you want to reset your environment, run: &lt;br /&gt;
 ./unstack.sh &lt;br /&gt;
 ./stack.sh &lt;br /&gt;
&lt;br /&gt;
* This run of stack.sh will be faster (~1 minute) as it resets all database and service state, but does not need to re-download packages or source code.  &lt;br /&gt;
* After running ./unstack be sure to clean out all your datastores and delete any files left behind on accident. This will prevent a great number of problems people won't see in production environments. (For example: partially uploaded VMDK.)&lt;br /&gt;
&lt;br /&gt;
Note: the source code is not automatically updated when you reset your environment.  This is valuable, as you can manage your source code manually via git, having many branches, etc.  &lt;br /&gt;
&lt;br /&gt;
= Remote Debugger =&lt;br /&gt;
&lt;br /&gt;
To use the pycharm remote debugger (any maybe [http://wiki.xbmc.org/index.php?title=How-to:Debug_Python_Scripts_with_Eclipse eclipse]), make the following changes in your nova code&lt;br /&gt;
&lt;br /&gt;
index 0e7ecdc,87edf9b..0000000&lt;br /&gt;
--- a/nova/cmd/__init__.py&lt;br /&gt;
+++ b/nova/cmd/__init__.py&lt;br /&gt;
@@@ -31,8 -31,4 +31,8 @@@ &lt;br /&gt;
  os.environ['EVENTLET_NO_GREENDNS'] = 'y&lt;br /&gt;
  &lt;br /&gt;
  import eventlet&lt;br /&gt;
  &lt;br /&gt;
 -eventlet.monkey_patch(os=False)&lt;br /&gt;
 +if '--debug-host' and '--debug-port' in sys.argv:&lt;br /&gt;
 +    eventlet.monkey_patch(all=False,socket=True,time=True,os=False,thread=False)&lt;br /&gt;
 +else:&lt;br /&gt;
 +    eventlet.monkey_patch(os=False)&lt;br /&gt;
 +&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
diff --combined nova/cmd/compute.py&lt;br /&gt;
index 61cf434,f03a9bd..0000000&lt;br /&gt;
--- a/nova/cmd/compute.py&lt;br /&gt;
+++ b/nova/cmd/compute.py&lt;br /&gt;
@@@ -33,19 -33,10 +33,19 @@@ &lt;br /&gt;
  from nova.openstack.common import log a&lt;br /&gt;
  from nova import service&lt;br /&gt;
  from nova import utils&lt;br /&gt;
  &lt;br /&gt;
 +cli_opts = [&lt;br /&gt;
 +        cfg.StrOpt('debug-host',&lt;br /&gt;
 +                    default=None,&lt;br /&gt;
 +                    help='Connect to debug host'),&lt;br /&gt;
 +        cfg.IntOpt('debug-port',&lt;br /&gt;
 +                    default=None,&lt;br /&gt;
 +                    help='Connect to debug host port'),&lt;br /&gt;
 +    ]&lt;br /&gt;
 +&lt;br /&gt;
  CONF = cfg.CONF&lt;br /&gt;
  CONF.import_opt('compute_topic', 'nova.compute.rpcapi')&lt;br /&gt;
  CONF.import_opt('use_local', 'nova.conductor.api', group='conductor')&lt;br /&gt;
 -&lt;br /&gt;
 +CONF.register_cli_opts(cli_opts)&lt;br /&gt;
  &lt;br /&gt;
  def block_db_access():&lt;br /&gt;
      class NoDB(object):&lt;br /&gt;
@@@ -72,16 -63,6 +72,16 @@@ def main()&lt;br /&gt;
          objects_base.NovaObject.indirection_api = \&lt;br /&gt;
              conductor_rpcapi.ConductorAPI()&lt;br /&gt;
  &lt;br /&gt;
 +    if CONF.debug_host:&lt;br /&gt;
 +        from pydev import pydevd&lt;br /&gt;
 +        print ('Listening on ' + str(CONF.debug_port) + ' for host ' +&lt;br /&gt;
 +                                    CONF.debug_host)&lt;br /&gt;
 +        pydevd.settrace(host=CONF.debug_host,&lt;br /&gt;
 +                        port=CONF.debug_port,&lt;br /&gt;
 +                        stdoutToServer=False,&lt;br /&gt;
 +                        stderrToServer=False)&lt;br /&gt;
 +&lt;br /&gt;
 +&lt;br /&gt;
      server = service.Service.create(binary='nova-compute',&lt;br /&gt;
                                      topic=CONF.compute_topic,&lt;br /&gt;
                                      db_allowed=False)&lt;br /&gt;
&lt;br /&gt;
Then in pycharm, create a remote debug session with host localhost and port whatever you want.  When you run it, use --debug_host &amp;lt;your IP&amp;gt; and --debug_port &amp;lt;your port&amp;gt;.  That's it!&lt;br /&gt;
&lt;br /&gt;
=Testing=&lt;br /&gt;
==Install python support libraries==&lt;br /&gt;
===apt-get libs===&lt;br /&gt;
 $ sudo apt-get install python-dev libmysqlclient-dev python-pip build-essential &lt;br /&gt;
 $ sudo apt-get install libxml2-dev libxslt1-dev libpq-dev&lt;br /&gt;
&lt;br /&gt;
===pip based tool installs===&lt;br /&gt;
 $ sudo pip install --upgrade pip &lt;br /&gt;
 $ sudo pip install --upgrade virtualenv&lt;br /&gt;
 $ sudo pip install MySQL-python&lt;br /&gt;
 $ sudo pip install tox&lt;br /&gt;
 $ sudo pip install python-subunit&lt;br /&gt;
&lt;br /&gt;
====pip proxy troubleshooting====&lt;br /&gt;
If you get connection refused here - try this&lt;br /&gt;
 export PIP_INDEX_URL=&amp;quot;http://pypi.openstack.org/openstack&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If you get the following error: &amp;quot;pip's wheel support requires setuptools &amp;gt;= 0.8 for dist-info support&amp;quot;, try this command&lt;br /&gt;
  sudo pip install setuptools --no-use-wheel --upgrade&lt;br /&gt;
&lt;br /&gt;
====Install OpenStack libs====&lt;br /&gt;
 $ cd /opt/stack/nova&lt;br /&gt;
 $ sudo pip install -i http://pypi.openstack.org/openstack  -r requirements.txt -r test-requirements.txt &lt;br /&gt;
&lt;br /&gt;
Note: make sure everything in the requires lists gets installed. Some installers have individual issues that you may have to clear one at a time. In particular lxslt has some issues that may require attention to properly clear.&lt;br /&gt;
&lt;br /&gt;
==Using TOX for testing==&lt;br /&gt;
See: https://wiki.openstack.org/wiki/ProjectTestingInterface&lt;br /&gt;
&lt;br /&gt;
Important tests to run before submitting for code review are&lt;br /&gt;
 tox -e py26,py27&lt;br /&gt;
 tox -e pep8&lt;br /&gt;
&lt;br /&gt;
As of this writing the run_tests.sh is the better way to run tests.&lt;br /&gt;
&lt;br /&gt;
== Using run_tests.sh for testing ==&lt;br /&gt;
 $ cd /opt/stack/nova&lt;br /&gt;
 $ ./run_tests.sh&lt;br /&gt;
... or ...&lt;br /&gt;
 $ ./run_tests.sh nova.tests.virt.vmwareapi&lt;br /&gt;
... to run only the vmware unit tests.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: If you want to use the python packages in your normal (non-virtual) environment then pass the -N flag&lt;br /&gt;
&lt;br /&gt;
==Code Coverage tests and information==&lt;br /&gt;
&lt;br /&gt;
=== with tox ===&lt;br /&gt;
 $ cd /opt/stack/nova&lt;br /&gt;
 $ tox -e cover  (code coverage)&lt;br /&gt;
&lt;br /&gt;
look under the cover directory for html reports on the code coverage for that module.  The file index.html contains the overall coverage report&lt;br /&gt;
&lt;br /&gt;
NOTE: tests may run 10, 20, or as long as 65 minutes (depending on your hardware, network, and system) and produce no output until they complete. This is normal. You system may become sluggish but should not lock up entirely, a system hang can be symptomatic of an improperly configured test environment. Tests will run on Mac OSX. 2 Cores with 2GB of RAM on an Ubuntu 12.04 machine that is properly configured should take between 10 and 20 minutes to complete.&lt;br /&gt;
&lt;br /&gt;
=== with run_tests.sh ===&lt;br /&gt;
  $ cd /opt/stack/nova&lt;br /&gt;
  $ ./run_tests.sh --coverage&lt;br /&gt;
&lt;br /&gt;
==Additional setup==&lt;br /&gt;
If you are on Ubuntu 12.04 and need to use Python 2.6 (which OpenStack needs for some test scripts) install the old version of python by doing the following:&lt;br /&gt;
&lt;br /&gt;
 $ sudo add-apt-repository ppa:fkrull/deadsnakes&lt;br /&gt;
 $ sudo apt-get update&lt;br /&gt;
 $ sudo apt-get install python2.6 python2.6-dev&lt;br /&gt;
&lt;br /&gt;
== Disabling verbose logging subsystems ==&lt;br /&gt;
&lt;br /&gt;
Add this line to nova.conf to disable the amqp logging (for example)&lt;br /&gt;
&lt;br /&gt;
default_log_levels=amqp=WARN,amqplib=WARN,sqlalchemy=WARN,boto=WARN,suds=INFO,keystone=INFO,eventlet.wsgi.server=WARN,nova.openstack.common.rpc.amqp=WARN&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
''Some workplaces may have to use special networking and/or proxy settings and that these may change when you are mobile. Those issues can cause problems with apt-get, git and other parts of OpenStack. If you are in a place that needs special proxy rules, [https://help.ubuntu.com/community/AptGet/Howto/#Setting_up_apt-get_to_use_a_http-proxy setup apt-get with a proxy]. You may also have to set [http://askubuntu.com/questions/158557/setting-proxy-from-terminal other proxy settings] depending on your company's particular firewall rules.''&lt;br /&gt;
&lt;br /&gt;
== Logging ==&lt;br /&gt;
You may have a situation where you need to monitor devstack's log files. Here's how you set up logging to file with the least amount of fuss.&lt;br /&gt;
&lt;br /&gt;
To set up logging of screen windows set the shell variable SCREEN_LOGDIR to the directory you want the log files to go. Log files will appear with names like ''screen-$SERVICE_NAME-$TIMESTAMP.log'' in that dir and symbolic link screen-$SERVICE_NAME.log will link to the latest log file. Logs are kept for as long specified in the LOGDAYS variable.&lt;br /&gt;
&lt;br /&gt;
Both SCREEN_LOGDIR and LOGDAYS are shell variables so you need to set them either in your shell or in localrc. Use shell commands if you only want the logs to work this one time. Use ''localrc'' if you always want to have log files appear.&lt;br /&gt;
&lt;br /&gt;
Assuming you have already made a directory...&lt;br /&gt;
&lt;br /&gt;
 $ mkdir ~/log&lt;br /&gt;
&lt;br /&gt;
Then, if you only want logs this one time, in your bash shell say...&lt;br /&gt;
&lt;br /&gt;
 $ export SCREEN_LOGDIR=~/log&lt;br /&gt;
 $ export LOGDAYS=2&lt;br /&gt;
&lt;br /&gt;
... or if you ''always'' want log files, in your localrc add the lines ...&lt;br /&gt;
&lt;br /&gt;
 SCREEN_LOGDIR=~/log&lt;br /&gt;
 LOGDAYS=2&lt;br /&gt;
&lt;br /&gt;
The stack.sh script will automatically rotate the log files for you.&lt;br /&gt;
&lt;br /&gt;
== MySQL issues ==&lt;br /&gt;
If you get stuck with Keystone try...&lt;br /&gt;
 $ mysql -u root -pnova&lt;br /&gt;
... if that doesn't work you probably have a broken mysql install. If you have problems getting mysql to behave, try purging the OpenStack version of the install and install the database manually. Here’s how to rip everything down and install mysql-server from scratch yourself.&lt;br /&gt;
&lt;br /&gt;
 $ ./unstack&lt;br /&gt;
 $ sudo apt-get purge mysql-server&lt;br /&gt;
... you may need to use the name mysql-server-5.5 instead ...&lt;br /&gt;
 $ sudo apt-get autoremove&lt;br /&gt;
 $ sudo apt-get install mysql-server-5.5&lt;br /&gt;
 $ sudo mysql_install_db&lt;br /&gt;
 $ sudo mysqladmin -u root password 'nova'&lt;br /&gt;
 $ sudo service mysql restart&lt;br /&gt;
 $ ./stack&lt;br /&gt;
&lt;br /&gt;
== Keystone Issues ==&lt;br /&gt;
If you get stuck when you are checking your keystone connection via curl then it’s your proxy settings.  Try setting the following in /etc/environment&lt;br /&gt;
 no_proxy=localhost,127.0.0.0/8,127.0.1.1,127.0.1.1*,local.home&lt;br /&gt;
&lt;br /&gt;
== General Database Issues ==&lt;br /&gt;
If you have trouble with testing or other database heavy activities you may need to follow:&lt;br /&gt;
 http://codeinthehole.com/writing/how-to-set-up-mysql-for-python-on-ubuntu/&lt;br /&gt;
&lt;br /&gt;
== rootwrap Issues ==&lt;br /&gt;
If networking suddenly stops working with an error like this&lt;br /&gt;
&lt;br /&gt;
 Traceback (most recent call last):&lt;br /&gt;
   File &amp;quot;/usr/bin/nova-rootwrap&amp;quot;, line 59, in &amp;lt;module&amp;gt;&lt;br /&gt;
     from nova.rootwrap import wrapper&lt;br /&gt;
 ImportError: No module named rootwrap&lt;br /&gt;
&lt;br /&gt;
Then something has added a broken rootwrap to /usr/bin.  Remove the /usr/bin/nova-rootwrap and it will use the correct one in /usr/local/bin&lt;br /&gt;
&lt;br /&gt;
=== Check if nova-compute is running ===&lt;br /&gt;
 $ screen -x&lt;br /&gt;
Note the tab n-cpu is running in. It is usually #6 but it could be a different tab on occasion. Tab to n-cpu's tab. '''ctl+a''' then '''6'''. If you see:&lt;br /&gt;
 $ cd /opt/stack/nova &amp;amp;&amp;amp; sg  '/usr/local/bin/nova-compute --config-file /etc/nova/nova.conf' || touch &amp;quot;/opt/stack/status/stack/n-cpu.failure&amp;quot;&lt;br /&gt;
 sg: group '/usr/local/bin/nova-compute --config-file /etc/nova/nova.conf' does not exist&lt;br /&gt;
 $&lt;br /&gt;
... then nova-compute did not start. You can manually start nova-compute by editing the command to read:&lt;br /&gt;
 $ cd /opt/stack/nova &amp;amp;&amp;amp; /usr/local/bin/nova-compute --config-file /etc/nova/nova.conf || touch &amp;quot;/opt/stack/status/stack/n-cpu.failure&amp;quot;&lt;br /&gt;
... which is permissible for development (but not for production).&lt;br /&gt;
&lt;br /&gt;
== Networking Troubleshooting ==&lt;br /&gt;
Remotely accessed workstations need to have an IP for you to SSH or VNC into in order to do work. These instructions mostly assume a ''locally accessible'' VM or physical machine. If you are working with a remotely hosted Ubuntu developer's workstation, you may have special networking concerns. If you find your use of nova-network is stealing your workstations IP in your environment (does not manifest in all environments so it's located here as a troubleshooting step) then set up a second interface for nova-network to use. &lt;br /&gt;
&lt;br /&gt;
=== Configure a fake networking interface ===&lt;br /&gt;
Configure a fake interface so that nova-network does not steal the real IP that you need to access the host remotely.  On Ubuntu: &lt;br /&gt;
&lt;br /&gt;
 $ sudo ip tuntap add dev tapfoo mode tap&lt;br /&gt;
 $ sudo ifconfig tapfoo $some_ip up &lt;br /&gt;
&lt;br /&gt;
NOTE: assign the interface an ip address that will be appropriate for your environment.&lt;br /&gt;
&lt;br /&gt;
Now that you have a fake ethernet interface, change your localrc and re-run ./stack.sh so that you can start nova-network on the new interface.&lt;br /&gt;
&lt;br /&gt;
add to your ''localrc'' file&lt;br /&gt;
 FLAT_INTERFACE=tapfoo&lt;br /&gt;
&lt;br /&gt;
=== Configure a Proxy ===&lt;br /&gt;
Some workplaces may have to use special networking and/or proxy settings and that these may change when you are mobile. Those issues can cause problems with apt-get, git and other parts of OpenStack. If you are in a place that needs special proxy rules, [https://help.ubuntu.com/community/AptGet/Howto/#Setting_up_apt-get_to_use_a_http-proxy setup apt-get with a proxy]. You may also have to set [http://askubuntu.com/questions/158557/setting-proxy-from-terminal other proxy settings] depending on your company's particular firewall rules.&lt;br /&gt;
&lt;br /&gt;
=Appendix=&lt;br /&gt;
&lt;br /&gt;
==Converting Images==&lt;br /&gt;
&lt;br /&gt;
===Converting other disk images to vmdk using qemu-img=== &lt;br /&gt;
Disk images in several formats (e.g. qcow2) can be converted to the VMDK format usable by the vmware nova driver using the qemu-img utility.&lt;br /&gt;
&lt;br /&gt;
For example the following command can be used to convert a qcow2 Ubuntu Precise cloud image (downloadable from http://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img):&lt;br /&gt;
 &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt; qemu-img convert -f raw ~/Downloads/precise-server-cloudimg-amd64-disk1.img -O vmdk precise-server-cloudimg-amd64-disk1.vmdk&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Converting a sparse vmdk to an ESX-compatible format=== &lt;br /&gt;
&lt;br /&gt;
Due to a bug (fixed with the following proposed [https://review.openstack.org/#/c/43994/ patch], currently under review) in how sparse vmdk disks are handled in the VC driver, &lt;br /&gt;
sparse disks have to be pre-converted to thin-provisioned or preallocated disks before they can be uploaded to glance to be used by the driver.&lt;br /&gt;
&lt;br /&gt;
There are several ways to perform such a conversion:&lt;br /&gt;
&lt;br /&gt;
====1. Using vSphere CLI (or sometimes called the remote CLI or rCLI) tools.====&lt;br /&gt;
&lt;br /&gt;
The latest version from the date this was written is 5.1 and the link is [https://my.vmware.com/web/vmware/details?downloadGroup=VSP510-VCLI-510&amp;amp;productId=285 here].&lt;br /&gt;
&lt;br /&gt;
Assuming that the sparse disk is made available on a datastore accessible by an ESX host, the following command converts it to preallocated format:&lt;br /&gt;
&lt;br /&gt;
 vmkfstools --server=ip_of_some_ESX_host -i /vmfs/volumes/datastore1/sparse.vmdk /vmfs/volumes/datastore1/converted.vmdk&lt;br /&gt;
&lt;br /&gt;
(note the vifs tool from the same CLI package can be used to upload the disk to be converted and downloaded the converted disk if necessary)&lt;br /&gt;
&lt;br /&gt;
====2. Using vmkfstools directly on the ESX host====&lt;br /&gt;
&lt;br /&gt;
If the SSH service is enabled on an ESX host, the sparse disk can be uploaded to the ESX datastore via scp, and the vmkfstools local to the ESX host can use used to perform the conversion: &lt;br /&gt;
&lt;br /&gt;
(After logging to the host via ssh)&lt;br /&gt;
 vmkfstools -i /vmfs/volumes/datastore1/sparse.vmdk /vmfs/volumes/datastore1/converted.vmdk&lt;br /&gt;
&lt;br /&gt;
====3. vmware-vdiskmanager====&lt;br /&gt;
&lt;br /&gt;
vmware-vdiskmanager is a utility that comes bundled with VMware Fusion and VMware Workstation. &lt;br /&gt;
Below is an example of converting a sparse disk to preallocated format:&lt;br /&gt;
&lt;br /&gt;
 '/Applications/VMware Fusion.app/Contents/Library/vmware-vdiskmanager' -r sparse.vmdk -t 4 converted.vmdk&lt;br /&gt;
&lt;br /&gt;
In all the above cases, the converted vmdk is actually a pair of files, the descriptor file &amp;lt;i&amp;gt;converted&amp;lt;/i&amp;gt;.vmdk and the actual virtual disk data file &amp;lt;i&amp;gt;converted&amp;lt;/i&amp;gt;-flat.vmdk. The file to be uploaded to glance is &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;converted&amp;lt;/i&amp;gt;-flat.vmdk&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
===Specifying correct adapter type when uploading and image to glance===&lt;br /&gt;
&lt;br /&gt;
Currently, there is a limitation that OS boot vmdk disks with an ide adapter type cannot be attached to a virtual SCSI controller, and likewise disks with one of the scsi adapter types (e.g. busLogic, lsiLogic) cannot be attached to the IDE controller. Therefore it is important when uploading an image to glance that the correct vmware_adaptertype property be set. In particular, vmdk disks converted from other formats via qemu-img will _always_ be a monolithic sparse vmdk with an IDE adapter type. So using the above example of the Precise Ubuntu image, after the qemu-img conversion and conversion to a preallocated disk, the command to upload the vmdk disk should be something like:&lt;br /&gt;
&lt;br /&gt;
   glance image-create --name precise-cloud --is-public=True --container-format=bare --disk-format=vmdk --property vmware_disktype=&amp;quot;preallocated&amp;quot; --property vmware_adaptertype=&amp;quot;ide&amp;quot; &amp;lt; converted-flat.vmdk&lt;br /&gt;
&lt;br /&gt;
====Obtaining the adapter type associated with a vmdk====&lt;br /&gt;
&lt;br /&gt;
If the vmdk is a monolithic file (such as one produced by the qemu-img conversion) the adapter type can be retrieved by &lt;br /&gt;
&lt;br /&gt;
   head -20 some_monolithic.vmdk&lt;br /&gt;
&lt;br /&gt;
and looking for the ddb.adapterType=XXX property&lt;br /&gt;
&lt;br /&gt;
If the vmdk has a descriptor/data file pair (foo.vmdk and foo-XXXX.vmdk). The descriptor file foo.vmdk can be examined for the same ddb.adapterType property)&lt;br /&gt;
&lt;br /&gt;
==List of Reviews in progress==&lt;br /&gt;
https://review.openstack.org/#/q/message:vmware+OR+message:vcenter+OR+message:vsphere+OR+message:esx+OR+message:vcdriver+OR+message:datastore,n,z&lt;/div&gt;</summary>
		<author><name>Arnaud Legendre</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=NovaVMware/DeveloperGuide&amp;diff=40491</id>
		<title>NovaVMware/DeveloperGuide</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=NovaVMware/DeveloperGuide&amp;diff=40491"/>
				<updated>2014-01-25T01:34:41Z</updated>
		
		<summary type="html">&lt;p&gt;Arnaud Legendre: /* Upload your VMDK to glance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Developer's DevStack + vSphere Guide=&lt;br /&gt;
&lt;br /&gt;
This is a short guide for developers interested in working on OpenStack and [[vSphere]] (ESX, [[ESXi]], and [[vCenter]]) drivers.&lt;br /&gt;
&lt;br /&gt;
==vSphere Environment and Inventory==&lt;br /&gt;
&lt;br /&gt;
Set up a vSphere 5.1 (or better) developer's environment. For development purposes, you'll need to have one of this inventory type:&lt;br /&gt;
&lt;br /&gt;
[[File:VCenter cluster inventory.png|framed|none|inventory with a DRS cluster]]&lt;br /&gt;
&lt;br /&gt;
Note: The cluster should be DRS enabled with &amp;quot;Fully automated&amp;quot; placement turned on. Also, if you can't get two or more ESX hosts to work with, you can still work with one host in the cluster, but you won't be able to observe VM placement behaviors since there won't be anywhere to place the VMs except for the solitary host.&lt;br /&gt;
&lt;br /&gt;
=Development Environment=&lt;br /&gt;
== Get an Ubuntu 12.04 (suggested) VM setup==&lt;br /&gt;
This Ubuntu workstation can run as a VM itself, but it should have public internet access (ideally direct, but http proxy is workable if you don’t need to commit code back to OpenStack if you do, see the troubleshooting page for steps that ''may'' help).  It should also have a reasonably high bandwidth link to the the vSphere hosts, as it will need to stream images from the Ubuntu workstation to the vSphere host. &lt;br /&gt;
&lt;br /&gt;
We suggest your Ubuntu workstation have&lt;br /&gt;
* at least 10 GB disk, with 20+ GB being ideal. &lt;br /&gt;
* at least one vCPU, with 2 being ideal.&lt;br /&gt;
* 4 GB of RAM.&lt;br /&gt;
&lt;br /&gt;
=== optional setup ===&lt;br /&gt;
If you are using a remote workstation (not running locally on your physical computer) you may have to follow some of the extra steps under [[NovaVMware/DeveloperGuide#Networking_Troubleshooting|Network Troubleshooting]]&lt;br /&gt;
&lt;br /&gt;
==install Devstack (http://devstack.org/) in your new VM==&lt;br /&gt;
Once booted, run: &lt;br /&gt;
 sudo apt-get install git&lt;br /&gt;
 git clone http://github.com/openstack-dev/devstack.git&lt;br /&gt;
 cd devstack&lt;br /&gt;
&lt;br /&gt;
=Setup localrc for DevStack=&lt;br /&gt;
create a file named “localrc” in your devstack directory with the content shown below (for each item with $variable_name, you will need to enter values specific to your environment, the rest you can just leave as is).  &lt;br /&gt;
&lt;br /&gt;
file ~/devstack/''localrc''&lt;br /&gt;
 ENABLED_SERVICES=g-api,g-reg,key,n-api,n-crt,n-cpu,n-net,n-cond,n-sch,n-novnc,n-cauth,rabbit,mysql,horizon&lt;br /&gt;
 VIRT_DRIVER=vsphere&lt;br /&gt;
 VMWAREAPI_IP='''$your_vCenter_ip_address'''&lt;br /&gt;
 VMWAREAPI_USER=root&lt;br /&gt;
 VMWAREAPI_PASSWORD='''$password_goes_here'''&lt;br /&gt;
 VMWAREAPI_CLUSTER='''$your_cluster_name'''&lt;br /&gt;
 DATABASE_PASSWORD=nova&lt;br /&gt;
 RABBIT_PASSWORD=nova&lt;br /&gt;
 SERVICE_TOKEN=nova&lt;br /&gt;
 SERVICE_PASSWORD=nova&lt;br /&gt;
 ADMIN_PASSWORD=nova&lt;br /&gt;
 HOST_IP='''$your_development_vm_ip'''&lt;br /&gt;
&lt;br /&gt;
Note: if you would like to use a specific datastore then configure ''VMWAREAPI_DATASTORE_REGEX''&lt;br /&gt;
&lt;br /&gt;
Note: omit the line ''VMWAREAPI_CLUSTER'' if you are using the ''trivial'' inventory example.&lt;br /&gt;
&lt;br /&gt;
Note: If you want the logs to be written to disk (not just accessible via screen), use the define SCREEN_LOGDIR to point to path &lt;br /&gt;
where you want to the logs to reside.  For example&lt;br /&gt;
&lt;br /&gt;
SCREEN_LOGDIR=/var/log&lt;br /&gt;
&lt;br /&gt;
=start stack (first time)=&lt;br /&gt;
 ./stack.sh&lt;br /&gt;
This will take a long time the first time, as it pulls down all code and dependencies.&lt;br /&gt;
Note: may fail on first start.&lt;br /&gt;
&lt;br /&gt;
=Credentials and Environment Variables=&lt;br /&gt;
get the OpenStack API credentials in your environment variables:&lt;br /&gt;
&lt;br /&gt;
 $ source openrc demo demo&lt;br /&gt;
&lt;br /&gt;
This is needed anytime you make a call using an openstack CLI client like ‘nova’, ‘glance’, or ‘quantum’.  You can rerun this at any time from the devstack directory if you need to re-login in at a later point.  If you want admin credentials then use admin ($ source openrc admin admin)&lt;br /&gt;
&lt;br /&gt;
=Glance Initial Setup=&lt;br /&gt;
Get a VMDK to use as a disk image and upload it to OpenStack using the Glance API.  The latest code (mid-Aug) has a change which uploads the image when you 1st run devstack.  After glance starts, run the following command to see if you have a pre-configured image in glance&lt;br /&gt;
&lt;br /&gt;
$ glance image-list&lt;br /&gt;
&lt;br /&gt;
==Get an initial VMDK to work with==&lt;br /&gt;
There are a lot of “gotchas” around what VMDK disks work with OpenStack + vSphere, so we strongly suggest using the provided image to start.  In the Appendix there is information about creating/converting your own images.  &lt;br /&gt;
&lt;br /&gt;
download the image 1 GB debian disk image (user/password to login this image after booting is nicira/nicira).  &lt;br /&gt;
 http://partnerweb.vmware.com/programs/vmdkimage/debian-2.6.32-i686.vmdk &lt;br /&gt;
Place the file under your home directory &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;~/&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: if you are using nested hyper-visors you will need to obtain a 32bit image to use or troubleshoot: how to enable nested ESXi &amp;amp; other Hypervisors in vSphere 5.1 - See more at: http://www.virtuallyghetto.com/2012/08/how-to-enable-nested-esxi-other.html#sthash.NJ2VNiwt.dpuf&lt;br /&gt;
&lt;br /&gt;
==Upload your VMDK to glance==&lt;br /&gt;
It is recommended to use the upload_images.sh script provided in the Devstack to upload images to Glance: &lt;br /&gt;
 https://github.com/openstack-dev/devstack/blob/master/tools/upload_image.sh&lt;br /&gt;
upload_image.sh has a dependency:&lt;br /&gt;
 https://github.com/openstack-dev/devstack/blob/master/functions&lt;br /&gt;
The script will introspect the image provided to extract the metadata.&lt;br /&gt;
It expects a URL as unique argument. The scheme of the URL can be http(s) or file. When a flat disk (*-flat.vmdk) is provided, the script will attempt to retrieve the descriptor (*.vmdk) associated to find the correct metadata. The same way, the user can specify a descriptor: in this case, the script will try to find the flat disk. &lt;br /&gt;
If a *-flat.vmdk disk is provided and the descriptor cannot be found, &amp;quot;ide&amp;quot; will be used as the default adapter_type and &amp;quot;preallocated&amp;quot; as the default disk_type.&lt;br /&gt;
&lt;br /&gt;
Example of execution:&lt;br /&gt;
 $ cd ~/devstack/tools&lt;br /&gt;
 $ ./upload_image.sh http://partnerweb.vmware.com/programs/vmdkimage/debian-2.6.32-i686.vmdk&lt;br /&gt;
 $ ./upload_image.sh file:///home/user/images/debian-2.6.32-i686.vmdk&lt;br /&gt;
 $ ./upload_image.sh &amp;quot;http://partnerweb.vmware.com/programs/vmdkimage/trend-tinyvm1-flat-;ide;.vmdk&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Specific metadata can be provided: the expected format of the image filename is &amp;lt;name&amp;gt;-&amp;lt;disk type&amp;gt;;&amp;lt;storage adapter&amp;gt;;&amp;lt;network adapter&amp;gt;.vmdk&lt;br /&gt;
&lt;br /&gt;
To avoid problems with the metadata, it is highly recommended to provide a monolithicSparse or monolithicFlat disk where the descriptor and flat disk are in the same directory.&lt;br /&gt;
For more information about disk types: http://sanbarrow.com/vmdk-basics.html&lt;br /&gt;
&lt;br /&gt;
Alternatively, it is possible to call directly the Glance client (the following commands are using the V1 of the Glance client):&lt;br /&gt;
&lt;br /&gt;
 $ glance image-create --name Debian --is-public=True --container-format=bare --disk-format=vmdk --property vmware-disktype=&amp;quot;preallocated&amp;quot; &amp;lt; debian-2.6.32-i686.vmdk &lt;br /&gt;
&lt;br /&gt;
This will print out an &amp;lt;image-id&amp;gt; for use below.  If you forget it, you can always run “glance image-list” to see all existing images.&lt;br /&gt;
&lt;br /&gt;
There is also an IDE based image that can be used. &lt;br /&gt;
&lt;br /&gt;
 http://partnerweb.vmware.com/programs/vmdkimage/trend-tinyvm1-flat.vmdk&lt;br /&gt;
Note the vmware_adaptertype is set to &amp;quot;ide&amp;quot;&lt;br /&gt;
 $ glance image-create --name trend-thin --is-public=True --container-format=bare --disk-format=vmdk --property vmware_adaptertype=&amp;quot;ide&amp;quot; &amp;lt; trend-tinyvm1-flat.vmdk&lt;br /&gt;
&lt;br /&gt;
=Nova Boot=&lt;br /&gt;
boot a VM using the “&amp;lt;image-id&amp;gt;” from above&lt;br /&gt;
&lt;br /&gt;
 $ nova boot --image &amp;lt;image-id&amp;gt; --flavor 1 test1&lt;br /&gt;
&lt;br /&gt;
Now you can interact with the image using other nova client commands.  &lt;br /&gt;
For example&lt;br /&gt;
 $ nova list&lt;br /&gt;
 +--------------------------------------+-------+--------+------------+-------------+------------------+&lt;br /&gt;
 | ID                                   | Name  | Status | Task State | Power State | Networks         |&lt;br /&gt;
 +--------------------------------------+-------+--------+------------+-------------+------------------+&lt;br /&gt;
 | 9bb724bf-298d-4a63-a653-dab7fcbd9ac7 | test1 | ACTIVE  | None       | NOSTATE     | private=10.0.0.2 |&lt;br /&gt;
 +--------------------------------------+-------+--------+------------+-------------+------------------+&lt;br /&gt;
&lt;br /&gt;
Note: if your disk is big, it can take a VERY long time to stream the image from glance to your datastore (e.g., ~7 minutes for a 1 GB thick image).   This will happen only the first time a new image UUID is used on a datastore. You can monitor progress by viewing the size of the file in the vmware_base directory of the filestore.  &lt;br /&gt;
&lt;br /&gt;
Once this is done, you can view the VM using vCenter. The username/password for the above Debian image is nicira/nicira .&lt;br /&gt;
&lt;br /&gt;
You can access the OpenStack Web GUI (called horizon) by accessing your Ubuntu host on port 80, though currently VNC access via Horizon is broken (see: https://review.openstack.org/#/c/30036/ for a patch to fix this).&lt;br /&gt;
&lt;br /&gt;
=Using Screen=&lt;br /&gt;
Use screen to interact with individual openstack services&lt;br /&gt;
&lt;br /&gt;
 $ screen -x stack&lt;br /&gt;
&lt;br /&gt;
See: http://www.gnu.org/software/screen/manual/screen.html &amp;lt;- for how to use&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Control + a&amp;quot; enters command mode... enter this for each new command character&lt;br /&gt;
characters 0 through 9 switch tabs&lt;br /&gt;
** the 'd' character detaches the session&lt;br /&gt;
** the '[' character enters &amp;quot;copy mode&amp;quot; which allows you to navigate the screen trace and 'escape' escapes the copy mode.&lt;br /&gt;
** the '&amp;quot;' character shows a list of screens which you can navigate with the up and down arrows&lt;br /&gt;
&lt;br /&gt;
For example the nova-compute service runs on the n-cpu tab which is usually number 6. So to navigate to it, hit Ctrl+a then press '6' and you'll tab to it. You can then interact with the terminal for n-cpu.&lt;br /&gt;
&lt;br /&gt;
=Working the Development Environment=&lt;br /&gt;
If you want to reset your environment, run: &lt;br /&gt;
 ./unstack.sh &lt;br /&gt;
 ./stack.sh &lt;br /&gt;
&lt;br /&gt;
* This run of stack.sh will be faster (~1 minute) as it resets all database and service state, but does not need to re-download packages or source code.  &lt;br /&gt;
* After running ./unstack be sure to clean out all your datastores and delete any files left behind on accident. This will prevent a great number of problems people won't see in production environments. (For example: partially uploaded VMDK.)&lt;br /&gt;
&lt;br /&gt;
Note: the source code is not automatically updated when you reset your environment.  This is valuable, as you can manage your source code manually via git, having many branches, etc.  &lt;br /&gt;
&lt;br /&gt;
= Remote Debugger =&lt;br /&gt;
&lt;br /&gt;
To use the pycharm remote debugger (any maybe [http://wiki.xbmc.org/index.php?title=How-to:Debug_Python_Scripts_with_Eclipse eclipse]), make the following changes in your nova code&lt;br /&gt;
&lt;br /&gt;
index 0e7ecdc,87edf9b..0000000&lt;br /&gt;
--- a/nova/cmd/__init__.py&lt;br /&gt;
+++ b/nova/cmd/__init__.py&lt;br /&gt;
@@@ -31,8 -31,4 +31,8 @@@ &lt;br /&gt;
  os.environ['EVENTLET_NO_GREENDNS'] = 'y&lt;br /&gt;
  &lt;br /&gt;
  import eventlet&lt;br /&gt;
  &lt;br /&gt;
 -eventlet.monkey_patch(os=False)&lt;br /&gt;
 +if '--debug-host' and '--debug-port' in sys.argv:&lt;br /&gt;
 +    eventlet.monkey_patch(all=False,socket=True,time=True,os=False,thread=False)&lt;br /&gt;
 +else:&lt;br /&gt;
 +    eventlet.monkey_patch(os=False)&lt;br /&gt;
 +&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
diff --combined nova/cmd/compute.py&lt;br /&gt;
index 61cf434,f03a9bd..0000000&lt;br /&gt;
--- a/nova/cmd/compute.py&lt;br /&gt;
+++ b/nova/cmd/compute.py&lt;br /&gt;
@@@ -33,19 -33,10 +33,19 @@@ &lt;br /&gt;
  from nova.openstack.common import log a&lt;br /&gt;
  from nova import service&lt;br /&gt;
  from nova import utils&lt;br /&gt;
  &lt;br /&gt;
 +cli_opts = [&lt;br /&gt;
 +        cfg.StrOpt('debug-host',&lt;br /&gt;
 +                    default=None,&lt;br /&gt;
 +                    help='Connect to debug host'),&lt;br /&gt;
 +        cfg.IntOpt('debug-port',&lt;br /&gt;
 +                    default=None,&lt;br /&gt;
 +                    help='Connect to debug host port'),&lt;br /&gt;
 +    ]&lt;br /&gt;
 +&lt;br /&gt;
  CONF = cfg.CONF&lt;br /&gt;
  CONF.import_opt('compute_topic', 'nova.compute.rpcapi')&lt;br /&gt;
  CONF.import_opt('use_local', 'nova.conductor.api', group='conductor')&lt;br /&gt;
 -&lt;br /&gt;
 +CONF.register_cli_opts(cli_opts)&lt;br /&gt;
  &lt;br /&gt;
  def block_db_access():&lt;br /&gt;
      class NoDB(object):&lt;br /&gt;
@@@ -72,16 -63,6 +72,16 @@@ def main()&lt;br /&gt;
          objects_base.NovaObject.indirection_api = \&lt;br /&gt;
              conductor_rpcapi.ConductorAPI()&lt;br /&gt;
  &lt;br /&gt;
 +    if CONF.debug_host:&lt;br /&gt;
 +        from pydev import pydevd&lt;br /&gt;
 +        print ('Listening on ' + str(CONF.debug_port) + ' for host ' +&lt;br /&gt;
 +                                    CONF.debug_host)&lt;br /&gt;
 +        pydevd.settrace(host=CONF.debug_host,&lt;br /&gt;
 +                        port=CONF.debug_port,&lt;br /&gt;
 +                        stdoutToServer=False,&lt;br /&gt;
 +                        stderrToServer=False)&lt;br /&gt;
 +&lt;br /&gt;
 +&lt;br /&gt;
      server = service.Service.create(binary='nova-compute',&lt;br /&gt;
                                      topic=CONF.compute_topic,&lt;br /&gt;
                                      db_allowed=False)&lt;br /&gt;
&lt;br /&gt;
Then in pycharm, create a remote debug session with host localhost and port whatever you want.  When you run it, use --debug_host &amp;lt;your IP&amp;gt; and --debug_port &amp;lt;your port&amp;gt;.  That's it!&lt;br /&gt;
&lt;br /&gt;
=Testing=&lt;br /&gt;
==Install python support libraries==&lt;br /&gt;
===apt-get libs===&lt;br /&gt;
 $ sudo apt-get install python-dev libmysqlclient-dev python-pip build-essential &lt;br /&gt;
 $ sudo apt-get install libxml2-dev libxslt1-dev libpq-dev&lt;br /&gt;
&lt;br /&gt;
===pip based tool installs===&lt;br /&gt;
 $ sudo pip install --upgrade pip &lt;br /&gt;
 $ sudo pip install --upgrade virtualenv&lt;br /&gt;
 $ sudo pip install MySQL-python&lt;br /&gt;
 $ sudo pip install tox&lt;br /&gt;
 $ sudo pip install python-subunit&lt;br /&gt;
&lt;br /&gt;
====pip proxy troubleshooting====&lt;br /&gt;
If you get connection refused here - try this&lt;br /&gt;
 export PIP_INDEX_URL=&amp;quot;http://pypi.openstack.org/openstack&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If you get the following error: &amp;quot;pip's wheel support requires setuptools &amp;gt;= 0.8 for dist-info support&amp;quot;, try this command&lt;br /&gt;
  sudo pip install setuptools --no-use-wheel --upgrade&lt;br /&gt;
&lt;br /&gt;
====Install OpenStack libs====&lt;br /&gt;
 $ cd /opt/stack/nova&lt;br /&gt;
 $ sudo pip install -i http://pypi.openstack.org/openstack  -r requirements.txt -r test-requirements.txt &lt;br /&gt;
&lt;br /&gt;
Note: make sure everything in the requires lists gets installed. Some installers have individual issues that you may have to clear one at a time. In particular lxslt has some issues that may require attention to properly clear.&lt;br /&gt;
&lt;br /&gt;
==Using TOX for testing==&lt;br /&gt;
See: https://wiki.openstack.org/wiki/ProjectTestingInterface&lt;br /&gt;
&lt;br /&gt;
Important tests to run before submitting for code review are&lt;br /&gt;
 tox -e py26,py27&lt;br /&gt;
 tox -e pep8&lt;br /&gt;
&lt;br /&gt;
As of this writing the run_tests.sh is the better way to run tests.&lt;br /&gt;
&lt;br /&gt;
== Using run_tests.sh for testing ==&lt;br /&gt;
 $ cd /opt/stack/nova&lt;br /&gt;
 $ ./run_tests.sh&lt;br /&gt;
... or ...&lt;br /&gt;
 $ ./run_tests.sh nova.tests.virt.vmwareapi&lt;br /&gt;
... to run only the vmware unit tests.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: If you want to use the python packages in your normal (non-virtual) environment then pass the -N flag&lt;br /&gt;
&lt;br /&gt;
==Code Coverage tests and information==&lt;br /&gt;
&lt;br /&gt;
=== with tox ===&lt;br /&gt;
 $ cd /opt/stack/nova&lt;br /&gt;
 $ tox -e cover  (code coverage)&lt;br /&gt;
&lt;br /&gt;
look under the cover directory for html reports on the code coverage for that module.  The file index.html contains the overall coverage report&lt;br /&gt;
&lt;br /&gt;
NOTE: tests may run 10, 20, or as long as 65 minutes (depending on your hardware, network, and system) and produce no output until they complete. This is normal. You system may become sluggish but should not lock up entirely, a system hang can be symptomatic of an improperly configured test environment. Tests will run on Mac OSX. 2 Cores with 2GB of RAM on an Ubuntu 12.04 machine that is properly configured should take between 10 and 20 minutes to complete.&lt;br /&gt;
&lt;br /&gt;
=== with run_tests.sh ===&lt;br /&gt;
  $ cd /opt/stack/nova&lt;br /&gt;
  $ ./run_tests.sh --coverage&lt;br /&gt;
&lt;br /&gt;
==Additional setup==&lt;br /&gt;
If you are on Ubuntu 12.04 and need to use Python 2.6 (which OpenStack needs for some test scripts) install the old version of python by doing the following:&lt;br /&gt;
&lt;br /&gt;
 $ sudo add-apt-repository ppa:fkrull/deadsnakes&lt;br /&gt;
 $ sudo apt-get update&lt;br /&gt;
 $ sudo apt-get install python2.6 python2.6-dev&lt;br /&gt;
&lt;br /&gt;
== Disabling verbose logging subsystems ==&lt;br /&gt;
&lt;br /&gt;
Add this line to nova.conf to disable the amqp logging (for example)&lt;br /&gt;
&lt;br /&gt;
default_log_levels=amqp=WARN,amqplib=WARN,sqlalchemy=WARN,boto=WARN,suds=INFO,keystone=INFO,eventlet.wsgi.server=WARN,nova.openstack.common.rpc.amqp=WARN&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
''Some workplaces may have to use special networking and/or proxy settings and that these may change when you are mobile. Those issues can cause problems with apt-get, git and other parts of OpenStack. If you are in a place that needs special proxy rules, [https://help.ubuntu.com/community/AptGet/Howto/#Setting_up_apt-get_to_use_a_http-proxy setup apt-get with a proxy]. You may also have to set [http://askubuntu.com/questions/158557/setting-proxy-from-terminal other proxy settings] depending on your company's particular firewall rules.''&lt;br /&gt;
&lt;br /&gt;
== Logging ==&lt;br /&gt;
You may have a situation where you need to monitor devstack's log files. Here's how you set up logging to file with the least amount of fuss.&lt;br /&gt;
&lt;br /&gt;
To set up logging of screen windows set the shell variable SCREEN_LOGDIR to the directory you want the log files to go. Log files will appear with names like ''screen-$SERVICE_NAME-$TIMESTAMP.log'' in that dir and symbolic link screen-$SERVICE_NAME.log will link to the latest log file. Logs are kept for as long specified in the LOGDAYS variable.&lt;br /&gt;
&lt;br /&gt;
Both SCREEN_LOGDIR and LOGDAYS are shell variables so you need to set them either in your shell or in localrc. Use shell commands if you only want the logs to work this one time. Use ''localrc'' if you always want to have log files appear.&lt;br /&gt;
&lt;br /&gt;
Assuming you have already made a directory...&lt;br /&gt;
&lt;br /&gt;
 $ mkdir ~/log&lt;br /&gt;
&lt;br /&gt;
Then, if you only want logs this one time, in your bash shell say...&lt;br /&gt;
&lt;br /&gt;
 $ export SCREEN_LOGDIR=~/log&lt;br /&gt;
 $ export LOGDAYS=2&lt;br /&gt;
&lt;br /&gt;
... or if you ''always'' want log files, in your localrc add the lines ...&lt;br /&gt;
&lt;br /&gt;
 SCREEN_LOGDIR=~/log&lt;br /&gt;
 LOGDAYS=2&lt;br /&gt;
&lt;br /&gt;
The stack.sh script will automatically rotate the log files for you.&lt;br /&gt;
&lt;br /&gt;
== MySQL issues ==&lt;br /&gt;
If you get stuck with Keystone try...&lt;br /&gt;
 $ mysql -u root -pnova&lt;br /&gt;
... if that doesn't work you probably have a broken mysql install. If you have problems getting mysql to behave, try purging the OpenStack version of the install and install the database manually. Here’s how to rip everything down and install mysql-server from scratch yourself.&lt;br /&gt;
&lt;br /&gt;
 $ ./unstack&lt;br /&gt;
 $ sudo apt-get purge mysql-server&lt;br /&gt;
... you may need to use the name mysql-server-5.5 instead ...&lt;br /&gt;
 $ sudo apt-get autoremove&lt;br /&gt;
 $ sudo apt-get install mysql-server-5.5&lt;br /&gt;
 $ sudo mysql_install_db&lt;br /&gt;
 $ sudo mysqladmin -u root password 'nova'&lt;br /&gt;
 $ sudo service mysql restart&lt;br /&gt;
 $ ./stack&lt;br /&gt;
&lt;br /&gt;
== Keystone Issues ==&lt;br /&gt;
If you get stuck when you are checking your keystone connection via curl then it’s your proxy settings.  Try setting the following in /etc/environment&lt;br /&gt;
 no_proxy=localhost,127.0.0.0/8,127.0.1.1,127.0.1.1*,local.home&lt;br /&gt;
&lt;br /&gt;
== General Database Issues ==&lt;br /&gt;
If you have trouble with testing or other database heavy activities you may need to follow:&lt;br /&gt;
 http://codeinthehole.com/writing/how-to-set-up-mysql-for-python-on-ubuntu/&lt;br /&gt;
&lt;br /&gt;
== rootwrap Issues ==&lt;br /&gt;
If networking suddenly stops working with an error like this&lt;br /&gt;
&lt;br /&gt;
 Traceback (most recent call last):&lt;br /&gt;
   File &amp;quot;/usr/bin/nova-rootwrap&amp;quot;, line 59, in &amp;lt;module&amp;gt;&lt;br /&gt;
     from nova.rootwrap import wrapper&lt;br /&gt;
 ImportError: No module named rootwrap&lt;br /&gt;
&lt;br /&gt;
Then something has added a broken rootwrap to /usr/bin.  Remove the /usr/bin/nova-rootwrap and it will use the correct one in /usr/local/bin&lt;br /&gt;
&lt;br /&gt;
=== Check if nova-compute is running ===&lt;br /&gt;
 $ screen -x&lt;br /&gt;
Note the tab n-cpu is running in. It is usually #6 but it could be a different tab on occasion. Tab to n-cpu's tab. '''ctl+a''' then '''6'''. If you see:&lt;br /&gt;
 $ cd /opt/stack/nova &amp;amp;&amp;amp; sg  '/usr/local/bin/nova-compute --config-file /etc/nova/nova.conf' || touch &amp;quot;/opt/stack/status/stack/n-cpu.failure&amp;quot;&lt;br /&gt;
 sg: group '/usr/local/bin/nova-compute --config-file /etc/nova/nova.conf' does not exist&lt;br /&gt;
 $&lt;br /&gt;
... then nova-compute did not start. You can manually start nova-compute by editing the command to read:&lt;br /&gt;
 $ cd /opt/stack/nova &amp;amp;&amp;amp; /usr/local/bin/nova-compute --config-file /etc/nova/nova.conf || touch &amp;quot;/opt/stack/status/stack/n-cpu.failure&amp;quot;&lt;br /&gt;
... which is permissible for development (but not for production).&lt;br /&gt;
&lt;br /&gt;
== Networking Troubleshooting ==&lt;br /&gt;
Remotely accessed workstations need to have an IP for you to SSH or VNC into in order to do work. These instructions mostly assume a ''locally accessible'' VM or physical machine. If you are working with a remotely hosted Ubuntu developer's workstation, you may have special networking concerns. If you find your use of nova-network is stealing your workstations IP in your environment (does not manifest in all environments so it's located here as a troubleshooting step) then set up a second interface for nova-network to use. &lt;br /&gt;
&lt;br /&gt;
=== Configure a fake networking interface ===&lt;br /&gt;
Configure a fake interface so that nova-network does not steal the real IP that you need to access the host remotely.  On Ubuntu: &lt;br /&gt;
&lt;br /&gt;
 $ sudo ip tuntap add dev tapfoo mode tap&lt;br /&gt;
 $ sudo ifconfig tapfoo $some_ip up &lt;br /&gt;
&lt;br /&gt;
NOTE: assign the interface an ip address that will be appropriate for your environment.&lt;br /&gt;
&lt;br /&gt;
Now that you have a fake ethernet interface, change your localrc and re-run ./stack.sh so that you can start nova-network on the new interface.&lt;br /&gt;
&lt;br /&gt;
add to your ''localrc'' file&lt;br /&gt;
 FLAT_INTERFACE=tapfoo&lt;br /&gt;
&lt;br /&gt;
=== Configure a Proxy ===&lt;br /&gt;
Some workplaces may have to use special networking and/or proxy settings and that these may change when you are mobile. Those issues can cause problems with apt-get, git and other parts of OpenStack. If you are in a place that needs special proxy rules, [https://help.ubuntu.com/community/AptGet/Howto/#Setting_up_apt-get_to_use_a_http-proxy setup apt-get with a proxy]. You may also have to set [http://askubuntu.com/questions/158557/setting-proxy-from-terminal other proxy settings] depending on your company's particular firewall rules.&lt;br /&gt;
&lt;br /&gt;
=Appendix=&lt;br /&gt;
&lt;br /&gt;
==Converting Images==&lt;br /&gt;
&lt;br /&gt;
===Converting other disk images to vmdk using qemu-img=== &lt;br /&gt;
Disk images in several formats (e.g. qcow2) can be converted to the VMDK format usable by the vmware nova driver using the qemu-img utility.&lt;br /&gt;
&lt;br /&gt;
For example the following command can be used to convert a qcow2 Ubuntu Precise cloud image (downloadable from http://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img):&lt;br /&gt;
 &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt; qemu-img convert -f raw ~/Downloads/precise-server-cloudimg-amd64-disk1.img -O vmdk precise-server-cloudimg-amd64-disk1.vmdk&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Converting a sparse vmdk to an ESX-compatible format=== &lt;br /&gt;
&lt;br /&gt;
Due to a bug (fixed with the following proposed [https://review.openstack.org/#/c/43994/ patch], currently under review) in how sparse vmdk disks are handled in the VC driver, &lt;br /&gt;
sparse disks have to be pre-converted to thin-provisioned or preallocated disks before they can be uploaded to glance to be used by the driver.&lt;br /&gt;
&lt;br /&gt;
There are several ways to perform such a conversion:&lt;br /&gt;
&lt;br /&gt;
====1. Using vSphere CLI (or sometimes called the remote CLI or rCLI) tools.====&lt;br /&gt;
&lt;br /&gt;
The latest version from the date this was written is 5.1 and the link is [https://my.vmware.com/web/vmware/details?downloadGroup=VSP510-VCLI-510&amp;amp;productId=285 here].&lt;br /&gt;
&lt;br /&gt;
Assuming that the sparse disk is made available on a datastore accessible by an ESX host, the following command converts it to preallocated format:&lt;br /&gt;
&lt;br /&gt;
 vmkfstools --server=ip_of_some_ESX_host -i /vmfs/volumes/datastore1/sparse.vmdk /vmfs/volumes/datastore1/converted.vmdk&lt;br /&gt;
&lt;br /&gt;
(note the vifs tool from the same CLI package can be used to upload the disk to be converted and downloaded the converted disk if necessary)&lt;br /&gt;
&lt;br /&gt;
====2. Using vmkfstools directly on the ESX host====&lt;br /&gt;
&lt;br /&gt;
If the SSH service is enabled on an ESX host, the sparse disk can be uploaded to the ESX datastore via scp, and the vmkfstools local to the ESX host can use used to perform the conversion: &lt;br /&gt;
&lt;br /&gt;
(After logging to the host via ssh)&lt;br /&gt;
 vmkfstools -i /vmfs/volumes/datastore1/sparse.vmdk /vmfs/volumes/datastore1/converted.vmdk&lt;br /&gt;
&lt;br /&gt;
====3. vmware-vdiskmanager====&lt;br /&gt;
&lt;br /&gt;
vmware-vdiskmanager is a utility that comes bundled with VMware Fusion and VMware Workstation. &lt;br /&gt;
Below is an example of converting a sparse disk to preallocated format:&lt;br /&gt;
&lt;br /&gt;
 '/Applications/VMware Fusion.app/Contents/Library/vmware-vdiskmanager' -r sparse.vmdk -t 4 converted.vmdk&lt;br /&gt;
&lt;br /&gt;
In all the above cases, the converted vmdk is actually a pair of files, the descriptor file &amp;lt;i&amp;gt;converted&amp;lt;/i&amp;gt;.vmdk and the actual virtual disk data file &amp;lt;i&amp;gt;converted&amp;lt;/i&amp;gt;-flat.vmdk. The file to be uploaded to glance is &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;converted&amp;lt;/i&amp;gt;-flat.vmdk&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
===Specifying correct adapter type when uploading and image to glance===&lt;br /&gt;
&lt;br /&gt;
Currently, there is a limitation that OS boot vmdk disks with an ide adapter type cannot be attached to a virtual SCSI controller, and likewise disks with one of the scsi adapter types (e.g. busLogic, lsiLogic) cannot be attached to the IDE controller. Therefore it is important when uploading an image to glance that the correct vmware_adaptertype property be set. In particular, vmdk disks converted from other formats via qemu-img will _always_ be a monolithic sparse vmdk with an IDE adapter type. So using the above example of the Precise Ubuntu image, after the qemu-img conversion and conversion to a preallocated disk, the command to upload the vmdk disk should be something like:&lt;br /&gt;
&lt;br /&gt;
   glance image-create --name precise-cloud --is-public=True --container-format=bare --disk-format=vmdk --property vmware_disktype=&amp;quot;preallocated&amp;quot; --property vmware_adaptertype=&amp;quot;ide&amp;quot; &amp;lt; converted-flat.vmdk&lt;br /&gt;
&lt;br /&gt;
====Obtaining the adapter type associated with a vmdk====&lt;br /&gt;
&lt;br /&gt;
If the vmdk is a monolithic file (such as one produced by the qemu-img conversion) the adapter type can be retrieved by &lt;br /&gt;
&lt;br /&gt;
   head -20 some_monolithic.vmdk&lt;br /&gt;
&lt;br /&gt;
and looking for the ddb.adapterType=XXX property&lt;br /&gt;
&lt;br /&gt;
If the vmdk has a descriptor/data file pair (foo.vmdk and foo-XXXX.vmdk). The descriptor file foo.vmdk can be examined for the same ddb.adapterType property)&lt;br /&gt;
&lt;br /&gt;
==List of Reviews in progress==&lt;br /&gt;
https://review.openstack.org/#/q/message:vmware+OR+message:vcenter+OR+message:vsphere+OR+message:esx+OR+message:vcdriver+OR+message:datastore,n,z&lt;/div&gt;</summary>
		<author><name>Arnaud Legendre</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=NovaVMware/DeveloperGuide&amp;diff=40326</id>
		<title>NovaVMware/DeveloperGuide</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=NovaVMware/DeveloperGuide&amp;diff=40326"/>
				<updated>2014-01-23T01:48:12Z</updated>
		
		<summary type="html">&lt;p&gt;Arnaud Legendre: /* Upload your VMDK to glance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Developer's DevStack + vSphere Guide=&lt;br /&gt;
&lt;br /&gt;
This is a short guide for developers interested in working on OpenStack and [[vSphere]] (ESX, [[ESXi]], and [[vCenter]]) drivers.&lt;br /&gt;
&lt;br /&gt;
==vSphere Environment and Inventory==&lt;br /&gt;
&lt;br /&gt;
Set up a vSphere 5.1 (or better) developer's environment. For development purposes, you'll need to have one of this inventory type:&lt;br /&gt;
&lt;br /&gt;
[[File:VCenter cluster inventory.png|framed|none|inventory with a DRS cluster]]&lt;br /&gt;
&lt;br /&gt;
Note: The cluster should be DRS enabled with &amp;quot;Fully automated&amp;quot; placement turned on. Also, if you can't get two or more ESX hosts to work with, you can still work with one host in the cluster, but you won't be able to observe VM placement behaviors since there won't be anywhere to place the VMs except for the solitary host.&lt;br /&gt;
&lt;br /&gt;
=Development Environment=&lt;br /&gt;
== Get an Ubuntu 12.04 (suggested) VM setup==&lt;br /&gt;
This Ubuntu workstation can run as a VM itself, but it should have public internet access (ideally direct, but http proxy is workable if you don’t need to commit code back to OpenStack if you do, see the troubleshooting page for steps that ''may'' help).  It should also have a reasonably high bandwidth link to the the vSphere hosts, as it will need to stream images from the Ubuntu workstation to the vSphere host. &lt;br /&gt;
&lt;br /&gt;
We suggest your Ubuntu workstation have&lt;br /&gt;
* at least 10 GB disk, with 20+ GB being ideal. &lt;br /&gt;
* at least one vCPU, with 2 being ideal.&lt;br /&gt;
* 4 GB of RAM.&lt;br /&gt;
&lt;br /&gt;
=== optional setup ===&lt;br /&gt;
If you are using a remote workstation (not running locally on your physical computer) you may have to follow some of the extra steps under [[NovaVMware/DeveloperGuide#Networking_Troubleshooting|Network Troubleshooting]]&lt;br /&gt;
&lt;br /&gt;
==install Devstack (http://devstack.org/) in your new VM==&lt;br /&gt;
Once booted, run: &lt;br /&gt;
 sudo apt-get install git&lt;br /&gt;
 git clone http://github.com/openstack-dev/devstack.git&lt;br /&gt;
 cd devstack&lt;br /&gt;
&lt;br /&gt;
=Setup localrc for DevStack=&lt;br /&gt;
create a file named “localrc” in your devstack directory with the content shown below (for each item with $variable_name, you will need to enter values specific to your environment, the rest you can just leave as is).  &lt;br /&gt;
&lt;br /&gt;
file ~/devstack/''localrc''&lt;br /&gt;
 ENABLED_SERVICES=g-api,g-reg,key,n-api,n-crt,n-cpu,n-net,n-cond,n-sch,n-novnc,n-cauth,rabbit,mysql,horizon&lt;br /&gt;
 VIRT_DRIVER=vsphere&lt;br /&gt;
 VMWAREAPI_IP='''$your_vCenter_ip_address'''&lt;br /&gt;
 VMWAREAPI_USER=root&lt;br /&gt;
 VMWAREAPI_PASSWORD='''$password_goes_here'''&lt;br /&gt;
 VMWAREAPI_CLUSTER='''$your_cluster_name'''&lt;br /&gt;
 DATABASE_PASSWORD=nova&lt;br /&gt;
 RABBIT_PASSWORD=nova&lt;br /&gt;
 SERVICE_TOKEN=nova&lt;br /&gt;
 SERVICE_PASSWORD=nova&lt;br /&gt;
 ADMIN_PASSWORD=nova&lt;br /&gt;
 HOST_IP='''$your_development_vm_ip'''&lt;br /&gt;
&lt;br /&gt;
Note: if you would like to use a specific datastore then configure ''VMWAREAPI_DATASTORE_REGEX''&lt;br /&gt;
&lt;br /&gt;
Note: omit the line ''VMWAREAPI_CLUSTER'' if you are using the ''trivial'' inventory example.&lt;br /&gt;
&lt;br /&gt;
Note: If you want the logs to be written to disk (not just accessible via screen), use the define SCREEN_LOGDIR to point to path &lt;br /&gt;
where you want to the logs to reside.  For example&lt;br /&gt;
&lt;br /&gt;
SCREEN_LOGDIR=/var/log&lt;br /&gt;
&lt;br /&gt;
=start stack (first time)=&lt;br /&gt;
 ./stack.sh&lt;br /&gt;
This will take a long time the first time, as it pulls down all code and dependencies.&lt;br /&gt;
Note: may fail on first start.&lt;br /&gt;
&lt;br /&gt;
=Credentials and Environment Variables=&lt;br /&gt;
get the OpenStack API credentials in your environment variables:&lt;br /&gt;
&lt;br /&gt;
 $ source openrc demo demo&lt;br /&gt;
&lt;br /&gt;
This is needed anytime you make a call using an openstack CLI client like ‘nova’, ‘glance’, or ‘quantum’.  You can rerun this at any time from the devstack directory if you need to re-login in at a later point.  If you want admin credentials then use admin ($ source openrc admin admin)&lt;br /&gt;
&lt;br /&gt;
=Glance Initial Setup=&lt;br /&gt;
Get a VMDK to use as a disk image and upload it to OpenStack using the Glance API.  The latest code (mid-Aug) has a change which uploads the image when you 1st run devstack.  After glance starts, run the following command to see if you have a pre-configured image in glance&lt;br /&gt;
&lt;br /&gt;
$ glance image-list&lt;br /&gt;
&lt;br /&gt;
==Get an initial VMDK to work with==&lt;br /&gt;
There are a lot of “gotchas” around what VMDK disks work with OpenStack + vSphere, so we strongly suggest using the provided image to start.  In the Appendix there is information about creating/converting your own images.  &lt;br /&gt;
&lt;br /&gt;
download the image 1 GB debian disk image (user/password to login this image after booting is nicira/nicira).  &lt;br /&gt;
 http://partnerweb.vmware.com/programs/vmdkimage/debian-2.6.32-i686.vmdk &lt;br /&gt;
Place the file under your home directory &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;~/&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: if you are using nested hyper-visors you will need to obtain a 32bit image to use or troubleshoot: how to enable nested ESXi &amp;amp; other Hypervisors in vSphere 5.1 - See more at: http://www.virtuallyghetto.com/2012/08/how-to-enable-nested-esxi-other.html#sthash.NJ2VNiwt.dpuf&lt;br /&gt;
&lt;br /&gt;
==Upload your VMDK to glance==&lt;br /&gt;
It is recommended to use the upload_images.sh script provided in the Devstack to upload images to Glance: &lt;br /&gt;
 https://github.com/openstack-dev/devstack/blob/master/tools/upload_image.sh&lt;br /&gt;
upload_image.sh has a dependency:&lt;br /&gt;
 https://github.com/openstack-dev/devstack/blob/master/functions&lt;br /&gt;
The script will introspect the image provided to extract the metadata.&lt;br /&gt;
It expects a URL as unique argument. The scheme of the URL can be http(s) or file. When a flat disk (*-flat.vmdk) is provided, the script will attempt to retrieve the descriptor (*.vmdk) associated to find the correct metadata. The same way, the user can specify a descriptor: in this case, the script will try to find the flat disk. &lt;br /&gt;
If a *-flat.vmdk disk is provided and the descriptor cannot be found, &amp;quot;ide&amp;quot; will be used as the default adapter_type and &amp;quot;preallocated&amp;quot; as the default disk_type.&lt;br /&gt;
&lt;br /&gt;
Example of execution:&lt;br /&gt;
 $ cd ~/devstack/tools&lt;br /&gt;
 $ ./upload_image.sh http://partnerweb.vmware.com/programs/vmdkimage/debian-2.6.32-i686.vmdk&lt;br /&gt;
 $ ./upload_image.sh file:///home/user/images/debian-2.6.32-i686.vmdk&lt;br /&gt;
 $ ./upload_image.sh http://partnerweb.vmware.com/programs/vmdkimage/trend-tinyvm1-flat.vmdk&lt;br /&gt;
&lt;br /&gt;
Specific metadata can be provided: the expected format of the image filename is &amp;lt;name&amp;gt;-&amp;lt;disk type&amp;gt;;&amp;lt;storage adapter&amp;gt;;&amp;lt;network adapter&amp;gt;.vmdk&lt;br /&gt;
&lt;br /&gt;
To avoid problems with the metadata, it is highly recommended to provide a monolithicSparse or monolithicFlat disk where the descriptor and flat disk are in the same directory.&lt;br /&gt;
For more information about disk types: http://sanbarrow.com/vmdk-basics.html&lt;br /&gt;
&lt;br /&gt;
Alternatively, it is possible to call directly the Glance client (the following commands are using the V1 of the Glance client):&lt;br /&gt;
&lt;br /&gt;
 $ glance image-create --name Debian --is-public=True --container-format=bare --disk-format=vmdk --property vmware-disktype=&amp;quot;preallocated&amp;quot; &amp;lt; debian-2.6.32-i686.vmdk &lt;br /&gt;
&lt;br /&gt;
This will print out an &amp;lt;image-id&amp;gt; for use below.  If you forget it, you can always run “glance image-list” to see all existing images.&lt;br /&gt;
&lt;br /&gt;
There is also an IDE based image that can be used. &lt;br /&gt;
&lt;br /&gt;
 http://partnerweb.vmware.com/programs/vmdkimage/trend-tinyvm1-flat.vmdk&lt;br /&gt;
Note the vmware_adaptertype is set to &amp;quot;ide&amp;quot;&lt;br /&gt;
 $ glance image-create --name trend-thin --is-public=True --container-format=bare --disk-format=vmdk --property vmware_adaptertype=&amp;quot;ide&amp;quot; &amp;lt; trend-tinyvm1-flat.vmdk&lt;br /&gt;
&lt;br /&gt;
=Nova Boot=&lt;br /&gt;
boot a VM using the “&amp;lt;image-id&amp;gt;” from above&lt;br /&gt;
&lt;br /&gt;
 $ nova boot --image &amp;lt;image-id&amp;gt; --flavor 1 test1&lt;br /&gt;
&lt;br /&gt;
Now you can interact with the image using other nova client commands.  &lt;br /&gt;
For example&lt;br /&gt;
 $ nova list&lt;br /&gt;
 +--------------------------------------+-------+--------+------------+-------------+------------------+&lt;br /&gt;
 | ID                                   | Name  | Status | Task State | Power State | Networks         |&lt;br /&gt;
 +--------------------------------------+-------+--------+------------+-------------+------------------+&lt;br /&gt;
 | 9bb724bf-298d-4a63-a653-dab7fcbd9ac7 | test1 | ACTIVE  | None       | NOSTATE     | private=10.0.0.2 |&lt;br /&gt;
 +--------------------------------------+-------+--------+------------+-------------+------------------+&lt;br /&gt;
&lt;br /&gt;
Note: if your disk is big, it can take a VERY long time to stream the image from glance to your datastore (e.g., ~7 minutes for a 1 GB thick image).   This will happen only the first time a new image UUID is used on a datastore. You can monitor progress by viewing the size of the file in the vmware_base directory of the filestore.  &lt;br /&gt;
&lt;br /&gt;
Once this is done, you can view the VM using vCenter. The username/password for the above Debian image is nicira/nicira .&lt;br /&gt;
&lt;br /&gt;
You can access the OpenStack Web GUI (called horizon) by accessing your Ubuntu host on port 80, though currently VNC access via Horizon is broken (see: https://review.openstack.org/#/c/30036/ for a patch to fix this).&lt;br /&gt;
&lt;br /&gt;
=Using Screen=&lt;br /&gt;
Use screen to interact with individual openstack services&lt;br /&gt;
&lt;br /&gt;
 $ screen -x stack&lt;br /&gt;
&lt;br /&gt;
See: http://www.gnu.org/software/screen/manual/screen.html &amp;lt;- for how to use&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Control + a&amp;quot; enters command mode... enter this for each new command character&lt;br /&gt;
characters 0 through 9 switch tabs&lt;br /&gt;
** the 'd' character detaches the session&lt;br /&gt;
** the '[' character enters &amp;quot;copy mode&amp;quot; which allows you to navigate the screen trace and 'escape' escapes the copy mode.&lt;br /&gt;
** the '&amp;quot;' character shows a list of screens which you can navigate with the up and down arrows&lt;br /&gt;
&lt;br /&gt;
For example the nova-compute service runs on the n-cpu tab which is usually number 6. So to navigate to it, hit Ctrl+a then press '6' and you'll tab to it. You can then interact with the terminal for n-cpu.&lt;br /&gt;
&lt;br /&gt;
=Working the Development Environment=&lt;br /&gt;
If you want to reset your environment, run: &lt;br /&gt;
 ./unstack.sh &lt;br /&gt;
 ./stack.sh &lt;br /&gt;
&lt;br /&gt;
* This run of stack.sh will be faster (~1 minute) as it resets all database and service state, but does not need to re-download packages or source code.  &lt;br /&gt;
* After running ./unstack be sure to clean out all your datastores and delete any files left behind on accident. This will prevent a great number of problems people won't see in production environments. (For example: partially uploaded VMDK.)&lt;br /&gt;
&lt;br /&gt;
Note: the source code is not automatically updated when you reset your environment.  This is valuable, as you can manage your source code manually via git, having many branches, etc.  &lt;br /&gt;
&lt;br /&gt;
= Remote Debugger =&lt;br /&gt;
&lt;br /&gt;
To use the pycharm remote debugger (any maybe [http://wiki.xbmc.org/index.php?title=How-to:Debug_Python_Scripts_with_Eclipse eclipse]), make the following changes in your nova code&lt;br /&gt;
&lt;br /&gt;
index 0e7ecdc,87edf9b..0000000&lt;br /&gt;
--- a/nova/cmd/__init__.py&lt;br /&gt;
+++ b/nova/cmd/__init__.py&lt;br /&gt;
@@@ -31,8 -31,4 +31,8 @@@ &lt;br /&gt;
  os.environ['EVENTLET_NO_GREENDNS'] = 'y&lt;br /&gt;
  &lt;br /&gt;
  import eventlet&lt;br /&gt;
  &lt;br /&gt;
 -eventlet.monkey_patch(os=False)&lt;br /&gt;
 +if '--debug-host' and '--debug-port' in sys.argv:&lt;br /&gt;
 +    eventlet.monkey_patch(all=False,socket=True,time=True,os=False,thread=False)&lt;br /&gt;
 +else:&lt;br /&gt;
 +    eventlet.monkey_patch(os=False)&lt;br /&gt;
 +&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
diff --combined nova/cmd/compute.py&lt;br /&gt;
index 61cf434,f03a9bd..0000000&lt;br /&gt;
--- a/nova/cmd/compute.py&lt;br /&gt;
+++ b/nova/cmd/compute.py&lt;br /&gt;
@@@ -33,19 -33,10 +33,19 @@@ &lt;br /&gt;
  from nova.openstack.common import log a&lt;br /&gt;
  from nova import service&lt;br /&gt;
  from nova import utils&lt;br /&gt;
  &lt;br /&gt;
 +cli_opts = [&lt;br /&gt;
 +        cfg.StrOpt('debug-host',&lt;br /&gt;
 +                    default=None,&lt;br /&gt;
 +                    help='Connect to debug host'),&lt;br /&gt;
 +        cfg.IntOpt('debug-port',&lt;br /&gt;
 +                    default=None,&lt;br /&gt;
 +                    help='Connect to debug host port'),&lt;br /&gt;
 +    ]&lt;br /&gt;
 +&lt;br /&gt;
  CONF = cfg.CONF&lt;br /&gt;
  CONF.import_opt('compute_topic', 'nova.compute.rpcapi')&lt;br /&gt;
  CONF.import_opt('use_local', 'nova.conductor.api', group='conductor')&lt;br /&gt;
 -&lt;br /&gt;
 +CONF.register_cli_opts(cli_opts)&lt;br /&gt;
  &lt;br /&gt;
  def block_db_access():&lt;br /&gt;
      class NoDB(object):&lt;br /&gt;
@@@ -72,16 -63,6 +72,16 @@@ def main()&lt;br /&gt;
          objects_base.NovaObject.indirection_api = \&lt;br /&gt;
              conductor_rpcapi.ConductorAPI()&lt;br /&gt;
  &lt;br /&gt;
 +    if CONF.debug_host:&lt;br /&gt;
 +        from pydev import pydevd&lt;br /&gt;
 +        print ('Listening on ' + str(CONF.debug_port) + ' for host ' +&lt;br /&gt;
 +                                    CONF.debug_host)&lt;br /&gt;
 +        pydevd.settrace(host=CONF.debug_host,&lt;br /&gt;
 +                        port=CONF.debug_port,&lt;br /&gt;
 +                        stdoutToServer=False,&lt;br /&gt;
 +                        stderrToServer=False)&lt;br /&gt;
 +&lt;br /&gt;
 +&lt;br /&gt;
      server = service.Service.create(binary='nova-compute',&lt;br /&gt;
                                      topic=CONF.compute_topic,&lt;br /&gt;
                                      db_allowed=False)&lt;br /&gt;
&lt;br /&gt;
Then in pycharm, create a remote debug session with host localhost and port whatever you want.  When you run it, use --debug_host &amp;lt;your IP&amp;gt; and --debug_port &amp;lt;your port&amp;gt;.  That's it!&lt;br /&gt;
&lt;br /&gt;
=Testing=&lt;br /&gt;
==Install python support libraries==&lt;br /&gt;
===apt-get libs===&lt;br /&gt;
 $ sudo apt-get install python-dev libmysqlclient-dev python-pip build-essential &lt;br /&gt;
 $ sudo apt-get install libxml2-dev libxslt1-dev libpq-dev&lt;br /&gt;
&lt;br /&gt;
===pip based tool installs===&lt;br /&gt;
 $ sudo pip install --upgrade pip &lt;br /&gt;
 $ sudo pip install --upgrade virtualenv&lt;br /&gt;
 $ sudo pip install MySQL-python&lt;br /&gt;
 $ sudo pip install tox&lt;br /&gt;
 $ sudo pip install python-subunit&lt;br /&gt;
&lt;br /&gt;
====pip proxy troubleshooting====&lt;br /&gt;
If you get connection refused here - try this&lt;br /&gt;
 export PIP_INDEX_URL=&amp;quot;http://pypi.openstack.org/openstack&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If you get the following error: &amp;quot;pip's wheel support requires setuptools &amp;gt;= 0.8 for dist-info support&amp;quot;, try this command&lt;br /&gt;
  sudo pip install setuptools --no-use-wheel --upgrade&lt;br /&gt;
&lt;br /&gt;
====Install OpenStack libs====&lt;br /&gt;
 $ cd /opt/stack/nova&lt;br /&gt;
 $ sudo pip install -i http://pypi.openstack.org/openstack  -r requirements.txt -r test-requirements.txt &lt;br /&gt;
&lt;br /&gt;
Note: make sure everything in the requires lists gets installed. Some installers have individual issues that you may have to clear one at a time. In particular lxslt has some issues that may require attention to properly clear.&lt;br /&gt;
&lt;br /&gt;
==Using TOX for testing==&lt;br /&gt;
See: https://wiki.openstack.org/wiki/ProjectTestingInterface&lt;br /&gt;
&lt;br /&gt;
Important tests to run before submitting for code review are&lt;br /&gt;
 tox -e py26,py27&lt;br /&gt;
 tox -e pep8&lt;br /&gt;
&lt;br /&gt;
As of this writing the run_tests.sh is the better way to run tests.&lt;br /&gt;
&lt;br /&gt;
== Using run_tests.sh for testing ==&lt;br /&gt;
 $ cd /opt/stack/nova&lt;br /&gt;
 $ ./run_tests.sh&lt;br /&gt;
... or ...&lt;br /&gt;
 $ ./run_tests.sh nova.tests.virt.vmwareapi&lt;br /&gt;
... to run only the vmware unit tests.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: If you want to use the python packages in your normal (non-virtual) environment then pass the -N flag&lt;br /&gt;
&lt;br /&gt;
==Code Coverage tests and information==&lt;br /&gt;
&lt;br /&gt;
=== with tox ===&lt;br /&gt;
 $ cd /opt/stack/nova&lt;br /&gt;
 $ tox -e cover  (code coverage)&lt;br /&gt;
&lt;br /&gt;
look under the cover directory for html reports on the code coverage for that module.  The file index.html contains the overall coverage report&lt;br /&gt;
&lt;br /&gt;
NOTE: tests may run 10, 20, or as long as 65 minutes (depending on your hardware, network, and system) and produce no output until they complete. This is normal. You system may become sluggish but should not lock up entirely, a system hang can be symptomatic of an improperly configured test environment. Tests will run on Mac OSX. 2 Cores with 2GB of RAM on an Ubuntu 12.04 machine that is properly configured should take between 10 and 20 minutes to complete.&lt;br /&gt;
&lt;br /&gt;
=== with run_tests.sh ===&lt;br /&gt;
  $ cd /opt/stack/nova&lt;br /&gt;
  $ ./run_tests.sh --coverage&lt;br /&gt;
&lt;br /&gt;
==Additional setup==&lt;br /&gt;
If you are on Ubuntu 12.04 and need to use Python 2.6 (which OpenStack needs for some test scripts) install the old version of python by doing the following:&lt;br /&gt;
&lt;br /&gt;
 $ sudo add-apt-repository ppa:fkrull/deadsnakes&lt;br /&gt;
 $ sudo apt-get update&lt;br /&gt;
 $ sudo apt-get install python2.6 python2.6-dev&lt;br /&gt;
&lt;br /&gt;
== Disabling verbose logging subsystems ==&lt;br /&gt;
&lt;br /&gt;
Add this line to nova.conf to disable the amqp logging (for example)&lt;br /&gt;
&lt;br /&gt;
default_log_levels=amqp=WARN,amqplib=WARN,sqlalchemy=WARN,boto=WARN,suds=INFO,keystone=INFO,eventlet.wsgi.server=WARN,nova.openstack.common.rpc.amqp=WARN&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
''Some workplaces may have to use special networking and/or proxy settings and that these may change when you are mobile. Those issues can cause problems with apt-get, git and other parts of OpenStack. If you are in a place that needs special proxy rules, [https://help.ubuntu.com/community/AptGet/Howto/#Setting_up_apt-get_to_use_a_http-proxy setup apt-get with a proxy]. You may also have to set [http://askubuntu.com/questions/158557/setting-proxy-from-terminal other proxy settings] depending on your company's particular firewall rules.''&lt;br /&gt;
&lt;br /&gt;
== Logging ==&lt;br /&gt;
You may have a situation where you need to monitor devstack's log files. Here's how you set up logging to file with the least amount of fuss.&lt;br /&gt;
&lt;br /&gt;
To set up logging of screen windows set the shell variable SCREEN_LOGDIR to the directory you want the log files to go. Log files will appear with names like ''screen-$SERVICE_NAME-$TIMESTAMP.log'' in that dir and symbolic link screen-$SERVICE_NAME.log will link to the latest log file. Logs are kept for as long specified in the LOGDAYS variable.&lt;br /&gt;
&lt;br /&gt;
Both SCREEN_LOGDIR and LOGDAYS are shell variables so you need to set them either in your shell or in localrc. Use shell commands if you only want the logs to work this one time. Use ''localrc'' if you always want to have log files appear.&lt;br /&gt;
&lt;br /&gt;
Assuming you have already made a directory...&lt;br /&gt;
&lt;br /&gt;
 $ mkdir ~/log&lt;br /&gt;
&lt;br /&gt;
Then, if you only want logs this one time, in your bash shell say...&lt;br /&gt;
&lt;br /&gt;
 $ export SCREEN_LOGDIR=~/log&lt;br /&gt;
 $ export LOGDAYS=2&lt;br /&gt;
&lt;br /&gt;
... or if you ''always'' want log files, in your localrc add the lines ...&lt;br /&gt;
&lt;br /&gt;
 SCREEN_LOGDIR=~/log&lt;br /&gt;
 LOGDAYS=2&lt;br /&gt;
&lt;br /&gt;
The stack.sh script will automatically rotate the log files for you.&lt;br /&gt;
&lt;br /&gt;
== MySQL issues ==&lt;br /&gt;
If you get stuck with Keystone try...&lt;br /&gt;
 $ mysql -u root -pnova&lt;br /&gt;
... if that doesn't work you probably have a broken mysql install. If you have problems getting mysql to behave, try purging the OpenStack version of the install and install the database manually. Here’s how to rip everything down and install mysql-server from scratch yourself.&lt;br /&gt;
&lt;br /&gt;
 $ ./unstack&lt;br /&gt;
 $ sudo apt-get purge mysql-server&lt;br /&gt;
... you may need to use the name mysql-server-5.5 instead ...&lt;br /&gt;
 $ sudo apt-get autoremove&lt;br /&gt;
 $ sudo apt-get install mysql-server-5.5&lt;br /&gt;
 $ sudo mysql_install_db&lt;br /&gt;
 $ sudo mysqladmin -u root password 'nova'&lt;br /&gt;
 $ sudo service mysql restart&lt;br /&gt;
 $ ./stack&lt;br /&gt;
&lt;br /&gt;
== Keystone Issues ==&lt;br /&gt;
If you get stuck when you are checking your keystone connection via curl then it’s your proxy settings.  Try setting the following in /etc/environment&lt;br /&gt;
 no_proxy=localhost,127.0.0.0/8,127.0.1.1,127.0.1.1*,local.home&lt;br /&gt;
&lt;br /&gt;
== General Database Issues ==&lt;br /&gt;
If you have trouble with testing or other database heavy activities you may need to follow:&lt;br /&gt;
 http://codeinthehole.com/writing/how-to-set-up-mysql-for-python-on-ubuntu/&lt;br /&gt;
&lt;br /&gt;
== rootwrap Issues ==&lt;br /&gt;
If networking suddenly stops working with an error like this&lt;br /&gt;
&lt;br /&gt;
 Traceback (most recent call last):&lt;br /&gt;
   File &amp;quot;/usr/bin/nova-rootwrap&amp;quot;, line 59, in &amp;lt;module&amp;gt;&lt;br /&gt;
     from nova.rootwrap import wrapper&lt;br /&gt;
 ImportError: No module named rootwrap&lt;br /&gt;
&lt;br /&gt;
Then something has added a broken rootwrap to /usr/bin.  Remove the /usr/bin/nova-rootwrap and it will use the correct one in /usr/local/bin&lt;br /&gt;
&lt;br /&gt;
=== Check if nova-compute is running ===&lt;br /&gt;
 $ screen -x&lt;br /&gt;
Note the tab n-cpu is running in. It is usually #6 but it could be a different tab on occasion. Tab to n-cpu's tab. '''ctl+a''' then '''6'''. If you see:&lt;br /&gt;
 $ cd /opt/stack/nova &amp;amp;&amp;amp; sg  '/usr/local/bin/nova-compute --config-file /etc/nova/nova.conf' || touch &amp;quot;/opt/stack/status/stack/n-cpu.failure&amp;quot;&lt;br /&gt;
 sg: group '/usr/local/bin/nova-compute --config-file /etc/nova/nova.conf' does not exist&lt;br /&gt;
 $&lt;br /&gt;
... then nova-compute did not start. You can manually start nova-compute by editing the command to read:&lt;br /&gt;
 $ cd /opt/stack/nova &amp;amp;&amp;amp; /usr/local/bin/nova-compute --config-file /etc/nova/nova.conf || touch &amp;quot;/opt/stack/status/stack/n-cpu.failure&amp;quot;&lt;br /&gt;
... which is permissible for development (but not for production).&lt;br /&gt;
&lt;br /&gt;
== Networking Troubleshooting ==&lt;br /&gt;
Remotely accessed workstations need to have an IP for you to SSH or VNC into in order to do work. These instructions mostly assume a ''locally accessible'' VM or physical machine. If you are working with a remotely hosted Ubuntu developer's workstation, you may have special networking concerns. If you find your use of nova-network is stealing your workstations IP in your environment (does not manifest in all environments so it's located here as a troubleshooting step) then set up a second interface for nova-network to use. &lt;br /&gt;
&lt;br /&gt;
=== Configure a fake networking interface ===&lt;br /&gt;
Configure a fake interface so that nova-network does not steal the real IP that you need to access the host remotely.  On Ubuntu: &lt;br /&gt;
&lt;br /&gt;
 $ sudo ip tuntap add dev tapfoo mode tap&lt;br /&gt;
 $ sudo ifconfig tapfoo $some_ip up &lt;br /&gt;
&lt;br /&gt;
NOTE: assign the interface an ip address that will be appropriate for your environment.&lt;br /&gt;
&lt;br /&gt;
Now that you have a fake ethernet interface, change your localrc and re-run ./stack.sh so that you can start nova-network on the new interface.&lt;br /&gt;
&lt;br /&gt;
add to your ''localrc'' file&lt;br /&gt;
 FLAT_INTERFACE=tapfoo&lt;br /&gt;
&lt;br /&gt;
=== Configure a Proxy ===&lt;br /&gt;
Some workplaces may have to use special networking and/or proxy settings and that these may change when you are mobile. Those issues can cause problems with apt-get, git and other parts of OpenStack. If you are in a place that needs special proxy rules, [https://help.ubuntu.com/community/AptGet/Howto/#Setting_up_apt-get_to_use_a_http-proxy setup apt-get with a proxy]. You may also have to set [http://askubuntu.com/questions/158557/setting-proxy-from-terminal other proxy settings] depending on your company's particular firewall rules.&lt;br /&gt;
&lt;br /&gt;
=Appendix=&lt;br /&gt;
&lt;br /&gt;
==Converting Images==&lt;br /&gt;
&lt;br /&gt;
===Converting other disk images to vmdk using qemu-img=== &lt;br /&gt;
Disk images in several formats (e.g. qcow2) can be converted to the VMDK format usable by the vmware nova driver using the qemu-img utility.&lt;br /&gt;
&lt;br /&gt;
For example the following command can be used to convert a qcow2 Ubuntu Precise cloud image (downloadable from http://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img):&lt;br /&gt;
 &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt; qemu-img convert -f raw ~/Downloads/precise-server-cloudimg-amd64-disk1.img -O vmdk precise-server-cloudimg-amd64-disk1.vmdk&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Converting a sparse vmdk to an ESX-compatible format=== &lt;br /&gt;
&lt;br /&gt;
Due to a bug (fixed with the following proposed [https://review.openstack.org/#/c/43994/ patch], currently under review) in how sparse vmdk disks are handled in the VC driver, &lt;br /&gt;
sparse disks have to be pre-converted to thin-provisioned or preallocated disks before they can be uploaded to glance to be used by the driver.&lt;br /&gt;
&lt;br /&gt;
There are several ways to perform such a conversion:&lt;br /&gt;
&lt;br /&gt;
====1. Using vSphere CLI (or sometimes called the remote CLI or rCLI) tools.====&lt;br /&gt;
&lt;br /&gt;
The latest version from the date this was written is 5.1 and the link is [https://my.vmware.com/web/vmware/details?downloadGroup=VSP510-VCLI-510&amp;amp;productId=285 here].&lt;br /&gt;
&lt;br /&gt;
Assuming that the sparse disk is made available on a datastore accessible by an ESX host, the following command converts it to preallocated format:&lt;br /&gt;
&lt;br /&gt;
 vmkfstools --server=ip_of_some_ESX_host -i /vmfs/volumes/datastore1/sparse.vmdk /vmfs/volumes/datastore1/converted.vmdk&lt;br /&gt;
&lt;br /&gt;
(note the vifs tool from the same CLI package can be used to upload the disk to be converted and downloaded the converted disk if necessary)&lt;br /&gt;
&lt;br /&gt;
====2. Using vmkfstools directly on the ESX host====&lt;br /&gt;
&lt;br /&gt;
If the SSH service is enabled on an ESX host, the sparse disk can be uploaded to the ESX datastore via scp, and the vmkfstools local to the ESX host can use used to perform the conversion: &lt;br /&gt;
&lt;br /&gt;
(After logging to the host via ssh)&lt;br /&gt;
 vmkfstools -i /vmfs/volumes/datastore1/sparse.vmdk /vmfs/volumes/datastore1/converted.vmdk&lt;br /&gt;
&lt;br /&gt;
====3. vmware-vdiskmanager====&lt;br /&gt;
&lt;br /&gt;
vmware-vdiskmanager is a utility that comes bundled with VMware Fusion and VMware Workstation. &lt;br /&gt;
Below is an example of converting a sparse disk to preallocated format:&lt;br /&gt;
&lt;br /&gt;
 '/Applications/VMware Fusion.app/Contents/Library/vmware-vdiskmanager' -r sparse.vmdk -t 4 converted.vmdk&lt;br /&gt;
&lt;br /&gt;
In all the above cases, the converted vmdk is actually a pair of files, the descriptor file &amp;lt;i&amp;gt;converted&amp;lt;/i&amp;gt;.vmdk and the actual virtual disk data file &amp;lt;i&amp;gt;converted&amp;lt;/i&amp;gt;-flat.vmdk. The file to be uploaded to glance is &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;converted&amp;lt;/i&amp;gt;-flat.vmdk&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
===Specifying correct adapter type when uploading and image to glance===&lt;br /&gt;
&lt;br /&gt;
Currently, there is a limitation that OS boot vmdk disks with an ide adapter type cannot be attached to a virtual SCSI controller, and likewise disks with one of the scsi adapter types (e.g. busLogic, lsiLogic) cannot be attached to the IDE controller. Therefore it is important when uploading an image to glance that the correct vmware_adaptertype property be set. In particular, vmdk disks converted from other formats via qemu-img will _always_ be a monolithic sparse vmdk with an IDE adapter type. So using the above example of the Precise Ubuntu image, after the qemu-img conversion and conversion to a preallocated disk, the command to upload the vmdk disk should be something like:&lt;br /&gt;
&lt;br /&gt;
   glance image-create --name precise-cloud --is-public=True --container-format=bare --disk-format=vmdk --property vmware_disktype=&amp;quot;preallocated&amp;quot; --property vmware_adaptertype=&amp;quot;ide&amp;quot; &amp;lt; converted-flat.vmdk&lt;br /&gt;
&lt;br /&gt;
====Obtaining the adapter type associated with a vmdk====&lt;br /&gt;
&lt;br /&gt;
If the vmdk is a monolithic file (such as one produced by the qemu-img conversion) the adapter type can be retrieved by &lt;br /&gt;
&lt;br /&gt;
   head -20 some_monolithic.vmdk&lt;br /&gt;
&lt;br /&gt;
and looking for the ddb.adapterType=XXX property&lt;br /&gt;
&lt;br /&gt;
If the vmdk has a descriptor/data file pair (foo.vmdk and foo-XXXX.vmdk). The descriptor file foo.vmdk can be examined for the same ddb.adapterType property)&lt;br /&gt;
&lt;br /&gt;
==List of Reviews in progress==&lt;br /&gt;
https://review.openstack.org/#/q/message:vmware+OR+message:vcenter+OR+message:vsphere+OR+message:esx+OR+message:vcdriver+OR+message:datastore,n,z&lt;/div&gt;</summary>
		<author><name>Arnaud Legendre</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=NovaVMware/DeveloperGuide&amp;diff=38937</id>
		<title>NovaVMware/DeveloperGuide</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=NovaVMware/DeveloperGuide&amp;diff=38937"/>
				<updated>2013-12-23T23:54:45Z</updated>
		
		<summary type="html">&lt;p&gt;Arnaud Legendre: /* Upload your VMDK to glance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Developer's DevStack + vSphere Guide=&lt;br /&gt;
&lt;br /&gt;
This is a short guide for developers interested in working on OpenStack and [[vSphere]] (ESX, [[ESXi]], and [[vCenter]]) drivers.&lt;br /&gt;
&lt;br /&gt;
==vSphere Environment and Inventory==&lt;br /&gt;
&lt;br /&gt;
Set up a vSphere 5.1 (or better) developer's environment. For development purposes, you'll need to have one of this inventory type:&lt;br /&gt;
&lt;br /&gt;
[[File:VCenter cluster inventory.png|framed|none|inventory with a DRS cluster]]&lt;br /&gt;
&lt;br /&gt;
Note: The cluster should be DRS enabled with &amp;quot;Fully automated&amp;quot; placement turned on. Also, if you can't get two or more ESX hosts to work with, you can still work with one host in the cluster, but you won't be able to observe VM placement behaviors since there won't be anywhere to place the VMs except for the solitary host.&lt;br /&gt;
&lt;br /&gt;
=Development Environment=&lt;br /&gt;
== Get an Ubuntu 12.04 (suggested) VM setup==&lt;br /&gt;
This Ubuntu workstation can run as a VM itself, but it should have public internet access (ideally direct, but http proxy is workable if you don’t need to commit code back to OpenStack if you do, see the troubleshooting page for steps that ''may'' help).  It should also have a reasonably high bandwidth link to the the vSphere hosts, as it will need to stream images from the Ubuntu workstation to the vSphere host. &lt;br /&gt;
&lt;br /&gt;
We suggest your Ubuntu workstation have&lt;br /&gt;
* at least 10 GB disk, with 20+ GB being ideal. &lt;br /&gt;
* at least one vCPU, with 2 being ideal.&lt;br /&gt;
* 4 GB of RAM.&lt;br /&gt;
&lt;br /&gt;
=== optional setup ===&lt;br /&gt;
If you are using a remote workstation (not running locally on your physical computer) you may have to follow some of the extra steps under [[NovaVMware/DeveloperGuide#Networking_Troubleshooting|Network Troubleshooting]]&lt;br /&gt;
&lt;br /&gt;
==install Devstack (http://devstack.org/) in your new VM==&lt;br /&gt;
Once booted, run: &lt;br /&gt;
 sudo apt-get install git&lt;br /&gt;
 git clone http://github.com/openstack-dev/devstack.git&lt;br /&gt;
 cd devstack&lt;br /&gt;
&lt;br /&gt;
=Setup localrc for DevStack=&lt;br /&gt;
create a file named “localrc” in your devstack directory with the content shown below (for each item with $variable_name, you will need to enter values specific to your environment, the rest you can just leave as is).  &lt;br /&gt;
&lt;br /&gt;
file ~/devstack/''localrc''&lt;br /&gt;
 ENABLED_SERVICES=g-api,g-reg,key,n-api,n-crt,n-cpu,n-net,n-cond,n-sch,rabbit,mysql,horizon&lt;br /&gt;
 VIRT_DRIVER=vsphere&lt;br /&gt;
 VMWAREAPI_IP='''$your_vCenter_ip_address'''&lt;br /&gt;
 VMWAREAPI_USER=root&lt;br /&gt;
 VMWAREAPI_PASSWORD='''$password_goes_here'''&lt;br /&gt;
 VMWAREAPI_CLUSTER='''$your_cluster_name'''&lt;br /&gt;
 DATABASE_PASSWORD=nova&lt;br /&gt;
 RABBIT_PASSWORD=nova&lt;br /&gt;
 SERVICE_TOKEN=nova&lt;br /&gt;
 SERVICE_PASSWORD=nova&lt;br /&gt;
 ADMIN_PASSWORD=nova&lt;br /&gt;
 HOST_IP='''$your_development_vm_ip'''&lt;br /&gt;
&lt;br /&gt;
Note: if you would like to use a specific datastore then configure ''VMWAREAPI_DATASTORE_REGEX''&lt;br /&gt;
&lt;br /&gt;
Note: omit the line ''VMWAREAPI_CLUSTER'' if you are using the ''trivial'' inventory example.&lt;br /&gt;
&lt;br /&gt;
Note: If you want the logs to be written to disk (not just accessible via screen), use the define SCREEN_LOGDIR to point to path &lt;br /&gt;
where you want to the logs to reside.  For example&lt;br /&gt;
&lt;br /&gt;
SCREEN_LOGDIR=/var/log&lt;br /&gt;
&lt;br /&gt;
=start stack (first time)=&lt;br /&gt;
 ./stack.sh&lt;br /&gt;
This will take a long time the first time, as it pulls down all code and dependencies.&lt;br /&gt;
Note: may fail on first start.&lt;br /&gt;
&lt;br /&gt;
=Credentials and Environment Variables=&lt;br /&gt;
get the OpenStack API credentials in your environment variables:&lt;br /&gt;
&lt;br /&gt;
 $ source openrc demo demo&lt;br /&gt;
&lt;br /&gt;
This is needed anytime you make a call using an openstack CLI client like ‘nova’, ‘glance’, or ‘quantum’.  You can rerun this at any time from the devstack directory if you need to re-login in at a later point.  If you want admin credentials then use admin ($ source openrc admin admin)&lt;br /&gt;
&lt;br /&gt;
=Glance Initial Setup=&lt;br /&gt;
Get a VMDK to use as a disk image and upload it to OpenStack using the Glance API.  The latest code (mid-Aug) has a change which uploads the image when you 1st run devstack.  After glance starts, run the following command to see if you have a pre-configured image in glance&lt;br /&gt;
&lt;br /&gt;
$ glance image-list&lt;br /&gt;
&lt;br /&gt;
==Get an initial VMDK to work with==&lt;br /&gt;
There are a lot of “gotchas” around what VMDK disks work with OpenStack + vSphere, so we strongly suggest using the provided image to start.  In the Appendix there is information about creating/converting your own images.  &lt;br /&gt;
&lt;br /&gt;
download the image 1 GB debian disk image (user/password to login this image after booting is nicira/nicira).  &lt;br /&gt;
 http://partnerweb.vmware.com/programs/vmdkimage/debian-2.6.32-i686.vmdk &lt;br /&gt;
Place the file under your home directory &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;~/&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: if you are using nested hyper-visors you will need to obtain a 32bit image to use or troubleshoot: how to enable nested ESXi &amp;amp; other Hypervisors in vSphere 5.1 - See more at: http://www.virtuallyghetto.com/2012/08/how-to-enable-nested-esxi-other.html#sthash.NJ2VNiwt.dpuf&lt;br /&gt;
&lt;br /&gt;
==Upload your VMDK to glance==&lt;br /&gt;
It is recommended to use the upload_images.sh script provided in the Devstack to upload images to Glance: &lt;br /&gt;
 https://github.com/openstack-dev/devstack/blob/master/tools/upload_image.sh. &lt;br /&gt;
The script will introspect the image provided to extract the metadata.&lt;br /&gt;
It expects a URL as unique argument. The scheme of the URL can be http(s) or file. When a flat disk (*-flat.vmdk) is provided, the script will attempt to retrieve the descriptor (*.vmdk) associated to find the correct metadata. The same way, the user can specify a descriptor: in this case, the script will try to find the flat disk.&lt;br /&gt;
&lt;br /&gt;
Example of execution:&lt;br /&gt;
 $ cd ~/devstack/tools&lt;br /&gt;
 $ ./upload_image.sh http://partnerweb.vmware.com/programs/vmdkimage/debian-2.6.32-i686.vmdk&lt;br /&gt;
 $ ./upload_image.sh file:///home/user/images/debian-2.6.32-i686.vmdk&lt;br /&gt;
&lt;br /&gt;
Specific metadata can be provided: the expected format of the image filename is &amp;lt;name&amp;gt;-&amp;lt;disk type&amp;gt;;&amp;lt;storage adapter&amp;gt;;&amp;lt;network adapter&amp;gt;.vmdk&lt;br /&gt;
&lt;br /&gt;
Alternatively, it is possible to call directly the Glance client:&lt;br /&gt;
&lt;br /&gt;
 $ glance add name=&amp;quot;Debian&amp;quot; disk_format=vmdk container_format=bare is_public=true \&lt;br /&gt;
    --property vmware_disktype=&amp;quot;preallocated&amp;quot; &amp;lt; ~/debian-2.6.32-i686.vmdk&lt;br /&gt;
... or ...&lt;br /&gt;
 $ glance image-create --name Debian --is-public=True --container-format=bare \&lt;br /&gt;
    --disk-format=vmdk --property vmware-disktype=&amp;quot;preallocated&amp;quot; &amp;lt; ~/debian-2.6.32-i686.vmdk &lt;br /&gt;
&lt;br /&gt;
This will print out an &amp;lt;image-id&amp;gt; for use below.  If you forget it, you can always run “glance image-list” to see all existing images.&lt;br /&gt;
&lt;br /&gt;
There is also an IDE based image that can be used. &lt;br /&gt;
&lt;br /&gt;
 http://partnerweb.vmware.com/programs/vmdkimage/trend-tinyvm1-flat.vmdk&lt;br /&gt;
Note the vmware_adaptertype is set to &amp;quot;ide&amp;quot; and vmware_disktype is set to &amp;quot;thin&amp;quot;&lt;br /&gt;
 $ glance image-create --name trend-thin --is-public=True --container-format=bare --disk-format=vmdk --property vmware_disktype=&amp;quot;thin&amp;quot; --property vmware_adaptertype=&amp;quot;ide&amp;quot; &amp;lt; trend-tinyvm1-flat.vmdk&lt;br /&gt;
&lt;br /&gt;
=Nova Boot=&lt;br /&gt;
boot a VM using the “&amp;lt;image-id&amp;gt;” from above&lt;br /&gt;
&lt;br /&gt;
 $ nova boot --image &amp;lt;image-id&amp;gt; --flavor 1 test1&lt;br /&gt;
&lt;br /&gt;
Now you can interact with the image using other nova client commands.  &lt;br /&gt;
For example&lt;br /&gt;
 $ nova list&lt;br /&gt;
 +--------------------------------------+-------+--------+------------+-------------+------------------+&lt;br /&gt;
 | ID                                   | Name  | Status | Task State | Power State | Networks         |&lt;br /&gt;
 +--------------------------------------+-------+--------+------------+-------------+------------------+&lt;br /&gt;
 | 9bb724bf-298d-4a63-a653-dab7fcbd9ac7 | test1 | ACTIVE  | None       | NOSTATE     | private=10.0.0.2 |&lt;br /&gt;
 +--------------------------------------+-------+--------+------------+-------------+------------------+&lt;br /&gt;
&lt;br /&gt;
Note: if your disk is big, it can take a VERY long time to stream the image from glance to your datastore (e.g., ~7 minutes for a 1 GB thick image).   This will happen only the first time a new image UUID is used on a datastore. You can monitor progress by viewing the size of the file in the vmware_base directory of the filestore.  &lt;br /&gt;
&lt;br /&gt;
Once this is done, you can view the VM using vCenter. The username/password for the above Debian image is nicira/nicira .&lt;br /&gt;
&lt;br /&gt;
You can access the OpenStack Web GUI (called horizon) by accessing your Ubuntu host on port 80, though currently VNC access via Horizon is broken (see: https://review.openstack.org/#/c/30036/ for a patch to fix this).&lt;br /&gt;
&lt;br /&gt;
=Using Screen=&lt;br /&gt;
Use screen to interact with individual openstack services&lt;br /&gt;
&lt;br /&gt;
 $ screen -x stack&lt;br /&gt;
&lt;br /&gt;
See: http://www.gnu.org/software/screen/manual/screen.html &amp;lt;- for how to use&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Control + a&amp;quot; enters command mode... enter this for each new command character&lt;br /&gt;
characters 0 through 9 switch tabs&lt;br /&gt;
** the 'd' character detaches the session&lt;br /&gt;
** the '[' character enters &amp;quot;copy mode&amp;quot; which allows you to navigate the screen trace and 'escape' escapes the copy mode.&lt;br /&gt;
** the '&amp;quot;' character shows a list of screens which you can navigate with the up and down arrows&lt;br /&gt;
&lt;br /&gt;
For example the nova-compute service runs on the n-cpu tab which is usually number 6. So to navigate to it, hit Ctrl+a then press '6' and you'll tab to it. You can then interact with the terminal for n-cpu.&lt;br /&gt;
&lt;br /&gt;
=Working the Development Environment=&lt;br /&gt;
If you want to reset your environment, run: &lt;br /&gt;
 ./unstack.sh &lt;br /&gt;
 ./stack.sh &lt;br /&gt;
&lt;br /&gt;
* This run of stack.sh will be faster (~1 minute) as it resets all database and service state, but does not need to re-download packages or source code.  &lt;br /&gt;
* After running ./unstack be sure to clean out all your datastores and delete any files left behind on accident. This will prevent a great number of problems people won't see in production environments. (For example: partially uploaded VMDK.)&lt;br /&gt;
&lt;br /&gt;
Note: the source code is not automatically updated when you reset your environment.  This is valuable, as you can manage your source code manually via git, having many branches, etc.  &lt;br /&gt;
&lt;br /&gt;
= Remote Debugger =&lt;br /&gt;
&lt;br /&gt;
To use the pycharm remote debugger (any maybe [http://wiki.xbmc.org/index.php?title=How-to:Debug_Python_Scripts_with_Eclipse eclipse]), make the following changes in your nova code&lt;br /&gt;
&lt;br /&gt;
index 0e7ecdc,87edf9b..0000000&lt;br /&gt;
--- a/nova/cmd/__init__.py&lt;br /&gt;
+++ b/nova/cmd/__init__.py&lt;br /&gt;
@@@ -31,8 -31,4 +31,8 @@@ &lt;br /&gt;
  os.environ['EVENTLET_NO_GREENDNS'] = 'y&lt;br /&gt;
  &lt;br /&gt;
  import eventlet&lt;br /&gt;
  &lt;br /&gt;
 -eventlet.monkey_patch(os=False)&lt;br /&gt;
 +if '--debug-host' and '--debug-port' in sys.argv:&lt;br /&gt;
 +    eventlet.monkey_patch(all=False,socket=True,time=True,os=False,thread=False)&lt;br /&gt;
 +else:&lt;br /&gt;
 +    eventlet.monkey_patch(os=False)&lt;br /&gt;
 +&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
diff --combined nova/cmd/compute.py&lt;br /&gt;
index 61cf434,f03a9bd..0000000&lt;br /&gt;
--- a/nova/cmd/compute.py&lt;br /&gt;
+++ b/nova/cmd/compute.py&lt;br /&gt;
@@@ -33,19 -33,10 +33,19 @@@ &lt;br /&gt;
  from nova.openstack.common import log a&lt;br /&gt;
  from nova import service&lt;br /&gt;
  from nova import utils&lt;br /&gt;
  &lt;br /&gt;
 +cli_opts = [&lt;br /&gt;
 +        cfg.StrOpt('debug-host',&lt;br /&gt;
 +                    default=None,&lt;br /&gt;
 +                    help='Connect to debug host'),&lt;br /&gt;
 +        cfg.IntOpt('debug-port',&lt;br /&gt;
 +                    default=None,&lt;br /&gt;
 +                    help='Connect to debug host port'),&lt;br /&gt;
 +    ]&lt;br /&gt;
 +&lt;br /&gt;
  CONF = cfg.CONF&lt;br /&gt;
  CONF.import_opt('compute_topic', 'nova.compute.rpcapi')&lt;br /&gt;
  CONF.import_opt('use_local', 'nova.conductor.api', group='conductor')&lt;br /&gt;
 -&lt;br /&gt;
 +CONF.register_cli_opts(cli_opts)&lt;br /&gt;
  &lt;br /&gt;
  def block_db_access():&lt;br /&gt;
      class NoDB(object):&lt;br /&gt;
@@@ -72,16 -63,6 +72,16 @@@ def main()&lt;br /&gt;
          objects_base.NovaObject.indirection_api = \&lt;br /&gt;
              conductor_rpcapi.ConductorAPI()&lt;br /&gt;
  &lt;br /&gt;
 +    if CONF.debug_host:&lt;br /&gt;
 +        from pydev import pydevd&lt;br /&gt;
 +        print ('Listening on ' + str(CONF.debug_port) + ' for host ' +&lt;br /&gt;
 +                                    CONF.debug_host)&lt;br /&gt;
 +        pydevd.settrace(host=CONF.debug_host,&lt;br /&gt;
 +                        port=CONF.debug_port,&lt;br /&gt;
 +                        stdoutToServer=False,&lt;br /&gt;
 +                        stderrToServer=False)&lt;br /&gt;
 +&lt;br /&gt;
 +&lt;br /&gt;
      server = service.Service.create(binary='nova-compute',&lt;br /&gt;
                                      topic=CONF.compute_topic,&lt;br /&gt;
                                      db_allowed=False)&lt;br /&gt;
&lt;br /&gt;
Then in pycharm, create a remote debug session with host localhost and port whatever you want.  When you run it, use --debug_host &amp;lt;your IP&amp;gt; and --debug_port &amp;lt;your port&amp;gt;.  That's it!&lt;br /&gt;
&lt;br /&gt;
=Testing=&lt;br /&gt;
==Install python support libraries==&lt;br /&gt;
===apt-get libs===&lt;br /&gt;
 $ sudo apt-get install python-dev libmysqlclient-dev python-pip build-essential &lt;br /&gt;
 $ sudo apt-get install libxml2-dev libxslt1-dev libpq-dev&lt;br /&gt;
&lt;br /&gt;
===pip based tool installs===&lt;br /&gt;
 $ sudo pip install --upgrade pip &lt;br /&gt;
 $ sudo pip install --upgrade virtualenv&lt;br /&gt;
 $ sudo pip install MySQL-python&lt;br /&gt;
 $ sudo pip install tox&lt;br /&gt;
 $ sudo pip install python-subunit&lt;br /&gt;
&lt;br /&gt;
====pip proxy troubleshooting====&lt;br /&gt;
If you get connection refused here - try this&lt;br /&gt;
 export PIP_INDEX_URL=&amp;quot;http://pypi.openstack.org/openstack&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====Install OpenStack libs====&lt;br /&gt;
 $ cd /opt/stack/nova&lt;br /&gt;
 $ sudo pip install -i http://pypi.openstack.org/openstack  -r requirements.txt -r test-requirements.txt &lt;br /&gt;
&lt;br /&gt;
Note: make sure everything in the requires lists gets installed. Some installers have individual issues that you may have to clear one at a time. In particular lxslt has some issues that may require attention to properly clear.&lt;br /&gt;
&lt;br /&gt;
==Using TOX for testing==&lt;br /&gt;
See: https://wiki.openstack.org/wiki/ProjectTestingInterface&lt;br /&gt;
&lt;br /&gt;
Important tests to run before submitting for code review are&lt;br /&gt;
 tox -e py26,py27&lt;br /&gt;
 tox -e pep8&lt;br /&gt;
&lt;br /&gt;
As of this writing the run_tests.sh is the better way to run tests.&lt;br /&gt;
&lt;br /&gt;
== Using run_tests.sh for testing ==&lt;br /&gt;
 $ cd /opt/stack/nova&lt;br /&gt;
 $ ./run_tests.sh&lt;br /&gt;
... or ...&lt;br /&gt;
 $ ./run_tests.sh nova.tests.virt.vmwareapi&lt;br /&gt;
... to run only the vmware unit tests.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: If you want to use the python packages in your normal (non-virtual) environment then pass the -N flag&lt;br /&gt;
&lt;br /&gt;
==Code Coverage tests and information==&lt;br /&gt;
&lt;br /&gt;
=== with tox ===&lt;br /&gt;
 $ cd /opt/stack/nova&lt;br /&gt;
 $ tox -e cover  (code coverage)&lt;br /&gt;
&lt;br /&gt;
look under the cover directory for html reports on the code coverage for that module.  The file index.html contains the overall coverage report&lt;br /&gt;
&lt;br /&gt;
NOTE: tests may run 10, 20, or as long as 65 minutes (depending on your hardware, network, and system) and produce no output until they complete. This is normal. You system may become sluggish but should not lock up entirely, a system hang can be symptomatic of an improperly configured test environment. Tests will run on Mac OSX. 2 Cores with 2GB of RAM on an Ubuntu 12.04 machine that is properly configured should take between 10 and 20 minutes to complete.&lt;br /&gt;
&lt;br /&gt;
=== with run_tests.sh ===&lt;br /&gt;
  $ cd /opt/stack/nova&lt;br /&gt;
  $ ./run_tests.sh --coverage&lt;br /&gt;
&lt;br /&gt;
==Additional setup==&lt;br /&gt;
If you are on Ubuntu 12.04 and need to use Python 2.6 (which OpenStack needs for some test scripts) install the old version of python by doing the following:&lt;br /&gt;
&lt;br /&gt;
 $ sudo add-apt-repository ppa:fkrull/deadsnakes&lt;br /&gt;
 $ sudo apt-get update&lt;br /&gt;
 $ sudo apt-get install python2.6 python2.6-dev&lt;br /&gt;
&lt;br /&gt;
== Disabling verbose logging subsystems ==&lt;br /&gt;
&lt;br /&gt;
Add this line to nova.conf to disable the amqp logging (for example)&lt;br /&gt;
&lt;br /&gt;
default_log_levels=amqp=WARN,amqplib=WARN,sqlalchemy=WARN,boto=WARN,suds=INFO,keystone=INFO,eventlet.wsgi.server=WARN,nova.openstack.common.rpc.amqp=WARN&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
''Some workplaces may have to use special networking and/or proxy settings and that these may change when you are mobile. Those issues can cause problems with apt-get, git and other parts of OpenStack. If you are in a place that needs special proxy rules, [https://help.ubuntu.com/community/AptGet/Howto/#Setting_up_apt-get_to_use_a_http-proxy setup apt-get with a proxy]. You may also have to set [http://askubuntu.com/questions/158557/setting-proxy-from-terminal other proxy settings] depending on your company's particular firewall rules.''&lt;br /&gt;
&lt;br /&gt;
== Logging ==&lt;br /&gt;
You may have a situation where you need to monitor devstack's log files. Here's how you set up logging to file with the least amount of fuss.&lt;br /&gt;
&lt;br /&gt;
To set up logging of screen windows set the shell variable SCREEN_LOGDIR to the directory you want the log files to go. Log files will appear with names like ''screen-$SERVICE_NAME-$TIMESTAMP.log'' in that dir and symbolic link screen-$SERVICE_NAME.log will link to the latest log file. Logs are kept for as long specified in the LOGDAYS variable.&lt;br /&gt;
&lt;br /&gt;
Both SCREEN_LOGDIR and LOGDAYS are shell variables so you need to set them either in your shell or in localrc. Use shell commands if you only want the logs to work this one time. Use ''localrc'' if you always want to have log files appear.&lt;br /&gt;
&lt;br /&gt;
Assuming you have already made a directory...&lt;br /&gt;
&lt;br /&gt;
 $ mkdir ~/log&lt;br /&gt;
&lt;br /&gt;
Then, if you only want logs this one time, in your bash shell say...&lt;br /&gt;
&lt;br /&gt;
 $ export SCREEN_LOGDIR=~/log&lt;br /&gt;
 $ export LOGDAYS=2&lt;br /&gt;
&lt;br /&gt;
... or if you ''always'' want log files, in your localrc add the lines ...&lt;br /&gt;
&lt;br /&gt;
 SCREEN_LOGDIR=~/log&lt;br /&gt;
 LOGDAYS=2&lt;br /&gt;
&lt;br /&gt;
The stack.sh script will automatically rotate the log files for you.&lt;br /&gt;
&lt;br /&gt;
== MySQL issues ==&lt;br /&gt;
If you get stuck with Keystone try...&lt;br /&gt;
 $ mysql -u root -pnova&lt;br /&gt;
... if that doesn't work you probably have a broken mysql install. If you have problems getting mysql to behave, try purging the OpenStack version of the install and install the database manually. Here’s how to rip everything down and install mysql-server from scratch yourself.&lt;br /&gt;
&lt;br /&gt;
 $ ./unstack&lt;br /&gt;
 $ sudo apt-get purge mysql-server&lt;br /&gt;
... you may need to use the name mysql-server-5.5 instead ...&lt;br /&gt;
 $ sudo apt-get autoremove&lt;br /&gt;
 $ sudo apt-get install mysql-server-5.5&lt;br /&gt;
 $ sudo mysql_install_db&lt;br /&gt;
 $ sudo mysqladmin -u root password 'nova'&lt;br /&gt;
 $ sudo service mysql restart&lt;br /&gt;
 $ ./stack&lt;br /&gt;
&lt;br /&gt;
== Keystone Issues ==&lt;br /&gt;
If you get stuck when you are checking your keystone connection via curl then it’s your proxy settings.  Try setting the following in /etc/environment&lt;br /&gt;
 no_proxy=localhost,127.0.0.0/8,127.0.1.1,127.0.1.1*,local.home&lt;br /&gt;
&lt;br /&gt;
== General Database Issues ==&lt;br /&gt;
If you have trouble with testing or other database heavy activities you may need to follow:&lt;br /&gt;
 http://codeinthehole.com/writing/how-to-set-up-mysql-for-python-on-ubuntu/&lt;br /&gt;
&lt;br /&gt;
== rootwrap Issues ==&lt;br /&gt;
If networking suddenly stops working with an error like this&lt;br /&gt;
&lt;br /&gt;
 Traceback (most recent call last):&lt;br /&gt;
   File &amp;quot;/usr/bin/nova-rootwrap&amp;quot;, line 59, in &amp;lt;module&amp;gt;&lt;br /&gt;
     from nova.rootwrap import wrapper&lt;br /&gt;
 ImportError: No module named rootwrap&lt;br /&gt;
&lt;br /&gt;
Then something has added a broken rootwrap to /usr/bin.  Remove the /usr/bin/nova-rootwrap and it will use the correct one in /usr/local/bin&lt;br /&gt;
&lt;br /&gt;
=== Check if nova-compute is running ===&lt;br /&gt;
 $ screen -x&lt;br /&gt;
Note the tab n-cpu is running in. It is usually #6 but it could be a different tab on occasion. Tab to n-cpu's tab. '''ctl+a''' then '''6'''. If you see:&lt;br /&gt;
 $ cd /opt/stack/nova &amp;amp;&amp;amp; sg  '/usr/local/bin/nova-compute --config-file /etc/nova/nova.conf' || touch &amp;quot;/opt/stack/status/stack/n-cpu.failure&amp;quot;&lt;br /&gt;
 sg: group '/usr/local/bin/nova-compute --config-file /etc/nova/nova.conf' does not exist&lt;br /&gt;
 $&lt;br /&gt;
... then nova-compute did not start. You can manually start nova-compute by editing the command to read:&lt;br /&gt;
 $ cd /opt/stack/nova &amp;amp;&amp;amp; /usr/local/bin/nova-compute --config-file /etc/nova/nova.conf || touch &amp;quot;/opt/stack/status/stack/n-cpu.failure&amp;quot;&lt;br /&gt;
... which is permissible for development (but not for production).&lt;br /&gt;
&lt;br /&gt;
== Networking Troubleshooting ==&lt;br /&gt;
Remotely accessed workstations need to have an IP for you to SSH or VNC into in order to do work. These instructions mostly assume a ''locally accessible'' VM or physical machine. If you are working with a remotely hosted Ubuntu developer's workstation, you may have special networking concerns. If you find your use of nova-network is stealing your workstations IP in your environment (does not manifest in all environments so it's located here as a troubleshooting step) then set up a second interface for nova-network to use. &lt;br /&gt;
&lt;br /&gt;
=== Configure a fake networking interface ===&lt;br /&gt;
Configure a fake interface so that nova-network does not steal the real IP that you need to access the host remotely.  On Ubuntu: &lt;br /&gt;
&lt;br /&gt;
 $ sudo ip tuntap add dev tapfoo mode tap&lt;br /&gt;
 $ sudo ifconfig tapfoo $some_ip up &lt;br /&gt;
&lt;br /&gt;
NOTE: assign the interface an ip address that will be appropriate for your environment.&lt;br /&gt;
&lt;br /&gt;
Now that you have a fake ethernet interface, change your localrc and re-run ./stack.sh so that you can start nova-network on the new interface.&lt;br /&gt;
&lt;br /&gt;
add to your ''localrc'' file&lt;br /&gt;
 FLAT_INTERFACE=tapfoo&lt;br /&gt;
&lt;br /&gt;
=== Configure a Proxy ===&lt;br /&gt;
Some workplaces may have to use special networking and/or proxy settings and that these may change when you are mobile. Those issues can cause problems with apt-get, git and other parts of OpenStack. If you are in a place that needs special proxy rules, [https://help.ubuntu.com/community/AptGet/Howto/#Setting_up_apt-get_to_use_a_http-proxy setup apt-get with a proxy]. You may also have to set [http://askubuntu.com/questions/158557/setting-proxy-from-terminal other proxy settings] depending on your company's particular firewall rules.&lt;br /&gt;
&lt;br /&gt;
=Appendix=&lt;br /&gt;
&lt;br /&gt;
==Converting Images==&lt;br /&gt;
&lt;br /&gt;
===Converting other disk images to vmdk using qemu-img=== &lt;br /&gt;
Disk images in several formats (e.g. qcow2) can be converted to the VMDK format usable by the vmware nova driver using the qemu-img utility.&lt;br /&gt;
&lt;br /&gt;
For example the following command can be used to convert a qcow2 Ubuntu Precise cloud image (downloadable from http://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img):&lt;br /&gt;
 &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt; qemu-img convert -f raw ~/Downloads/precise-server-cloudimg-amd64-disk1.img -O vmdk precise-server-cloudimg-amd64-disk1.vmdk&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Converting a sparse vmdk to an ESX-compatible format=== &lt;br /&gt;
&lt;br /&gt;
Due to a bug (fixed with the following proposed [https://review.openstack.org/#/c/43994/ patch], currently under review) in how sparse vmdk disks are handled in the VC driver, &lt;br /&gt;
sparse disks have to be pre-converted to thin-provisioned or preallocated disks before they can be uploaded to glance to be used by the driver.&lt;br /&gt;
&lt;br /&gt;
There are several ways to perform such a conversion:&lt;br /&gt;
&lt;br /&gt;
====1. Using vSphere CLI (or sometimes called the remote CLI or rCLI) tools.====&lt;br /&gt;
&lt;br /&gt;
The latest version from the date this was written is 5.1 and the link is [https://my.vmware.com/web/vmware/details?downloadGroup=VSP510-VCLI-510&amp;amp;productId=285 here].&lt;br /&gt;
&lt;br /&gt;
Assuming that the sparse disk is made available on a datastore accessible by an ESX host, the following command converts it to preallocated format:&lt;br /&gt;
&lt;br /&gt;
 vmkfstools --server=ip_of_some_ESX_host -i /vmfs/volumes/datastore1/sparse.vmdk /vmfs/volumes/datastore1/converted.vmdk&lt;br /&gt;
&lt;br /&gt;
(note the vifs tool from the same CLI package can be used to upload the disk to be converted and downloaded the converted disk if necessary)&lt;br /&gt;
&lt;br /&gt;
====2. Using vmkfstools directly on the ESX host====&lt;br /&gt;
&lt;br /&gt;
If the SSH service is enabled on an ESX host, the sparse disk can be uploaded to the ESX datastore via scp, and the vmkfstools local to the ESX host can use used to perform the conversion: &lt;br /&gt;
&lt;br /&gt;
(After logging to the host via ssh)&lt;br /&gt;
 vmkfstools -i /vmfs/volumes/datastore1/sparse.vmdk /vmfs/volumes/datastore1/converted.vmdk&lt;br /&gt;
&lt;br /&gt;
====3. vmware-vdiskmanager====&lt;br /&gt;
&lt;br /&gt;
vmware-vdiskmanager is a utility that comes bundled with VMware Fusion and VMware Workstation. &lt;br /&gt;
Below is an example of converting a sparse disk to preallocated format:&lt;br /&gt;
&lt;br /&gt;
 '/Applications/VMware Fusion.app/Contents/Library/vmware-vdiskmanager' -r sparse.vmdk -t 4 converted.vmdk&lt;br /&gt;
&lt;br /&gt;
In all the above cases, the converted vmdk is actually a pair of files, the descriptor file &amp;lt;i&amp;gt;converted&amp;lt;/i&amp;gt;.vmdk and the actual virtual disk data file &amp;lt;i&amp;gt;converted&amp;lt;/i&amp;gt;-flat.vmdk. The file to be uploaded to glance is &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;converted&amp;lt;/i&amp;gt;-flat.vmdk&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
===Specifying correct adapter type when uploading and image to glance===&lt;br /&gt;
&lt;br /&gt;
Currently, there is a limitation that OS boot vmdk disks with an ide adapter type cannot be attached to a virtual SCSI controller, and likewise disks with one of the scsi adapter types (e.g. busLogic, lsiLogic) cannot be attached to the IDE controller. Therefore it is important when uploading an image to glance that the correct vmware_adaptertype property be set. In particular, vmdk disks converted from other formats via qemu-img will _always_ be a monolithic sparse vmdk with an IDE adapter type. So using the above example of the Precise Ubuntu image, after the qemu-img conversion and conversion to a preallocated disk, the command to upload the vmdk disk should be something like:&lt;br /&gt;
&lt;br /&gt;
   glance image-create --name precise-cloud --is-public=True --container-format=bare --disk-format=vmdk --property vmware_disktype=&amp;quot;preallocated&amp;quot; --property vmware_adaptertype=&amp;quot;ide&amp;quot; &amp;lt; converted-flat.vmdk&lt;br /&gt;
&lt;br /&gt;
====Obtaining the adapter type associated with a vmdk====&lt;br /&gt;
&lt;br /&gt;
If the vmdk is a monolithic file (such as one produced by the qemu-img conversion) the adapter type can be retrieved by &lt;br /&gt;
&lt;br /&gt;
   head -20 some_monolithic.vmdk&lt;br /&gt;
&lt;br /&gt;
and looking for the ddb.adapterType=XXX property&lt;br /&gt;
&lt;br /&gt;
If the vmdk has a descriptor/data file pair (foo.vmdk and foo-XXXX.vmdk). The descriptor file foo.vmdk can be examined for the same ddb.adapterType property)&lt;br /&gt;
&lt;br /&gt;
==List of Reviews in progress==&lt;br /&gt;
https://review.openstack.org/#/q/message:vmware+OR+message:vcenter+OR+message:vsphere+OR+message:esx+OR+message:vcdriver+OR+message:datastore,n,z&lt;/div&gt;</summary>
		<author><name>Arnaud Legendre</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=NovaVMware/DeveloperGuide&amp;diff=38936</id>
		<title>NovaVMware/DeveloperGuide</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=NovaVMware/DeveloperGuide&amp;diff=38936"/>
				<updated>2013-12-23T23:49:22Z</updated>
		
		<summary type="html">&lt;p&gt;Arnaud Legendre: /* Upload your VMDK to glance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Developer's DevStack + vSphere Guide=&lt;br /&gt;
&lt;br /&gt;
This is a short guide for developers interested in working on OpenStack and [[vSphere]] (ESX, [[ESXi]], and [[vCenter]]) drivers.&lt;br /&gt;
&lt;br /&gt;
==vSphere Environment and Inventory==&lt;br /&gt;
&lt;br /&gt;
Set up a vSphere 5.1 (or better) developer's environment. For development purposes, you'll need to have one of this inventory type:&lt;br /&gt;
&lt;br /&gt;
[[File:VCenter cluster inventory.png|framed|none|inventory with a DRS cluster]]&lt;br /&gt;
&lt;br /&gt;
Note: The cluster should be DRS enabled with &amp;quot;Fully automated&amp;quot; placement turned on. Also, if you can't get two or more ESX hosts to work with, you can still work with one host in the cluster, but you won't be able to observe VM placement behaviors since there won't be anywhere to place the VMs except for the solitary host.&lt;br /&gt;
&lt;br /&gt;
=Development Environment=&lt;br /&gt;
== Get an Ubuntu 12.04 (suggested) VM setup==&lt;br /&gt;
This Ubuntu workstation can run as a VM itself, but it should have public internet access (ideally direct, but http proxy is workable if you don’t need to commit code back to OpenStack if you do, see the troubleshooting page for steps that ''may'' help).  It should also have a reasonably high bandwidth link to the the vSphere hosts, as it will need to stream images from the Ubuntu workstation to the vSphere host. &lt;br /&gt;
&lt;br /&gt;
We suggest your Ubuntu workstation have&lt;br /&gt;
* at least 10 GB disk, with 20+ GB being ideal. &lt;br /&gt;
* at least one vCPU, with 2 being ideal.&lt;br /&gt;
* 4 GB of RAM.&lt;br /&gt;
&lt;br /&gt;
=== optional setup ===&lt;br /&gt;
If you are using a remote workstation (not running locally on your physical computer) you may have to follow some of the extra steps under [[NovaVMware/DeveloperGuide#Networking_Troubleshooting|Network Troubleshooting]]&lt;br /&gt;
&lt;br /&gt;
==install Devstack (http://devstack.org/) in your new VM==&lt;br /&gt;
Once booted, run: &lt;br /&gt;
 sudo apt-get install git&lt;br /&gt;
 git clone http://github.com/openstack-dev/devstack.git&lt;br /&gt;
 cd devstack&lt;br /&gt;
&lt;br /&gt;
=Setup localrc for DevStack=&lt;br /&gt;
create a file named “localrc” in your devstack directory with the content shown below (for each item with $variable_name, you will need to enter values specific to your environment, the rest you can just leave as is).  &lt;br /&gt;
&lt;br /&gt;
file ~/devstack/''localrc''&lt;br /&gt;
 ENABLED_SERVICES=g-api,g-reg,key,n-api,n-crt,n-cpu,n-net,n-cond,n-sch,rabbit,mysql,horizon&lt;br /&gt;
 VIRT_DRIVER=vsphere&lt;br /&gt;
 VMWAREAPI_IP='''$your_vCenter_ip_address'''&lt;br /&gt;
 VMWAREAPI_USER=root&lt;br /&gt;
 VMWAREAPI_PASSWORD='''$password_goes_here'''&lt;br /&gt;
 VMWAREAPI_CLUSTER='''$your_cluster_name'''&lt;br /&gt;
 DATABASE_PASSWORD=nova&lt;br /&gt;
 RABBIT_PASSWORD=nova&lt;br /&gt;
 SERVICE_TOKEN=nova&lt;br /&gt;
 SERVICE_PASSWORD=nova&lt;br /&gt;
 ADMIN_PASSWORD=nova&lt;br /&gt;
 HOST_IP='''$your_development_vm_ip'''&lt;br /&gt;
&lt;br /&gt;
Note: if you would like to use a specific datastore then configure ''VMWAREAPI_DATASTORE_REGEX''&lt;br /&gt;
&lt;br /&gt;
Note: omit the line ''VMWAREAPI_CLUSTER'' if you are using the ''trivial'' inventory example.&lt;br /&gt;
&lt;br /&gt;
Note: If you want the logs to be written to disk (not just accessible via screen), use the define SCREEN_LOGDIR to point to path &lt;br /&gt;
where you want to the logs to reside.  For example&lt;br /&gt;
&lt;br /&gt;
SCREEN_LOGDIR=/var/log&lt;br /&gt;
&lt;br /&gt;
=start stack (first time)=&lt;br /&gt;
 ./stack.sh&lt;br /&gt;
This will take a long time the first time, as it pulls down all code and dependencies.&lt;br /&gt;
Note: may fail on first start.&lt;br /&gt;
&lt;br /&gt;
=Credentials and Environment Variables=&lt;br /&gt;
get the OpenStack API credentials in your environment variables:&lt;br /&gt;
&lt;br /&gt;
 $ source openrc demo demo&lt;br /&gt;
&lt;br /&gt;
This is needed anytime you make a call using an openstack CLI client like ‘nova’, ‘glance’, or ‘quantum’.  You can rerun this at any time from the devstack directory if you need to re-login in at a later point.  If you want admin credentials then use admin ($ source openrc admin admin)&lt;br /&gt;
&lt;br /&gt;
=Glance Initial Setup=&lt;br /&gt;
Get a VMDK to use as a disk image and upload it to OpenStack using the Glance API.  The latest code (mid-Aug) has a change which uploads the image when you 1st run devstack.  After glance starts, run the following command to see if you have a pre-configured image in glance&lt;br /&gt;
&lt;br /&gt;
$ glance image-list&lt;br /&gt;
&lt;br /&gt;
==Get an initial VMDK to work with==&lt;br /&gt;
There are a lot of “gotchas” around what VMDK disks work with OpenStack + vSphere, so we strongly suggest using the provided image to start.  In the Appendix there is information about creating/converting your own images.  &lt;br /&gt;
&lt;br /&gt;
download the image 1 GB debian disk image (user/password to login this image after booting is nicira/nicira).  &lt;br /&gt;
 http://partnerweb.vmware.com/programs/vmdkimage/debian-2.6.32-i686.vmdk &lt;br /&gt;
Place the file under your home directory &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;~/&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: if you are using nested hyper-visors you will need to obtain a 32bit image to use or troubleshoot: how to enable nested ESXi &amp;amp; other Hypervisors in vSphere 5.1 - See more at: http://www.virtuallyghetto.com/2012/08/how-to-enable-nested-esxi-other.html#sthash.NJ2VNiwt.dpuf&lt;br /&gt;
&lt;br /&gt;
==Upload your VMDK to glance==&lt;br /&gt;
It is recommended to use the upload_images.sh script provided in the Devstack to upload images to Glance: &lt;br /&gt;
 https://github.com/openstack-dev/devstack/blob/master/tools/upload_image.sh. &lt;br /&gt;
The script will introspect the image provided to extract the metadata.&lt;br /&gt;
It expects a URL as unique argument. The scheme of the URL can be http(s) or file. When a flat disk (*-flat.vmdk) is provided, the script will attempt to retrieve the descriptor (*.vmdk) associated to find the correct metadata. The same way, the user can specify a descriptor: in this case, the script will try to find the flat disk.&lt;br /&gt;
&lt;br /&gt;
Example of execution:&lt;br /&gt;
 $ ./upload_images.sh http://partnerweb.vmware.com/programs/vmdkimage/debian-2.6.32-i686.vmdk&lt;br /&gt;
 $ ./upload_images.sh file:///home/user/images/debian-2.6.32-i686.vmdk&lt;br /&gt;
&lt;br /&gt;
Specific metadata can be provided: the expected format of the image filename is &amp;lt;name&amp;gt;-&amp;lt;disk type&amp;gt;;&amp;lt;storage adapter&amp;gt;;&amp;lt;network adapter&amp;gt;.vmdk&lt;br /&gt;
&lt;br /&gt;
Alternatively, it is possible to call directly the Glance client:&lt;br /&gt;
&lt;br /&gt;
 $ glance add name=&amp;quot;Debian&amp;quot; disk_format=vmdk container_format=bare is_public=true \&lt;br /&gt;
    --property vmware_disktype=&amp;quot;preallocated&amp;quot; &amp;lt; ~/debian-2.6.32-i686.vmdk&lt;br /&gt;
... or ...&lt;br /&gt;
 $ glance image-create --name Debian --is-public=True --container-format=bare \&lt;br /&gt;
    --disk-format=vmdk --property vmware-disktype=&amp;quot;preallocated&amp;quot; &amp;lt; ~/debian-2.6.32-i686.vmdk &lt;br /&gt;
&lt;br /&gt;
This will print out an &amp;lt;image-id&amp;gt; for use below.  If you forget it, you can always run “glance image-list” to see all existing images.&lt;br /&gt;
&lt;br /&gt;
There is also an IDE based image that can be used. &lt;br /&gt;
&lt;br /&gt;
 http://partnerweb.vmware.com/programs/vmdkimage/trend-tinyvm1-flat.vmdk&lt;br /&gt;
Note the vmware_adaptertype is set to &amp;quot;ide&amp;quot; and vmware_disktype is set to &amp;quot;thin&amp;quot;&lt;br /&gt;
 $ glance image-create --name trend-thin --is-public=True --container-format=bare --disk-format=vmdk --property vmware_disktype=&amp;quot;thin&amp;quot; --property vmware_adaptertype=&amp;quot;ide&amp;quot; &amp;lt; trend-tinyvm1-flat.vmdk&lt;br /&gt;
&lt;br /&gt;
=Nova Boot=&lt;br /&gt;
boot a VM using the “&amp;lt;image-id&amp;gt;” from above&lt;br /&gt;
&lt;br /&gt;
 $ nova boot --image &amp;lt;image-id&amp;gt; --flavor 1 test1&lt;br /&gt;
&lt;br /&gt;
Now you can interact with the image using other nova client commands.  &lt;br /&gt;
For example&lt;br /&gt;
 $ nova list&lt;br /&gt;
 +--------------------------------------+-------+--------+------------+-------------+------------------+&lt;br /&gt;
 | ID                                   | Name  | Status | Task State | Power State | Networks         |&lt;br /&gt;
 +--------------------------------------+-------+--------+------------+-------------+------------------+&lt;br /&gt;
 | 9bb724bf-298d-4a63-a653-dab7fcbd9ac7 | test1 | ACTIVE  | None       | NOSTATE     | private=10.0.0.2 |&lt;br /&gt;
 +--------------------------------------+-------+--------+------------+-------------+------------------+&lt;br /&gt;
&lt;br /&gt;
Note: if your disk is big, it can take a VERY long time to stream the image from glance to your datastore (e.g., ~7 minutes for a 1 GB thick image).   This will happen only the first time a new image UUID is used on a datastore. You can monitor progress by viewing the size of the file in the vmware_base directory of the filestore.  &lt;br /&gt;
&lt;br /&gt;
Once this is done, you can view the VM using vCenter. The username/password for the above Debian image is nicira/nicira .&lt;br /&gt;
&lt;br /&gt;
You can access the OpenStack Web GUI (called horizon) by accessing your Ubuntu host on port 80, though currently VNC access via Horizon is broken (see: https://review.openstack.org/#/c/30036/ for a patch to fix this).&lt;br /&gt;
&lt;br /&gt;
=Using Screen=&lt;br /&gt;
Use screen to interact with individual openstack services&lt;br /&gt;
&lt;br /&gt;
 $ screen -x stack&lt;br /&gt;
&lt;br /&gt;
See: http://www.gnu.org/software/screen/manual/screen.html &amp;lt;- for how to use&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Control + a&amp;quot; enters command mode... enter this for each new command character&lt;br /&gt;
characters 0 through 9 switch tabs&lt;br /&gt;
** the 'd' character detaches the session&lt;br /&gt;
** the '[' character enters &amp;quot;copy mode&amp;quot; which allows you to navigate the screen trace and 'escape' escapes the copy mode.&lt;br /&gt;
** the '&amp;quot;' character shows a list of screens which you can navigate with the up and down arrows&lt;br /&gt;
&lt;br /&gt;
For example the nova-compute service runs on the n-cpu tab which is usually number 6. So to navigate to it, hit Ctrl+a then press '6' and you'll tab to it. You can then interact with the terminal for n-cpu.&lt;br /&gt;
&lt;br /&gt;
=Working the Development Environment=&lt;br /&gt;
If you want to reset your environment, run: &lt;br /&gt;
 ./unstack.sh &lt;br /&gt;
 ./stack.sh &lt;br /&gt;
&lt;br /&gt;
* This run of stack.sh will be faster (~1 minute) as it resets all database and service state, but does not need to re-download packages or source code.  &lt;br /&gt;
* After running ./unstack be sure to clean out all your datastores and delete any files left behind on accident. This will prevent a great number of problems people won't see in production environments. (For example: partially uploaded VMDK.)&lt;br /&gt;
&lt;br /&gt;
Note: the source code is not automatically updated when you reset your environment.  This is valuable, as you can manage your source code manually via git, having many branches, etc.  &lt;br /&gt;
&lt;br /&gt;
= Remote Debugger =&lt;br /&gt;
&lt;br /&gt;
To use the pycharm remote debugger (any maybe [http://wiki.xbmc.org/index.php?title=How-to:Debug_Python_Scripts_with_Eclipse eclipse]), make the following changes in your nova code&lt;br /&gt;
&lt;br /&gt;
index 0e7ecdc,87edf9b..0000000&lt;br /&gt;
--- a/nova/cmd/__init__.py&lt;br /&gt;
+++ b/nova/cmd/__init__.py&lt;br /&gt;
@@@ -31,8 -31,4 +31,8 @@@ &lt;br /&gt;
  os.environ['EVENTLET_NO_GREENDNS'] = 'y&lt;br /&gt;
  &lt;br /&gt;
  import eventlet&lt;br /&gt;
  &lt;br /&gt;
 -eventlet.monkey_patch(os=False)&lt;br /&gt;
 +if '--debug-host' and '--debug-port' in sys.argv:&lt;br /&gt;
 +    eventlet.monkey_patch(all=False,socket=True,time=True,os=False,thread=False)&lt;br /&gt;
 +else:&lt;br /&gt;
 +    eventlet.monkey_patch(os=False)&lt;br /&gt;
 +&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
diff --combined nova/cmd/compute.py&lt;br /&gt;
index 61cf434,f03a9bd..0000000&lt;br /&gt;
--- a/nova/cmd/compute.py&lt;br /&gt;
+++ b/nova/cmd/compute.py&lt;br /&gt;
@@@ -33,19 -33,10 +33,19 @@@ &lt;br /&gt;
  from nova.openstack.common import log a&lt;br /&gt;
  from nova import service&lt;br /&gt;
  from nova import utils&lt;br /&gt;
  &lt;br /&gt;
 +cli_opts = [&lt;br /&gt;
 +        cfg.StrOpt('debug-host',&lt;br /&gt;
 +                    default=None,&lt;br /&gt;
 +                    help='Connect to debug host'),&lt;br /&gt;
 +        cfg.IntOpt('debug-port',&lt;br /&gt;
 +                    default=None,&lt;br /&gt;
 +                    help='Connect to debug host port'),&lt;br /&gt;
 +    ]&lt;br /&gt;
 +&lt;br /&gt;
  CONF = cfg.CONF&lt;br /&gt;
  CONF.import_opt('compute_topic', 'nova.compute.rpcapi')&lt;br /&gt;
  CONF.import_opt('use_local', 'nova.conductor.api', group='conductor')&lt;br /&gt;
 -&lt;br /&gt;
 +CONF.register_cli_opts(cli_opts)&lt;br /&gt;
  &lt;br /&gt;
  def block_db_access():&lt;br /&gt;
      class NoDB(object):&lt;br /&gt;
@@@ -72,16 -63,6 +72,16 @@@ def main()&lt;br /&gt;
          objects_base.NovaObject.indirection_api = \&lt;br /&gt;
              conductor_rpcapi.ConductorAPI()&lt;br /&gt;
  &lt;br /&gt;
 +    if CONF.debug_host:&lt;br /&gt;
 +        from pydev import pydevd&lt;br /&gt;
 +        print ('Listening on ' + str(CONF.debug_port) + ' for host ' +&lt;br /&gt;
 +                                    CONF.debug_host)&lt;br /&gt;
 +        pydevd.settrace(host=CONF.debug_host,&lt;br /&gt;
 +                        port=CONF.debug_port,&lt;br /&gt;
 +                        stdoutToServer=False,&lt;br /&gt;
 +                        stderrToServer=False)&lt;br /&gt;
 +&lt;br /&gt;
 +&lt;br /&gt;
      server = service.Service.create(binary='nova-compute',&lt;br /&gt;
                                      topic=CONF.compute_topic,&lt;br /&gt;
                                      db_allowed=False)&lt;br /&gt;
&lt;br /&gt;
Then in pycharm, create a remote debug session with host localhost and port whatever you want.  When you run it, use --debug_host &amp;lt;your IP&amp;gt; and --debug_port &amp;lt;your port&amp;gt;.  That's it!&lt;br /&gt;
&lt;br /&gt;
=Testing=&lt;br /&gt;
==Install python support libraries==&lt;br /&gt;
===apt-get libs===&lt;br /&gt;
 $ sudo apt-get install python-dev libmysqlclient-dev python-pip build-essential &lt;br /&gt;
 $ sudo apt-get install libxml2-dev libxslt1-dev libpq-dev&lt;br /&gt;
&lt;br /&gt;
===pip based tool installs===&lt;br /&gt;
 $ sudo pip install --upgrade pip &lt;br /&gt;
 $ sudo pip install --upgrade virtualenv&lt;br /&gt;
 $ sudo pip install MySQL-python&lt;br /&gt;
 $ sudo pip install tox&lt;br /&gt;
 $ sudo pip install python-subunit&lt;br /&gt;
&lt;br /&gt;
====pip proxy troubleshooting====&lt;br /&gt;
If you get connection refused here - try this&lt;br /&gt;
 export PIP_INDEX_URL=&amp;quot;http://pypi.openstack.org/openstack&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====Install OpenStack libs====&lt;br /&gt;
 $ cd /opt/stack/nova&lt;br /&gt;
 $ sudo pip install -i http://pypi.openstack.org/openstack  -r requirements.txt -r test-requirements.txt &lt;br /&gt;
&lt;br /&gt;
Note: make sure everything in the requires lists gets installed. Some installers have individual issues that you may have to clear one at a time. In particular lxslt has some issues that may require attention to properly clear.&lt;br /&gt;
&lt;br /&gt;
==Using TOX for testing==&lt;br /&gt;
See: https://wiki.openstack.org/wiki/ProjectTestingInterface&lt;br /&gt;
&lt;br /&gt;
Important tests to run before submitting for code review are&lt;br /&gt;
 tox -e py26,py27&lt;br /&gt;
 tox -e pep8&lt;br /&gt;
&lt;br /&gt;
As of this writing the run_tests.sh is the better way to run tests.&lt;br /&gt;
&lt;br /&gt;
== Using run_tests.sh for testing ==&lt;br /&gt;
 $ cd /opt/stack/nova&lt;br /&gt;
 $ ./run_tests.sh&lt;br /&gt;
... or ...&lt;br /&gt;
 $ ./run_tests.sh nova.tests.virt.vmwareapi&lt;br /&gt;
... to run only the vmware unit tests.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: If you want to use the python packages in your normal (non-virtual) environment then pass the -N flag&lt;br /&gt;
&lt;br /&gt;
==Code Coverage tests and information==&lt;br /&gt;
&lt;br /&gt;
=== with tox ===&lt;br /&gt;
 $ cd /opt/stack/nova&lt;br /&gt;
 $ tox -e cover  (code coverage)&lt;br /&gt;
&lt;br /&gt;
look under the cover directory for html reports on the code coverage for that module.  The file index.html contains the overall coverage report&lt;br /&gt;
&lt;br /&gt;
NOTE: tests may run 10, 20, or as long as 65 minutes (depending on your hardware, network, and system) and produce no output until they complete. This is normal. You system may become sluggish but should not lock up entirely, a system hang can be symptomatic of an improperly configured test environment. Tests will run on Mac OSX. 2 Cores with 2GB of RAM on an Ubuntu 12.04 machine that is properly configured should take between 10 and 20 minutes to complete.&lt;br /&gt;
&lt;br /&gt;
=== with run_tests.sh ===&lt;br /&gt;
  $ cd /opt/stack/nova&lt;br /&gt;
  $ ./run_tests.sh --coverage&lt;br /&gt;
&lt;br /&gt;
==Additional setup==&lt;br /&gt;
If you are on Ubuntu 12.04 and need to use Python 2.6 (which OpenStack needs for some test scripts) install the old version of python by doing the following:&lt;br /&gt;
&lt;br /&gt;
 $ sudo add-apt-repository ppa:fkrull/deadsnakes&lt;br /&gt;
 $ sudo apt-get update&lt;br /&gt;
 $ sudo apt-get install python2.6 python2.6-dev&lt;br /&gt;
&lt;br /&gt;
== Disabling verbose logging subsystems ==&lt;br /&gt;
&lt;br /&gt;
Add this line to nova.conf to disable the amqp logging (for example)&lt;br /&gt;
&lt;br /&gt;
default_log_levels=amqp=WARN,amqplib=WARN,sqlalchemy=WARN,boto=WARN,suds=INFO,keystone=INFO,eventlet.wsgi.server=WARN,nova.openstack.common.rpc.amqp=WARN&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
''Some workplaces may have to use special networking and/or proxy settings and that these may change when you are mobile. Those issues can cause problems with apt-get, git and other parts of OpenStack. If you are in a place that needs special proxy rules, [https://help.ubuntu.com/community/AptGet/Howto/#Setting_up_apt-get_to_use_a_http-proxy setup apt-get with a proxy]. You may also have to set [http://askubuntu.com/questions/158557/setting-proxy-from-terminal other proxy settings] depending on your company's particular firewall rules.''&lt;br /&gt;
&lt;br /&gt;
== Logging ==&lt;br /&gt;
You may have a situation where you need to monitor devstack's log files. Here's how you set up logging to file with the least amount of fuss.&lt;br /&gt;
&lt;br /&gt;
To set up logging of screen windows set the shell variable SCREEN_LOGDIR to the directory you want the log files to go. Log files will appear with names like ''screen-$SERVICE_NAME-$TIMESTAMP.log'' in that dir and symbolic link screen-$SERVICE_NAME.log will link to the latest log file. Logs are kept for as long specified in the LOGDAYS variable.&lt;br /&gt;
&lt;br /&gt;
Both SCREEN_LOGDIR and LOGDAYS are shell variables so you need to set them either in your shell or in localrc. Use shell commands if you only want the logs to work this one time. Use ''localrc'' if you always want to have log files appear.&lt;br /&gt;
&lt;br /&gt;
Assuming you have already made a directory...&lt;br /&gt;
&lt;br /&gt;
 $ mkdir ~/log&lt;br /&gt;
&lt;br /&gt;
Then, if you only want logs this one time, in your bash shell say...&lt;br /&gt;
&lt;br /&gt;
 $ export SCREEN_LOGDIR=~/log&lt;br /&gt;
 $ export LOGDAYS=2&lt;br /&gt;
&lt;br /&gt;
... or if you ''always'' want log files, in your localrc add the lines ...&lt;br /&gt;
&lt;br /&gt;
 SCREEN_LOGDIR=~/log&lt;br /&gt;
 LOGDAYS=2&lt;br /&gt;
&lt;br /&gt;
The stack.sh script will automatically rotate the log files for you.&lt;br /&gt;
&lt;br /&gt;
== MySQL issues ==&lt;br /&gt;
If you get stuck with Keystone try...&lt;br /&gt;
 $ mysql -u root -pnova&lt;br /&gt;
... if that doesn't work you probably have a broken mysql install. If you have problems getting mysql to behave, try purging the OpenStack version of the install and install the database manually. Here’s how to rip everything down and install mysql-server from scratch yourself.&lt;br /&gt;
&lt;br /&gt;
 $ ./unstack&lt;br /&gt;
 $ sudo apt-get purge mysql-server&lt;br /&gt;
... you may need to use the name mysql-server-5.5 instead ...&lt;br /&gt;
 $ sudo apt-get autoremove&lt;br /&gt;
 $ sudo apt-get install mysql-server-5.5&lt;br /&gt;
 $ sudo mysql_install_db&lt;br /&gt;
 $ sudo mysqladmin -u root password 'nova'&lt;br /&gt;
 $ sudo service mysql restart&lt;br /&gt;
 $ ./stack&lt;br /&gt;
&lt;br /&gt;
== Keystone Issues ==&lt;br /&gt;
If you get stuck when you are checking your keystone connection via curl then it’s your proxy settings.  Try setting the following in /etc/environment&lt;br /&gt;
 no_proxy=localhost,127.0.0.0/8,127.0.1.1,127.0.1.1*,local.home&lt;br /&gt;
&lt;br /&gt;
== General Database Issues ==&lt;br /&gt;
If you have trouble with testing or other database heavy activities you may need to follow:&lt;br /&gt;
 http://codeinthehole.com/writing/how-to-set-up-mysql-for-python-on-ubuntu/&lt;br /&gt;
&lt;br /&gt;
== rootwrap Issues ==&lt;br /&gt;
If networking suddenly stops working with an error like this&lt;br /&gt;
&lt;br /&gt;
 Traceback (most recent call last):&lt;br /&gt;
   File &amp;quot;/usr/bin/nova-rootwrap&amp;quot;, line 59, in &amp;lt;module&amp;gt;&lt;br /&gt;
     from nova.rootwrap import wrapper&lt;br /&gt;
 ImportError: No module named rootwrap&lt;br /&gt;
&lt;br /&gt;
Then something has added a broken rootwrap to /usr/bin.  Remove the /usr/bin/nova-rootwrap and it will use the correct one in /usr/local/bin&lt;br /&gt;
&lt;br /&gt;
=== Check if nova-compute is running ===&lt;br /&gt;
 $ screen -x&lt;br /&gt;
Note the tab n-cpu is running in. It is usually #6 but it could be a different tab on occasion. Tab to n-cpu's tab. '''ctl+a''' then '''6'''. If you see:&lt;br /&gt;
 $ cd /opt/stack/nova &amp;amp;&amp;amp; sg  '/usr/local/bin/nova-compute --config-file /etc/nova/nova.conf' || touch &amp;quot;/opt/stack/status/stack/n-cpu.failure&amp;quot;&lt;br /&gt;
 sg: group '/usr/local/bin/nova-compute --config-file /etc/nova/nova.conf' does not exist&lt;br /&gt;
 $&lt;br /&gt;
... then nova-compute did not start. You can manually start nova-compute by editing the command to read:&lt;br /&gt;
 $ cd /opt/stack/nova &amp;amp;&amp;amp; /usr/local/bin/nova-compute --config-file /etc/nova/nova.conf || touch &amp;quot;/opt/stack/status/stack/n-cpu.failure&amp;quot;&lt;br /&gt;
... which is permissible for development (but not for production).&lt;br /&gt;
&lt;br /&gt;
== Networking Troubleshooting ==&lt;br /&gt;
Remotely accessed workstations need to have an IP for you to SSH or VNC into in order to do work. These instructions mostly assume a ''locally accessible'' VM or physical machine. If you are working with a remotely hosted Ubuntu developer's workstation, you may have special networking concerns. If you find your use of nova-network is stealing your workstations IP in your environment (does not manifest in all environments so it's located here as a troubleshooting step) then set up a second interface for nova-network to use. &lt;br /&gt;
&lt;br /&gt;
=== Configure a fake networking interface ===&lt;br /&gt;
Configure a fake interface so that nova-network does not steal the real IP that you need to access the host remotely.  On Ubuntu: &lt;br /&gt;
&lt;br /&gt;
 $ sudo ip tuntap add dev tapfoo mode tap&lt;br /&gt;
 $ sudo ifconfig tapfoo $some_ip up &lt;br /&gt;
&lt;br /&gt;
NOTE: assign the interface an ip address that will be appropriate for your environment.&lt;br /&gt;
&lt;br /&gt;
Now that you have a fake ethernet interface, change your localrc and re-run ./stack.sh so that you can start nova-network on the new interface.&lt;br /&gt;
&lt;br /&gt;
add to your ''localrc'' file&lt;br /&gt;
 FLAT_INTERFACE=tapfoo&lt;br /&gt;
&lt;br /&gt;
=== Configure a Proxy ===&lt;br /&gt;
Some workplaces may have to use special networking and/or proxy settings and that these may change when you are mobile. Those issues can cause problems with apt-get, git and other parts of OpenStack. If you are in a place that needs special proxy rules, [https://help.ubuntu.com/community/AptGet/Howto/#Setting_up_apt-get_to_use_a_http-proxy setup apt-get with a proxy]. You may also have to set [http://askubuntu.com/questions/158557/setting-proxy-from-terminal other proxy settings] depending on your company's particular firewall rules.&lt;br /&gt;
&lt;br /&gt;
=Appendix=&lt;br /&gt;
&lt;br /&gt;
==Converting Images==&lt;br /&gt;
&lt;br /&gt;
===Converting other disk images to vmdk using qemu-img=== &lt;br /&gt;
Disk images in several formats (e.g. qcow2) can be converted to the VMDK format usable by the vmware nova driver using the qemu-img utility.&lt;br /&gt;
&lt;br /&gt;
For example the following command can be used to convert a qcow2 Ubuntu Precise cloud image (downloadable from http://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img):&lt;br /&gt;
 &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt; qemu-img convert -f raw ~/Downloads/precise-server-cloudimg-amd64-disk1.img -O vmdk precise-server-cloudimg-amd64-disk1.vmdk&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Converting a sparse vmdk to an ESX-compatible format=== &lt;br /&gt;
&lt;br /&gt;
Due to a bug (fixed with the following proposed [https://review.openstack.org/#/c/43994/ patch], currently under review) in how sparse vmdk disks are handled in the VC driver, &lt;br /&gt;
sparse disks have to be pre-converted to thin-provisioned or preallocated disks before they can be uploaded to glance to be used by the driver.&lt;br /&gt;
&lt;br /&gt;
There are several ways to perform such a conversion:&lt;br /&gt;
&lt;br /&gt;
====1. Using vSphere CLI (or sometimes called the remote CLI or rCLI) tools.====&lt;br /&gt;
&lt;br /&gt;
The latest version from the date this was written is 5.1 and the link is [https://my.vmware.com/web/vmware/details?downloadGroup=VSP510-VCLI-510&amp;amp;productId=285 here].&lt;br /&gt;
&lt;br /&gt;
Assuming that the sparse disk is made available on a datastore accessible by an ESX host, the following command converts it to preallocated format:&lt;br /&gt;
&lt;br /&gt;
 vmkfstools --server=ip_of_some_ESX_host -i /vmfs/volumes/datastore1/sparse.vmdk /vmfs/volumes/datastore1/converted.vmdk&lt;br /&gt;
&lt;br /&gt;
(note the vifs tool from the same CLI package can be used to upload the disk to be converted and downloaded the converted disk if necessary)&lt;br /&gt;
&lt;br /&gt;
====2. Using vmkfstools directly on the ESX host====&lt;br /&gt;
&lt;br /&gt;
If the SSH service is enabled on an ESX host, the sparse disk can be uploaded to the ESX datastore via scp, and the vmkfstools local to the ESX host can use used to perform the conversion: &lt;br /&gt;
&lt;br /&gt;
(After logging to the host via ssh)&lt;br /&gt;
 vmkfstools -i /vmfs/volumes/datastore1/sparse.vmdk /vmfs/volumes/datastore1/converted.vmdk&lt;br /&gt;
&lt;br /&gt;
====3. vmware-vdiskmanager====&lt;br /&gt;
&lt;br /&gt;
vmware-vdiskmanager is a utility that comes bundled with VMware Fusion and VMware Workstation. &lt;br /&gt;
Below is an example of converting a sparse disk to preallocated format:&lt;br /&gt;
&lt;br /&gt;
 '/Applications/VMware Fusion.app/Contents/Library/vmware-vdiskmanager' -r sparse.vmdk -t 4 converted.vmdk&lt;br /&gt;
&lt;br /&gt;
In all the above cases, the converted vmdk is actually a pair of files, the descriptor file &amp;lt;i&amp;gt;converted&amp;lt;/i&amp;gt;.vmdk and the actual virtual disk data file &amp;lt;i&amp;gt;converted&amp;lt;/i&amp;gt;-flat.vmdk. The file to be uploaded to glance is &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;converted&amp;lt;/i&amp;gt;-flat.vmdk&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
===Specifying correct adapter type when uploading and image to glance===&lt;br /&gt;
&lt;br /&gt;
Currently, there is a limitation that OS boot vmdk disks with an ide adapter type cannot be attached to a virtual SCSI controller, and likewise disks with one of the scsi adapter types (e.g. busLogic, lsiLogic) cannot be attached to the IDE controller. Therefore it is important when uploading an image to glance that the correct vmware_adaptertype property be set. In particular, vmdk disks converted from other formats via qemu-img will _always_ be a monolithic sparse vmdk with an IDE adapter type. So using the above example of the Precise Ubuntu image, after the qemu-img conversion and conversion to a preallocated disk, the command to upload the vmdk disk should be something like:&lt;br /&gt;
&lt;br /&gt;
   glance image-create --name precise-cloud --is-public=True --container-format=bare --disk-format=vmdk --property vmware_disktype=&amp;quot;preallocated&amp;quot; --property vmware_adaptertype=&amp;quot;ide&amp;quot; &amp;lt; converted-flat.vmdk&lt;br /&gt;
&lt;br /&gt;
====Obtaining the adapter type associated with a vmdk====&lt;br /&gt;
&lt;br /&gt;
If the vmdk is a monolithic file (such as one produced by the qemu-img conversion) the adapter type can be retrieved by &lt;br /&gt;
&lt;br /&gt;
   head -20 some_monolithic.vmdk&lt;br /&gt;
&lt;br /&gt;
and looking for the ddb.adapterType=XXX property&lt;br /&gt;
&lt;br /&gt;
If the vmdk has a descriptor/data file pair (foo.vmdk and foo-XXXX.vmdk). The descriptor file foo.vmdk can be examined for the same ddb.adapterType property)&lt;br /&gt;
&lt;br /&gt;
==List of Reviews in progress==&lt;br /&gt;
https://review.openstack.org/#/q/message:vmware+OR+message:vcenter+OR+message:vsphere+OR+message:esx+OR+message:vcdriver+OR+message:datastore,n,z&lt;/div&gt;</summary>
		<author><name>Arnaud Legendre</name></author>	</entry>

	</feed>