Пример #1
0
 def testStorageVolumePayloadGenerator(self):
     metadata = \
         event_metadata.get_EventMetaData(
             event_metadata.EVENT_TYPE_STORAGE_ADDED)
     obj = StorageVolume()
     obj.name = 'TestStorageVolume'
     obj.connectionState = 'ACTIVE'
     obj.size = 200
     obj.volumeType = 'DIR'
     obj.volumeId = 'TestVolumeId'
     obj.createEpoch = long(time.time() * 1000)
     obj.lastModifiedEpoch = long(time.time() * 1000)
     mount_point = HostMountPoint()
     mount_point.set_path('/root/storage/1')
     mount_point.set_vmHostId('HOST1')
     obj.add_mountPoints(mount_point)
     mount_point = HostMountPoint()
     mount_point.set_path('/root/storage/2')
     mount_point.set_vmHostId('HOST2')
     obj.add_mountPoints(mount_point)
     payload = payload_generator.generate_payload(metadata, obj)
     self.assertEquals(payload['entity_type'],
                       obj.__class__.__name__)
     self.assertEquals(payload['name'], obj.name)
     self.assertEquals(payload['state'], obj.connectionState)
     self.assertTrue(obj.mountPoints[0].path
                     in payload['mount_points'])
Пример #2
0
 def testStorageVolumePayloadGenerator(self):
     metadata = \
         event_metadata.get_EventMetaData(
             event_metadata.EVENT_TYPE_STORAGE_ADDED)
     obj = StorageVolume()
     obj.name = 'TestStorageVolume'
     obj.connectionState = 'ACTIVE'
     obj.size = 200
     obj.volumeType = 'DIR'
     obj.volumeId = 'TestVolumeId'
     obj.createEpoch = long(time.time() * 1000)
     obj.lastModifiedEpoch = long(time.time() * 1000)
     mount_point = HostMountPoint()
     mount_point.set_path('/root/storage/1')
     mount_point.set_vmHostId('HOST1')
     obj.add_mountPoints(mount_point)
     mount_point = HostMountPoint()
     mount_point.set_path('/root/storage/2')
     mount_point.set_vmHostId('HOST2')
     obj.add_mountPoints(mount_point)
     payload = payload_generator.generate_payload(metadata, obj)
     self.assertEquals(payload['entity_type'], obj.__class__.__name__)
     self.assertEquals(payload['name'], obj.name)
     self.assertEquals(payload['state'], obj.connectionState)
     self.assertTrue(obj.mountPoints[0].path in payload['mount_points'])
Пример #3
0
 def testPayloadGenerator(self):
     metadata = event_metadata.EventMetaData('TestEvent', 'TestCategory',
                                             'Short Description %(name)s',
                                             'Long Description %(name)s',
                                             notifier.api.INFO)
     obj = Entity()
     obj.name = 'TestName'
     payload = payload_generator.generate_payload(metadata, obj)
     self.assertEquals(payload['entity_type'], obj.__class__.__name__)
     self.assertEquals(payload['name'], obj.name)
Пример #4
0
 def testPayloadGenerator(self):
     metadata = event_metadata.EventMetaData('TestEvent',
                                             'TestCategory', 'Short Description %(name)s',
                                             'Long Description %(name)s', notifier.api.INFO)
     obj = Entity()
     obj.name = 'TestName'
     payload = payload_generator.generate_payload(metadata, obj)
     self.assertEquals(payload['entity_type'],
                       obj.__class__.__name__)
     self.assertEquals(payload['name'], obj.name)
