コード例 #1
0
 def test_true_false_not_resolved(self):
     bindings = YamlBindings()
     bindings.import_dict({'indirect': '${t}'})
     validator = ValidateConfig(
           configurator=Configurator(bindings=bindings))
     self.assertFalse(validator.verify_true_false('indirect'))
     self.assertEqual('Missing "indirect".', validator.errors[0])
コード例 #2
0
 def test_true_false_not_resolved(self):
     bindings = YamlBindings()
     bindings.import_dict({'indirect': '${t}'})
     validator = ValidateConfig(configurator=Configurator(
         bindings=bindings))
     self.assertFalse(validator.verify_true_false('indirect'))
     self.assertEqual('Missing "indirect".', validator.errors[0])
コード例 #3
0
 def test_is_reference_bad(self):
     bindings = YamlBindings()
     validator = ValidateConfig(
         configurator=Configurator(bindings=bindings))
     self.assertFalse(validator.is_reference('str'))
     self.assertFalse(validator.is_reference('true'))
     self.assertFalse(validator.is_reference('0'))
     self.assertFalse(validator.is_reference('not ${a}'))
コード例 #4
0
 def test_true_false_good(self):
     bindings = YamlBindings()
     bindings.import_dict(
         {'t': True, 'f':False, 'indirect':'${t}', 'default': '${x:true}'})
     validator = ValidateConfig(
           configurator=Configurator(bindings=bindings))
     self.assertTrue(validator.verify_true_false('t'))
     self.assertTrue(validator.verify_true_false('f'))
     self.assertTrue(validator.verify_true_false('indirect'))
     self.assertTrue(validator.verify_true_false('default'))
コード例 #5
0
 def test_true_false_good(self):
     bindings = YamlBindings()
     bindings.import_dict(
         {'t': True, 'f':False, 'indirect':'${t}', 'default': '${x:true}'})
     validator = ValidateConfig(
           configurator=Configurator(bindings=bindings))
     self.assertTrue(validator.verify_true_false('t'))
     self.assertTrue(validator.verify_true_false('f'))
     self.assertTrue(validator.verify_true_false('indirect'))
     self.assertTrue(validator.verify_true_false('default'))
コード例 #6
0
    def host_test_helper(self, tests, valid, required=False):
        bindings = YamlBindings()
        bindings.import_dict(tests)
        validator = ValidateConfig(configurator=Configurator(
            bindings=bindings))
        for key, value in tests.items():
            msg = '"{key}" was {valid}'.format(
                key=key, valid='invalid' if valid else 'valid')

            self.assertEqual(valid, validator.verify_host(key, required), msg)
        return validator
コード例 #7
0
 def host_test_helper(self, tests, valid, required=False):
     bindings = YamlBindings()
     bindings.import_dict(tests)
     validator = ValidateConfig(
           configurator=Configurator(bindings=bindings))
     for key, value in tests.items():
         msg = '"{key}" was {valid}'.format(
             key=key, valid='invalid' if valid else 'valid')
                                            
         self.assertEqual(valid, validator.verify_host(key, required), msg)
     return validator
コード例 #8
0
 def test_verify_at_least_one_provider_enabled_good(self):
     bindings = YamlBindings()
     bindings.import_dict({
         'providers': {
             'aws': { 'enabled': False },
             'google': {'enabled': False },
             'another': {'enabled': True }
         },
     })
     validator = ValidateConfig(
           configurator=Configurator(bindings=bindings))
     self.assertTrue(validator.verify_at_least_one_provider_enabled())
コード例 #9
0
 def test_verify_at_least_one_provider_enabled_good(self):
     bindings = YamlBindings()
     bindings.import_dict({
         'providers': {
             'aws': { 'enabled': False },
             'google': {'enabled': False },
             'another': {'enabled': True }
         },
     })
     validator = ValidateConfig(
           configurator=Configurator(bindings=bindings))
     self.assertTrue(validator.verify_at_least_one_provider_enabled())
コード例 #10
0
 def test_verify_at_least_one_provider_enabled_bad(self):
     bindings = YamlBindings()
     bindings.import_dict({
         'providers': {
             'aws': { 'enabled': False },
             'google': {'enabled': False }
         },
         'services': {'test': { 'enabled': True }}
     })
     validator = ValidateConfig(
           configurator=Configurator(bindings=bindings))
     self.assertFalse(validator.verify_at_least_one_provider_enabled())
     self.assertEqual('None of the providers are enabled.',
                      validator.errors[0])
