def delete_node(self, lb_id, node_id, current_timestamp): """ Determines whether the node to be deleted exists in the session store, deletes the node, and returns the response code. """ if lb_id in self.lbs: _verify_and_update_lb_state(self, lb_id, False, current_timestamp) if self.lbs[lb_id]["status"] != "ACTIVE": # Error message verified as of 2015-04-22 resource = invalid_resource( "Load Balancer '{0}' has a status of '{1}' and is considered " "immutable.".format(lb_id, self.lbs[lb_id]["status"]), 422) return (resource, 422) _verify_and_update_lb_state(self, lb_id, current_timestamp=current_timestamp) if _delete_node(self, lb_id, node_id): return None, 202 else: return not_found_response("node"), 404 return not_found_response("loadbalancer"), 404
def delete_node(self, lb_id, node_id): """ Determines whether the node to be deleted exists in the session store, deletes the node, and returns the response code. """ current_timestamp = self.clock.seconds() if lb_id in self.lbs: _verify_and_update_lb_state(self, lb_id, False, current_timestamp) if self.lbs[lb_id]["status"] != "ACTIVE": # Error message verified as of 2015-04-22 return considered_immutable_error(self.lbs[lb_id]["status"], lb_id) _verify_and_update_lb_state(self, lb_id, current_timestamp=current_timestamp) if _delete_node(self, lb_id, node_id): return None, 202 else: return not_found_response("node"), 404 return not_found_response("loadbalancer"), 404
def delete_nodes(self, lb_id, node_ids): """ Bulk-delete multiple LB nodes. """ if not node_ids: resp = { "message": "Must supply one or more id's to process this request.", "code": 400 } return resp, 400 if lb_id not in self.lbs: return not_found_response("loadbalancer"), 404 current_timestamp = self.clock.seconds() _verify_and_update_lb_state(self, lb_id, False, current_timestamp) if self.lbs[lb_id]["status"] != "ACTIVE": # Error message verified as of 2015-04-22 resp = {"message": "LoadBalancer is not ACTIVE", "code": 422} return resp, 422 # We need to verify all the deletions up front, and only allow it through # if all of them are valid. all_ids = [node.id for node in self.lbs[lb_id].nodes] non_nodes = set(node_ids).difference(all_ids) if non_nodes: nodes = ','.join(map(str, non_nodes)) resp = { "validationErrors": { "messages": [ "Node ids {0} are not a part of your loadbalancer". format(nodes) ] }, "message": "Validation Failure", "code": 400, "details": "The object is not valid" } return resp, 400 for node_id in node_ids: # It should not be possible for this to fail, since we've already # checked that they all exist. assert _delete_node(self, lb_id, node_id) is True _verify_and_update_lb_state(self, lb_id, current_timestamp=current_timestamp) return EMPTY_RESPONSE, 202
def delete_nodes(self, lb_id, node_ids): """ Bulk-delete multiple LB nodes. """ if not node_ids: resp = { "message": "Must supply one or more id's to process this request.", "code": 400} return resp, 400 if lb_id not in self.lbs: return not_found_response("loadbalancer"), 404 current_timestamp = self.clock.seconds() _verify_and_update_lb_state(self, lb_id, False, current_timestamp) if self.lbs[lb_id]["status"] != "ACTIVE": # Error message verified as of 2015-04-22 resp = {"message": "LoadBalancer is not ACTIVE", "code": 422} return resp, 422 # We need to verify all the deletions up front, and only allow it through # if all of them are valid. all_ids = [node.id for node in self.lbs[lb_id].nodes] non_nodes = set(node_ids).difference(all_ids) if non_nodes: nodes = ','.join(map(str, non_nodes)) resp = { "validationErrors": { "messages": [ "Node ids {0} are not a part of your loadbalancer".format(nodes) ] }, "message": "Validation Failure", "code": 400, "details": "The object is not valid"} return resp, 400 for node_id in node_ids: # It should not be possible for this to fail, since we've already # checked that they all exist. assert _delete_node(self, lb_id, node_id) is True _verify_and_update_lb_state(self, lb_id, current_timestamp=current_timestamp) return EMPTY_RESPONSE, 202
def delete_node(self, lb_id, node_id): """ Determines whether the node to be deleted exists in the session store, deletes the node, and returns the response code. """ current_timestamp = self.clock.seconds() if lb_id in self.lbs: _verify_and_update_lb_state(self, lb_id, False, current_timestamp) if self.lbs[lb_id]["status"] != "ACTIVE": # Error message verified as of 2015-04-22 return considered_immutable_error( self.lbs[lb_id]["status"], lb_id) _verify_and_update_lb_state(self, lb_id, current_timestamp=current_timestamp) if _delete_node(self, lb_id, node_id): return None, 202 else: return not_found_response("node"), 404 return not_found_response("loadbalancer"), 404