def _get_data_source(self, existing) -> sources.DataSource:
        if self.datasource is not NULL_DATA_SOURCE:
            return self.datasource

        with events.ReportEventStack(
            name="check-cache",
            description="attempting to read from cache [%s]" % existing,
            parent=self.reporter,
        ) as myrep:

            ds, desc = self._restore_from_checked_cache(existing)
            myrep.description = desc
            self.ds_restored = bool(ds)
            LOG.debug(myrep.description)

        if not ds:
            util.del_file(self.paths.instance_link)
            (cfg_list, pkg_list) = self._get_datasources()
            # Deep copy so that user-data handlers can not modify
            # (which will affect user-data handlers down the line...)
            (ds, dsname) = sources.find_source(
                self.cfg,
                self.distro,
                self.paths,
                copy.deepcopy(self.ds_deps),
                cfg_list,
                pkg_list,
                self.reporter,
            )
            LOG.info("Loaded datasource %s - %s", dsname, ds)
        self.datasource = ds  # type: sources.DataSource
        # Ensure we adjust our path members datasource
        # now that we have one (thus allowing ipath to be used)
        self._reset()
        return ds
예제 #2
0
    def _get_data_source(self):
        if self.datasource is not NULL_DATA_SOURCE:
            return self.datasource

        with reporting.ReportEventStack(
                name="check-cache",
                description="attempting to read from cache",
                parent=self.reporter) as myrep:
            ds = self._restore_from_cache()
            if ds:
                LOG.debug("Restored from cache, datasource: %s", ds)
                myrep.description = "restored from cache"
            else:
                myrep.description = "no cache found"
        if not ds:
            (cfg_list, pkg_list) = self._get_datasources()
            # Deep copy so that user-data handlers can not modify
            # (which will affect user-data handlers down the line...)
            (ds, dsname) = sources.find_source(self.cfg,
                                               self.distro,
                                               self.paths,
                                               copy.deepcopy(self.ds_deps),
                                               cfg_list,
                                               pkg_list, self.reporter)
            LOG.info("Loaded datasource %s - %s", dsname, ds)
        self.datasource = ds
        # Ensure we adjust our path members datasource
        # now that we have one (thus allowing ipath to be used)
        self._reset()
        return ds
예제 #3
0
    def _get_data_source(self):
        if self.datasource is not NULL_DATA_SOURCE:
            return self.datasource

        with events.ReportEventStack(
                name="check-cache",
                description="attempting to read from cache",
                parent=self.reporter) as myrep:
            ds = self._restore_from_cache()
            if ds:
                LOG.debug("Restored from cache, datasource: %s", ds)
                myrep.description = "restored from cache"
            else:
                myrep.description = "no cache found"
        if not ds:
            (cfg_list, pkg_list) = self._get_datasources()
            # Deep copy so that user-data handlers can not modify
            # (which will affect user-data handlers down the line...)
            (ds,
             dsname) = sources.find_source(self.cfg, self.distro, self.paths,
                                           copy.deepcopy(self.ds_deps),
                                           cfg_list, pkg_list, self.reporter)
            LOG.info("Loaded datasource %s - %s", dsname, ds)
        self.datasource = ds
        # Ensure we adjust our path members datasource
        # now that we have one (thus allowing ipath to be used)
        self._reset()
        return ds
예제 #4
0
    def _get_data_source(self, existing):
        if self.datasource is not NULL_DATA_SOURCE:
            return self.datasource

        with events.ReportEventStack(
                name="check-cache",
                description="attempting to read from cache [%s]" % existing,
                parent=self.reporter) as myrep:

            ds, desc = self._restore_from_checked_cache(existing)
            myrep.description = desc
            self.ds_restored = bool(ds)
            LOG.debug(myrep.description)

        if not ds:
            util.del_file(self.paths.instance_link)
            (cfg_list, pkg_list) = self._get_datasources()
            # Deep copy so that user-data handlers can not modify
            # (which will affect user-data handlers down the line...)
            (ds, dsname) = sources.find_source(self.cfg,
                                               self.distro,
                                               self.paths,
                                               copy.deepcopy(self.ds_deps),
                                               cfg_list,
                                               pkg_list, self.reporter)
            LOG.info("Loaded datasource %s - %s", dsname, ds)
        self.datasource = ds
        # Ensure we adjust our path members datasource
        # now that we have one (thus allowing ipath to be used)
        self._reset()
        return ds
