def rm_server(self, client , SRVS ,j) : try : obj=[ server() for _ in range(j)] for l in range (1,j): obj[l].name = SRVS+str(l) server.delete(client, obj[l]) print("rm_server -"+obj[l].name+" - Done\n") l += 1 except nitro_exception as e : print("Exception::add_server::errorcode="+str(e.errorcode)+",message="+ e.message) except Exception as e: print("Exception::add_server::message="+str(e.args))
def make_server(name, ipaddress): client = get_nitro_client() try: from nssrc.com.citrix.netscaler.nitro.resource.config.basic.server import server myserver = server() myserver.name = name myserver.ipaddress = ipaddress server.add(client, myserver) client.save_config() except nitro_exception as e: msg = "nitro exception errorcode=" + str(e.errorcode) + ",message=" + e.message print(msg) raise e
def add_server(self, client , SRVS , server_ip ,j) : try : obj=[ server() for _ in range(j)] for l in range (1,j): obj[l].name = SRVS+str(l) obj[l].ipaddress = server_ip+str(l) obj[l].state = "DISABLED" server.add(client, obj[l]) print("add_server -"+obj[l].name+" - Done\n") l += 1 except nitro_exception as e : print("Exception::add_server::errorcode="+str(e.errorcode)+",message="+ e.message) except Exception as e: print("Exception::add_server::message="+str(e.args)) "Exception::add_server::message="+str(e.args))
def InstallSSLServices(self,num) : serverlist = self.GetServers() slist = [o.ipaddress for o in serverlist] newserverlist = [] print 'InstallSSLServices: slist {}'.format(slist) count = 0 svclist = [] for bes in self.container.SSLBEServerList : if num == 0 : break s = NSSVC.service() sname = self.templateName + '-svc-' + bes.name s.name = sname s.ip = bes.ip s.port = bes.listen_port s.servicetype = bes.type s.maxreq = 1 svclist.append(s) num -= 1 count += 1 if s.ip not in slist : newserverlist.append(s.ip) slist.append(s.ip) serverlist = [] for n in newserverlist : S = SERVER.server() S.name = n S.ipaddress = n serverlist.append(S) print 'Adding server {}'.format(n) if len(serverlist) > 0 : SERVER.server.add(self.session,serverlist) if len(svclist) > 0 : try : NSSVC.service.add(self.session,svclist) self.sslservicelist = NSSVC.service.get(self.session) except NITROEXCEPTION.nitro_exception as e : print 'Service add failed {}'.format(e.message) return count
def server(self, action, fqdns): '''Function to add or remove server(s) from the Netscaler. @param action string: add or delete @param fqdns list: list of strings representing FQDNs ''' listOfObjs = [] # First we're going to try to ensure all is in order for i in range(len(fqdns)): try: listOfObjs.append(server()) listOfObjs[i].name = fqdns[i] listOfObjs[i].ipaddress = socket.gethostbyname(fqdns[i]) except socket.gaierror, e: print 'Unable to resolve %s to an IPv4 address' % fqdns[i] return False else: i += 1
def main(): module_specific_arguments = dict(name=dict(type='str'), ipaddress=dict(type='str'), domain=dict(type='str'), translationip=dict(type='str'), translationmask=dict(type='str'), domainresolveretry=dict(type='int'), ipv6address=dict(type='bool', default=False), comment=dict(type='str'), td=dict(type='float'), graceful=dict(type='bool'), delay=dict(type='float')) hand_inserted_arguments = dict(disabled=dict( type='bool', default=False, ), ) argument_spec = dict() argument_spec.update(netscaler_common_arguments) argument_spec.update(module_specific_arguments) argument_spec.update(hand_inserted_arguments) module = AnsibleModule( argument_spec=argument_spec, supports_check_mode=True, ) module_result = dict( changed=False, failed=False, loglines=loglines, ) # Fail the module if imports failed if not PYTHON_SDK_IMPORTED: module.fail_json(msg='Could not load nitro python sdk') # Fallthrough to rest of execution client = get_nitro_client(module) if not module.params['mas_proxy_call']: try: client.login() except nitro_exception as e: msg = "nitro exception during login. errorcode=%s, message=%s" % ( str(e.errorcode), e.message) module.fail_json(msg=msg) except Exception as e: if str(type(e)) == "<class 'requests.exceptions.ConnectionError'>": module.fail_json(msg='Connection error %s' % str(e)) elif str(type(e)) == "<class 'requests.exceptions.SSLError'>": module.fail_json(msg='SSL Error %s' % str(e)) else: module.fail_json(msg='Unexpected error during login %s' % str(e)) # Instantiate Server Config object readwrite_attrs = [ 'name', 'ipaddress', 'domain', 'translationip', 'translationmask', 'domainresolveretry', 'ipv6address', 'graceful', 'delay', 'comment', 'td', ] readonly_attrs = [ 'statechangetimesec', 'tickssincelaststatechange', 'autoscale', 'customserverid', 'monthreshold', 'maxclient', 'maxreq', 'maxbandwidth', 'usip', 'cka', 'tcpb', 'cmp', 'clttimeout', 'svrtimeout', 'cipheader', 'cip', 'cacheable', 'sc', 'sp', 'downstateflush', 'appflowlog', 'boundtd', '__count', ] immutable_attrs = [ 'name', 'domain', 'ipv6address', 'td', ] transforms = { 'graceful': ['bool_yes_no'], 'ipv6address': ['bool_yes_no'], } server_proxy = ConfigProxy( actual=server(), client=client, attribute_values_dict=module.params, readwrite_attrs=readwrite_attrs, readonly_attrs=readonly_attrs, immutable_attrs=immutable_attrs, transforms=transforms, ) try: # Apply appropriate state if module.params['state'] == 'present': log('Applying actions for state present') if not server_exists(client, module): if not module.check_mode: server_proxy.add() if module.params['save_config']: client.save_config() module_result['changed'] = True elif not server_identical(client, module, server_proxy): # Check if we try to change value of immutable attributes immutables_changed = get_immutables_intersection( server_proxy, diff_list(client, module, server_proxy).keys()) if immutables_changed != []: msg = 'Cannot update immutable attributes %s' % ( immutables_changed, ) module.fail_json(msg=msg, diff=diff_list(client, module, server_proxy), **module_result) if not module.check_mode: server_proxy.update() if module.params['save_config']: client.save_config() module_result['changed'] = True else: module_result['changed'] = False if not module.check_mode: res = do_state_change(client, module, server_proxy) if res.errorcode != 0: msg = 'Error when setting disabled state. errorcode: %s message: %s' % ( res.errorcode, res.message) module.fail_json(msg=msg, **module_result) # Sanity check for result log('Sanity checks for state present') if not module.check_mode: if not server_exists(client, module): module.fail_json(msg='Server does not seem to exist', **module_result) if not server_identical(client, module, server_proxy): module.fail_json( msg= 'Server is not configured according to parameters given', diff=diff_list(client, module, server_proxy), **module_result) elif module.params['state'] == 'absent': log('Applying actions for state absent') if server_exists(client, module): if not module.check_mode: server_proxy.delete() if module.params['save_config']: client.save_config() module_result['changed'] = True else: module_result['changed'] = False # Sanity check for result log('Sanity checks for state absent') if not module.check_mode: if server_exists(client, module): module.fail_json(msg='Server seems to be present', **module_result) except nitro_exception as e: msg = "nitro exception errorcode=%s, message=%s" % (str( e.errorcode), e.message) module.fail_json(msg=msg, **module_result) if not module.params['mas_proxy_call']: client.logout() module.exit_json(**module_result)
def main(cls, args_): if(len(args_) < 3): print("Usage: run.bat <ip> <username> <password>") return config = basic_lbvServer() config.ip = args_[1] config.username = args_[2] config.password = args_[3] try : #Create an instance of the nitro_service class to connect to the appliance ns_session = nitro_service("10.217.242.90","HTTP") ns_session.set_credential("nsroot", config.password) ns_session.timeout = 310 #Log on to the appliance using your credentials ns_session.login() #Enable the load balancing feature. features_to_be_enabled = "lb" ns_session.enable_features(features_to_be_enabled) #Create an instance of the server class server_obj = server() #Create an instance of the service class service_obj = service() #Create an instance of the virtual server class new_lbvserver_obj = lbvserver() #Create a new virtual server new_lbvserver_obj.name = "MyFirstLbVServer" new_lbvserver_obj.ipv46 = "10.102.29.88" new_lbvserver_obj.servicetype = "HTTP" new_lbvserver_obj.port = 80 new_lbvserver_obj.lbmethod = "ROUNDROBIN" #lbvserver.delete(ns_session, new_lbvserver_obj.name) #lbvserver.add(ns_session, new_lbvserver_obj) #Retrieve the details of the virtual server new_lbvserver_obj = lbvserver.get(ns_session,new_lbvserver_obj.name) print("Name : " +new_lbvserver_obj.name +"\n" +"Protocol : " +new_lbvserver_obj.servicetype) #Retrieve state of a lbvserver obj_lbv = lbvserver_stats.get(ns_session, "MyFirstLbVServer") print("statlbvserver_byname result::name="+obj_lbv.name+", servicetype="+obj_lbv.type +",state="+obj_lbv.state) #Retrieve state of a servicegroup obj_svcg = servicegroup.get(ns_session, "http_svcg") print("statsvcg_byname result::name="+obj_svcg.servicegroupname+", servicetype="+obj_svcg.servicetype +",state="+obj_svcg.servicegroupeffectivestate) #Delete the virtual server #lbvserver.delete(ns_session, new_lbvserver_obj.name) #Save the configurations ns_session.save_config() #Logout from the NetScaler appliance ns_session.logout() except nitro_exception as e: print("Exception::errorcode="+str(e.errorcode)+",message="+ e.message) except Exception as e: print("Exception::message="+str(e.args)) return
def main(): module_specific_arguments = dict( name=dict(type='str'), ipaddress=dict(type='str'), domain=dict(type='str'), translationip=dict(type='str'), translationmask=dict(type='str'), domainresolveretry=dict(type='int'), ipv6address=dict( type='bool', default=False ), comment=dict(type='str'), td=dict(type='float'), ) hand_inserted_arguments = dict( disabled=dict( type='bool', default=False, ), ) argument_spec = dict() argument_spec.update(netscaler_common_arguments) argument_spec.update(module_specific_arguments) argument_spec.update(hand_inserted_arguments) module = AnsibleModule( argument_spec=argument_spec, supports_check_mode=True, ) module_result = dict( changed=False, failed=False, loglines=loglines, ) # Fail the module if imports failed if not PYTHON_SDK_IMPORTED: module.fail_json(msg='Could not load nitro python sdk') # Fallthrough to rest of execution client = get_nitro_client(module) try: client.login() except nitro_exception as e: msg = "nitro exception during login. errorcode=%s, message=%s" % (str(e.errorcode), e.message) module.fail_json(msg=msg) except Exception as e: if str(type(e)) == "<class 'requests.exceptions.ConnectionError'>": module.fail_json(msg='Connection error %s' % str(e)) elif str(type(e)) == "<class 'requests.exceptions.SSLError'>": module.fail_json(msg='SSL Error %s' % str(e)) else: module.fail_json(msg='Unexpected error during login %s' % str(e)) # Instantiate Server Config object readwrite_attrs = [ 'name', 'ipaddress', 'domain', 'translationip', 'translationmask', 'domainresolveretry', 'ipv6address', 'comment', 'td', ] readonly_attrs = [ 'statechangetimesec', 'tickssincelaststatechange', 'autoscale', 'customserverid', 'monthreshold', 'maxclient', 'maxreq', 'maxbandwidth', 'usip', 'cka', 'tcpb', 'cmp', 'clttimeout', 'svrtimeout', 'cipheader', 'cip', 'cacheable', 'sc', 'sp', 'downstateflush', 'appflowlog', 'boundtd', '__count', ] immutable_attrs = [ 'name', 'domain', 'ipv6address', 'td', ] transforms = { 'ipv6address': ['bool_yes_no'], } server_proxy = ConfigProxy( actual=server(), client=client, attribute_values_dict=module.params, readwrite_attrs=readwrite_attrs, readonly_attrs=readonly_attrs, immutable_attrs=immutable_attrs, transforms=transforms, ) try: # Apply appropriate state if module.params['state'] == 'present': log('Applying actions for state present') if not server_exists(client, module): if not module.check_mode: server_proxy.add() if module.params['save_config']: client.save_config() module_result['changed'] = True elif not server_identical(client, module, server_proxy): # Check if we try to change value of immutable attributes immutables_changed = get_immutables_intersection(server_proxy, diff_list(client, module, server_proxy).keys()) if immutables_changed != []: msg = 'Cannot update immutable attributes %s' % (immutables_changed,) module.fail_json(msg=msg, diff=diff_list(client, module, server_proxy), **module_result) if not module.check_mode: server_proxy.update() if module.params['save_config']: client.save_config() module_result['changed'] = True else: module_result['changed'] = False if not module.check_mode: res = do_state_change(client, module, server_proxy) if res.errorcode != 0: msg = 'Error when setting disabled state. errorcode: %s message: %s' % (res.errorcode, res.message) module.fail_json(msg=msg, **module_result) # Sanity check for result log('Sanity checks for state present') if not module.check_mode: if not server_exists(client, module): module.fail_json(msg='Server does not seem to exist', **module_result) if not server_identical(client, module, server_proxy): module.fail_json( msg='Server is not configured according to parameters given', diff=diff_list(client, module, server_proxy), **module_result ) elif module.params['state'] == 'absent': log('Applying actions for state absent') if server_exists(client, module): if not module.check_mode: server_proxy.delete() if module.params['save_config']: client.save_config() module_result['changed'] = True else: module_result['changed'] = False # Sanity check for result log('Sanity checks for state absent') if not module.check_mode: if server_exists(client, module): module.fail_json(msg='Server seems to be present', **module_result) except nitro_exception as e: msg = "nitro exception errorcode=%s, message=%s" % (str(e.errorcode), e.message) module.fail_json(msg=msg, **module_result) client.logout() module.exit_json(**module_result)
def main(): from ansible.module_utils.netscaler import ConfigProxy, get_nitro_client, netscaler_common_arguments, log, loglines try: from nssrc.com.citrix.netscaler.nitro.resource.config.basic.server import server from nssrc.com.citrix.netscaler.nitro.exception.nitro_exception import nitro_exception python_sdk_imported = True except ImportError as e: python_sdk_imported = False module_specific_arguments = dict( name=dict(type='str'), ipaddress=dict(type='str'), ) argument_spec = dict() argument_spec.update(netscaler_common_arguments) argument_spec.update(module_specific_arguments) module = AnsibleModule( argument_spec=argument_spec, supports_check_mode=True, ) module_result = dict( changed=False, failed=False, loglines=loglines, ) # Fail the module if imports failed if not python_sdk_imported: module.fail_json(msg='Could not load nitro python sdk') # Fallthrough to rest of execution client = get_nitro_client(module) client.login() # Instantiate Server Config object readwrite_attrs = ['name', 'ip', 'ipaddress'] readonly_attrs = [] equivalent_attributes = { 'ip': [ 'ipaddress', ] } server_proxy = ConfigProxy( actual=server(), client=client, attribute_values_dict=module.params, readwrite_attrs=readwrite_attrs, readonly_attrs=readonly_attrs, ) def server_exists(): if server.count_filtered(client, 'name:%s' % module.params['name']) > 0: return True else: return False def server_identical(): if server.count_filtered(client, 'name:%s' % module.params['name']) == 0: return False server_list = server.get_filtered(client, 'name:%s' % module.params['name']) if server_proxy.has_equal_attributes(server_list[0]): return True else: return False def diff_list(): return server_proxy.diff_object( server.get_filtered(client, 'name:%s' % module.params['name'])[0]), try: # Apply appropriate operation if module.params['operation'] == 'present': if not server_exists(): if not module.check_mode: server_proxy.add() server_proxy.update() client.save_config() module_result['changed'] = True elif not server_identical(): if not module.check_mode: server_proxy.update() client.save_config() module_result['changed'] = True else: module_result['changed'] = False # Sanity check for result if not module.check_mode: if not server_exists(): module.fail_json(msg='Server does not seem to exist', **module_result) if not server_identical(): module.fail_json( msg= 'Server is not configured according to parameters given', diff=diff_list(), **module_result) elif module.params['operation'] == 'absent': if server_exists(): if not module.check_mode: server_proxy.delete() client.save_config() module_result['changed'] = True else: module_result['changed'] = False # Sanity check for result if not module.check_mode: if server_exists(): module.fail_json(msg='Server seems to be present', **module_result) module_result[ 'actual_attributes'] = server_proxy.get_actual_rw_attributes() except nitro_exception as e: msg = "nitro exception errorcode=" + str( e.errorcode) + ",message=" + e.message module.fail_json(msg=msg, **module_result) client.logout() module.exit_json(**module_result)