GreenCloud Simulator
vm.cc
Go to the documentation of this file.
1 /*
2  * vm.cc
3  *
4  * @date Jun 12, 2013
5  * @author Guzek:Mateusz
6  */
7 
8 #include "vm.h"
9 
10 static class VMClass : public TclClass {
11 public:
12  VMClass() : TclClass("VM") {}
13  TclObject* create(int argc, const char*const*argv) {
14  return (new VM());
15  }
16 } class_vm;
17 
18 VM::VM() {
19 
20  /* It should be always false for VMs */
21  isTask = false;
22  /* It should be always true for VMs */
23  isVM = true;
24 
25  bind("id_", &id_);
26  bind("ntasks_", &ntasks_);
27  bind("currentLoad_", &currentLoad_);
28  bind("currentLoadMem_", &currentLoadMem_);
29  bind("currentLoadStor_", &currentLoadStor_);
30  bind("tskFailed_", &tskFailed_);
31  bind("eDVFS_enabled_", &eDVFS_enabled_); /* ON when DVFS is enabled */
32  state = Ready;
33 
34 }
35 
37 
38 }
39 
40 
41 vm_state VM::getVmState() {return state;};
42 
43 void VM::setHost(ResourceProvider * newHost){host = newHost;};
44 
45 
46 
47 
48 
50 
52  res_demands.push_back(new ResDemand(*res,res));
53 
54 }
55 
56 int VM::command(int argc, const char*const* argv)
57 {
58 
59  if (argc == 2) {
60  if (strcmp(argv[1], "start") == 0) {
61 
62  state = Running;
63  return (TCL_OK);
64  } else if (strcmp(argv[1], "stop") == 0) {
65 
66  state = Stopped;
67  return (TCL_OK);
68  } else if (strcmp(argv[1], "print") == 0) {
69  /* print general info */
70  print();
71  return (TCL_OK);
72  }
73  }
74  return (ResourceProvider::command(argc, argv));
75 }
76 
78  return;
79 }
80 
82  if(host!= NULL){
83  host->updateEnergyAndConsumption();
84  } else {
85  std::cerr << "ERROR: Task is allocated on an unallocated VM!\n";
86  }
87  return;
88 }
89 
90 void VM::print(){
91  std::cout << "VM:\t";
92  std::cout << id_;
93  std::cout << "\n";
94  if(host!=NULL){
95  std::cout << "Hosted on" << host->id_;
96  } else {
97  std::cout << "Not hosted";
98  }
99  std::cout << "\n";
100  std::cout << "Resources provisions:\n";
101  std::vector <std::vector<DcResource*> >::iterator iter_out;
102  for(iter_out = resource_list.begin(); iter_out!=resource_list.end() ;iter_out++){
103  std::vector <DcResource*>::iterator iter;
104  for (iter = iter_out->begin(); iter!=iter_out->end(); iter++)
105  {
106  (*iter)->print();
107  }
108  }
109  std::cout << "Resources demands:\n";
110  std::vector<ResDemand*>::iterator iter_dem;
111  for(iter_dem = res_demands.begin(); iter_dem!=res_demands.end() ;iter_dem++){
112  (*iter_dem)->print();
113  }
114  std::cout << "\n";
115 
116 }
117 
119  std::vector<CloudTask *>::iterator iter;
120  std::cout <<"VM " <<this->id_ << "\n";
121 
123 }
124 
virtual ~VM()
Definition: vm.cc:36
Definition: vm.h:21
virtual void printTasklist()
Definition: vm.cc:118
virtual int command(int argc, const char *const *argv)
Definition: vm.cc:56
virtual void addResource(DcResource *res)
Definition: vm.cc:49
virtual void addResource(DcResource *res)
virtual void printTasklist()
virtual void updateEnergyAndConsumption()
Definition: vm.cc:81
VMClass class_vm
vm_state getVmState()
Definition: vm.cc:41
VM()
Definition: vm.cc:18
void setHost(ResourceProvider *newHost)
Definition: vm.cc:43
Definition: vm.h:23
Definition: vm.h:20
Definition: vm.cc:10
TclObject * create(int argc, const char *const *argv)
Definition: vm.cc:13
virtual void print()
Definition: vm.cc:90
vm_state
Definition: vm.h:19
virtual int command(int argc, const char *const *argv)
virtual void updateMIPS()
Definition: vm.cc:77
VMClass()
Definition: vm.cc:12
Definition: vm.h:29