예제 #5
0
 def _get_data_source(self):
     if self.datasource is not NULL_DATA_SOURCE:
         return self.datasource
     ds = self._restore_from_cache()
     if ds:
         LOG.debug("Restored from cache, datasource: %s", ds)
     if not ds:
         (cfg_list, pkg_list) = self._get_datasources()
         # Deep copy so that user-data handlers can not modify
         # (which will affect user-data handlers down the line...)
         (ds, dsname) = sources.find_source(
             self.cfg, self.distro, self.paths, copy.deepcopy(self.ds_deps), cfg_list, pkg_list
         )
         LOG.info("Loaded datasource %s - %s", dsname, ds)
     self.datasource = ds
     # Ensure we adjust our path members datasource
     # now that we have one (thus allowing ipath to be used)
     self._reset()
     return ds
예제 #6
0
 def _get_data_source(self):
     if self.datasource is not NULL_DATA_SOURCE:
         return self.datasource
     ds = self._restore_from_cache()
     if ds:
         LOG.debug("Restored from cache, datasource: %s", ds)
     if not ds:
         (cfg_list, pkg_list) = self._get_datasources()
         # Deep copy so that user-data handlers can not modify
         # (which will affect user-data handlers down the line...)
         (ds, dsname) = sources.find_source(self.cfg, self.distro,
                                            self.paths,
                                            copy.deepcopy(self.ds_deps),
                                            cfg_list, pkg_list)
         LOG.info("Loaded datasource %s - %s", dsname, ds)
     self.datasource = ds
     # Ensure we adjust our path members datasource
     # now that we have one (thus allowing ipath to be used)
     self._reset()
     return ds
예제 #7
0
파일: stages.py 프로젝트: baude/cloud-init
    def _get_data_source(self, existing):
        if self.datasource is not NULL_DATA_SOURCE:
            return self.datasource

        with events.ReportEventStack(
                name="check-cache",
                description="attempting to read from cache [%s]" % existing,
                parent=self.reporter) as myrep:
            ds = self._restore_from_cache()
            if ds and existing == "trust":
                myrep.description = "restored from cache: %s" % ds
            elif ds and existing == "check":
                if (hasattr(ds, 'check_instance_id') and
                        ds.check_instance_id(self.cfg)):
                    myrep.description = "restored from checked cache: %s" % ds
                else:
                    myrep.description = "cache invalid in datasource: %s" % ds
                    ds = None
            else:
                myrep.description = "no cache found"

            self.ds_restored = bool(ds)
            LOG.debug(myrep.description)

        if not ds:
            util.del_file(self.paths.instance_link)
            (cfg_list, pkg_list) = self._get_datasources()
            # Deep copy so that user-data handlers can not modify
            # (which will affect user-data handlers down the line...)
            (ds, dsname) = sources.find_source(self.cfg,
                                               self.distro,
                                               self.paths,
                                               copy.deepcopy(self.ds_deps),
                                               cfg_list,
                                               pkg_list, self.reporter)
            LOG.info("Loaded datasource %s - %s", dsname, ds)
        self.datasource = ds
        # Ensure we adjust our path members datasource
        # now that we have one (thus allowing ipath to be used)
        self._reset()
        return ds
예제 #8
0
    def _get_data_source(self, existing):
        if self.datasource is not NULL_DATA_SOURCE:
            return self.datasource

        with events.ReportEventStack(
                name="check-cache",
                description="attempting to read from cache [%s]" % existing,
                parent=self.reporter) as myrep:
            ds = self._restore_from_cache()
            if ds and existing == "trust":
                myrep.description = "restored from cache: %s" % ds
            elif ds and existing == "check":
                if (hasattr(ds, 'check_instance_id') and
                        ds.check_instance_id(self.cfg)):
                    myrep.description = "restored from checked cache: %s" % ds
                else:
                    myrep.description = "cache invalid in datasource: %s" % ds
                    ds = None
            else:
                myrep.description = "no cache found"
            LOG.debug(myrep.description)

        if not ds:
            util.del_file(self.paths.instance_link)
            (cfg_list, pkg_list) = self._get_datasources()
            # Deep copy so that user-data handlers can not modify
            # (which will affect user-data handlers down the line...)
            (ds, dsname) = sources.find_source(self.cfg,
                                               self.distro,
                                               self.paths,
                                               copy.deepcopy(self.ds_deps),
                                               cfg_list,
                                               pkg_list, self.reporter)
            LOG.info("Loaded datasource %s - %s", dsname, ds)
        self.datasource = ds
        # Ensure we adjust our path members datasource
        # now that we have one (thus allowing ipath to be used)
        self._reset()
        return ds