SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

タスクが10倍気持ちよくなる 開発環境のリノベーション講座

障害発生時にも漏れなし! Zabbixの監視アラートでRedmine上にチケットを起票する仕組みをつくろう

タスクが10倍気持ちよくなる 開発環境のリノベーション講座 第2回

  • X ポスト
  • このエントリーをはてなブックマークに追加

チケットの更新

 チケットの更新は PUT メソッドで実施できます。ここでは、subject の変更と notes(コメント)の追記を行ってみます。更新用ファイルcurl_put.jsonの内容は、次のとおりとします。

{
  "issue": {
    "subject": "cURL からのテストチケット",
    "notes": "Changing the subject" 
  }
}

 実行コマンドは次のとおりです。宛先URLは新規作成のときとは異なり、更新対象チケットのID 6番を含む記述になっています。

$ curl -v -H "Content-Type: application/json" -X PUT \
-H "X-Redmine-API-Key: $API_KEY" --data "@curl_put.json" \
http://redmine-server/issues/6.json


チケットの削除

 チケットの削除は、DELETE メソッドで行います。なお、削除では追加・変更するデータはないため --data オプションは使いません。

$ curl -v -H "Content-Type: application/json" -X DELETE \
-H "X-Redmine-API-Key: $API_KEY" http://redmine-server/issues/6.json


Pythonからのチケット操作

 次はPythonのコードで、Redmineのチケットを操作してみましょう。まずは、コマンドラインの対話モードで確認してみます。

 以下で紹介するメソッドについては、Webサイト「Issues - Python Redmine」(英語)に詳しい解説があります。


チケットの作成

 project_id を「biz」、subject を「Python からの書き込み」とするチケットを作成します。

>>> from redmine import Redmine
>>> redmine = Redmine('http://redmine-server', key='API_KEY')
>>> issue = redmine.issue.create(project_id='biz', subject=u'Python からの書き込み')
>>> issue.id
11


チケットの変更

 対象チケットを get メソッドで呼び出し、適宜プロパティに変更を加えます。最後に、save メソッドを呼び出して変更を反映させます。

>>> issue = redmine.issue.get(11)
>>> issue.notes = u'変更のテスト'
>>> issue.save()
True


チケットの削除

 チケットの削除は、対象のチケットのIDを引数に、delete メソッドを呼び出すだけです。

>>> redmine.issue.delete(10)
True


チケット作成スクリプトの作成

 今度は、コマンドラインからチケット作成を行うスクリプトを作成してみます。次に示すのがそのソースコードです。筆者のGitHubからダウンロードできます。

import sys
from redmine import Redmine
from optparse import OptionParser

parser = OptionParser()
parser.add_option('-u', '--url', dest='url', help='Endpoint url of a redmine')
parser.add_option('-k', '--key', dest='key', help='API Access  Key')
parser.add_option('-s', '--subject', dest='subject', help='Subject of a reporting issue')
parser.add_option('-p', '--project_id', dest='project_id', help='Project ID of the issue')
parser.add_option('-d', '--description', dest='description', help='Description of the issue')
(options, args) = parser.parse_args()

redmine = Redmine(options.url, key=options.key)
issue = redmine.issue.create(project_id=options.project_id, 
                             subject=options.subject)
if options.description is None:
    issue.description = u"This ticket was created by issue_reporter.py"
else:
    issue.description = options.description
issue.notes = u"""
このチケットは自動登録されました。
確認、対応をお願いします。
"""

issue.save()

 urlkeyproject_idsucjectdescription という属性の値は、コマンドライン引数で指定します(たとえば url-u--url オプションで指定)。

 コマンドライン引数は、optparse モジュール(コマンドラインオプション解析器) を利用して読み込みます。それを parse_args メソッドにより options という変数に代入して、チケットの登録に使用しています。

次のページ
Zabbixアラートとの連携

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
タスクが10倍気持ちよくなる 開発環境のリノベーション講座連載記事一覧
この記事の著者

中島 隆明(株式会社ワークスアプリケーションズ)(ナカジマ タカアキ)

株式会社ワークスアプリケーションズ所属。R&D部門であるATE Div.に在籍し、パッケージソフトウェアを支える、インフラやOS、ミドルウェアといったシステムエンジニアリング領域を主に担当。CompTIA Cloud Essentials認定取得。趣味はジャズをはじめとした音楽全般。 ・Web s...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8408 2015/01/22 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング