Ejemplo n.º 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])
Ejemplo n.º 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])
Ejemplo n.º 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}'))
Ejemplo n.º 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'))
 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'))
Ejemplo n.º 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
Ejemplo n.º 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
 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())
Ejemplo n.º 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())
Ejemplo n.º 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])
Ejemplo n.º 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)
Ejemplo n.º 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)
Ejemplo n.º 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)
Ejemplo n.º 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])
Ejemplo n.º 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)
Ejemplo n.º 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)
Ejemplo n.º 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)
Ejemplo n.º 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)
Ejemplo n.º 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)
Ejemplo n.º 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}'))
Ejemplo n.º 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)
Ejemplo n.º 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'))
Ejemplo n.º 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'))