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:
parent
35f28651fa
commit
eafd5143c4
@ -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]
|
||||
|
@ -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)
|
||||
// *************************************************************************
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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>
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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();
|
||||
|
Loading…
x
Reference in New Issue
Block a user