def test_read_previous_specification(self): """Add a specification to a machine and recall it.""" artifact_id = self.my_create_appliance("testspecification2") s.touch_to_add_specification(artifact_id,2,4) s.touch_to_add_specification(artifact_id,4,8) cores, ram = s.get_previous_specification(artifact_id,1) self.assertEqual(cores, 2) self.assertEqual(ram, 4) cores, ram = s.get_latest_specification(artifact_id) self.assertEqual(cores, 4) self.assertEqual(ram, 8)
def deboost_server(request): """Deboost a server: ie: Credit the users account Cancel any scheduled De-Boost Set the CPUs and RAM to the previous state Put the server in a "Pre_Deboosting" status Note that a user can Deboost at ANY time, but they only get credit if credit is due. Deboosting a non-boosted server just amounts to a restart. :param {vm or name}: ID of VApp which we want to deboost. :returns: ??? """ vm_id, actor_id = _resolve_vm(request) credit = server.get_time_until_deboost(vm_id)[3] server.touch_to_add_credit(actor_id, credit) #Scheduled timeouts don't need cancelling as they are ignored on unboosted servers. #FIXME - yet more hard-coding for cores/RAM prev_cores = 1 prev_ram = 16 try: prev_cores, prev_ram = server.get_previous_specification(vm_id) except: #OK, use the defaults. pass #If we're not careful, with this "go back to previous config" semantics, if a user de-boosts #a server twice they will actually end up setting their baseline config to the boosted specs. #Therefore do a check. current_cores, current_ram = server.get_latest_specification(vm_id) if not (prev_ram > current_ram): server.touch_to_add_specification(vm_id, prev_cores, prev_ram) # Tell the agents to get to work. touch_id = server.touch_to_state(actor_id, vm_id, "Pre_Deboosting") return dict(touch_id=touch_id, vm_id=vm_id, credit=credit)
def deboost_server(request): """Deboost a server: ie: Credit the users account Cancel any scheduled De-Boost Set the CPUs and RAM to the previous state Put the server in a "Pre_Deboosting" status Note that a user can Deboost at ANY time, but they only get credit if credit is due. Deboosting a non-boosted server just amounts to a restart. :param {vm or name}: ID of VApp which we want to deboost. :returns: ??? """ vm_id, actor_id = _resolve_vm(request) credit = server.get_time_until_deboost(vm_id)[3] server.touch_to_add_credit(actor_id, credit) # Scheduled timeouts don't need cancelling as they are ignored on unboosted servers. # FIXME - yet more hard-coding for cores/RAM prev_cores = 1 prev_ram = 16 try: prev_cores, prev_ram = server.get_previous_specification(vm_id) except: # OK, use the defaults. pass # If we're not careful, with this "go back to previous config" semantics, if a user de-boosts # a server twice they will actually end up setting their baseline config to the boosted specs. # Therefore do a check. current_cores, current_ram = server.get_latest_specification(vm_id) if not (prev_ram > current_ram): server.touch_to_add_specification(vm_id, prev_cores, prev_ram) # Tell the agents to get to work. touch_id = server.touch_to_state(actor_id, vm_id, "Pre_Deboosting") return dict(touch_id=touch_id, vm_id=vm_id, credit=credit)