1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-02-26 09:57:23 +03:00

Feature #4215: Store VM - VR id reference

This commit is contained in:
Carlos Martín 2015-12-01 16:36:50 +01:00
parent 35f28651fa
commit eafd5143c4
12 changed files with 123 additions and 14 deletions

View File

@ -1968,6 +1968,13 @@ private:
*/
int parse_defaults(string& error_str);
/**
* Parse virtual router related attributes
* @param error_str Returns the error reason, if any
* @return 0 on success
*/
int parse_vrouter(string& error_str);
/**
* Known attributes for network contextualization rendered as:
* ETH_<nicid>_<context[0]> = $NETWORK[context[1], vnet_name]

View File

@ -37,6 +37,16 @@ public:
*/
string& to_xml(string& xml) const;
int get_vmid()
{
return vmid;
}
void set_vmid(int vmid)
{
this->vmid = vmid;
}
// ------------------------------------------------------------------------
// Template Contents
// ------------------------------------------------------------------------
@ -66,6 +76,13 @@ private:
friend class VirtualRouterPool;
// *************************************************************************
// Attributes
// *************************************************************************
int vmid;
// *************************************************************************
// DataBase implementation (Private)
// *************************************************************************

View File

@ -3,6 +3,10 @@
:desc: ONE identifier for the Virtual Router
:size: 4
:VMID:
:desc: VM associated with the Virtual Router
:size: 4
:NAME:
:desc: Name of the Virtual Router
:size: 27
@ -20,6 +24,7 @@
:default:
- :ID
- :VMID
- :USER
- :GROUP
- :NAME

View File

@ -52,6 +52,10 @@ class OneVirtualRouterHelper < OpenNebulaHelper::OneHelper
d["ID"]
end
column :VMID, "VM associated with the Virtual Router", :size=>4 do |d|
d["VMID"]
end
column :NAME, "Name of the Virtual Router", :left, :size=>27 do |d|
d["NAME"]
end
@ -65,7 +69,7 @@ class OneVirtualRouterHelper < OpenNebulaHelper::OneHelper
helper.group_name(d, options)
end
default :ID, :USER, :GROUP, :NAME
default :ID, :VMID, :USER, :GROUP, :NAME
end
table
@ -94,6 +98,7 @@ class OneVirtualRouterHelper < OpenNebulaHelper::OneHelper
str_h1 % "VIRTUAL ROUTER #{obj['ID']} INFORMATION")
puts str % ["ID", obj.id.to_s]
puts str % ["NAME", obj.name]
puts str % ["VIRTUAL MACHINE", obj['VMID']]
puts str % ["USER", obj['UNAME']]
puts str % ["GROUP", obj['GNAME']]
puts

View File

@ -434,9 +434,10 @@ tabs:
table_columns:
- 0 # Checkbox
- 1 # ID
- 2 # Owner
- 3 # Group
- 4 # Name
- 2 # VMID
- 3 # Owner
- 4 # Group
- 5 # Name
actions:
VirtualRouter.refresh: true
VirtualRouter.create_dialog: true

View File

@ -434,9 +434,10 @@ tabs:
table_columns:
- 0 # Checkbox
- 1 # ID
- 2 # Owner
- 3 # Group
- 4 # Name
- 2 # VMID
- 3 # Owner
- 4 # Group
- 5 # Name
actions:
VirtualRouter.refresh: true
VirtualRouter.create_dialog: true

View File

@ -435,9 +435,10 @@ tabs:
table_columns:
- 0 # Checkbox
- 1 # ID
- 2 # Owner
- 3 # Group
- 4 # Name
- 2 # VMID
- 3 # Owner
- 4 # Group
- 5 # Name
actions:
VirtualRouter.refresh: true
VirtualRouter.create_dialog: true

View File