コード例 #11
0
    def baseUrl_test_helper(self, tests, valid, scheme_optional):
        bindings = YamlBindings()
        bindings.import_dict(tests)
        validator = ValidateConfig(configurator=Configurator(
            bindings=bindings))
        for key, value in tests.items():
            msg = '"{key}" was {valid}'.format(
                key=key, valid='invalid' if valid else 'valid')

            self.assertEqual(
                valid,
                validator.verify_baseUrl(key,
                                         True,
                                         scheme_optional=scheme_optional), msg)
コード例 #12
0
    def test_verify_user_access_only_good(self):
        bindings = YamlBindings()
        validator = ValidateConfig(
              configurator=Configurator(bindings=bindings))

        fd, temp = tempfile.mkstemp()
        os.close(fd)
        try:
            os.chmod(temp, 0400)
            self.assertTrue(validator.verify_user_access_only(temp))
            os.chmod(temp, 0600)
            self.assertTrue(validator.verify_user_access_only(temp))
        finally:
            os.remove(temp)
コード例 #13
0
 def baseUrl_test_helper(self, tests, valid, scheme_optional):
     bindings = YamlBindings()
     bindings.import_dict(tests)
     validator = ValidateConfig(
           configurator=Configurator(bindings=bindings))
     for key, value in tests.items():
         msg = '"{key}" was {valid}'.format(
             key=key, valid='invalid' if valid else 'valid')
                                            
         self.assertEqual(
             valid,
             validator.verify_baseUrl(key, True,
                                      scheme_optional=scheme_optional),
             msg)
コード例 #14
0
 def test_verify_at_least_one_provider_enabled_bad(self):
     bindings = YamlBindings()
     bindings.import_dict({
         'providers': {
             'aws': { 'enabled': False },
             'google': {'enabled': False }
         },
         'services': {'test': { 'enabled': True }}
     })
     validator = ValidateConfig(
           configurator=Configurator(bindings=bindings))
     self.assertFalse(validator.verify_at_least_one_provider_enabled())
     self.assertEqual('None of the providers are enabled.',
                      validator.errors[0])
コード例 #15
0
    def test_verify_user_access_only_bad(self):
        bindings = YamlBindings()
        validator = ValidateConfig(configurator=Configurator(
            bindings=bindings))

        fd, temp = tempfile.mkstemp()
        os.close(fd)
        try:
            os.chmod(temp, 0410)
            self.assertFalse(validator.verify_user_access_only(temp))
            self.assertEqual(
                '"{temp}" should not have non-owner access. Mode is 410.'.
                format(temp=temp), validator.errors[0])
            os.chmod(temp, 0420)
            self.assertFalse(validator.verify_user_access_only(temp))
            os.chmod(temp, 0440)
            self.assertFalse(validator.verify_user_access_only(temp))
            os.chmod(temp, 0401)
            self.assertFalse(validator.verify_user_access_only(temp))
            os.chmod(temp, 0402)
            self.assertFalse(validator.verify_user_access_only(temp))
            os.chmod(temp, 0404)
            self.assertFalse(validator.verify_user_access_only(temp))
        finally:
            os.remove(temp)
コード例 #16
0
    def test_verify_user_access_only_good(self):
        bindings = YamlBindings()
        validator = ValidateConfig(configurator=Configurator(
            bindings=bindings))

        fd, temp = tempfile.mkstemp()
        os.close(fd)
        try:
            os.chmod(temp, 0400)
            self.assertTrue(validator.verify_user_access_only(temp))
            os.chmod(temp, 0600)
            self.assertTrue(validator.verify_user_access_only(temp))
        finally:
            os.remove(temp)
コード例 #17
0
    def test_verify_user_access_only_bad(self):
        bindings = YamlBindings()
        validator = ValidateConfig(
              configurator=Configurator(bindings=bindings))

        fd, temp = tempfile.mkstemp()
        os.close(fd)
        try:
            os.chmod(temp, 0410)
            self.assertFalse(validator.verify_user_access_only(temp))
            self.assertEqual(
                '"{temp}" should not have non-owner access. Mode is 410.'
                .format(temp=temp),
                validator.errors[0])
            os.chmod(temp, 0420)
            self.assertFalse(validator.verify_user_access_only(temp))
            os.chmod(temp, 0440)
            self.assertFalse(validator.verify_user_access_only(temp))
            os.chmod(temp, 0401)
            self.assertFalse(validator.verify_user_access_only(temp))
            os.chmod(temp, 0402)
            self.assertFalse(validator.verify_user_access_only(temp))
            os.chmod(temp, 0404)
            self.assertFalse(validator.verify_user_access_only(temp))
        finally:
            os.remove(temp)
