import requests from collections import OrderedDict import yaml import yamlloader cs_vserver = 'test_csvserver' ns_host = 'localhost:32769' ns_login = 'nsroot' ns_password= 'nsroot' url = 'http://%s/nitro/v1/config/csvserver_cspolicy_binding/%s' % (ns_host, cs_vserver) headers = {'X-NITRO-USER': ns_login, 'X-NITRO-PASS': ns_password, 'Content-Type': 'application/json', 'Accept': 'application/json'} r = requests.get(url, headers=headers) policybindings = [] for binding in r.json()[u'csvserver_cspolicy_binding']: policy_name = binding[u'policyname'] #print policy_name policy_url = 'http://%s/nitro/v1/config/cspolicy/%s' % (ns_host, policy_name) policy = requests.get(policy_url, headers=headers) ansible_obj = OrderedDict([('name', 'Create cs policy %s' % policy_name), ('delegate_to' , 'localhost'), ('netscaler_cspolicy', OrderedDict([ ('nsip', ns_host), ('nitro_user', ns_login), ('nitro_pass', ns_password), ('validate_certs', 'no'), ('state', 'present'), ('policyname', policy_name)]) )]) # print policy.json() if policy.json()[u'cspolicy'][0].get(u'url') != None: ansible_obj['netscaler_cspolicy']['url'] = policy.json()[u'cspolicy'][0][u'url'] if policy.json()[u'cspolicy'][0].get(u'rule') != None: ansible_obj['netscaler_cspolicy']['rule'] = policy.json()[u'cspolicy'][0][u'rule'] print yaml.dump(ansible_obj, Dumper=yamlloader.ordereddict.CSafeDumper, default_flow_style=False) binding_obj = OrderedDict([('policyname', policy_name), ('targetlbvserver', binding['targetlbvserver']), ('priority', binding['priority']) ]) policybindings.append(binding_obj) print cs_ansible_obj = OrderedDict([('name', 'Create cs vserver %s' % cs_vserver), ('delegate_to' , 'localhost'), ('netscaler_cs_vserver', OrderedDict([ ('nsip', ns_host), ('nitro_user', ns_login), ('nitro_pass', ns_password), ('validate_certs', 'no'), ('state', 'present'), ('name', cs_vserver), ('ipv46', '10.22.22.22'), # FIXME ('port', 80), # FIXME ('servicetype', 'HTTP'), # FIXME ('policybindings', policybindings)]) )]) print yaml.dump(cs_ansible_obj, Dumper=yamlloader.ordereddict.CSafeDumper, default_flow_style=False)