--- /dev/null
+#!/usr/bin/python
+"""Copyright 2008 Orbitz WorldWide
+
+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
+
+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 sys
+import time
+import os
+import platform
+import subprocess
+from socket import socket
+import time
+import csv
+
+def str_to_ts(date_str):
+ format_list = ["%m/%d/%Y %H:%M:%S", "%m/%d/%Y", "%Y/%m/%d %H:%M", "%Y/%b/%d %H:%M", "%Y-%m-%dT%H"]
+ ts = -1
+
+ for format in format_list:
+ try:
+ if date_str.find('.') == -1:
+ ts = time.mktime(time.strptime(date_str, format))
+ else:
+ ts = time.mktime(time.strptime(date_str[:date_str.find('.')], format))
+ break
+ except:
+ continue
+
+ if ts == -1:
+ raise Exception("No time format to convert date_str: %s" % date_str)
+
+ return ts
+
+def connect_to_carbon(server, port):
+ sock = socket()
+ try:
+ sock.connect( (server,port) )
+ except:
+ print "Couldn't connect to %(server)s on port %(port)d, is carbon-agent.py running?" % { 'server':server, 'port':port}
+ sys.exit(1)
+ return sock
+
+def main():
+
+ from optparse import OptionParser
+ parser = OptionParser()
+
+ parser.set_defaults(target="",
+ date=None,
+ value=None,
+ datefield=0,
+ valuefield=1,
+ file=None)
+
+ parser.add_option("", "--target", dest="target", help="")
+ parser.add_option("", "--date", dest="date", help="")
+ parser.add_option("", "--value", dest="value", help="")
+ parser.add_option("", "--datefield", dest="datefield", help="")
+ parser.add_option("", "--valuefield", dest="valuefield", help="")
+ parser.add_option("", "--file", dest="file", )
+
+ (config, args) = parser.parse_args()
+ if len(sys.argv) == 1:
+ parser.print_help()
+ sys.exit(1)
+
+
+ #print "connecting..."
+ CARBON_SERVER = 'HOSTNAME'
+ CARBON_PORT = 2003
+ sock = connect_to_carbon(CARBON_SERVER, CARBON_PORT)
+
+ if config.file:
+ csvfile = csv.reader(open(config.file, 'r'), delimiter=',', quotechar='|')
+ first_line=True
+ else:
+ csvfile = [(config.date, config.value)]
+ first_line=False
+
+ #print csvfile
+ for line in csvfile:
+ if first_line:
+ first_line = False
+ else:
+ t = line[int(config.datefield)]
+ v = line[int(config.valuefield)]
+
+ #print t
+ #print v
+ ts = str_to_ts(t)
+
+ message = "%s %s %d\n" % (config.target, v,ts)
+ print "\t" + message[:-1]
+ sock.sendall(message)
+
+if __name__ == "__main__":
+ main()