コード例 #18
0
 def test_true_false_bad(self):
     bindings = YamlBindings()
     bindings.import_dict(
         {'t': 'true', 'f':'false', 'indirect':'${t}', 'default': '${x:0}'})
     validator = ValidateConfig(
           configurator=Configurator(bindings=bindings))
     self.assertFalse(validator.verify_true_false('t'))
     self.assertFalse(validator.verify_true_false('f'))
     self.assertFalse(validator.verify_true_false('indirect'))
     self.assertFalse(validator.verify_true_false('default'))
     self.assertEqual(4, len(validator.errors))
     self.assertEqual(0, len(validator.warnings))
     self.assertEqual(
         ["t='true' is not valid. Must be boolean true or false.",
          "f='false' is not valid. Must be boolean true or false.",
          "indirect='true' is not valid. Must be boolean true or false.",
          "default=0 is not valid. Must be boolean true or false."],
         validator.errors)
コード例 #19
0
 def test_true_false_bad(self):
     bindings = YamlBindings()
     bindings.import_dict(
         {'t': 'true', 'f':'false', 'indirect':'${t}', 'default': '${x:0}'})
     validator = ValidateConfig(
           configurator=Configurator(bindings=bindings))
     self.assertFalse(validator.verify_true_false('t'))
     self.assertFalse(validator.verify_true_false('f'))
     self.assertFalse(validator.verify_true_false('indirect'))
     self.assertFalse(validator.verify_true_false('default'))
     self.assertEqual(4, len(validator.errors))
     self.assertEqual(0, len(validator.warnings))
     self.assertEqual(
         ["t='true' is not valid. Must be boolean true or false.",
          "f='false' is not valid. Must be boolean true or false.",
          "indirect='true' is not valid. Must be boolean true or false.",
          "default=0 is not valid. Must be boolean true or false."],
         validator.errors)
コード例 #20
0
 def test_is_reference_bad(self):
     bindings = YamlBindings()
     validator = ValidateConfig(configurator=Configurator(
         bindings=bindings))
     self.assertFalse(validator.is_reference('str'))
     self.assertFalse(validator.is_reference('true'))
     self.assertFalse(validator.is_reference('0'))
     self.assertFalse(validator.is_reference('not ${a}'))
コード例 #21
0
    def start_all(self, options):
        """Starts all the components then logs stderr to the console forever.

    The subsystems are in forked processes disassociated from this, so will
    continue running even after this process exists. Only the stderr logging
    to console will stop once this process is terminated. However, the
    logging will still continue into the LOG_DIR.
    """

        ValidateConfig(self.configurator).check_validate()
        self.configurator.update_deck_settings()

        ignore_tail_jobs = self.tail_error_logs()
        super(DevRunner, self).start_all(options)

        deck_port = self.installation.DECK_PORT
        print 'Waiting for deck to start on port {port}'.format(port=deck_port)

        # Tail the log file while we wait and run.
        # But the log file might not yet exist if deck hasn't started yet.
        # So wait for the log file to exist before starting to tail it.
        # Deck cant be ready yet if it hasn't started yet anyway.
        deck_log_path = os.path.join(self.installation.LOG_DIR, 'deck.log')
        while not os.path.exists(deck_log_path):
            time.sleep(0.1)
        ignore_tail_jobs.append(self.start_tail(deck_log_path))

        # Don't just wait for port to be ready,  but for deck to respond
        # because it takes a long time to startup once port is ready.
        while True:
            code, ignore = fetch(
                'http://localhost:{port}/'.format(port=deck_port))
            if code == 200:
                break
            else:
                time.sleep(0.1)

        print """Spinnaker is now ready on port {port}.

You can ^C (ctrl-c) to finish the script, which will stop emitting errors.
Spinnaker will continue until you run ./spinnaker/dev/stop_dev.sh
""".format(port=deck_port)

        while True:
            time.sleep(3600)
コード例 #22
0
 def test_is_reference_good(self):
     bindings = YamlBindings()
     validator = ValidateConfig(
         configurator=Configurator(bindings=bindings))
     self.assertTrue(validator.is_reference('${a}'))
     self.assertTrue(validator.is_reference('${a:value'))
コード例 #23
0
 def test_is_reference_good(self):
     bindings = YamlBindings()
     validator = ValidateConfig(configurator=Configurator(
         bindings=bindings))
     self.assertTrue(validator.is_reference('${a}'))
     self.assertTrue(validator.is_reference('${a:value'))