Пример #5
0
def notify(event_type, obj, **kwargs):
    """Generate event for a event type id
    This API is used by the different healthnmon modules
    which need to generate event.

            Parameters:
                event_type - One of the event types declared
                in healthnmon.events.event_meta_data
                obj - Vm, VmHost or StorageVolume object
                for which this event is to be generated
    """

    eventmetadata_obj = event_metadata.get_EventMetaData(event_type)
    payload = payload_generator.generate_payload(eventmetadata_obj,
                                                 obj, **kwargs)

    # Set publisher_id as <nova-scheduler-service.host>.healthnmon

    publisher_id = None
    admin_ctxt = context.get_admin_context()
    scheduler_services = None
    try:
        scheduler_services = \
            nova_db.service_get_all_by_topic(admin_ctxt, 'scheduler')
    except:
        LOG.error(_('Could not fetch scheduler service from nova db'))
    if scheduler_services is None or len(scheduler_services) < 1:
        LOG.debug(_('Scheduler service not found.'))
    else:
        if len(scheduler_services) > 1:
            LOG.debug(_('More than 1 entry for Scheduler service found.'
                        ))
        scheduler_service = scheduler_services[0]
        scheduler_service_host = scheduler_service['host']
        if scheduler_service_host is None \
                or len(scheduler_service_host) < 1:
            LOG.debug(_('Invalid host name for Scheduler service entry : '
                        + str(scheduler_service_host)))
        else:
            publisher_id = scheduler_service_host + '.' + 'healthnmon'
    if publisher_id is None:
        publisher_id = 'healthnmon'
        LOG.warn(_('Could not determine host name of nova scheduler service. \
        Using default publisher id %s'
                   % publisher_id))

    # Send message to notifier api
    LOG.debug(_('Sending notification with publisher_id: %s, name: %s,\
    payload: %s')
              % (publisher_id, eventmetadata_obj.get_event_fully_qal_name(),
                 payload))
    notifier_api.notify(admin_ctxt, publisher_id,
                        eventmetadata_obj.get_event_fully_qal_name(),
                        eventmetadata_obj.priority, payload)
Пример #6
0
 def testVmHostPayloadGenerator(self):
     metadata = \
         event_metadata.get_EventMetaData(
             event_metadata.EVENT_TYPE_HOST_ADDED)
     obj = VmHost()
     obj.name = 'TestVmHost'
     ipProfile = IpProfile()
     ipProfile.ipAddress = '10.10.10.1'
     obj.add_ipAddresses(ipProfile)
     payload = payload_generator.generate_payload(metadata, obj)
     self.assertEquals(payload['entity_type'], obj.__class__.__name__)
     self.assertEquals(payload['name'], obj.name)
     self.assertEquals(payload['ipAddresses'], ipProfile.ipAddress)
Пример #7
0
 def testVmHostPayloadGenerator(self):
     metadata = \
         event_metadata.get_EventMetaData(
             event_metadata.EVENT_TYPE_HOST_ADDED)
     obj = VmHost()
     obj.name = 'TestVmHost'
     ipProfile = IpProfile()
     ipProfile.ipAddress = '10.10.10.1'
     obj.add_ipAddresses(ipProfile)
     payload = payload_generator.generate_payload(metadata, obj)
     self.assertEquals(payload['entity_type'],
                       obj.__class__.__name__)
     self.assertEquals(payload['name'], obj.name)
     self.assertEquals(payload['ipAddresses'],
                       ipProfile.ipAddress)
Пример #8
0
def notify(event_type, obj, **kwargs):
    """Generate event for a event type id
    This API is used by the different healthnmon modules which need to generate event.

            Parameters:
                event_type - One of the event types declared in healthnmon.events.event_meta_data
                obj - Vm, VmHost or StorageVolume object for which this event is to be generated
    """

    eventmetadata_obj = event_metadata.get_EventMetaData(event_type)
    payload = payload_generator.generate_payload(eventmetadata_obj, obj,
                                                 **kwargs)

    # Set publisher_id as <nova-scheduler-service.host>.healthnmon

    publisher_id = None
    admin_ctxt = context.get_admin_context()
    scheduler_services = None
    try:
        scheduler_services = \
            nova_db.service_get_all_by_topic(admin_ctxt, 'scheduler')
    except:
        LOG.warn(_('Could not fetch scheduler service from nova db'))
    if scheduler_services is None or len(scheduler_services) < 1:
        LOG.warn(_('Scheduler service not found.'))
    else:
        if len(scheduler_services) > 1:
            LOG.warn(_('More than 1 entry for Scheduler service found.'))
        scheduler_service = scheduler_services[0]
        scheduler_service_host = scheduler_service['host']
        if scheduler_service_host is None \
                or len(scheduler_service_host) < 1:
            LOG.warn(
                _('Invalid host name for Scheduler service entry : ' +
                  str(scheduler_service_host)))
        else:
            publisher_id = scheduler_service_host + '.' + 'healthnmon'
    if publisher_id is None:
        publisher_id = 'healthnmon'
        LOG.warn(
            _('Could not determine host name of nova scheduler service. Using default publisher id %s'
              % publisher_id))

    # Send message to notifier api

    notifier_api.notify(admin_ctxt, publisher_id,
                        eventmetadata_obj.get_event_fully_qal_name(),
                        eventmetadata_obj.priority, payload)
