def put(self, service_instance_id): state = dict(request.json) # Si nos piden a un estado PROVISIONED --> ERROR if state['state'].upper() == FinalState.PROVISIONED.value: return response_json.action_error(service_instance_id) if get_state_slcm(state['state'].upper()) is None: return response_json.not_found('Not found ' + service_instance_id + ' and state = ' + state['state']) data = find_one(service_instance_id) if data is None: return response_json.not_found('Not found ' + service_instance_id) # Miramos el estado actual if data.get('status').upper() == state['state'].upper(): result = {'state': state['state']} return result lcm = get_cls_in_dict(data) code = lcm.set_desired_state(state['state']) if code is None: return response_json.action_error('This instance was already in state ' + state['state']) # Actualizamos en base de datos data_state = {"status": state['state'].lower()} result = update_one(service_instance_id, data_state) if result.matched_count != 1: return response_json.action_error(service_instance_id) put_cls_in_dict(service_instance_id, lcm) return code
def put(self, service_instance_id): data = dict(request.json) if data['_id'] != service_instance_id: return response_json.action_error(service_instance_id) result = update_one(service_instance_id, data) if result.matched_count == 1: return response_json.is_ok_no_content() else: return response_json.action_error(data['_id'])
def get_current_status_and_update(lcm, service_instance_id): result = lcm.get_current_state() if 'status' in result: result_update = update_one(service_instance_id, {"status": result['status']}) if result_update.matched_count != 1: return response_json.action_error(service_instance_id) return result
def delete(self, service_instance_id): data = find_one(service_instance_id) if data is None: return response_json.not_found('Not found ' + service_instance_id) data = parse_json.decoder_item(data) state_enum = get_state_enum_value(data['context_type'].lower()) lcm = get_cls_in_dict(data) code = lcm.set_desired_state(state_enum) if code is None: context = data.get('context') message_json = "It isn't possible to connect. Hostname = " + \ context.get('host') + " Port = " + str(context.get('port')) return response_json.not_found(message_json) # Actualizamos en base de datos data_state = {"status": state_enum, "activated": False} result = update_one(service_instance_id, data_state) if result.matched_count == 1: put_cls_in_dict(service_instance_id, lcm) return response_json.is_ok_no_content() else: return response_json.action_error(service_instance_id)
def post(self): data = dict(request.json) lcm = get_cicle_manager_type(data) instance = lcm.get_instance() if instance is not None: data = parse_json.encode_item(data) if hasattr(instance, 'id'): code_result = assign_float_ip(lcm.get_conn(), instance, data['context']['host']) if code_result is -1: return response_json.internal_server_error("It isn't possbile assign float ip to " + data['context']['host']) result = mongodb.db[mongodb.collection_si].insert_one(add_validated_status(data)) else: result = mongodb.db[mongodb.collection_si].insert_one(add_validated_status(data)) if result.inserted_id is not None: dict_instances.update({str(result.inserted_id): lcm}) return jsonify({"service_instance_id": str(result.inserted_id)}) else: return response_json.action_error(request.json) else: context = data.get('context') message_json = "It isn't possible to connect. Hostname = " + \ context.get('host') + " Port = " + str(context.get('port')) return response_json.not_found(message_json)