コード例 #1
0
 def test_version(self):
     current_version = Migrate.Version(
         ZMigrateVersion.SCHEMA_MAJOR,
         ZMigrateVersion.SCHEMA_MINOR,
         ZMigrateVersion.SCHEMA_REVISION,
     )
     module_names = (name[:-3] for name in os.listdir(_migrate_path)
                     if name.endswith(".py"))
     failures = []
     for mname in module_names:
         module_path = "Products.ZenModel.migrate." + mname
         module = importlib.import_module(module_path)
         steps = (
             cls for cls in (getattr(module, name) for name in dir(module))
             if isinstance(cls, type) and issubclass(cls, Migrate.Step))
         for step in steps:
             step_version = getattr(step, "version", None)
             if step_version and step_version > current_version:
                 failures.append(module_path)
     expected = 0
     actual = len(failures)
     self.assertEqual(
         expected,
         actual,
         msg="The following migrate script%s a version "
         "greater than %s: %s" % (
             " has" if actual == 1 else "s have",
             current_version.short(),
             ', '.join(failures),
         ),
     )
コード例 #2
0
class addIgnoreParametersWhenModeling(Migrate.Step):
    version = Migrate.Version(4, 2, 0)

    def cutover(self, dmd):
        log.info("Adding ignoreParametersWhenModeling to all process classes.")
        for process_class in dmd.Processes.getSubOSProcessClassesSorted():
            process_class.setZenProperty("addIgnoreParametersWhenModeling",
                                         False)
コード例 #3
0
class removeClearHeartbeatsMenuItem(Migrate.Step):
    version = Migrate.Version(4, 2, 0)

    def cutover(self, dmd):
        try:
            dmd.zenMenus.Manage.zenMenuItems._remove(dmd.zenMenus.Manage.zenMenuItems.clearHeartbeats)
        except AttributeError:
            pass # it didn't exist anyway
コード例 #4
0
class discoveryMaxOidsPerRequest(Migrate.Step):
    version = Migrate.Version(4, 2, 0)

    def cutover(self, dmd):
        try:
            disc = dmd.Devices.Discovered
            if not disc.isLocal('zMaxOIDPerRequest'):
                disc.setZenProperty('zMaxOIDPerRequest', 10)
                log.info("Setting zMaxOIDPerRequest to 10 on /Discovered")
        except (AttributeError, BadRequest):
            # they might not have discovery or this zproperty
            log.warn("Unable to set the zMaxOidsPerRequest on /Discovered")
コード例 #5
0
class perDeviceCompCatalog(Migrate.Step):
    version = Migrate.Version(4, 2, 0)

    def cutover(self, dmd):
        # Delete the old componentSearch
        if dmd.Devices.hasObject('componentSearch'):
            dmd.Devices._delObject('componentSearch')

        # Reindex components in the new per-device catalogs
        for device in dmd.Devices.getSubDevicesGen():
            if not device.hasObject('componentSearch'):
                device._create_componentSearch()
コード例 #6
0
class fixEmailNotificationClearSubjectFormat(Migrate.Step):
    version = Migrate.Version(4, 2, 0)

    def cutover(self, dmd):
        log.info("Setting default values for E-mail notifications.")
        for notif in dmd.NotificationSubscriptions.objectValues():
            if notif.action == "email":
                for content_key in ("clear_subject_format",
                                    "clear_body_format"):
                    if BAD_STRING in notif.content.get(content_key, ""):
                        notif._p_changed = True
                        notif.content[content_key] = notif.content[
                            content_key].replace(BAD_STRING, "summary")
コード例 #7
0
class zenmodelerModeledDevices(Migrate.Step):
    version = Migrate.Version(4, 2, 0)

    def cutover(self, dmd):
        rrdTemplate = dmd.Monitors.rrdTemplates.PerformanceConf
        dp = rrdTemplate.datasources.zenmodeler.datapoints._getOb(_MODELED_DEVICES_ID, None)
        if dp is None:
            log.info("Adding modeledDevices datapoint and graph.")
            dp = rrdTemplate.datasources.zenmodeler.manage_addRRDDataPoint(_MODELED_DEVICES_ID)
            dp.rrdtype = 'DERIVE'

        modeledDevicesGD = rrdTemplate.graphDefs._getOb(_MODELED_DEVICES_GRAPH_ID, None)
        if modeledDevicesGD is None:
            modeledDevicesGD = rrdTemplate.manage_addGraphDefinition(_MODELED_DEVICES_GRAPH_ID)
            modeledDevicesGD.units = 'devices / sec'
            modeledDevicesGD.manage_addDataPointGraphPoints(['zenmodeler_modeledDevices',])
コード例 #8
0
class moveZepConfig(Migrate.Step):
    version = Migrate.Version(4, 2, 0)

    # translates zeneventserver.conf key to ZenConfig protocol buffer key
    _params = {"zep.aging.interval_milliseconds": "aging_interval_milliseconds",
               "zep.aging.limit": "aging_limit",
               "zep.archive.interval_milliseconds": "archive_interval_milliseconds",
               "zep.archive.limit": "archive_limit",
               "zep.index.summary.interval_milliseconds": "index_summary_interval_milliseconds",
               "zep.index.archive.interval_milliseconds": "index_archive_interval_milliseconds",
               "zep.index.limit": "index_limit",
              }

    def _read_from_conf(self, zeneventserver_conf):
        with open(zeneventserver_conf) as f:
            for raw_line in f:
                line = raw_line.strip()
                if not line or line.startswith("#"):
                    continue
                parts = [p.strip() for p in line.split("=")]
                if len(parts) != 2:
                    continue
                key, value = parts
                for param in self._params:
                    if key == param:
                        yield self._params[key], value
                        break

    def cutover(self, dmd):
        zeneventserver_conf = zenPath("etc", "zeneventserver.conf")
        if not os.path.exists(zeneventserver_conf):
            return
        log.info("Moving parameters from zeneventserver.conf to zenoss_zep config table.")
        values = {}
        for config_name, config_value in self._read_from_conf(zeneventserver_conf):
            values[config_name] = config_value
        zep = getFacade('zep')
        zep.setConfigValues(values)
コード例 #9
0
def main():
    m = Migrate.Migration()
    m.main()