Пример #9
0
 def testVmHostPayload_with_storage_size(self):
     self.flags(instances_path="/var/lib/nova/instances")
     metadata = \
         event_metadata.get_EventMetaData(
             event_metadata.EVENT_TYPE_HOST_ADDED)
     obj = VmHost()
     obj.name = 'TestVmHost'
     ipProfile = IpProfile()
     ipProfile.ipAddress = '10.10.10.1'
     obj.add_ipAddresses(ipProfile)
     storage_obj = StorageVolume()
     storage_obj.id = "storage_id"
     storage_obj.name = 'TestStorageVolume'
     storage_obj.connectionState = 'ACTIVE'
     storage_obj.size = 200
     storage_obj.free = 100
     storage_obj.volumeType = 'DIR'
     storage_obj.volumeId = 'TestVolumeId'
     storage_obj.createEpoch = long(time.time() * 1000)
     storage_obj.lastModifiedEpoch = long(time.time() * 1000)
     mount_point = HostMountPoint()
     mount_point.set_path('/var/lib/nova/instances')
     mount_point.set_vmHostId('TestVmHost')
     storage_obj.add_mountPoints(mount_point)
     obj.add_storageVolumeIds("storage_id")
     self.mox.StubOutWithMock(
         InventoryCacheManager, 'get_object_from_cache')
     InventoryCacheManager.get_object_from_cache(
         storage_obj.id,
         Constants.StorageVolume).AndReturn(storage_obj)
     self.mox.ReplayAll()
     payload = payload_generator.generate_payload(metadata, obj)
     self.assertEquals(payload['entity_type'],
                       obj.__class__.__name__)
     self.assertEquals(payload['name'], obj.name)
     self.assertEquals(payload['ipAddresses'],
                       ipProfile.ipAddress)
     self.assertEquals(payload['totalStorageSize'],
                       storage_obj.size)
     self.assertEquals(payload['storageUsed'],
                       storage_obj.free)
Пример #10
0
 def testVmHostPayload_with_storage_size(self):
     self.flags(instances_path="/var/lib/nova/instances")
     metadata = \
         event_metadata.get_EventMetaData(
             event_metadata.EVENT_TYPE_HOST_ADDED)
     obj = VmHost()
     obj.name = 'TestVmHost'
     ipProfile = IpProfile()
     ipProfile.ipAddress = '10.10.10.1'
     obj.add_ipAddresses(ipProfile)
     storage_obj = StorageVolume()
     storage_obj.id = "storage_id"
     storage_obj.name = 'TestStorageVolume'
     storage_obj.connectionState = 'ACTIVE'
     storage_obj.size = 200
     storage_obj.free = 100
     storage_obj.volumeType = 'DIR'
     storage_obj.volumeId = 'TestVolumeId'
     storage_obj.createEpoch = long(time.time() * 1000)
     storage_obj.lastModifiedEpoch = long(time.time() * 1000)
     mount_point = HostMountPoint()
     mount_point.set_path('/var/lib/nova/instances')
     mount_point.set_vmHostId('TestVmHost')
     storage_obj.add_mountPoints(mount_point)
     obj.add_storageVolumeIds("storage_id")
     self.mox.StubOutWithMock(InventoryCacheManager,
                              'get_object_from_cache')
     InventoryCacheManager.get_object_from_cache(
         storage_obj.id, Constants.StorageVolume).AndReturn(storage_obj)
     self.mox.ReplayAll()
     payload = payload_generator.generate_payload(metadata, obj)
     self.assertEquals(payload['entity_type'], obj.__class__.__name__)
     self.assertEquals(payload['name'], obj.name)
     self.assertEquals(payload['ipAddresses'], ipProfile.ipAddress)
     self.assertEquals(payload['totalStorageSize'], storage_obj.size)
     self.assertEquals(payload['storageUsed'], storage_obj.free)