diff --git a/setup.py b/setup.py
old mode 100644
new mode 100755
index fceadba..2e046ea
--- a/setup.py
+++ b/setup.py
@@ -1,34 +1,51 @@
-#!/usr/bin/python
-# Copyright (c) 2012 OpenStack, LLC.
+#!/usr/bin/env python
+# vim: tabstop=4 shiftwidth=4 softtabstop=4
+
+# Copyright 2010 United States Government as represented by the
+# Administrator of the National Aeronautics and Space Administration.
+# All Rights Reserved.
 #
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
 #
-#    http://www.apache.org/licenses/LICENSE-2.0
+#         http://www.apache.org/licenses/LICENSE-2.0
 #
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
 
 import setuptools
 
-setuptools.setup(
-    name='tempest',
-    version="0.1",
-    description='The OpenStack Integration Test Suite',
-    license='Apache License (2.0)',
-    author='OpenStack',
-    author_email='openstack@lists.launchpad.net',
-    url='http://github.com/openstack/tempest/',
-    classifiers=[
-        'Development Status :: 4 - Beta',
-        'License :: OSI Approved :: Apache Software License',
-        'Operating System :: POSIX :: Linux',
-        'Programming Language :: Python :: 2.6',
-        'Environment :: No Input/Output (Daemon)',
-    ],
-    py_modules=[])
+from tempest.common import setup
+
+requires = setup.parse_requirements()
+depend_links = setup.parse_dependency_links()
+
+setuptools.setup(name='tempest',
+                 version="2012.2",
+                 description='Integration test tools',
+                 author='OpenStack',
+                 author_email='openstack-qa@lists.launchpad.net',
+                 url='http://www.openstack.org/',
+                 classifiers=['Environment :: OpenStack',
+                              'Intended Audience :: Information Technology',
+                              'Intended Audience :: System Administrators',
+                              'Intended Audience :: Developers',
+                              'License :: OSI Approved :'
+                              ': Apache Software License',
+                              'Operating System :: POSIX :: Linux',
+                              'Programming Language :: Python',
+                              'Programming Language :: Python :: 2',
+                              'Programming Language :: Python :: 2.7', ],
+                 cmdclass=setup.get_cmdclass(),
+                 packages=setuptools.find_packages(exclude=['bin']),
+                 install_requires=requires,
+                 dependency_links=depend_links,
+                 include_package_data=True,
+                 test_suite='nose.collector',
+                 setup_requires=['setuptools_git>=0.4'],
+                 scripts=['bin/tempest'],
+                 py_modules=[])