@ -56,6 +56,7 @@ define(function(require) {
this.columns = [
Locale.tr("ID"),
Locale.tr("VMID"),
Locale.tr("Owner"),
Locale.tr("Group"),
Locale.tr("Name")
@ -63,7 +64,7 @@ define(function(require) {
this.selectOptions = {
"id_index": 1,
"name_index": 4,
"name_index": 5,
"select_resource": Locale.tr("Please select a virtual router from the list"),
"you_selected": Locale.tr("You selected the following virtual router:"),
"select_resource_multiple": Locale.tr("Please select one or more virtual routers from the list"),
@ -91,6 +92,7 @@ define(function(require) {
element.ID + '" name="selected_items" value="' +
element.ID + '"/>',
element.ID,
element.VMID,
element.UNAME,
element.GNAME,
element.NAME

View File

@ -24,6 +24,8 @@ define(function(require) {
var PermissionsTable = require('utils/panel/permissions-table');
var RenameTr = require('utils/panel/rename-tr');
var OpenNebulaVirtualRouter = require('opennebula/virtualrouter');
var Sunstone = require('sunstone');
var Config = require('sunstone-config');
/*
TEMPLATES
@ -65,6 +67,13 @@ define(function(require) {
function _html() {
var renameTrHTML = RenameTr.html(TAB_ID, RESOURCE, this.element.NAME);
var vmid = this.element.VMID;
if (vmid == "-1"){
vmid = undefined; // Change made to use {{#if vmid}} in handlebars
}
var permissionsTableHTML = PermissionsTable.html(TAB_ID, RESOURCE, this.element);
// TODO: simplify interface?
@ -78,12 +87,22 @@ define(function(require) {
return TemplateInfo({
'element': this.element,
'renameTrHTML': renameTrHTML,
'vmid': vmid,
'permissionsTableHTML': permissionsTableHTML,
'templateTableHTML': templateTableHTML
});
}
function _setup(context) {
$("a.vmid", context).on("click", function(){
// TODO: this should be checked internally in showElement,
// but it won't work because of bug #4198
if (Config.isTabEnabled("vms-tab")){
Sunstone.showElement("vms-tab", "VM.show", $(this).text());
}
});
RenameTr.setup(TAB_ID, RESOURCE, this.element.ID, context);
PermissionsTable.setup(TAB_ID, RESOURCE, this.element, context);

View File

@ -18,7 +18,7 @@
<div class="large-6 columns">
<table id="info_virtual_router_table" class="dataTable">
<thead>
<tr>
<tr>
<th colspan="3">{{tr "Information"}}</th>
</tr>
</thead>
@ -28,6 +28,16 @@
<td class="value_td" colspan="2">{{element.ID}}</td>
</tr>
{{{renameTrHTML}}}
<tr>
<td class="key_td">{{tr "VM ID"}}</td>
<td class="value_td" colspan="2">
{{#if vmid}}
<a class="vmid">{{vmid}}</a>
{{else}}
--
{{/if}}
</td>
</tr>
</tbody>
</table>
</div>

View File

@ -428,6 +428,17 @@ int VirtualMachine::insert(SqlDB * db, string& error_str)
goto error_defaults;
}
// ------------------------------------------------------------------------
// Parse the virtual router attributes
// ------------------------------------------------------------------------
rc = parse_vrouter(error_str);
if ( rc != 0 )
{
goto error_vrouter;
}
// ------------------------------------------------------------------------
// Get network leases
// ------------------------------------------------------------------------
@ -584,6 +595,7 @@ error_one_vms:
error_os:
error_defaults:
error_vrouter:
error_public:
error_name:
error_common:
@ -823,6 +835,32 @@ error_cleanup:
return -1;
}
/* -------------------------------------------------------------------------- */
/* -------------------------------------------------------------------------- */
int VirtualMachine::parse_vrouter(string& error_str)
{
string st;
user_obj_template->get("VROUTER", st);
if (!st.empty())
{
obj_template->replace("VROUTER", st);
}
user_obj_template->get("VROUTER_ID", st);
if (!st.empty())
{
obj_template->replace("VROUTER_ID", st);
}
user_obj_template->erase("VROUTER");
user_obj_template->erase("VROUTER_ID");
return 0;
}
/* -------------------------------------------------------------------------- */
/* -------------------------------------------------------------------------- */
@ -3214,7 +3252,7 @@ int VirtualMachine::get_vrouter_id()
{
int vrid;
if (!user_obj_template->get("VROUTER_ID", vrid))
if (!obj_template->get("VROUTER_ID", vrid))
{
vrid = -1;
}

View File

@ -27,7 +27,8 @@ VirtualRouter::VirtualRouter( int id,
const string& _gname,
int _umask,
Template * _template_contents):
PoolObjectSQL(id,VROUTER,"",_uid,_gid,_uname,_gname,table)
PoolObjectSQL(id,VROUTER,"",_uid,_gid,_uname,_gname,table),
vmid(-1)
{
if (_template_contents != 0)
{
@ -197,6 +198,7 @@ string& VirtualRouter::to_xml(string& xml) const
<< "<UNAME>" << uname << "</UNAME>"
<< "<GNAME>" << gname << "</GNAME>"
<< "<NAME>" << name << "</NAME>"
<< "<VMID>" << vmid << "</VMID>"
<< perms_to_xml(perm_str)
<< obj_template->to_xml(template_xml)
<< "</VROUTER>";
@ -224,6 +226,7 @@ int VirtualRouter::from_xml(const string& xml)
rc += xpath(uname, "/VROUTER/UNAME", "not_found");
rc += xpath(gname, "/VROUTER/GNAME", "not_found");
rc += xpath(name, "/VROUTER/NAME", "not_found");
rc += xpath(vmid, "/VROUTER/VMID", -1);
// Permissions
rc += perms_from_xml();