Пример #1
0
    def create_monitors(self):
        """モニタのリストを作成する

		Returns:
			list: モニタのリスト
		"""
        # 現在日時でのコミュニティ階層構造を取得する
        outline = community_outline(
            datetime.datetime.now(datetime.timezone.utc))
        result = []
        # コミュニティごとに
        for community in outline.get('communities', {}).values():
            # クラスタごとに
            for cluster in community.get('clusters', {}).values():
                community_id = community.get('id')
                cluster_id = cluster.get('id')
                # 有効 ?
                if config.is_active(community_id, cluster_id, self.type()):
                    units = cluster.get('units')
                    # ユニットが 1 つ以上定義されている ?
                    if units:
                        # モニタを作成しリストに追加
                        m = Monitor(community_id, cluster_id)
                        result.append(m)
        return result
Пример #2
0
def do_all():
    """一回の集計処理

	全コミュニティ中の全クラスタに対し,
	新しいスレッドを作成し,
	do_units() を実行する.
	"""
    unit_data_fetch_limit = settings.DOWNTIME['unit_data_fetch_limit']
    data_loss_tolerance_sec = settings.DOWNTIME['data_loss_tolerance_sec']
    logger.debug('**** downtime.job unit_data_fetch_limit : {}'.format(
        unit_data_fetch_limit))
    logger.debug('**** downtime.job data_loss_tolerance_sec : {}'.format(
        data_loss_tolerance_sec))
    outline = community_outline()
    threads = []
    for community in outline.get('communities', {}).values():
        for cluster in community.get('clusters', {}).values():
            units = cluster.get('units')
            if units:
                t = Thread(target=do_units,
                           args=(units.values(), unit_data_fetch_limit,
                                 data_loss_tolerance_sec),
                           name='downtime.job.units')
                t.daemon = False
                threads.append(t)
    for t in threads:
        t.start()
    for t in threads:
        t.join()