NI+Cクラウドエバンジェリストの常田です。

7月から組織が代わり「ソリューションビジネス本部」という部署になりました。SoftLayerやBHECを販売する体制としてシステムエンジニアの方やアプリケーション開発の方々と同じ組織となり更にクラウドのSIをする環境が整って来ました。

さて、このブログ的には特に変わることもなくマイペースに更新をしています。
先日からよくBluemixを周りで聞くことも有りNode.jsで過去のスクリプトを書きなおしています。

SoftLayerのAPIは、以前からよく利用するPythonだけでなくREST APIが利用することが出来ます。今回はnode.jsを利用する前提でRestのライブラリを使い簡単にSoftLayerのAPIを呼び出しています。

// このスクリプトは、SoftLayerの利用費用を取得してSlackに投稿します
// Config.
// $ export SL_USER="api username"
// $ export SL_API="api key"
//
// Run.
// $ node thisprogram.js

// 以下のライブラリを利用しています。
// https://github.com/xoxco/node-slack
// https://github.com/aacerox/node-rest-client

var Invoice = function() {
        this.send = function() {

                var Client = require('node-rest-client').Client;

                var options_auth = {
                        user: process.env.SL_USER,
                        password: process.env.SL_API
                };

                client = new Client(options_auth);

                // registering remote methods
                client.registerMethod("jsonMethod", "https://api.softlayer.com/rest/v3/SoftLayer_Account/getNextInvoiceTotalAmount.json", "GET");

                client.methods.jsonMethod(function(data,response){
                        var str = "(今月の請求情報:";
                        str += process.env.SL_USER;
                        str += ") 昨日までのSoftLayerの利用費用: $";
                        str += data ;
                        console.log(str);

                        var Slack  = require('node-slack');
                        var slack = new Slack("https://hooks.slack.com/services/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");

                        slack.send({
                                text: str,
                                username: 'Billing',
                                icon_emoji: ':credit_card:'
                        });

                });
        };
};

module.exports = Invoice;

JavaScript見よう見まねなので書き方がおかしなところがあればコメント下さい。
ここではSoftLayerのAPIを、https://api.softlayer.com/rest/v3/SoftLayer_Account/getNextInvoiceTotalAmount.json のように記載して呼び出すことを確認して頂ければ問題無いです。

実際に利用する際には

var Invoice = require('./invoice.js');
var nextInvoice = new Invoice();
nextInvoice.send();

のように定義すればSlackへ通知されます。