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))
예제 #2
0
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))
예제 #4
0
    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
예제 #5
0
파일: nitro.py 프로젝트: zbukhari/netscaler
    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)
예제 #7
0
	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
예제 #8
0
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)
예제 #9
0
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)