Something as complex as this may be hard to build solely within HubSpot. Are you using a service right now where you access your bookings or where the data for that reservation is being stored?
If not, you might be better off using a service such as https://sirvoy.com/ (note: I've never used this software or any booking type software for hotels. I just searched for one) which has an embed code you can use for your site.
Some reasons as to why this would be a route to go:
HubSpot doesn't integrate with any kind of payment gateway for a true e-commerce experience on the HS site (with exception of using something like https://www.depositfix.com/ for form-based payments which wouldn't help you unless you are using Stripe payment gateway).
For searching availability you can use HubDBas a way to store your information, however, the only issue is someone would have to manually update the DB on a regular basis (such as whenever someone submits to have a booking) or you would need to create a custom form external (off of the HubSpot platform) and then have a call in order to make use of HubSpot's API to run a script and update the DB, Contact, or any other items needing updating.
Reserving could be done through forms (though a lot of coding may need to be done in order to check on statuses and more for available rooms). Updating would be a bit harder as you would have to code a way to pull previous entries and update accordingly. Canceling would be some manual work as well as you would need code like in the updating step but then also a way to refund the payment.