import csv
import argparse
import urllib2
import json
import traceback


from intigua_client import IntiguaRestClient
import intigua_client



def remove_tags(tag_list):
    try:
        client = IntiguaRestClient(args.user, args.apikey, args.url)
        current_tags = client.listTags()
        for tag in current_tags:
            if tag.get("name") in tag_list:
                print "Deleting tag %s" % tag.get("name")
                client.deleteTag(tag)
    except urllib2.HTTPError, e:
        print e
        print traceback.format_exc()
        exit(1)




def csv_file_validator(file_name):
    if not file_name.endswith(".csv"):
        raise argparse.ArgumentTypeError("file should be with .csv extension")
    return file_name


parser = argparse.ArgumentParser(description='Physical Server Bulk Adder')
parser.add_argument('--file', dest='file', type=csv_file_validator, help='Servers CSV Filename', required=True)
parser.add_argument('--url', dest='url', type=str,
                    help='URL to Intigua Server. Please use full rest path. e.g:https://[intigua-servername]/vmanage-server/rest/rest-api',
                    required=True)
parser.add_argument('--user', dest='user', type=str, help='Username', required=True)
parser.add_argument('--apikey', dest='apikey', type=str, help='API Key', required=True)
args = parser.parse_args()

def parse_serverinv_to_dict(serverlist_csv):
    tag_list = []
    try:
        with open(serverlist_csv, 'rU') as file_reader:
            dict_reader = csv.DictReader(file_reader)
            for tag in dict_reader:
                if tag['tag'] != '':
                    tag_list.append(tag['tag'])                                    
    except IOError as e:
        print e
        exit(1)
    return tag_list

#def add_physical_servers(server_list):


def main():
    servers_file = args.file
    tag_list = parse_serverinv_to_dict(servers_file)
    remove_tags(tag_list)


if __name__ == '__main__':
    main()