glance-0.1.7 分析(一)—— 开始

来源:互联网 发布:淘宝卖二手东西流程 编辑:程序博客网 时间:2024/05/27 21:48

本来想学习一下 OpenStack,想从 glance 入手,glance 也是一个相对比较独立的子系统。

但是其最新版比较庞大,而且依赖的包好像也挺多,环境搭建有些麻烦,遇到了一些问题。

搜了一下 OpenStack 网站,找到了其最初的版本,可能还没有集成好 nova 和 swift。不过,

只是想快速了解一下其实现框架,从简单的入手可以节省时间。等搞明白了,再看看最新的

进展是怎样的。


首先看一下 setup.py 文件,看看 glance-0.1.7 用到哪些标准安装自带之外的模块。整个文

件很短,可以看到需要预先安装下面几个模块:

        setuptools    用于支持 python setup.py 和 easy_install 命令的执行   

                             http://pypi.python.org/pypi/setuptools

        sphinx           用于生成帮助文档           

                             http://sphinx.pocoo.org/

安装 setuptools (http://www.ibm.com/developerworks/cn/linux/l-cppeak3.html)这个东西

很简单,先去下载一个脚本: 

        http://peak.telecommunity.com/dist/ez_setup.py 

下载完后直接执行它就会帮你把setuptools给装好了:

        # python ez_setup.py

ez_setup.py 试图在后台下载并安装 setuptools。


setuptools 最大的优势是它在包管理能力方面的增强。它可以使用一种更加透明的方法来查

找、下载并安装依赖包;并可以在一个包的多个版本中自由进行切换,这些版本都安装在同

一个系统上;也可以声明对某个包的特定版本的需求;还可以只使用一个简单的命令就能更

新到某个包的最新版本。这里只是简单了解,并不打算深入 setuptools 本身,感兴趣的可以

参考:

        http://peak.telecommunity.com/DevCenter/setuptools


对于 sphinx,已经安装了 setuptools,直接 easy_install 安装就好了:

        # easy_install sphinx

easy_install 可以自动解决依赖性问题;easy_install 要在 www.python.org/pypi/ 上查找有关

依赖包的信息,然后查找真正可以下载这些包的地方去下载并安装包。


glance-0.1.7 中的 setup.py 是非常简单的,install_requires=[] 说明也没有使用什么特殊的包。

当然,实际用到的一些包 easy_install 都会帮你来安装好。在 Debian 6.0 上安装 glance-0.1.7

很顺利:

glance-0.1.7# python setup.py installrunning installChecking .pth file support in /usr/local/lib/python2.6/dist-packages//usr/bin/python -E -c passTEST PASSED: /usr/local/lib/python2.6/dist-packages/ appears to support .pth filesrunning bdist_eggrunning egg_infowriting glance.egg-info/PKG-INFOwriting top-level names to glance.egg-info/top_level.txtwriting dependency_links to glance.egg-info/dependency_links.txtreading manifest file 'glance.egg-info/SOURCES.txt'reading manifest template 'MANIFEST.in'warning: no files found matching 'LICENSE'warning: no files found matching 'tests/test_data.py'writing manifest file 'glance.egg-info/SOURCES.txt'installing library code to build/bdist.linux-i686/eggrunning install_librunning build_pycreating buildcreating build/lib.linux-i686-2.6creating build/lib.linux-i686-2.6/glancecopying glance/client.py -> build/lib.linux-i686-2.6/glancecopying glance/server.py -> build/lib.linux-i686-2.6/glancecopying glance/util.py -> build/lib.linux-i686-2.6/glancecopying glance/__init__.py -> build/lib.linux-i686-2.6/glancecreating build/lib.linux-i686-2.6/glance/registrycopying glance/registry/client.py -> build/lib.linux-i686-2.6/glance/registrycopying glance/registry/server.py -> build/lib.linux-i686-2.6/glance/registrycopying glance/registry/__init__.py -> build/lib.linux-i686-2.6/glance/registrycreating build/lib.linux-i686-2.6/glance/commoncopying glance/common/exception.py -> build/lib.linux-i686-2.6/glance/commoncopying glance/common/utils.py -> build/lib.linux-i686-2.6/glance/commoncopying glance/common/server.py -> build/lib.linux-i686-2.6/glance/commoncopying glance/common/wsgi.py -> build/lib.linux-i686-2.6/glance/commoncopying glance/common/flags.py -> build/lib.linux-i686-2.6/glance/commoncopying glance/common/__init__.py -> build/lib.linux-i686-2.6/glance/commoncreating build/lib.linux-i686-2.6/glance/storecopying glance/store/filesystem.py -> build/lib.linux-i686-2.6/glance/storecopying glance/store/http.py -> build/lib.linux-i686-2.6/glance/storecopying glance/store/swift.py -> build/lib.linux-i686-2.6/glance/storecopying glance/store/__init__.py -> build/lib.linux-i686-2.6/glance/storecopying glance/store/s3.py -> build/lib.linux-i686-2.6/glance/storecreating build/lib.linux-i686-2.6/testscreating build/lib.linux-i686-2.6/tests/unitcopying tests/unit/test_clients.py -> build/lib.linux-i686-2.6/tests/unitcopying tests/unit/swiftfakehttp.py -> build/lib.linux-i686-2.6/tests/unitcopying tests/unit/test_stores.py -> build/lib.linux-i686-2.6/tests/unitcopying tests/unit/test_api.py -> build/lib.linux-i686-2.6/tests/unitcopying tests/unit/__init__.py -> build/lib.linux-i686-2.6/tests/unitcopying tests/unit/test_registry_api.py -> build/lib.linux-i686-2.6/tests/unitcreating build/lib.linux-i686-2.6/glance/registry/dbcopying glance/registry/db/api.py -> build/lib.linux-i686-2.6/glance/registry/dbcopying glance/registry/db/__init__.py -> build/lib.linux-i686-2.6/glance/registry/dbcreating build/lib.linux-i686-2.6/glance/common/dbcopying glance/common/db/__init__.py -> build/lib.linux-i686-2.6/glance/common/dbcreating build/lib.linux-i686-2.6/glance/store/backendscopying glance/store/backends/__init__.py -> build/lib.linux-i686-2.6/glance/store/backendscreating build/lib.linux-i686-2.6/glance/registry/db/sqlalchemycopying glance/registry/db/sqlalchemy/api.py -> build/lib.linux-i686-2.6/glance/registry/db/sqlalchemycopying glance/registry/db/sqlalchemy/models.py -> build/lib.linux-i686-2.6/glance/registry/db/sqlalchemycopying glance/registry/db/sqlalchemy/__init__.py -> build/lib.linux-i686-2.6/glance/registry/db/sqlalchemycreating build/lib.linux-i686-2.6/glance/common/db/sqlalchemycopying glance/common/db/sqlalchemy/session.py -> build/lib.linux-i686-2.6/glance/common/db/sqlalchemycopying glance/common/db/sqlalchemy/__init__.py -> build/lib.linux-i686-2.6/glance/common/db/sqlalchemycreating build/bdist.linux-i686creating build/bdist.linux-i686/eggcreating build/bdist.linux-i686/egg/glancecreating build/bdist.linux-i686/egg/glance/registrycreating build/bdist.linux-i686/egg/glance/registry/dbcopying build/lib.linux-i686-2.6/glance/registry/db/api.py -> build/bdist.linux-i686/egg/glance/registry/dbcopying build/lib.linux-i686-2.6/glance/registry/db/__init__.py -> build/bdist.linux-i686/egg/glance/registry/dbcreating build/bdist.linux-i686/egg/glance/registry/db/sqlalchemycopying build/lib.linux-i686-2.6/glance/registry/db/sqlalchemy/api.py -> build/bdist.linux-i686/egg/glance/registry/db/sqlalchemycopying build/lib.linux-i686-2.6/glance/registry/db/sqlalchemy/models.py -> build/bdist.linux-i686/egg/glance/registry/db/sqlalchemycopying build/lib.linux-i686-2.6/glance/registry/db/sqlalchemy/__init__.py -> build/bdist.linux-i686/egg/glance/registry/db/sqlalchemycopying build/lib.linux-i686-2.6/glance/registry/client.py -> build/bdist.linux-i686/egg/glance/registrycopying build/lib.linux-i686-2.6/glance/registry/server.py -> build/bdist.linux-i686/egg/glance/registrycopying build/lib.linux-i686-2.6/glance/registry/__init__.py -> build/bdist.linux-i686/egg/glance/registrycreating build/bdist.linux-i686/egg/glance/commoncreating build/bdist.linux-i686/egg/glance/common/dbcopying build/lib.linux-i686-2.6/glance/common/db/__init__.py -> build/bdist.linux-i686/egg/glance/common/dbcreating build/bdist.linux-i686/egg/glance/common/db/sqlalchemycopying build/lib.linux-i686-2.6/glance/common/db/sqlalchemy/session.py -> build/bdist.linux-i686/egg/glance/common/db/sqlalchemycopying build/lib.linux-i686-2.6/glance/common/db/sqlalchemy/__init__.py -> build/bdist.linux-i686/egg/glance/common/db/sqlalchemycopying build/lib.linux-i686-2.6/glance/common/exception.py -> build/bdist.linux-i686/egg/glance/commoncopying build/lib.linux-i686-2.6/glance/common/utils.py -> build/bdist.linux-i686/egg/glance/commoncopying build/lib.linux-i686-2.6/glance/common/server.py -> build/bdist.linux-i686/egg/glance/commoncopying build/lib.linux-i686-2.6/glance/common/wsgi.py -> build/bdist.linux-i686/egg/glance/commoncopying build/lib.linux-i686-2.6/glance/common/flags.py -> build/bdist.linux-i686/egg/glance/commoncopying build/lib.linux-i686-2.6/glance/common/__init__.py -> build/bdist.linux-i686/egg/glance/commoncreating build/bdist.linux-i686/egg/glance/storecopying build/lib.linux-i686-2.6/glance/store/filesystem.py -> build/bdist.linux-i686/egg/glance/storecopying build/lib.linux-i686-2.6/glance/store/http.py -> build/bdist.linux-i686/egg/glance/storecopying build/lib.linux-i686-2.6/glance/store/swift.py -> build/bdist.linux-i686/egg/glance/storecopying build/lib.linux-i686-2.6/glance/store/__init__.py -> build/bdist.linux-i686/egg/glance/storecopying build/lib.linux-i686-2.6/glance/store/s3.py -> build/bdist.linux-i686/egg/glance/storecreating build/bdist.linux-i686/egg/glance/store/backendscopying build/lib.linux-i686-2.6/glance/store/backends/__init__.py -> build/bdist.linux-i686/egg/glance/store/backendscopying build/lib.linux-i686-2.6/glance/client.py -> build/bdist.linux-i686/egg/glancecopying build/lib.linux-i686-2.6/glance/server.py -> build/bdist.linux-i686/egg/glancecopying build/lib.linux-i686-2.6/glance/util.py -> build/bdist.linux-i686/egg/glancecopying build/lib.linux-i686-2.6/glance/__init__.py -> build/bdist.linux-i686/egg/glancecreating build/bdist.linux-i686/egg/testscreating build/bdist.linux-i686/egg/tests/unitcopying build/lib.linux-i686-2.6/tests/unit/test_clients.py -> build/bdist.linux-i686/egg/tests/unitcopying build/lib.linux-i686-2.6/tests/unit/swiftfakehttp.py -> build/bdist.linux-i686/egg/tests/unitcopying build/lib.linux-i686-2.6/tests/unit/test_stores.py -> build/bdist.linux-i686/egg/tests/unitcopying build/lib.linux-i686-2.6/tests/unit/test_api.py -> build/bdist.linux-i686/egg/tests/unitcopying build/lib.linux-i686-2.6/tests/unit/__init__.py -> build/bdist.linux-i686/egg/tests/unitcopying build/lib.linux-i686-2.6/tests/unit/test_registry_api.py -> build/bdist.linux-i686/egg/tests/unitbyte-compiling build/bdist.linux-i686/egg/glance/registry/db/api.py to api.pycbyte-compiling build/bdist.linux-i686/egg/glance/registry/db/__init__.py to __init__.pycbyte-compiling build/bdist.linux-i686/egg/glance/registry/db/sqlalchemy/api.py to api.pycbyte-compiling build/bdist.linux-i686/egg/glance/registry/db/sqlalchemy/models.py to models.pycbyte-compiling build/bdist.linux-i686/egg/glance/registry/db/sqlalchemy/__init__.py to __init__.pycbyte-compiling build/bdist.linux-i686/egg/glance/registry/client.py to client.pycbyte-compiling build/bdist.linux-i686/egg/glance/registry/server.py to server.pycbyte-compiling build/bdist.linux-i686/egg/glance/registry/__init__.py to __init__.pycbyte-compiling build/bdist.linux-i686/egg/glance/common/db/__init__.py to __init__.pycbyte-compiling build/bdist.linux-i686/egg/glance/common/db/sqlalchemy/session.py to session.pycbyte-compiling build/bdist.linux-i686/egg/glance/common/db/sqlalchemy/__init__.py to __init__.pycbyte-compiling build/bdist.linux-i686/egg/glance/common/exception.py to exception.pycbyte-compiling build/bdist.linux-i686/egg/glance/common/utils.py to utils.pycbyte-compiling build/bdist.linux-i686/egg/glance/common/server.py to server.pycbyte-compiling build/bdist.linux-i686/egg/glance/common/wsgi.py to wsgi.pycbyte-compiling build/bdist.linux-i686/egg/glance/common/flags.py to flags.pycbyte-compiling build/bdist.linux-i686/egg/glance/common/__init__.py to __init__.pycbyte-compiling build/bdist.linux-i686/egg/glance/store/filesystem.py to filesystem.pycbyte-compiling build/bdist.linux-i686/egg/glance/store/http.py to http.pycbyte-compiling build/bdist.linux-i686/egg/glance/store/swift.py to swift.pycbyte-compiling build/bdist.linux-i686/egg/glance/store/__init__.py to __init__.pycbyte-compiling build/bdist.linux-i686/egg/glance/store/s3.py to s3.pycbyte-compiling build/bdist.linux-i686/egg/glance/store/backends/__init__.py to __init__.pycbyte-compiling build/bdist.linux-i686/egg/glance/client.py to client.pycbyte-compiling build/bdist.linux-i686/egg/glance/server.py to server.pycbyte-compiling build/bdist.linux-i686/egg/glance/util.py to util.pycbyte-compiling build/bdist.linux-i686/egg/glance/__init__.py to __init__.pycbyte-compiling build/bdist.linux-i686/egg/tests/unit/test_clients.py to test_clients.pycbyte-compiling build/bdist.linux-i686/egg/tests/unit/swiftfakehttp.py to swiftfakehttp.pycbyte-compiling build/bdist.linux-i686/egg/tests/unit/test_stores.py to test_stores.pycbyte-compiling build/bdist.linux-i686/egg/tests/unit/test_api.py to test_api.pycbyte-compiling build/bdist.linux-i686/egg/tests/unit/__init__.py to __init__.pycbyte-compiling build/bdist.linux-i686/egg/tests/unit/test_registry_api.py to test_registry_api.pyccreating build/bdist.linux-i686/egg/EGG-INFOinstalling scripts to build/bdist.linux-i686/egg/EGG-INFO/scriptsrunning install_scriptsrunning build_scriptscreating build/scripts-2.6copying and adjusting bin/glance-api -> build/scripts-2.6copying and adjusting bin/glance-registry -> build/scripts-2.6copying and adjusting bin/glance-upload -> build/scripts-2.6changing mode of build/scripts-2.6/glance-api from 644 to 755changing mode of build/scripts-2.6/glance-registry from 644 to 755changing mode of build/scripts-2.6/glance-upload from 644 to 755creating build/bdist.linux-i686/egg/EGG-INFO/scriptscopying build/scripts-2.6/glance-upload -> build/bdist.linux-i686/egg/EGG-INFO/scriptscopying build/scripts-2.6/glance-api -> build/bdist.linux-i686/egg/EGG-INFO/scriptscopying build/scripts-2.6/glance-registry -> build/bdist.linux-i686/egg/EGG-INFO/scriptschanging mode of build/bdist.linux-i686/egg/EGG-INFO/scripts/glance-upload to 755changing mode of build/bdist.linux-i686/egg/EGG-INFO/scripts/glance-api to 755changing mode of build/bdist.linux-i686/egg/EGG-INFO/scripts/glance-registry to 755copying glance.egg-info/PKG-INFO -> build/bdist.linux-i686/egg/EGG-INFOcopying glance.egg-info/SOURCES.txt -> build/bdist.linux-i686/egg/EGG-INFOcopying glance.egg-info/dependency_links.txt -> build/bdist.linux-i686/egg/EGG-INFOcopying glance.egg-info/top_level.txt -> build/bdist.linux-i686/egg/EGG-INFOzip_safe flag not set; analyzing archive contents...glance.common.utils: module references __file__glance.common.utils: module MAY be using inspect.stackcreating distcreating 'dist/glance-0.1.7-py2.6.egg' and adding 'build/bdist.linux-i686/egg' to itremoving 'build/bdist.linux-i686/egg' (and everything under it)Processing glance-0.1.7-py2.6.eggcreating /usr/local/lib/python2.6/dist-packages/glance-0.1.7-py2.6.eggExtracting glance-0.1.7-py2.6.egg to /usr/local/lib/python2.6/dist-packagesRemoving glance 2012.2 from easy-install.pth fileAdding glance 0.1.7 to easy-install.pth fileInstalling glance-upload script to /usr/local/binInstalling glance-api script to /usr/local/binInstalling glance-registry script to /usr/local/binInstalled /usr/local/lib/python2.6/dist-packages/glance-0.1.7-py2.6.eggProcessing dependencies for glance==0.1.7Finished processing dependencies for glance==0.1.7root@crossover:/home/snailpy/dev/glance-0.1.7# lsbin     ChangeLogglance PKG-INFO  run_tests.py  setup.pybuild     distglance.egg-info  pylintrc  run_tests.sh  testsbuilddeb.sh  docMANIFEST.in README    setup.cfg toolsroot@crossover:/home/snailpy/dev/glance-0.1.7# cd build/root@crossover:/home/snailpy/dev/glance-0.1.7/build# lsbdist.linux-i686  lib.linux-i686-2.6  scripts-2.6root@crossover:/home/snailpy/dev/glance-0.1.7/build# ls -ltotal 12drwxr-xr-x 2 root root 4096 May 31 11:05 bdist.linux-i686drwxr-xr-x 4 root root 4096 May 31 11:05 lib.linux-i686-2.6drwxr-xr-x 2 root root 4096 May 31 11:05 scripts-2.6root@crossover:/home/snailpy/dev/glance-0.1.7/build# cd ..root@crossover:/home/snailpy/dev/glance-0.1.7# lsbin     ChangeLogglance PKG-INFO  run_tests.py  setup.pybuild     distglance.egg-info  pylintrc  run_tests.sh  testsbuilddeb.sh  docMANIFEST.in README    setup.cfg toolsroot@crossover:/home/snailpy/dev/glance-0.1.7# cd bin/root@crossover:/home/snailpy/dev/glance-0.1.7/bin# lsglance-api  glance-registry  glance-uploadroot@crossover:/home/snailpy/dev/glance-0.1.7/bin# cd ..root@crossover:/home/snailpy/dev/glance-0.1.7# lsbin     ChangeLogglance PKG-INFO  run_tests.py  setup.pybuild     distglance.egg-info  pylintrc  run_tests.sh  testsbuilddeb.sh  docMANIFEST.in README    setup.cfg toolsroot@crossover:/home/snailpy/dev/glance-0.1.7# easy_install sphinxSearching for sphinxReading http://pypi.python.org/simple/sphinx/Reading http://sphinx.pocoo.org/Best match: Sphinx 1.1.3Downloading http://pypi.python.org/packages/2.6/S/Sphinx/Sphinx-1.1.3-py2.6.egg#md5=f0873b56630070f661ec3abc3eaf4457Processing Sphinx-1.1.3-py2.6.eggcreating /usr/local/lib/python2.6/dist-packages/Sphinx-1.1.3-py2.6.eggExtracting Sphinx-1.1.3-py2.6.egg to /usr/local/lib/python2.6/dist-packagesAdding Sphinx 1.1.3 to easy-install.pth fileInstalling sphinx-apidoc script to /usr/local/binInstalling sphinx-build script to /usr/local/binInstalling sphinx-quickstart script to /usr/local/binInstalling sphinx-autogen script to /usr/local/binInstalled /usr/local/lib/python2.6/dist-packages/Sphinx-1.1.3-py2.6.eggProcessing dependencies for sphinxSearching for docutils>=0.7Reading http://pypi.python.org/simple/docutils/Reading http://docutils.sourceforge.net/Best match: docutils 0.9Downloading http://prdownloads.sourceforge.net/docutils/docutils-0.9.tar.gz?downloadProcessing docutils-0.9.tar.gzWriting /tmp/easy_install-_FFcyu/docutils-0.9/setup.cfgRunning docutils-0.9/setup.py -q bdist_egg --dist-dir /tmp/easy_install-_FFcyu/docutils-0.9/egg-dist-tmp-BcQStBwarning: no files found matching 'MANIFEST'warning: no files found matching '*' under directory 'extras'warning: no previously-included files matching '.cvsignore' found under directory '*'warning: no previously-included files matching '*.pyc' found under directory '*'warning: no previously-included files matching '*~' found under directory '*'warning: no previously-included files matching '.DS_Store' found under directory '*'zip_safe flag not set; analyzing archive contents...docutils.writers.odf_odt.__init__: module references __file__docutils.writers.latex2e.__init__: module references __file__docutils.writers.html4css1.__init__: module references __file__docutils.writers.s5_html.__init__: module references __file__docutils.writers.pep_html.__init__: module references __file__docutils.parsers.rst.directives.misc: module references __file__Adding docutils 0.9 to easy-install.pth fileInstalling rst2xml.py script to /usr/local/binInstalling rst2odt.py script to /usr/local/binInstalling rst2pseudoxml.py script to /usr/local/binInstalling rst2odt_prepstyles.py script to /usr/local/binInstalling rst2latex.py script to /usr/local/binInstalling rst2html.py script to /usr/local/binInstalling rst2man.py script to /usr/local/binInstalling rst2s5.py script to /usr/local/binInstalling rstpep2html.py script to /usr/local/binInstalling rst2xetex.py script to /usr/local/binInstalled /usr/local/lib/python2.6/dist-packages/docutils-0.9-py2.6.eggSearching for Jinja2>=2.3Reading http://pypi.python.org/simple/Jinja2/Reading http://jinja.pocoo.org/Best match: Jinja2 2.6Downloading http://pypi.python.org/packages/source/J/Jinja2/Jinja2-2.6.tar.gz#md5=1c49a8825c993bfdcf55bb36897d28a2Processing Jinja2-2.6.tar.gzWriting /tmp/easy_install-RhD8iu/Jinja2-2.6/setup.cfgRunning Jinja2-2.6/setup.py -q bdist_egg --dist-dir /tmp/easy_install-RhD8iu/Jinja2-2.6/egg-dist-tmp-_FFu6xwarning: no previously-included files matching '*' found under directory 'docs/_build'warning: no previously-included files matching '*.pyc' found under directory 'jinja2'warning: no previously-included files matching '*.pyc' found under directory 'docs'warning: no previously-included files matching '*.pyo' found under directory 'jinja2'warning: no previously-included files matching '*.pyo' found under directory 'docs'Adding Jinja2 2.6 to easy-install.pth fileInstalled /usr/local/lib/python2.6/dist-packages/Jinja2-2.6-py2.6.eggSearching for Pygments>=1.2Reading http://pypi.python.org/simple/Pygments/Reading http://pygments.org/Reading http://pygments.pocoo.org/Best match: Pygments 1.5Downloading http://pypi.python.org/packages/2.6/P/Pygments/Pygments-1.5-py2.6.egg#md5=359d667ed004b6d1bee20917a7d06a7bProcessing Pygments-1.5-py2.6.eggcreating /usr/local/lib/python2.6/dist-packages/Pygments-1.5-py2.6.eggExtracting Pygments-1.5-py2.6.egg to /usr/local/lib/python2.6/dist-packagesAdding Pygments 1.5 to easy-install.pth fileInstalling pygmentize script to /usr/local/binInstalled /usr/local/lib/python2.6/dist-packages/Pygments-1.5-py2.6.eggFinished processing dependencies for sphinx
安装完毕。以后就在 glance-0.1.7 上先活动一下筋骨了。