def _pr_object_create_update(self, oid_mapped, fq_name, update): pr_uuid = None msg = None try: os_version = oid_mapped.get('os-version', None) serial_num = oid_mapped.get('serial-number', None) physicalrouter = PhysicalRouter( parent_type='global-system-config', fq_name=fq_name, physical_router_management_ip=oid_mapped.get('host'), physical_router_vendor_name=oid_mapped.get('vendor'), physical_router_product_name=oid_mapped.get('product'), physical_router_device_family=oid_mapped.get('family'), physical_router_vnc_managed=True, physical_router_user_credentials={ 'username': oid_mapped.get('username'), 'password': oid_mapped.get('password') }) if update: pr_unicode_obj = self.vncapi.physical_router_update( physicalrouter) if pr_unicode_obj: pr_obj_dict = ast.literal_eval(pr_unicode_obj) pr_uuid = pr_obj_dict['physical-router']['uuid'] msg = "Discovered %s:\n Host name: %s\n Vendor: %s\n" \ " Model: %s" % ( oid_mapped.get('host'), fq_name[1], oid_mapped.get('vendor'), oid_mapped.get('product') ) self.logger.info("Discovered {} : {}".format( oid_mapped.get('host'), pr_uuid)) else: # underlay_managed flag should only be set at physical-router # creation time physicalrouter.set_physical_router_underlay_managed( self.job_ctx.get('job_input').get('manage_underlay', True)) pr_uuid = self.vncapi.physical_router_create(physicalrouter) msg = "Discovered device details: {} : {} : {}".format( oid_mapped.get('host'), fq_name[1], oid_mapped.get('product')) self.logger.info("Device created with uuid- {} : {}".format( oid_mapped.get('host'), pr_uuid)) self.module.send_prouter_object_log(fq_name, "DISCOVERED", os_version, serial_num) except (RefsExistError, Exception) as ex: if isinstance(ex, RefsExistError): return REF_EXISTS_ERROR, None self.logger.error("VNC create failed with error: {}".format( str(ex))) return False, None self.module.send_job_object_log( msg, JOB_IN_PROGRESS, None, job_success_percent=self.per_greenlet_percentage) self.discovery_percentage_write() return True, pr_uuid
def _pr_object_create_update(self, oid_mapped, fq_name, update): pr_uuid = None msg = None dhcp_fq_name = None try: os_version = oid_mapped.get('os-version', None) serial_num = oid_mapped.get('serial-number', None) physicalrouter = PhysicalRouter( parent_type='global-system-config', fq_name=fq_name, physical_router_management_ip=oid_mapped.get('host'), physical_router_vendor_name=oid_mapped.get('vendor'), physical_router_product_name=oid_mapped.get('product'), physical_router_device_family=oid_mapped.get('family'), physical_router_vnc_managed=True, physical_router_snmp_credentials={ 'version': 2, 'v2_community': 'public', 'local_port': 161 }, physical_router_hostname=fq_name[-1], display_name=fq_name[-1], physical_router_serial_number=serial_num, physical_router_managed_state='active', physical_router_user_credentials={ 'username': oid_mapped.get('username'), 'password': oid_mapped.get('password') }, physical_router_encryption_type='none', physical_router_supplemental_config=oid_mapped.get( 'supplemental_config') # noqa: E501 ) if update: pr_unicode_obj = self.vncapi.physical_router_update( physicalrouter) if pr_unicode_obj: pr_obj_dict = ast.literal_eval(pr_unicode_obj) pr_uuid = pr_obj_dict['physical-router']['uuid'] msg = "Discovered %s:\n Host name: %s\n Vendor: %s\n" \ " Model: %s" % ( oid_mapped.get('host'), fq_name[1], oid_mapped.get('vendor'), oid_mapped.get('product') ) self.logger.info("Discovered {} : {}".format( oid_mapped.get('host'), pr_uuid)) else: # underlay_managed flag should only be set at physical-router # creation time physicalrouter.set_physical_router_underlay_managed( self.job_ctx.get('job_input').get('manage_underlay', True)) pr_uuid = self.vncapi.physical_router_create(physicalrouter) msg = "Discovered device details: {} : {} : {}".format( oid_mapped.get('host'), fq_name[1], oid_mapped.get('product')) self.logger.info("Device created with uuid- {} : {}".format( oid_mapped.get('host'), pr_uuid)) self.module.send_prouter_object_log(fq_name, "DISCOVERED", os_version, serial_num) except (RefsExistError, Exception) as ex: if isinstance(ex, RefsExistError): return REF_EXISTS_ERROR, None self.logger.error("VNC create failed with error: {}".format( str(ex))) return False, None try: # delete the corresponding dhcp state PR object if it exists dhcp_fq_name = [ 'default-global-system-config', oid_mapped.get('serial-number') ] pr_obj = self.vncapi.physical_router_read( fq_name=dhcp_fq_name, fields=['physical_router_managed_state']) if pr_obj.get_physical_router_managed_state() == 'dhcp': self.vncapi.physical_router_delete(fq_name=dhcp_fq_name) self.logger.info( "Router {} in dhcp state deleted".format(dhcp_fq_name)) except (NoIdError, Exception) as ex: self.logger.info( "Router {} in dhcp state doesn't exist. Failed with " "error {}".format(dhcp_fq_name, str(ex))) pass self.module.send_job_object_log( msg, JOB_IN_PROGRESS, None, job_success_percent=self.per_greenlet_percentage) self.discovery_percentage_write() return True, pr_uuid
def _pr_object_create_update( self, oid_mapped, fq_name, update): pr_uuid = None msg = None try: os_version = oid_mapped.get('os-version', None) serial_num = oid_mapped.get('serial-number', None) physicalrouter = PhysicalRouter( parent_type='global-system-config', fq_name=fq_name, physical_router_management_ip=oid_mapped.get('host'), physical_router_vendor_name=oid_mapped.get('vendor'), physical_router_product_name=oid_mapped.get('product'), physical_router_device_family=oid_mapped.get('family'), physical_router_vnc_managed=True, physical_router_hostname=fq_name[-1], display_name=fq_name[-1], physical_router_serial_number=serial_num, physical_router_managed_state='active', physical_router_user_credentials={ 'username': oid_mapped.get('username'), 'password': oid_mapped.get('password') } ) if update: pr_unicode_obj = self.vncapi.physical_router_update( physicalrouter) if pr_unicode_obj: pr_obj_dict = ast.literal_eval(pr_unicode_obj) pr_uuid = pr_obj_dict['physical-router']['uuid'] msg = "Discovered %s:\n Host name: %s\n Vendor: %s\n" \ " Model: %s" % ( oid_mapped.get('host'), fq_name[1], oid_mapped.get('vendor'), oid_mapped.get('product') ) self.logger.info("Discovered {} : {}".format( oid_mapped.get('host'), pr_uuid )) else: # underlay_managed flag should only be set at physical-router # creation time physicalrouter.set_physical_router_underlay_managed( self.job_ctx.get('job_input').get('manage_underlay', True) ) pr_uuid = self.vncapi.physical_router_create(physicalrouter) msg = "Discovered device details: {} : {} : {}".format( oid_mapped.get('host'), fq_name[1], oid_mapped.get( 'product')) self.logger.info("Device created with uuid- {} : {}".format( oid_mapped.get( 'host'), pr_uuid)) self.module.send_prouter_object_log(fq_name, "DISCOVERED", os_version, serial_num) except(RefsExistError, Exception) as ex: if isinstance(ex, RefsExistError): return REF_EXISTS_ERROR, None self.logger.error("VNC create failed with error: {}".format(str( ex))) return False, None self.module.send_job_object_log( msg, JOB_IN_PROGRESS, None, job_success_percent=self.per_greenlet_percentage) self.discovery_percentage_write() return True, pr_uuid