Autonomyデータベースからの統計を報告するMuninプラグインがいくつかあります。それらはすべて、関連する番号のXMLステータス出力をスクレイプする小さなライブラリを使用します。
ライブラリとプラグインをPuppetでインストール可能なRPMにバンドルしようとしています。実際のRPM構築は簡単である必要があります。生成されたdistutils
distfileを取得したら、DagまたはEPELリポジトリからピンチされた.specファイルに基づいてRPMにすることができます[1]。それはdistutils
私が確信していないビットです-実際、私のライブラリがパッケージング用に正しく記述されているかどうかさえわかりません。仕組みは次のとおりです。
idol7stats.py:
import datetime
import os
import stat
import sys
import time
import urllib
import xml.sax
class IDOL7Stats:
cache_dir = '/tmp'
def __init__(self, host, port):
self.host = host
self.port = port
# ...
def collect(self):
self.data = self.__parseXML(self.__getXML())
def total_slots(self):
return self.data['Service:Documents:TotalSlots']
プラグインコード:
from idol7stats import IDOL7Stats
a = IDOL7Stats('db.example.com', 23113)
a.collect()
print a.total_slots()
idol7stats.pyを/usr/lib/python2.4/site-packages/idol7stats
、またはPythonの検索パスにある他の何かに終わらせたいと思います。どんなdistutils
魔法が必要ですか?これ:
from distutils.core import setup
setup(name = 'idol7stats',
author = 'Me',
author_email = 'me@example.com',
version = '0.1',
py_modules = ['idol7stats'])
コードがサブディレクトリではなく、に入る以外は、ほとんど機能します/usr/lib/python2.4/site-packages/idol7stats.py
。これは、Pythonのモジュール/パッケージ/その他のコンテナーの違いを理解していないことが原因だと思います。
それで、摩擦は何ですか?
[1]ええ、/usr/lib/python2.4/site-packages
RPMを使用してライブラリを操作することもできますが、Pythonコードをパッケージ化する方法を知りたいです。