Exemple #1
0
    def post(self):
        cluster_model = self.get_cluster_model(self.request_json["cluster_id"])
        servers_for_playbook = self.get_servers_for_playbook(
            self.request_json["playbook_id"],
            self.request_json["server_ids"],
            cluster_model
        )

        try:
            pcmodel = playbook_configuration.PlaybookConfigurationModel.create(
                name=self.request_json["name"],
                playbook_id=self.request_json["playbook_id"],
                cluster=cluster_model,
                servers=servers_for_playbook,
                initiator_id=self.initiator_id
            )
        except base_exceptions.UniqueConstraintViolationError as exc:
            LOG.warning(
                "Cannot create cluster %s (unique constraint "
                "violation)",
                self.request_json["name"]
            )
            raise http_exceptions.ImpossibleToCreateSuchModel() from exc

        LOG.info("Playbook configuration %s (%s) created by %s",
                 self.request_json["name"], pcmodel.model_id,
                 self.initiator_id)

        return pcmodel
Exemple #2
0
def created_playbook_configuration_model(
        name, playbook_id, cluster_model, servers, initiator_id, hints, *,
        delete_on_fail=False):
    try:
        pcmodel = playbook_configuration.PlaybookConfigurationModel.create(
            name=name,
            playbook_id=playbook_id,
            cluster=cluster_model,
            servers=servers,
            initiator_id=initiator_id,
            hints=hints
        )
    except base_exceptions.UniqueConstraintViolationError as exc:
        LOG.warning(
            "Cannot create cluster %s (unique constraint "
            "violation)", name)
        raise http_exceptions.ImpossibleToCreateSuchModel() from exc
    except base_exceptions.ClusterMustBeDeployedError as exc:
        mid = cluster_model.model_id
        LOG.warning(
            "Attempt to create playbook configuration for not "
            "deployed cluster %s", mid)
        raise http_exceptions.ClusterMustBeDeployedError(mid) from exc

    LOG.info("Playbook configuration %s (%s) created by %s",
             name, pcmodel.model_id, initiator_id)

    try:
        yield pcmodel
    except Exception as exc:
        if delete_on_fail:
            LOG.warning("Caught exception %s, delete playbook config %s",
                        exc, pcmodel.model_id)
            pcmodel.delete()
        raise
Exemple #3
0
    def post(self):
        cluster_model = self.get_cluster_model(self.request_json["cluster_id"])

        plugs = plugins.get_public_playbook_plugins()
        if self.request_json["playbook_id"] not in plugs:
            raise http_exceptions.UnknownPlaybookError(
                self.request_json["playbook_id"])
        plug = plugs[self.request_json["playbook_id"]]()

        servers_for_playbook = self.get_servers_for_playbook(
            plug,
            self.request_json["playbook_id"],
            self.request_json["server_ids"],
            cluster_model
        )
        try:
            plug.SERVER_LIST_POLICY.check(cluster_model, servers_for_playbook)
        except ValueError as exc:
            raise http_exceptions.ServerListPolicyViolation(
                self.request_json["playbook_id"],
                plug.SERVER_LIST_POLICY,
                exc
            )

        try:
            pcmodel = playbook_configuration.PlaybookConfigurationModel.create(
                name=self.request_json["name"],
                playbook_id=self.request_json["playbook_id"],
                cluster=cluster_model,
                servers=servers_for_playbook,
                initiator_id=self.initiator_id,
                hints=self.request_json["hints"]
            )
        except base_exceptions.UniqueConstraintViolationError as exc:
            LOG.warning(
                "Cannot create cluster %s (unique constraint "
                "violation)",
                self.request_json["name"]
            )
            raise http_exceptions.ImpossibleToCreateSuchModel() from exc
        except base_exceptions.ClusterMustBeDeployedError as exc:
            mid = cluster_model.model_id
            LOG.warning(
                "Attempt to create playbook configuration for not "
                "deployed cluster %s", mid)
            raise http_exceptions.ClusterMustBeDeployedError(mid) from exc

        LOG.info("Playbook configuration %s (%s) created by %s",
                 self.request_json["name"], pcmodel.model_id,
                 self.initiator_id)

        return pcmodel
Exemple #4
0
    def post(self):
        try:
            cluster_model = cluster.ClusterModel.create(
                self.request_json["name"], initiator_id=self.initiator_id)
        except base_exceptions.UniqueConstraintViolationError as exc:
            LOG.warning(
                "Cannot create cluster %s (unique constraint "
                "violation)", self.request_json["name"])
            raise http_exceptions.ImpossibleToCreateSuchModel() from exc

        LOG.info("Cluster %s (%s) created by %s", self.request_json["name"],
                 cluster_model.model_id, self.initiator_id)

        return cluster_model
Exemple #5
0
    def post(self):
        try:
            role_model = role.RoleModel.make_role(
                self.request_json["name"],
                self.request_json["permissions"],
                initiator_id=self.initiator_id)
        except base_exceptions.UniqueConstraintViolationError as exc:
            LOG.warning("Cannot create role %s (unique constraint violation)",
                        self.request_json["name"])
            raise http_exceptions.ImpossibleToCreateSuchModel() from exc
        except base_exceptions.UniqueConstraintViolationError as exc:
            raise http_exceptions.UniqueConstraintViolationError() from exc
        except ValueError as exc:
            LOG.warning("Incorrect permissions for role %s: %s",
                        self.request_json["name"], exc)
            raise http_exceptions.BadRequest from exc

        LOG.info("Role %s (%s) created by %s", self.request_json["name"],
                 role_model.model_id, self.initiator_id)

        return role_model
Exemple #6
0
    def post(self):
        new_password = passwords.generate_password()

        try:
            user_model = user.UserModel.make_user(
                self.request_json["login"],
                new_password,
                self.request_json["email"],
                self.request_json["full_name"],
                self.request_json["role_id"],
                initiator_id=self.initiator_id)
        except base_exceptions.UniqueConstraintViolationError as exc:
            LOG.warning(
                "Cannot create new user %s: violation of unique constraint",
                self.request_json["login"])
            raise http_exceptions.ImpossibleToCreateSuchModel() from exc

        LOG.info("User %s was created by %s", user_model.model_id,
                 self.initiator_id)

        notify_about_new_password(user_model, new_password)

        return user_model