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
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
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
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
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
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