コード例 #1
0
def main():
    args = parse_args()

    if args.json_file:
        desired_state = desired_state_parser.load_desired_state_file(
            args.json_file)
    else:
        desired_state_data = gitiles.call_gitiles(args.json_gitiles,
                                                  'text',
                                                  netrc_path=args.netrc)
        desired_state = desired_state_parser.parse_desired_state(
            desired_state_data)

    if args.verify:
        return 0  # File checks out, no need to continue.

    triggered, ignored = desired_state_parser.get_masters_for_host(
        desired_state, args.build_dir, args.hostname)
    log_triggered_ignored(triggered, ignored, args.hostname)

    commands = [
        synthesize_master_manager_cmd(m, args.hostname, prod=args.prod)
        for m in triggered
    ]

    if args.command_timeout:
        commands = [
            daemon.add_timeout(c, args.command_timeout) for c in commands
        ]

    multiprocess.safe_map(subprocess.call, commands, args.processes)
コード例 #2
0
ファイル: __main__.py プロジェクト: eunchong/infra
def main():
  args = parse_args()
  # Flushing metrics here to be sure the presence/up got sent even if the
  # program runs for less than a minute.
  ts_mon.flush()

  if args.json_file:
    desired_state = desired_state_parser.load_desired_state_file(
        args.json_file)
  else:
    desired_state_data = gitiles.call_gitiles(
        args.json_gitiles, 'text', netrc_path=args.netrc)
    desired_state = desired_state_parser.parse_desired_state(desired_state_data)

  if args.verify:
    return 0  # File checks out, no need to continue.

  triggered, ignored = desired_state_parser.get_masters_for_host(
      desired_state, args.build_dir, args.hostname)
  log_triggered_ignored(triggered, ignored, args.hostname)

  commands = [
      synthesize_master_manager_cmd(m, args.hostname, prod=args.prod)
      for m in triggered
  ]

  if args.command_timeout:
    commands = [daemon.add_timeout(c, args.command_timeout) for c in commands]

  multiprocess.safe_map(subprocess.call, commands, args.processes)
コード例 #3
0
    def testHostnameLookup(self):
        """Test that selected masters are triggered and all else are ignored."""
        desired_state = {
            'master.chromium.fyi': [
                {
                    'desired_state': 'running',
                    'transition_time_utc': 4000
                },
            ],
            'master.supersecret': [
                {
                    'desired_state': 'running',
                    'transition_time_utc': 4000
                },
            ],
        }
        triggered, ignored = desired_state_parser.get_masters_for_host(
            desired_state, 'bananas/', 'impenetrablefortress.cool')

        self.assertEqual(len(triggered), 2)
        self.assertEqual(len(ignored), 2)

        self.assertEqual(sorted(ignored), [
            'master.chromium',
            'master.ultrasecret',
        ])

        for master_dict in triggered:
            self.assertIn(master_dict['dirname'], desired_state)
コード例 #4
0
  def testHostnameLookup(self):
    """Test that selected masters are triggered and all else are ignored."""
    desired_state = {
        'master.chromium.fyi': [
          {'desired_state': 'running', 'transition_time_utc': 4000},
        ],
        'master.supersecret': [
          {'desired_state': 'running', 'transition_time_utc': 4000},
        ],
    }
    triggered, ignored = desired_state_parser.get_masters_for_host(
        desired_state,
        'bananas/',
        'impenetrablefortress.cool'
    )

    self.assertEqual(len(triggered), 2)
    self.assertEqual(len(ignored), 2)

    self.assertEqual(sorted(ignored), [
      'master.chromium',
      'master.ultrasecret',
    ])

    for master_dict in triggered:
      self.assertIn(master_dict['dirname'], desired_state)
コード例 #5
0
    def testHostnameLookup(self):
        """Test that selected masters are triggered and all else are ignored."""
        desired_state = {
            'version': desired_state_parser.VERSION,
            'master_states': {
                'master.chromium.fyi': [
                    {
                        'desired_state': 'running',
                        'transition_time_utc': UNIX_TIMESTAMP_4000
                    },
                ],
                'master.supersecret': [
                    {
                        'desired_state': 'running',
                        'transition_time_utc': UNIX_TIMESTAMP_4000
                    },
                ],
            },
            'master_params': {
                'master.chromium.fyi': {
                    'drain_timeout_sec': 1337,
                },
            },
        }
        triggered, ignored = desired_state_parser.get_masters_for_host(
            desired_state, 'bananas/', 'impenetrablefortress.cool')

        self.assertEqual([t['dirname'] for t in triggered],
                         ['master.chromium.fyi', 'master.supersecret'])
        self.assertEqual(ignored,
                         set(['master.chromium', 'master.ultrasecret']))

        self.assertEqual(triggered[0]['params'], {
            'drain_timeout_sec': 1337,
        })
        self.assertEqual(triggered[1]['params'], {})

        self.assertEqual(sorted(ignored), [
            'master.chromium',
            'master.ultrasecret',
        ])

        for master_dict in triggered:
            self.assertIn(master_dict['dirname'],
                          desired_state['master_states'])
コード例 #6
0
  def testHostnameLookup(self):
    """Test that selected masters are triggered and all else are ignored."""
    desired_state = {
        'version': desired_state_parser.VERSION,
        'master_states': {
          'master.chromium.fyi': [
            {'desired_state': 'running',
             'transition_time_utc': UNIX_TIMESTAMP_4000},
          ],
          'master.supersecret': [
            {'desired_state': 'running',
             'transition_time_utc': UNIX_TIMESTAMP_4000},
          ],
        },
        'master_params': {
          'master.chromium.fyi': {
            'drain_timeout_sec': 1337,
          },
        },
    }
    triggered, ignored = desired_state_parser.get_masters_for_host(
        desired_state,
        'bananas/',
        'impenetrablefortress.cool'
    )

    self.assertEqual(
        [t['dirname'] for t in triggered],
        ['master.chromium.fyi', 'master.supersecret'])
    self.assertEqual(ignored, set(['master.chromium', 'master.ultrasecret']))

    self.assertEqual(triggered[0]['params'], {
      'drain_timeout_sec': 1337,
    })
    self.assertEqual(triggered[1]['params'], {})

    self.assertEqual(sorted(ignored), [
      'master.chromium',
      'master.ultrasecret',
    ])

    for master_dict in triggered:
      self.assertIn(master_dict['dirname'], desired_state['master_states'])