Example #1
0
    def test_should_assemble_environment(self):
        file = os.path.join(os.path.dirname(__file__), '../resources',
                            'model_environment.json')
        json_data = open(file).read()

        data = json.loads(json_data)

        environment = Environment(**data)

        environment_expected = Environment(
            type="dokku",
            name="integrated-dev",
            deploy_host="integrated-dev.nexxera.com",
            app_deployment_file_url=get_valid_deployment_file_url())

        self.assertEqual(environment.__dict__, environment_expected.__dict__)
 def _add_qa_environment(self):
     self._add_environment(
         Environment(
             type="openshift",
             name="qa",
             deploy_host="qa.nexxera.com",
             app_deployment_file_url=get_valid_deployment_file_url()))
Example #3
0
    def test_deploy_app(self):

        os.environ['BLA'] = 'teste'

        file = os.path.join(os.path.dirname(__file__), '../resources',
                            'app.json')
        json_data = open(file).read()

        data = json.loads(json_data)
        app = App(**data)

        mock_paas = MockProvider()
        mock_paas.set_shell_exec(MagicMock())
        mock_paas.deploy(
            app, Environment(name='dev', deploy_host='localhost', type='mock'))

        env_vars = dict(
            APP_ENV="Development",
            TESTE="Oi teste",
            APP_NOTIFICATION_URL="http://notification.com",
            DATABASE_URL="postgres://*****:*****@localhost:5432/teste",
            URL_OPEN_ID="http://www.teste.com",
            SCHEDULER="{\"hour\": \"*/10\"}")

        self.assertEqual(app.env_vars, env_vars)
 def _add_integrated_dev_environment(self):
     self._add_environment(
         Environment(
             type="dokku",
             name="integrated-dev",
             deploy_host="integrated-dev.nexxera.com",
             app_deployment_file_url=get_valid_deployment_file_url()))
Example #5
0
 def test_update_environment_should_call_environment_repository(self):
     self.core.update_environment("dummy", "dokku", "i.com",
                                  get_valid_deployment_file_url())
     self.assertEqual(1, self.env_repo.update_environment.call_count)
     env_called = self.env_repo.update_environment.call_args[0][0]
     self.assertEqual(
         env_called.__dict__,
         Environment("dokku", "dummy", "i.com",
                     get_valid_deployment_file_url()).__dict__)
Example #6
0
 def setUp(self):
     self.dokku = DokkuProvider()
     self.shell_exec = MagicMock()
     self.dokku.set_shell_exec(self.shell_exec)
     self.git_exec = MagicMock()
     self.dokku.set_git_exec(self.git_exec)
     self._configure_dokku_exec()
     self.env = Environment("dokku", "dev", "dev.com")
     self.app = None
Example #7
0
    def test_add_environments_should_call_environment_repository(self):
        self.core.add_environment("dokku", "dummy",
                                  "integrated-dev.nexxera.com",
                                  get_valid_deployment_file_url())

        self.assertEqual(1, self.env_repo.add_environment.call_count)
        env_called = self.env_repo.add_environment.call_args[0][0]
        self.assertEqual(
            env_called.__dict__,
            Environment("dummy", "dokku", "integrated-dev.nexxera.com",
                        get_valid_deployment_file_url()).__dict__)
    def test_update_environment(self):
        self._add_integrated_dev_environment()
        self.env_repo.update_environment(
            Environment(
                name="integrated-dev",
                type="openshift",
                deploy_host="integrated-dev2.nexxera.com",
                app_deployment_file_url=get_valid_deployment_file_url()))

        updated_env = self.env_repo.load_environment("integrated-dev")
        self.assertEqual("openshift", updated_env.type)
        self.assertEqual("integrated-dev2.nexxera.com",
                         updated_env.deploy_host)
        self.assertEqual(get_valid_deployment_file_url(),
                         updated_env.app_deployment_file_url)
Example #9
0
    def update_environment(self, name, type, deploy_host, app_deployment_file_url):
        """
        Updates the environment identified by `name`

        Args:
            name (str): the name of the environment to update
            type (str): the new environment type
            deploy_host (str): the new deploy_host
            app_deployment_file_url (str): the new app_deployment_file_url type
        """
        environment = Environment(name=name,
                                  type=type,
                                  deploy_host=deploy_host,
                                  app_deployment_file_url=app_deployment_file_url)
        self.environment_repository.update_environment(environment)
Example #10
0
    def _load_environments_dict(self):
        """
        Loads the environments persisted in the environments.json file

        Returns:
            list of dict containing the environments data
        """
        env_list = []
        if os.path.isfile(self.get_environments_file()):
            with open(self.get_environments_file()) as file:
                json_data = file.read()
                data = json.loads(json_data,
                                  object_hook=lambda j: Environment(**j))
                env_list = data
        return env_list
Example #11
0
    def add_environment(self, name, type, deploy_host, app_deployment_file_url):
        """
        Adiciona e salva um novo Environment.
        Args:
            type: Tipo de ambiente, relacionado a ferramenta Paas a qual os dados do ambiente se refere, ex.: dokku,
                  openshift, heroku, etc.
            name: Nome do Environment, ex.: dev, qa, stage, production, etc.
            deploy_host: Host de acesso a ferramenta Paas onde é realizado o deploy.
            app_deployment_file_url: Template usado para baixar arquivo de configuração da aplicação a ser deployada.

        Returns:

        """
        environment = Environment(name=name,
                                  type=type,
                                  deploy_host=deploy_host,
                                  app_deployment_file_url=app_deployment_file_url)
        self.environment_repository.add_environment(environment)
Example #12
0
    def _resolve_environment(self, app_data, environment):
        """
        Resolves the environment deploy configuration and returns
        an instance of Environment class.

        Args:
            app_data (dict): the app data
            environment (str): environment name

        Returns:
            ndeploy.model.Environment object

        """
        if environment and self.env_repository.has_environment(environment):
            return self.env_repository.load_environment(environment)

        if app_data and "environment" in app_data:
            env = app_data["environment"]
            return Environment(env["type"], env["name"], env["deploy_host"])

        raise InvalidArgumentError(
            "cant resolve any environment. "
            "Either pass an environment in app "
            "config file or explicitly in 'ndeploy deploy' command")
Example #13
0
 def test_wrong_app_deployment_file_url(self):
     with self.assertRaises(BadFormedRemoteConfigUrlError):
         Environment(type="dokku",
                     name="qa",
                     deploy_host="qa.nexxera.com",
                     app_deployment_file_url="*****@*****.**")
Example #14
0
 def _deploy(self, app):
     env = Environment("openshift", "dev", "dev.com")
     self.openshift.deploy(app, env)
Example #15
0
 def _configure_env(self, name, host, _type, url):
     self.env_repo.has_environment.side_effect = \
         lambda n: n == name
     self.env_repo.load_environment.side_effect = \
         lambda n: Environment(_type, name, host, url) if n == name else None
 def test_updates_nonexistent_environment_raises_error(self):
     with self.assertRaises(EnvironmentDoesNotExistError):
         self.env_repo.update_environment(
             Environment(name="invalid-env",
                         type="openshift",
                         deploy_host=""))
Example #17
0
 def _undeploy(self):
     self.openshift.undeploy(App("myapp", "mygroup"),
                             Environment("openshift", "dev", "dev.com"))