mirror of
https://github.com/OpenNebula/one.git
synced 2024-12-23 17:33:56 +03:00
Merge branch 'master' of git.opennebula.org:one
This commit is contained in:
commit
19c8f22887
@ -93,6 +93,20 @@ public:
|
||||
*/
|
||||
virtual int del_rule(int oid, string& error_str);
|
||||
|
||||
/**
|
||||
* Deletes rules that apply to this user id
|
||||
*
|
||||
* @param uid The user id
|
||||
*/
|
||||
void del_uid_rules(int uid);
|
||||
|
||||
/**
|
||||
* Deletes rules that apply to this group id
|
||||
*
|
||||
* @param gid The group id
|
||||
*/
|
||||
void del_gid_rules(int gid);
|
||||
|
||||
/**
|
||||
* Searches what resources of type obj_type the ACL rules set allows
|
||||
* the given user to perform the operation.
|
||||
@ -199,6 +213,13 @@ private:
|
||||
long long group_obj_type,
|
||||
multimap<long long, AclRule*> &tmp_rules);
|
||||
|
||||
/**
|
||||
* Deletes all rules that match the user mask
|
||||
*
|
||||
* @param user_req Mask to match
|
||||
*/
|
||||
void del_user_matching_rules(long long user_req);
|
||||
|
||||
// ----------------------------------------
|
||||
// Mutex synchronization
|
||||
// ----------------------------------------
|
||||
|
@ -125,6 +125,16 @@ public:
|
||||
return _time_out;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if there is an authorization driver enabled
|
||||
*
|
||||
* @return true if there is an authorization driver enabled
|
||||
*/
|
||||
bool is_authz_enabled()
|
||||
{
|
||||
return authz_enabled;
|
||||
};
|
||||
|
||||
private:
|
||||
/**
|
||||
* Thread id for the Transfer Manager
|
||||
@ -159,7 +169,12 @@ private:
|
||||
/**
|
||||
* Generic name for the Auth driver
|
||||
*/
|
||||
static const char * auth_driver_name;
|
||||
static const char * auth_driver_name;
|
||||
|
||||
/**
|
||||
* True if there is an authorization driver enabled
|
||||
*/
|
||||
bool authz_enabled;
|
||||
|
||||
/**
|
||||
* Returns a pointer to a Auth Manager driver.
|
||||
|
@ -180,11 +180,21 @@ public:
|
||||
{
|
||||
Nebula& nd = Nebula::instance();
|
||||
pool = nd.get_gpool();
|
||||
aclm = nd.get_aclm();
|
||||
|
||||
auth_object = PoolObjectSQL::GROUP;
|
||||
auth_op = AuthRequest::ADMIN;
|
||||
};
|
||||
|
||||
~GroupDelete(){};
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
|
||||
AclManager * aclm;
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
|
||||
int drop(int oid, PoolObjectSQL * object, string& error_msg);
|
||||
};
|
||||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
@ -198,6 +208,9 @@ public:
|
||||
{
|
||||
Nebula& nd = Nebula::instance();
|
||||
pool = nd.get_upool();
|
||||
gpool = nd.get_gpool();
|
||||
aclm = nd.get_aclm();
|
||||
|
||||
auth_object = PoolObjectSQL::USER;
|
||||
auth_op = AuthRequest::ADMIN;
|
||||
};
|
||||
@ -206,6 +219,11 @@ public:
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
|
||||
GroupPool * gpool;
|
||||
AclManager * aclm;
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
|
||||
int drop(int oid, PoolObjectSQL * object, string& error_msg);
|
||||
};
|
||||
|
||||
|
@ -68,6 +68,26 @@ public:
|
||||
RequestAttributes& att);
|
||||
};
|
||||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
/* ------------------------------------------------------------------------- */
|
||||
|
||||
class VMTemplateClone : public RequestManagerVMTemplate
|
||||
{
|
||||
public:
|
||||
VMTemplateClone():
|
||||
RequestManagerVMTemplate("VMTemplateClone",
|
||||
"Clone an existing virtual machine template",
|
||||
"A:sis")
|
||||
{
|
||||
auth_op = AuthRequest::USE;
|
||||
};
|
||||
|
||||
~VMTemplateClone(){};
|
||||
|
||||
void request_execute(xmlrpc_c::paramList const& _paramList,
|
||||
RequestAttributes& att);
|
||||
};
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
16
install.sh
16
install.sh
@ -259,6 +259,7 @@ SUNSTONE_DIRS="$SUNSTONE_LOCATION/models \
|
||||
$SUNSTONE_LOCATION/public/locale/en_US \
|
||||
$SUNSTONE_LOCATION/public/locale/ru \
|
||||
$SUNSTONE_LOCATION/public/locale/it_IT \
|
||||
$SUNSTONE_LOCATION/public/locale/pt_PT \
|
||||
$SUNSTONE_LOCATION/public/vendor \
|
||||
$SUNSTONE_LOCATION/public/vendor/jQueryLayout \
|
||||
$SUNSTONE_LOCATION/public/vendor/dataTables \
|
||||
@ -302,6 +303,8 @@ SELF_SERVICE_DIRS="\
|
||||
$LIB_LOCATION/ruby/cloud/occi/ui/public/locale \
|
||||
$LIB_LOCATION/ruby/cloud/occi/ui/public/locale/en_US \
|
||||
$LIB_LOCATION/ruby/cloud/occi/ui/public/locale/es_ES \
|
||||
$LIB_LOCATION/ruby/cloud/occi/ui/public/locale/fr_FR \
|
||||
$LIB_LOCATION/ruby/cloud/occi/ui/public/locale/fr_CA \
|
||||
$LIB_LOCATION/ruby/cloud/occi/ui/public/vendor \
|
||||
$LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/jQueryLayout \
|
||||
$LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/dataTables \
|
||||
@ -469,6 +472,7 @@ INSTALL_SUNSTONE_FILES=(
|
||||
SUNSTONE_PUBLIC_LOCALE_EN_US:$SUNSTONE_LOCATION/public/locale/en_US
|
||||
SUNSTONE_PUBLIC_LOCALE_RU:$SUNSTONE_LOCATION/public/locale/ru
|
||||
SUNSTONE_PUBLIC_LOCALE_IT_IT:$SUNSTONE_LOCATION/public/locale/it_IT
|
||||
SUNSTONE_PUBLIC_LOCALE_PT_PT:$SUNSTONE_LOCATION/public/locale/pt_PT
|
||||
)
|
||||
|
||||
INSTALL_SUNSTONE_ETC_FILES=(
|
||||
@ -528,6 +532,8 @@ INSTALL_SELF_SERVICE_FILES=(
|
||||
SELF_SERVICE_PUBLIC_IMAGES_FILES:$LIB_LOCATION/ruby/cloud/occi/ui/public/images
|
||||
SELF_SERVICE_PUBLIC_LOCALE_EN_US:$LIB_LOCATION/ruby/cloud/occi/ui/public/locale/en_US
|
||||
SELF_SERVICE_PUBLIC_LOCALE_ES_ES:$LIB_LOCATION/ruby/cloud/occi/ui/public/locale/es_ES
|
||||
SELF_SERVICE_PUBLIC_LOCALE_FR_FR:$LIB_LOCATION/ruby/cloud/occi/ui/public/locale/fr_FR
|
||||
SELF_SERVICE_PUBLIC_LOCALE_FR_CA:$LIB_LOCATION/ruby/cloud/occi/ui/public/locale/fr_CA
|
||||
)
|
||||
|
||||
INSTALL_ETC_FILES=(
|
||||
@ -1274,6 +1280,10 @@ SUNSTONE_PUBLIC_LOCALE_IT_IT="
|
||||
src/sunstone/public/locale/it_IT/it_IT.js \
|
||||
src/sunstone/public/locale/it_IT/it_datatable.txt"
|
||||
|
||||
SUNSTONE_PUBLIC_LOCALE_PT_PT="
|
||||
src/sunstone/public/locale/pt_PT/pt_PT.js \
|
||||
src/sunstone/public/locale/pt_PT/pt_datatable.txt"
|
||||
|
||||
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
@ -1431,7 +1441,11 @@ src/cloud/occi/lib/ui/public/images/yellow_bullet.png"
|
||||
|
||||
SELF_SERVICE_PUBLIC_LOCALE_EN_US="src/cloud/occi/lib/ui/public/locale/en_US/en_US.js"
|
||||
SELF_SERVICE_PUBLIC_LOCALE_ES_ES="src/cloud/occi/lib/ui/public/locale/es_ES/es_ES.js \
|
||||
src/cloud/occi/lib/ui/public/locale/es_ES/es_datatable.txt"
|
||||
src/cloud/occi/lib/ui/public/locale/es_ES/es_datatable.txt"
|
||||
SELF_SERVICE_PUBLIC_LOCALE_FR_FR="src/cloud/occi/lib/ui/public/locale/fr_FR/fr_FR.js \
|
||||
src/cloud/occi/lib/ui/public/locale/fr_FR/fr_datatable.txt"
|
||||
SELF_SERVICE_PUBLIC_LOCALE_FR_CA="src/cloud/occi/lib/ui/public/locale/fr_CA/fr_CA.js \
|
||||
src/cloud/occi/lib/ui/public/locale/fr_CA/fr_datatable.txt"
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# ACCT files
|
||||
|
33
share/doc/xsd/cluster.xsd
Normal file
33
share/doc/xsd/cluster.xsd
Normal file
@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
|
||||
targetNamespace="http://opennebula.org/XMLSchema" xmlns="http://opennebula.org/XMLSchema">
|
||||
<xs:element name="CLUSTER">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="xs:integer"/>
|
||||
<xs:element name="NAME" type="xs:string"/>
|
||||
<xs:element name="HOSTS">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="xs:integer" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="DATASTORES">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="xs:integer" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="VNETS">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="xs:integer" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:schema>
|
12
share/doc/xsd/cluster_pool.xsd
Normal file
12
share/doc/xsd/cluster_pool.xsd
Normal file
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
|
||||
targetNamespace="http://opennebula.org/XMLSchema" xmlns="http://opennebula.org/XMLSchema">
|
||||
<xs:include schemaLocation="cluster.xsd"/>
|
||||
<xs:element name="CLUSTER_POOL">
|
||||
<xs:complexType>
|
||||
<xs:sequence maxOccurs="1" minOccurs="1">
|
||||
<xs:element ref="CLUSTER" maxOccurs="unbounded" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:schema>
|
44
share/doc/xsd/datastore.xsd
Normal file
44
share/doc/xsd/datastore.xsd
Normal file
@ -0,0 +1,44 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://opennebula.org/XMLSchema" elementFormDefault="qualified" targetNamespace="http://opennebula.org/XMLSchema">
|
||||
<xs:element name="DATASTORE">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="xs:integer"/>
|
||||
<xs:element name="UID" type="xs:integer"/>
|
||||
<xs:element name="GID" type="xs:integer"/>
|
||||
<xs:element name="UNAME" type="xs:string"/>
|
||||
<xs:element name="GNAME" type="xs:string"/>
|
||||
<xs:element name="NAME" type="xs:string"/>
|
||||
<xs:element name="PERMISSIONS" minOccurs="0" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="OWNER_U" type="xs:integer"/>
|
||||
<xs:element name="OWNER_M" type="xs:integer"/>
|
||||
<xs:element name="OWNER_A" type="xs:integer"/>
|
||||
<xs:element name="GROUP_U" type="xs:integer"/>
|
||||
<xs:element name="GROUP_M" type="xs:integer"/>
|
||||
<xs:element name="GROUP_A" type="xs:integer"/>
|
||||
<xs:element name="OTHER_U" type="xs:integer"/>
|
||||
<xs:element name="OTHER_M" type="xs:integer"/>
|
||||
<xs:element name="OTHER_A" type="xs:integer"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="DS_MAD" type="xs:string"/>
|
||||
<xs:element name="TM_MAD" type="xs:string"/>
|
||||
<xs:element name="BASE_PATH" type="xs:string"/>
|
||||
<xs:element name="CLUSTER_ID" type="xs:integer"/>
|
||||
<xs:element name="CLUSTER" type="xs:string"/>
|
||||
<xs:element name="IMAGES">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="ID" type="xs:integer" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="TEMPLATE" type="xs:anyType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:schema>
|
12
share/doc/xsd/datastore_pool.xsd
Normal file
12
share/doc/xsd/datastore_pool.xsd
Normal file
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
|
||||
targetNamespace="http://opennebula.org/XMLSchema" xmlns="http://opennebula.org/XMLSchema">
|
||||
<xs:include schemaLocation="datastore.xsd"/>
|
||||
<xs:element name="DATASTORE_POOL">
|
||||
<xs:complexType>
|
||||
<xs:sequence maxOccurs="1" minOccurs="1">
|
||||
<xs:element ref="DATASTORE" maxOccurs="unbounded" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:schema>
|
@ -9,8 +9,9 @@
|
||||
<xs:element name="IM_MAD" type="xs:string"/>
|
||||
<xs:element name="VM_MAD" type="xs:string"/>
|
||||
<xs:element name="VN_MAD" type="xs:string"/>
|
||||
<xs:element name="TM_MAD" type="xs:string"/>
|
||||
<xs:element name="LAST_MON_TIME" type="xs:integer"/>
|
||||
<xs:element name="CLUSTER_ID" type="xs:integer"/>
|
||||
<xs:element name="CLUSTER" type="xs:string"/>
|
||||
<xs:element name="HOST_SHARE">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
|
@ -33,6 +33,8 @@
|
||||
<xs:element name="SIZE" type="xs:integer"/>
|
||||
<xs:element name="STATE" type="xs:integer"/>
|
||||
<xs:element name="RUNNING_VMS" type="xs:integer"/>
|
||||
<xs:element name="DATASTORE_ID" type="xs:integer"/>
|
||||
<xs:element name="DATASTORE" type="xs:string"/>
|
||||
<xs:element name="TEMPLATE" type="xs:anyType"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
@ -1,5 +1,153 @@
|
||||
#!/bin/bash
|
||||
|
||||
for i in group_pool group host_pool host image_pool image template_pool template user_pool user vm_pool vm vnet_pool vnet
|
||||
# -------------------------------------------------------------------------- #
|
||||
# Copyright 2002-2012, OpenNebula Project Leads (OpenNebula.org) #
|
||||
# #
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
|
||||
# not use this file except in compliance with the License. You may obtain #
|
||||
# a copy of the License at #
|
||||
# #
|
||||
# http://www.apache.org/licenses/LICENSE-2.0 #
|
||||
# #
|
||||
# Unless required by applicable law or agreed to in writing, software #
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, #
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
|
||||
# See the License for the specific language governing permissions and #
|
||||
# limitations under the License. #
|
||||
#--------------------------------------------------------------------------- #
|
||||
|
||||
mkdir -p samples/cluster samples/cluster_pool
|
||||
mkdir -p samples/datastore samples/datastore_pool
|
||||
mkdir -p samples/group samples/group_pool
|
||||
mkdir -p samples/host samples/host_pool
|
||||
mkdir -p samples/image samples/image_pool
|
||||
mkdir -p samples/vmtemplate samples/vmtemplate_pool
|
||||
mkdir -p samples/user samples/user_pool
|
||||
mkdir -p samples/vm samples/vm_pool
|
||||
mkdir -p samples/vnet samples/vnet_pool
|
||||
|
||||
|
||||
|
||||
onecluster create newcluster
|
||||
onegroup create newgroup
|
||||
|
||||
|
||||
# Host
|
||||
onehost create host01 --im im_test --vm vmm_test --net dummy
|
||||
onehost create host02 --im im_test --vm vmm_test --net dummy
|
||||
|
||||
onecluster addhost newcluster host02
|
||||
|
||||
onehost show 0 -x > samples/host/0.xml
|
||||
onehost show 1 -x > samples/host/1.xml
|
||||
|
||||
onehost list -x > samples/host_pool/0.xml
|
||||
|
||||
|
||||
# VNets
|
||||
onevnet list -x > samples/vnet_pool/1.xml
|
||||
|
||||
onevnet create test/vnet.0
|
||||
|
||||
onevnet list -x > samples/vnet_pool/2.xml
|
||||
|
||||
onevnet create test/vnet.1
|
||||
onevnet create test/vnet.2
|
||||
|
||||
onecluster addvnet newcluster 0
|
||||
onecluster addvnet newcluster 2
|
||||
|
||||
onevnet show 0 -x > samples/vnet/0.xml
|
||||
onevnet show 1 -x > samples/vnet/1.xml
|
||||
onevnet show 2 -x > samples/vnet/2.xml
|
||||
|
||||
onevnet list -x > samples/vnet_pool/3.xml
|
||||
|
||||
|
||||
# Template
|
||||
onetemplate list -x > samples/vmtemplate_pool/1.xml
|
||||
|
||||
onetemplate create test/template.0
|
||||
onetemplate create test/template.1
|
||||
|
||||
onetemplate show 0 -x > samples/vmtemplate/0.xml
|
||||
onetemplate show 1 -x > samples/vmtemplate/1.xml
|
||||
|
||||
onetemplate list -x > samples/vmtemplate_pool/2.xml
|
||||
|
||||
|
||||
# VM
|
||||
onetemplate instantiate 0
|
||||
|
||||
onevm show 0 -x > samples/vm/0.xml
|
||||
|
||||
onevm list -x > samples/vm_pool/0.xml
|
||||
|
||||
# Cluster
|
||||
onecluster create emptycluster
|
||||
|
||||
onecluster show 100 -x > samples/cluster/0.xml
|
||||
onecluster show 101 -x > samples/cluster/1.xml
|
||||
|
||||
onecluster list -x > samples/cluster_pool/0.xml
|
||||
|
||||
|
||||
# Image
|
||||
oneimage list -x > samples/image_pool/1.xml
|
||||
|
||||
oneimage create test/image.0 -d default
|
||||
oneimage create test/image.1 -d default
|
||||
|
||||
oneimage show 0 -x > samples/image/0.xml
|
||||
oneimage show 1 -x > samples/image/1.xml
|
||||
|
||||
oneimage list -x > samples/image_pool/3.xml
|
||||
|
||||
|
||||
# Datastore
|
||||
onedatastore create test/datastore.0
|
||||
onedatastore create test/datastore.1
|
||||
|
||||
onecluster adddatastore newcluster 100
|
||||
onecluster adddatastore newcluster 101
|
||||
|
||||
onedatastore show 100 -x > samples/datastore/0.xml
|
||||
onedatastore show 101 -x > samples/datastore/1.xml
|
||||
|
||||
onedatastore list -x > samples/datastore_pool/0.xml
|
||||
|
||||
|
||||
# User
|
||||
oneuser create newuser abc
|
||||
oneuser chgrp newuser newgroup
|
||||
|
||||
oneuser show newuser -x > samples/user/0.xml
|
||||
|
||||
oneuser list -x > samples/user_pool/0.xml
|
||||
|
||||
|
||||
# Group
|
||||
onegroup create emptygroup
|
||||
|
||||
onegroup show 0 -x > samples/group/0.xml
|
||||
onegroup show 1 -x > samples/group/1.xml
|
||||
onegroup show 100 -x > samples/group/2.xml
|
||||
onegroup show 101 -x > samples/group/3.xml
|
||||
|
||||
onegroup list -x > samples/group_pool/0.xml
|
||||
|
||||
|
||||
|
||||
for i in cluster datastore group host image vmtemplate user vm vnet
|
||||
do
|
||||
POOL_NAME="$i""_pool"
|
||||
|
||||
sed -i "s%<${i^^}>%<${i^^} xmlns='http://opennebula.org/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://opennebula.org/XMLSchema ../../$i.xsd'>%" samples/$i/*.xml
|
||||
sed -i "s%<${i^^}_POOL/>%<${i^^}_POOL xmlns='http://opennebula.org/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://opennebula.org/XMLSchema ../../$POOL_NAME.xsd'/>%" samples/$POOL_NAME/*.xml
|
||||
sed -i "s%<${i^^}_POOL>%<${i^^}_POOL xmlns='http://opennebula.org/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://opennebula.org/XMLSchema ../../$POOL_NAME.xsd'>%" samples/$POOL_NAME/*.xml
|
||||
|
||||
xmllint --noout --schema $i.xsd samples/$i/*
|
||||
done
|
||||
xmllint --noout --schema $POOL_NAME.xsd samples/$POOL_NAME/*
|
||||
done
|
||||
|
||||
exit 0
|
||||
|
3
share/doc/xsd/test/datastore.0
Normal file
3
share/doc/xsd/test/datastore.0
Normal file
@ -0,0 +1,3 @@
|
||||
NAME = ds0
|
||||
DS_MAD = fs
|
||||
TM_MAD = shared
|
5
share/doc/xsd/test/datastore.1
Normal file
5
share/doc/xsd/test/datastore.1
Normal file
@ -0,0 +1,5 @@
|
||||
NAME = ds1
|
||||
DS_MAD = fs
|
||||
TM_MAD = shared
|
||||
EXTRA = ABC
|
||||
EXTRA2 = 123
|
4
share/doc/xsd/test/image.0
Normal file
4
share/doc/xsd/test/image.0
Normal file
@ -0,0 +1,4 @@
|
||||
NAME = "Ubuntu"
|
||||
PATH = /etc/hosts
|
||||
TYPE = OS
|
||||
DESCRIPTION = "Ubuntu 10.04 desktop for students."
|
5
share/doc/xsd/test/image.1
Normal file
5
share/doc/xsd/test/image.1
Normal file
@ -0,0 +1,5 @@
|
||||
NAME = "Experiment results"
|
||||
TYPE = DATABLOCK
|
||||
SIZE = 10
|
||||
FSTYPE = ext3
|
||||
EXTRA = ABC
|
5
share/doc/xsd/test/template.0
Normal file
5
share/doc/xsd/test/template.0
Normal file
@ -0,0 +1,5 @@
|
||||
NAME = template0
|
||||
MEMORY = 128
|
||||
CPU = 1
|
||||
EXTRA = ABC
|
||||
EXTRA2 = 123
|
1
share/doc/xsd/test/template.1
Normal file
1
share/doc/xsd/test/template.1
Normal file
@ -0,0 +1 @@
|
||||
NAME = template1
|
15
share/doc/xsd/test/vnet.0
Normal file
15
share/doc/xsd/test/vnet.0
Normal file
@ -0,0 +1,15 @@
|
||||
NAME = "Blue LAN"
|
||||
TYPE = FIXED
|
||||
|
||||
BRIDGE = vbr1
|
||||
|
||||
LEASES = [IP=130.10.0.1]
|
||||
LEASES = [IP=130.10.0.2, MAC=50:20:20:20:20:21]
|
||||
LEASES = [IP=130.10.0.3]
|
||||
LEASES = [IP=130.10.0.4]
|
||||
|
||||
# Custom Attributes to be used in Context
|
||||
GATEWAY = 130.10.0.1
|
||||
DNS = 130.10.0.1
|
||||
|
||||
LOAD_BALANCER = 130.10.0.4
|
9
share/doc/xsd/test/vnet.1
Normal file
9
share/doc/xsd/test/vnet.1
Normal file
@ -0,0 +1,9 @@
|
||||
NAME = "R"
|
||||
TYPE = RANGED
|
||||
|
||||
BRIDGE = vbr1
|
||||
|
||||
NETWORK_ADDRESS = 10.10.10.0
|
||||
NETWORK_MASK = 255.255.255.0
|
||||
|
||||
CUSTOM = ABC
|
4
share/doc/xsd/test/vnet.2
Normal file
4
share/doc/xsd/test/vnet.2
Normal file
@ -0,0 +1,4 @@
|
||||
NAME = "Empty"
|
||||
TYPE = FIXED
|
||||
|
||||
BRIDGE = vbr1
|
@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
|
||||
targetNamespace="http://opennebula.org/XMLSchema" xmlns="http://opennebula.org/XMLSchema">
|
||||
<xs:include schemaLocation="template.xsd"/>
|
||||
<xs:include schemaLocation="vmtemplate.xsd"/>
|
||||
<xs:element name="VMTEMPLATE_POOL">
|
||||
<xs:complexType>
|
||||
<xs:sequence maxOccurs="1" minOccurs="1">
|
@ -25,6 +25,8 @@
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="CLUSTER_ID" type="xs:integer"/>
|
||||
<xs:element name="CLUSTER" type="xs:string"/>
|
||||
<xs:element name="TYPE" type="xs:integer"/>
|
||||
<xs:element name="BRIDGE" type="xs:string"/>
|
||||
<xs:element name="VLAN" type="xs:integer"/>
|
||||
|
@ -406,10 +406,9 @@ HM_MAD = [
|
||||
# absolute path or relative to $ONE_LOCATION/lib/mads (or
|
||||
# /usr/lib/one/mads/ if OpenNebula was installed in /)
|
||||
#
|
||||
# arguments :
|
||||
# --authn: list of authentication modules separated by commas, if not
|
||||
# defined all the modules available will be enabled
|
||||
# --authz: authorization module
|
||||
# authn : list of authentication modules separated by commas, if not
|
||||
# defined all the modules available will be enabled
|
||||
# authz : list of authentication modules separated by commas
|
||||
#
|
||||
# SESSION_EXPIRATION_TIME: Time in seconds to keep an authenticated token as
|
||||
# valid. During this time, the driver is not used. Use 0 to disable session
|
||||
@ -422,8 +421,8 @@ HM_MAD = [
|
||||
|
||||
AUTH_MAD = [
|
||||
executable = "one_auth_mad",
|
||||
arguments = "--authn ssh,x509,ldap,server_cipher,server_x509"
|
||||
# arguments = "--authz quota --authn ssh,x509,ldap,server_cipher,server_x509"
|
||||
authn = "ssh,x509,ldap,server_cipher,server_x509"
|
||||
# , authz = "quota"
|
||||
]
|
||||
|
||||
SESSION_EXPIRATION_TIME = 900
|
||||
|
@ -504,7 +504,6 @@ int AclManager::del_rule(int oid, string& error_str)
|
||||
{
|
||||
found = *rule == *(it->second);
|
||||
|
||||
|
||||
if ( !found )
|
||||
{
|
||||
it++;
|
||||
@ -546,6 +545,56 @@ int AclManager::del_rule(int oid, string& error_str)
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
void AclManager::del_uid_rules(int uid)
|
||||
{
|
||||
long long user_req = AclRule::INDIVIDUAL_ID | uid;
|
||||
|
||||
del_user_matching_rules(user_req);
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
void AclManager::del_gid_rules(int gid)
|
||||
{
|
||||
long long user_req = AclRule::GROUP_ID | gid;
|
||||
|
||||
del_user_matching_rules(user_req);
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
void AclManager::del_user_matching_rules(long long user_req)
|
||||
{
|
||||
multimap<long long, AclRule *>::iterator it;
|
||||
pair<multimap<long long, AclRule *>::iterator,
|
||||
multimap<long long, AclRule *>::iterator> index;
|
||||
|
||||
vector<int> oids;
|
||||
vector<int>::iterator oid_it;
|
||||
string error_str;
|
||||
|
||||
lock();
|
||||
|
||||
index = acl_rules.equal_range( user_req );
|
||||
|
||||
for ( it = index.first; it != index.second; it++)
|
||||
{
|
||||
oids.push_back(it->second->oid);
|
||||
}
|
||||
|
||||
unlock();
|
||||
|
||||
for ( oid_it = oids.begin() ; oid_it < oids.end(); oid_it++ )
|
||||
{
|
||||
del_rule(*oid_it, error_str);
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
void AclManager::reverse_search(int uid,
|
||||
int gid,
|
||||
PoolObjectSQL::ObjectType obj_type,
|
||||
|
@ -453,6 +453,29 @@ void AuthManager::load_mads(int uid)
|
||||
|
||||
auth_conf.replace("NAME",auth_driver_name);
|
||||
|
||||
oss.str("");
|
||||
|
||||
string authn = auth_conf.vector_value("AUTHN");
|
||||
|
||||
if ( !authn.empty() )
|
||||
{
|
||||
oss << "--authn " << authn;
|
||||
}
|
||||
|
||||
string authz = auth_conf.vector_value("AUTHZ");
|
||||
|
||||
if ( !authz.empty() )
|
||||
{
|
||||
authz_enabled = true;
|
||||
oss << " --authz " << authz;
|
||||
}
|
||||
else
|
||||
{
|
||||
authz_enabled = false;
|
||||
}
|
||||
|
||||
auth_conf.replace("ARGUMENTS", oss.str());
|
||||
|
||||
authm_driver = new AuthManagerDriver(uid,auth_conf.value(),(uid!=0),this);
|
||||
|
||||
rc = add(authm_driver);
|
||||
|
@ -88,6 +88,20 @@ cmd=CommandParser::CmdParser.new(ARGV) do
|
||||
end
|
||||
end
|
||||
|
||||
clone_desc = <<-EOT.unindent
|
||||
Creates a new Template from an existing one
|
||||
EOT
|
||||
|
||||
command :clone, clone_desc, :templateid, :name do
|
||||
helper.perform_action(args[0],options,"cloned") do |t|
|
||||
res = t.clone(args[1])
|
||||
|
||||
if !OpenNebula.is_error?(res)
|
||||
puts "ID: #{res}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
delete_desc = <<-EOT.unindent
|
||||
Deletes the given Image
|
||||
EOT
|
||||
|
@ -30,6 +30,8 @@ var config_tab_content =
|
||||
<select id="lang_sel" style="width:20em;">\
|
||||
<option value="en_US">'+tr("English")+'</option>\
|
||||
<option value="es_ES">'+tr("Spanish")+'</option>\
|
||||
<option value="fr_FR">'+tr("French (FR)")+'</option>\
|
||||
<option value="fr_CA">'+tr("French (CA)")+'</option>\
|
||||
</select>\
|
||||
</td>\
|
||||
</tr>\
|
||||
|
165
src/cloud/occi/lib/ui/public/locale/fr_CA/fr_CA.js
Normal file
165
src/cloud/occi/lib/ui/public/locale/fr_CA/fr_CA.js
Normal file
@ -0,0 +1,165 @@
|
||||
//Translated by Romain Dartigues <romain.dartigues@gmail.com>
|
||||
lang="fr_CA"
|
||||
datatable_lang="fr_datatable.txt"
|
||||
locale={
|
||||
"Additionally, OpenNebula Self-Service allows easy customization of the interface (e.g. this text) and brings multi-language support.":"Aditionnellement, OpenNebula Libre-Service permet une personalisation aisée de l'interface (ex.: ce texte) et apporte un support multilingue.",
|
||||
"Additionally, you can run several operations on defined storages, such as defining their persistance. Persistent images can only be used by 1 virtual machine, and the changes made by it have effect on the base image. Non-persistent images are cloned before being used in a Virtual Machine, therefore changes are lost unless a snapshot is taken prior to Virtual Machine shutdown.":"En outre, vous pouvez exécuter plusieurs opérations sur une image définie, tel que définir leur persistance. Les images persistantes peuvent seulement être utilisées par une machine virtuelle et les changements effectués auront un effet sur l'image de base. Les images non-persistantes sont clonées avant d'être utilisées dans une machine virtuelle, mais les changements sont perdus en moins qu'un instantané soit pris avant l'extinction de la machine virtuelle.",
|
||||
"Additionally, you can take a \'snapshot\' of the storage attached to these resources. They will be saved as new resources, visible from the Storage view and re-usable.":"De plus, vous pouvez prendre un \"instantané\" d\'une image raccordée à ces ressources. Elles seront sauvegardées en tant que nouvelles ressources, visibles depuis la vue \"Images\" et réutilisables.",
|
||||
"Address":"Adresse ",
|
||||
"Add storage":"Ajouter des images",
|
||||
"All":"Tout ",
|
||||
"are mandatory":"sont obligatoire",
|
||||
"Cancel":"Annuler",
|
||||
"Cannot contact server: is it running and reachable?":"Impossible de contacter le serveur: est-il en cours d'exécution et accessible ?",
|
||||
"Canvas not supported.":"Modèle non supporté.",
|
||||
"CD-ROM":"CD-ROM",
|
||||
"Changing language":"Modification de la langue",
|
||||
"Close":"Fermer",
|
||||
"Community":"Communauté",
|
||||
"Compute":"Machines virtuelles",
|
||||
"Compute resource":"Ressource de calcul",
|
||||
"Compute resources are Virtual Machines attached to storage and network resources. OpenNebula Self-Service allows you to easily create, remove and manage them, including the possibility of pausing a Virtual Machine or taking a snapshot of one of their disks.":"Les ressources de calculs sont des machines virtuelles attachées aux ressources de stockage et de réseau. OpenNebula Libre-Service vous permet d'aiséement les créer, supprimer et gérer, incluant la possibilité de mettre en pause une machine virtuelle ou de prendre un instantané d'un de leur disques.",
|
||||
"Compute resources can be attached to these networks at creation time. Virtual machines will be provided with an IP and the correct parameters to ensure connectivity.":"Les ressources de calculs peuvent être rattachées à ces réseaux lors de la création. Une adresse IP ainsi que les paramètres corrects afin d'assurer une connectivité seront fournis aux machines virtuelles.",
|
||||
"Configuration":"Configuration",
|
||||
"Confirmation of action":"Confirmation de l\'action",
|
||||
"CPU":"CPU",
|
||||
"Create":"Créer",
|
||||
"Create network":"Créer le réseau",
|
||||
"Create new compute resource":"Créer une nouvelle ressource de calcul",
|
||||
"Create new network resource":"Créer une nouvelle ressource réseau",
|
||||
"Create new storage resource":"Créer une nouvelle ressource de stockage",
|
||||
"Create Virtual Machine":"Créer une machine virtuelle",
|
||||
"Create # VMs":"Créer # MVs",
|
||||
"Current resources":"Ressources actuelles",
|
||||
"Dashboard":"Tableau de bord",
|
||||
"Datablock":"Block de données",
|
||||
"Delete":"Supprimer",
|
||||
"Description":"Description",
|
||||
"disk id":"identifiant disque",
|
||||
"Disks":"Disques",
|
||||
"Disks information":"Informations des disques",
|
||||
"Documentation":"Documentation",
|
||||
"Do you want to proceed?":"Souhaitez-vous continuer ?",
|
||||
"English":"Anglais",
|
||||
"Error":"Erreur",
|
||||
"Fields marked with":"Champs marqués par",
|
||||
"Filesystem type":"Type de système de fichiers",
|
||||
"FS type":"Type de FS",
|
||||
"French":"Français",
|
||||
"French Canadian":"Québécois",
|
||||
"Have a cloudy experience!":"Ayez une expérience dans le Nuage!",
|
||||
"Human readable description of the image.":"Description humainement lisible de l'image.",
|
||||
"ID":"ID",
|
||||
"Image":"Image",
|
||||
"Image information":"Information de l'image",
|
||||
"Image name":"Nom de l'image",
|
||||
"images":"images",
|
||||
"Images":"Images",
|
||||
"Info":"Info.",
|
||||
"information":"information",
|
||||
"Instance type":"Type d\'instance",
|
||||
"In this view you can easily manage OpenNebula Network resources. You can add or remove virtual networks.":"Dans cette vue vous pouvez aisément gérer les ressources Réseau d\'OpenNebula. Vous pouvez ajouter ou supprimer des réseaux virtuels.",
|
||||
"IP":"IP",
|
||||
"Language":"Langue",
|
||||
"Launch VNC session":"Exécuter une session VNC",
|
||||
"Loading":"Chargement",
|
||||
"Loading new language... please wait":"Chargement d\'une nouvelle langue... veuillez patienter",
|
||||
"MAC":"MAC",
|
||||
"Make non persistent":"Rendre non-persistant",
|
||||
"Make persistent":"Rendre persistant",
|
||||
"Memory":"Mémoire",
|
||||
"Monitoring information":"Information de surveillance",
|
||||
"Name":"Nom",
|
||||
"Name that the Image will get.":"Nom que l\'Image va avoir.",
|
||||
"Network":"Réseau",
|
||||
"Network Address":"Adresse réseau",
|
||||
"Network information":"Information réseau",
|
||||
"Network is unreachable: is OpenNebula running?":"Le réseau est injoignable: est-ce qu\'OpenNebula tourne ?",
|
||||
"Network reception":"Réception réseau",
|
||||
"networks":"réseaux",
|
||||
"Networks":"Réseaux",
|
||||
"Networks information":"Informations réseaux",
|
||||
"Network Size":"Taille du réseau",
|
||||
"Network transmission":"Transmission réseau",
|
||||
"+ New":"+ Nouveau",
|
||||
"No disk id or image name specified":"Aucun identifiant de disque ou nom d\'image",
|
||||
"No disks defined":"Aucun disque défini",
|
||||
"No networks defined":"Aucun réseau défini",
|
||||
"OK":"OK",
|
||||
"OpenNebula Self-Service is a simplified user interface to manage OpenNebula compute, storage and network resources. It is focused on easiness and usability and features a limited set of operations directed towards end-users.":"OpenNebula Libre-Service est une interface utilisateur simplifiée pour gérer les ressources de calcul, stockage et réseau OpenNebula. Il est axé sur la facilité et la convivialité d\'un nombre limité d\'opérations destinées aux utilisateurs finaux.",
|
||||
"Open VNC Session":"Ouvrir une session VNC",
|
||||
"OS":"OS",
|
||||
"Persistence of the image":"Persistance de l\'image",
|
||||
"Persistent":"Persistant",
|
||||
"Please, choose and modify the template you want to update":"Veuillez choisir et modifier le modèle que vous souhaitez mettre à jour",
|
||||
"Please provide a network address":"Veuillez renseigner une adresse réseau",
|
||||
"Please select":"Veuillez sélectionner",
|
||||
"Previous action":"Action précédente",
|
||||
"Public":"Publique",
|
||||
"Public scope of the image":"Visibilité publique de l\'image",
|
||||
"Publish":"Publier",
|
||||
"Refresh list":"Rafraîchir la liste",
|
||||
"Resume":"Reprendre",
|
||||
"Retrieving":"Récupération",
|
||||
"Saveas for VM with ID":"Sauvegarder sous pour une MV avec ID",
|
||||
"See more":"Voir plus",
|
||||
"Select a template":"Sélectionner un modèle",
|
||||
"Select disk":"Sélectionner un disque",
|
||||
"Select image to upload":"Sélectionner une image à téléverser",
|
||||
"Self-Service UI Configuration":"Configuration de l\'interface utilisateur du Libre-Service",
|
||||
"Shutdown":"Éteindre",
|
||||
"Sign out":"Déconnecter",
|
||||
"Size":"Taille",
|
||||
"Size (Mb)":"Taille (Mb)",
|
||||
"Size of the datablock in MB.":"Taille du bloc de données en MB.",
|
||||
"Skipping VM ":"Passer la MV",
|
||||
"Spanish":"Espagnol",
|
||||
"State":"État",
|
||||
"Stop":"Arrêter",
|
||||
"Storage":"Stockage",
|
||||
"Storage pool is formed by several images. These images can contain from full operating systems to be used as base for compute resources, to simple data. OpenNebula Self-Service offers you the possibility to create or upload your own images.":"Le dépot de stockage est formé par plusieurs images. Ces images peuvent contenir du système d\'exploitation complet pour être utilisé comme base pour les ressources de calculs, à de simple données. Open-Nebula Libre-Service vous offre la possibilité de créer ou de téléverser vos propres images.",
|
||||
"String":"Chaîne",
|
||||
"style":"style",
|
||||
"Submitted":"Soumis",
|
||||
"Support":"Support",
|
||||
"Suspend":"Suspendre",
|
||||
"Take snapshot":"Prendre un instantané",
|
||||
"Target":"Cible",
|
||||
"There are currently":"Il y a présentement",
|
||||
"The Storage view offers you an overview of your current images. Storage elements are attached to compute resources at creation time. They can also be extracted from running virtual machines by taking an snapshot.":"La vue de stockage vous offre un aperçu de vos images actuelles. Les éléments de stockage sont attachés aux ressources de calculs lors de la création. Ils peuvent également être extrait d\'une machine virtuelle en cours d\'exécution en prenant un instantané.",
|
||||
"This is a list of your current compute resources. Virtual Machines use previously defined images and networks. You can easily create a new compute element by cliking \'new\' and filling-in an easy wizard.":"Ceci est une liste de vos ressources de calculs actuelles. Les machines virtuelles utilisent des images et réseaux prédéfinis. Vous pouvez facilement créer un nouvel élément de calcul en cliquant sur \"Nouveau\" et en remplissant un assistant.",
|
||||
"This will cancel selected VMs":"Ceci va annuler les MVs sélectionnées",
|
||||
"This will delete the selected VMs from the database":"Ceci va supprimer les MVs sélectionnées de la base de données",
|
||||
"This will resume the selected VMs in stopped or suspended states":"Ceci va reprendre les MVs sélectionnées qui sont stoppées ou en pause",
|
||||
"This will shutdown the selected VMs":"Ceci va éteindre les MVs sélectionnées",
|
||||
"This will suspend the selected VMs":"Ceci va mettre en pause les MVs sélectionnées",
|
||||
"Type":"Type",
|
||||
"Type of file system to be built. This can be any value understood by mkfs unix command.":"Type de système de fichier à créer. Ce peut être n\'importe quelle valeur comprise par la commande unix mkfs.",
|
||||
"Type of the image":"Type de l\'image",
|
||||
"Unauthorized":"Non autorisé",
|
||||
"Unpublish":"Retirer",
|
||||
"Update":"Mettre à jour",
|
||||
"Update template":"Mettre à jour le modèle",
|
||||
"Used leases":"Baux utilisés",
|
||||
"Useful links":"Liens utiles",
|
||||
"Virtual Machine information":"Informations sur la machine virtuelle",
|
||||
"virtual machines":"machines virtuelles",
|
||||
"Virtual Network":"Réseau Virtuel",
|
||||
"Virtual Network information":"Informations sur le Réseau Virtuel",
|
||||
"Virtual Network name missing!":"Le nom du Réseau Virtuel est manquant!",
|
||||
"VM information":"Information MV",
|
||||
"VM Name":"Nom MV",
|
||||
"VNC connection":"Connexion VNC",
|
||||
"VNC Disabled":"VNC désactivé",
|
||||
"Welcome":"Bienvenue",
|
||||
"Welcome to OpenNebula Self-Service":"Bienvenue au Libre-Service OpenNebula",
|
||||
"You can add new storages by clicking \'new\'. Image files will be uploaded to OpenNebula and set ready to be used.":"Vous pouvez ajouter de nouveaux stockages en cliquant sur \"Nouveau\". Les fichiers image seront téléversés à OpenNebula et prêts à être utilisés.",
|
||||
"You can also manage compute resources and perform actions such as stop, resume, shutdown or cancel.":"Vous pouvez aussi gérer les ressources de calculs et exécuter des actions telles qu'arrêter, reprendre, éteindre ou annuler.",
|
||||
"You can use the wildcard %i. When creating several VMs, %i will be replaced with a different number starting from 0 in each of them":"Vous pouvez utiliser le joker %i. Lors de la création de plusieurs MVs, %i sera remplacé par un nombre commençant à 0 dans chaqu\'une d\'entre elles.",
|
||||
"You have to confirm this action.":"Vous devez confirmer cette action.",
|
||||
"You must select a file to upload":"Vous devez sélectionner un fichier à téléverser",
|
||||
"You must specify a name":"Vous devez spécifier un nom",
|
||||
"You must specify size and FS type":"Vous devez spécifier une taille et un type de Système de Fichiers",
|
||||
"You need to select something.":"Vous devez sélectionner quelque chose.",
|
||||
"Your compute resources connectivity is performed using pre-defined virtual networks. You can create and manage these networks using OpenNebula Self-Service.":"Votre connectivité de ressources de calculs est effectuée des réseaux virtuels pré-définis. Vous pouvez créer et gérer ces réseaux en utilisant OpenNebula Libre-Service",
|
||||
};
|
17
src/cloud/occi/lib/ui/public/locale/fr_CA/fr_datatable.txt
Normal file
17
src/cloud/occi/lib/ui/public/locale/fr_CA/fr_datatable.txt
Normal file
@ -0,0 +1,17 @@
|
||||
{
|
||||
"sProcessing": "En cours...",
|
||||
"sLengthMenu": "Affiche _MENU_ éléments",
|
||||
"sZeroRecords": "Pas d'enregistrement",
|
||||
"sInfo": "Affiche de _START_ à _END_ sur _TOTAL_",
|
||||
"sInfoEmpty": "Pas d'enregistrement",
|
||||
"sInfoFiltered": "(filtré sur un total de _MAX_)",
|
||||
"sInfoPostFix": "",
|
||||
"sSearch": "Rechercher:",
|
||||
"sUrl": "",
|
||||
"oPaginate": {
|
||||
"sFirst": "Premier",
|
||||
"sPrevious": "Précédent",
|
||||
"sNext": "Suivant",
|
||||
"sLast": "Dernier"
|
||||
}
|
||||
}
|
165
src/cloud/occi/lib/ui/public/locale/fr_FR/fr_FR.js
Normal file
165
src/cloud/occi/lib/ui/public/locale/fr_FR/fr_FR.js
Normal file
@ -0,0 +1,165 @@
|
||||
//Translated by Romain Dartigues <romain.dartigues@gmail.com>
|
||||
lang="fr_FR"
|
||||
datatable_lang="fr_datatable.txt"
|
||||
locale={
|
||||
"Additionally, OpenNebula Self-Service allows easy customization of the interface (e.g. this text) and brings multi-language support.":"Aditionnellement, OpenNebula Self-Service permet une personalisation aisée de l'interface (ex.: ce texte) et apporte un support multi-lingue.",
|
||||
"Additionally, you can run several operations on defined storages, such as defining their persistance. Persistent images can only be used by 1 virtual machine, and the changes made by it have effect on the base image. Non-persistent images are cloned before being used in a Virtual Machine, therefore changes are lost unless a snapshot is taken prior to Virtual Machine shutdown.":"En outre, vous pouvez exécuter plusieurs opérations sur une image donnée, tel que définir sa persistance. Les images persistantes peuvent seulement être utilisées par une machine virtuelle et les changements effectués auront un effet sur l'image de base. Les images non-persistantes sont clonées avant d'être utilisées dans une machine virtuelle, mais les changements sont perdus à moins qu'un snapshot soit pris avant l'extinction de la machine virtuelle.",
|
||||
"Additionally, you can take a \'snapshot\' of the storage attached to these resources. They will be saved as new resources, visible from the Storage view and re-usable.":"De plus, vous pouvez prendre un « snapshot » des images attachées à ces ressources. Elles seront sauvegardées en tant que nouvelles images, visibles depuis l\'onglet « Disques » et réutilisables.",
|
||||
"Address":"Adresse IP",
|
||||
"Add storage":"Ajouter du stockage ",
|
||||
"All":"Tout ",
|
||||
"are mandatory":"sont obligatoire",
|
||||
"Cancel":"Annuler",
|
||||
"Cannot contact server: is it running and reachable?":"Impossible de contacter le serveur : est-il en cours d'exécution et accessible ?",
|
||||
"Canvas not supported.":"Canvas non supporté",
|
||||
"CD-ROM":"CD-ROM",
|
||||
"Changing language":"Modification de la langue",
|
||||
"Close":"Fermer",
|
||||
"Community":"Communauté",
|
||||
"Compute":"Machines virtuelles",
|
||||
"Compute resource":"Ressource de calcul",
|
||||
"Compute resources are Virtual Machines attached to storage and network resources. OpenNebula Self-Service allows you to easily create, remove and manage them, including the possibility of pausing a Virtual Machine or taking a snapshot of one of their disks.":"Les ressources de calculs sont des machines virtuelles attachées aux ressources de stockage et de réseau. OpenNebula Self-Service vous permet d'aiséement les créer, supprimer et gérer, incluant la possibilité de mettre en pause une machine virtuelle ou de prendre un snapshot d'un de leur disques.",
|
||||
"Compute resources can be attached to these networks at creation time. Virtual machines will be provided with an IP and the correct parameters to ensure connectivity.":"Les machines virtuelles peuvent être rattachées à ces réseaux lors de la création. Une adresse IP ainsi que les paramètres corrects afin d'assurer une connectivité seront fournis aux machines virtuelles.",
|
||||
"Configuration":"Configuration",
|
||||
"Confirmation of action":"Confirmation de l\'action",
|
||||
"CPU":"CPU",
|
||||
"Create":"Créer",
|
||||
"Create network":"Créer le réseau",
|
||||
"Create new compute resource":"Créer une nouvelle machine virtuelle",
|
||||
"Create new network resource":"Créer un nouveau réseau",
|
||||
"Create new storage resource":"Créer une nouvelle image",
|
||||
"Create Virtual Machine":"Créer une machine virtuelle",
|
||||
"Create # VMs":"Créer # VMs",
|
||||
"Current resources":"Ressources actuelles",
|
||||
"Dashboard":"Tableau de bord",
|
||||
"Datablock":"Block de données",
|
||||
"Delete":"Supprimer",
|
||||
"Description":"Description",
|
||||
"disk id":"identifiant disque",
|
||||
"Disks":"Disques",
|
||||
"Disks information":"Informations des disques",
|
||||
"Documentation":"Documentation",
|
||||
"Do you want to proceed?":"Souhaitez-vous continuer ?",
|
||||
"English":"Anglais",
|
||||
"Error":"Erreur",
|
||||
"Fields marked with":"Champs marqués par",
|
||||
"Filesystem type":"Type de système de fichiers",
|
||||
"French":"Français",
|
||||
"French Canadian":"Québécois",
|
||||
"FS type":"Type de FS",
|
||||
"Have a cloudy experience!":"Ayez une expérience dans le Cloud !",
|
||||
"Human readable description of the image.":"Description humainement lisible de l'image.",
|
||||
"ID":"ID",
|
||||
"Image":"Image",
|
||||
"Image information":"Information de l'image",
|
||||
"Image name":"Nom de l'image",
|
||||
"images":"images",
|
||||
"Images":"Images",
|
||||
"Info":"Info.",
|
||||
"information":"information",
|
||||
"Instance type":"Type d\'instance",
|
||||
"In this view you can easily manage OpenNebula Network resources. You can add or remove virtual networks.":"Dans cette vue vous pouvez aisément gérer les réseaux d\'OpenNebula. Vous pouvez ajouter ou supprimer des réseaux virtuels.",
|
||||
"IP":"IP",
|
||||
"Language":"Langue",
|
||||
"Launch VNC session":"Exécuter une session VNC",
|
||||
"Loading":"Chargement",
|
||||
"Loading new language... please wait":"Chargement d\'une nouvelle langue... veuillez patienter",
|
||||
"MAC":"MAC",
|
||||
"Make non persistent":"Rendre non-persistant",
|
||||
"Make persistent":"Rendre persistant",
|
||||
"Memory":"Mémoire",
|
||||
"Monitoring information":"Information de surveillance",
|
||||
"Name":"Nom",
|
||||
"Name that the Image will get.":"Nom que l\'Image va avoir.",
|
||||
"Network":"Réseau",
|
||||
"Network Address":"Adresse réseau",
|
||||
"Network information":"Information réseau",
|
||||
"Network is unreachable: is OpenNebula running?":"Le réseau est injoignable : est-ce qu\'OpenNebula tourne ?",
|
||||
"Network reception":"Réception réseau",
|
||||
"networks":"réseaux",
|
||||
"Networks":"Réseaux",
|
||||
"Networks information":"Informations réseaux",
|
||||
"Network Size":"Taille du réseau",
|
||||
"Network transmission":"Transmission réseau",
|
||||
"+ New":"+ Nouveau",
|
||||
"No disk id or image name specified":"Aucun identifiant de disque ou nom d\'image",
|
||||
"No disks defined":"Aucun disque défini",
|
||||
"No networks defined":"Aucun réseau défini",
|
||||
"OK":"OK",
|
||||
"OpenNebula Self-Service is a simplified user interface to manage OpenNebula compute, storage and network resources. It is focused on easiness and usability and features a limited set of operations directed towards end-users.":"OpenNebula Self-Service est une interface utilisateur simplifiée pour gérer les machines virtuelles, les images disques et les réseaux d'OpenNebula. Il est axé sur la facilité et la convivialité d\'un nombre limité d\'opérations destinées aux utilisateurs finaux.",
|
||||
"Open VNC Session":"Ouvrir une session VNC",
|
||||
"OS":"OS",
|
||||
"Persistence of the image":"Persistance de l\'image",
|
||||
"Persistent":"Persistant",
|
||||
"Please, choose and modify the template you want to update":"Veuillez choisir et modifier le modèle que vous souhaitez mettre à jour",
|
||||
"Please provide a network address":"Veuillez renseigner une adresse réseau",
|
||||
"Please select":"Veuillez sélectionner",
|
||||
"Previous action":"Action précédente",
|
||||
"Public":"Publique",
|
||||
"Public scope of the image":"Visibilité publique de l\'image",
|
||||
"Publish":"Publier",
|
||||
"Refresh list":"Rafraîchir la liste",
|
||||
"Resume":"Reprendre",
|
||||
"Retrieving":"Récupération",
|
||||
"Saveas for VM with ID":"Sauvegarder sous pour une VM avec ID",
|
||||
"See more":"Voir plus",
|
||||
"Select a template":"Sélectionner un modèle",
|
||||
"Select disk":"Sélectionner un disque",
|
||||
"Select image to upload":"Sélectionner une image à envoyer",
|
||||
"Self-Service UI Configuration":"Configuration de l\'interface de Self-Service",
|
||||
"Shutdown":"Éteindre",
|
||||
"Sign out":"Déconnecter",
|
||||
"Size":"Taille",
|
||||
"Size (Mb)":"Taille (Mb)",
|
||||
"Size of the datablock in MB.":"Taille du bloc de données en Mo.",
|
||||
"Skipping VM ":"Passer la VM",
|
||||
"Spanish":"Espagnol",
|
||||
"State":"État",
|
||||
"Stop":"Stop",
|
||||
"Storage":"Disques",
|
||||
"Storage pool is formed by several images. These images can contain from full operating systems to be used as base for compute resources, to simple data. OpenNebula Self-Service offers you the possibility to create or upload your own images.":"Le dépot de stockage est formé par plusieurs images disques. Ces images peuvent contenir un système d\'exploitation complet pour être utilisé comme base pour les machines virtuelles, ou de simples données. Open-Nebula Self-Service vous offre la possibilité de créer ou d\'envoyer vos propres images.",
|
||||
"String":"Chaîne",
|
||||
"style":"style",
|
||||
"Submitted":"Soumis",
|
||||
"Support":"Support",
|
||||
"Suspend":"Suspendre",
|
||||
"Take snapshot":"Prendre un snapshot",
|
||||
"Target":"Cible",
|
||||
"There are currently":"Il y a actuellement",
|
||||
"The Storage view offers you an overview of your current images. Storage elements are attached to compute resources at creation time. They can also be extracted from running virtual machines by taking an snapshot.":"L\'onglet Disques vous offre un aperçu de vos images disques actuelles. Les images sont attachées aux machines virtuelles lors de la création. Elles peuvent également être sauvegardées en prenant un snapshot.",
|
||||
"This is a list of your current compute resources. Virtual Machines use previously defined images and networks. You can easily create a new compute element by cliking \'new\' and filling-in an easy wizard.":"Ceci est la liste de vos machines virtuelles actuelles. Ces machines virtuelles utilisent des images et réseaux prédéfinis. Vous pouvez facilement créer une nouvelle machine virtuelle en cliquant sur « nouveau » et en remplissant le formulaire.",
|
||||
"This will cancel selected VMs":"Ceci va annuler les VMs sélectionnées",
|
||||
"This will delete the selected VMs from the database":"Ceci va supprimer les VMs sélectionnées de la base de données",
|
||||
"This will resume the selected VMs in stopped or suspended states":"Ceci va reprendre les VMs sélectionnées qui sont stoppées ou en pause",
|
||||
"This will shutdown the selected VMs":"Ceci va éteindre les VMs sélectionnées",
|
||||
"This will suspend the selected VMs":"Ceci va mettre en pause les VMs sélectionnées",
|
||||
"Type":"Type",
|
||||
"Type of file system to be built. This can be any value understood by mkfs unix command.":"Type de système de fichier à créer. Ce peut être n\'importe quelle valeur comprise par la commande unix mkfs.",
|
||||
"Type of the image":"Type de l\'image",
|
||||
"Unauthorized":"Non autorisé",
|
||||
"Unpublish":"Retirer",
|
||||
"Update":"Mettre à jour",
|
||||
"Update template":"Mettre à jour le modèle",
|
||||
"Used leases":"IP utilisées",
|
||||
"Useful links":"Liens utiles",
|
||||
"Virtual Machine information":"Informations sur la machine virtuelle",
|
||||
"virtual machines":"machines virtuelles",
|
||||
"Virtual Network":"Réseau Virtuel",
|
||||
"Virtual Network information":"Informations sur le Réseau Virtuel",
|
||||
"Virtual Network name missing!":"Le nom du Réseau Virtuel est manquant !",
|
||||
"VM information":"Information VM",
|
||||
"VM Name":"Nom VM",
|
||||
"VNC connection":"Connexion VNC",
|
||||
"VNC Disabled":"VNC désactivé",
|
||||
"Welcome":"Bienvenue",
|
||||
"Welcome to OpenNebula Self-Service":"Bienvenue dans OpenNebula Self-Service",
|
||||
"You can add new storages by clicking \'new\'. Image files will be uploaded to OpenNebula and set ready to be used.":"Vous pouvez ajouter de nouvelles images en cliquant sur « nouveau ». Les fichiers image seront envoyés à OpenNebula et prêts à être utilisés.",
|
||||
"You can also manage compute resources and perform actions such as stop, resume, shutdown or cancel.":"Vous pouvez aussi gérer les machines virtuelles et exécuter des actions telles que arrêter, reprendre, éteindre ou annuler.",
|
||||
"You can use the wildcard %i. When creating several VMs, %i will be replaced with a different number starting from 0 in each of them":"Vous pouvez utiliser le joker %i. Lors de la création de plusieurs VMs, %i sera remplacé par un nombre commençant à 0 dans chaqu\'une d\'entre elles.",
|
||||
"You have to confirm this action.":"Vous devez confirmer cette action.",
|
||||
"You must select a file to upload":"Vous devez sélectionner un fichier à envoyer",
|
||||
"You must specify a name":"Vous devez spécifier un nom",
|
||||
"You must specify size and FS type":"Vous devez spécifier une taille et un type de FS",
|
||||
"You need to select something.":"Vous devez sélectionner quelque chose.",
|
||||
"Your compute resources connectivity is performed using pre-defined virtual networks. You can create and manage these networks using OpenNebula Self-Service.":"La connectivité des machines virtuelles est effectuée par des réseaux virtuels pré-définis. Vous pouvez créer et gérer ces réseaux en utilisant OpenNebula Self-Service",
|
||||
};
|
17
src/cloud/occi/lib/ui/public/locale/fr_FR/fr_datatable.txt
Normal file
17
src/cloud/occi/lib/ui/public/locale/fr_FR/fr_datatable.txt
Normal file
@ -0,0 +1,17 @@
|
||||
{
|
||||
"sProcessing": "En cours...",
|
||||
"sLengthMenu": "Affiche _MENU_ éléments",
|
||||
"sZeroRecords": "Pas d'enregistrement",
|
||||
"sInfo": "Affiche de _START_ à _END_ sur _TOTAL_",
|
||||
"sInfoEmpty": "Pas d'enregistrement",
|
||||
"sInfoFiltered": "(filtré sur un total de _MAX_)",
|
||||
"sInfoPostFix": "",
|
||||
"sSearch": "Rechercher:",
|
||||
"sUrl": "",
|
||||
"oPaginate": {
|
||||
"sFirst": "Premier",
|
||||
"sPrevious": "Précédent",
|
||||
"sNext": "Suivant",
|
||||
"sLast": "Dernier"
|
||||
}
|
||||
}
|
@ -32,7 +32,8 @@ module OpenNebula
|
||||
:publish => "template.publish",
|
||||
:delete => "template.delete",
|
||||
:chown => "template.chown",
|
||||
:chmod => "template.chmod"
|
||||
:chmod => "template.chmod",
|
||||
:clone => "template.clone"
|
||||
}
|
||||
|
||||
# Creates a Template description with just its identifier
|
||||
@ -143,6 +144,20 @@ module OpenNebula
|
||||
group_m, group_a, other_u, other_m, other_a)
|
||||
end
|
||||
|
||||
# Clones this template into a new one
|
||||
#
|
||||
# @param name [String] Name for the new Template.
|
||||
#
|
||||
# @return [Integer, OpenNebula::Error] The new Template ID in case
|
||||
# of success, Error otherwise
|
||||
def clone(name)
|
||||
return Error.new('ID not defined') if !@pe_id
|
||||
|
||||
rc = @client.call(TEMPLATE_METHODS[:clone], @pe_id, name)
|
||||
|
||||
return rc
|
||||
end
|
||||
|
||||
#######################################################################
|
||||
# Helpers to get Template information
|
||||
#######################################################################
|
||||
|
@ -101,6 +101,8 @@ module OpenNebula
|
||||
end
|
||||
end
|
||||
|
||||
# Delete an element from the xml
|
||||
# xpath::_String_ xpath expression that selects the elemnts to be deleted
|
||||
def delete_element(xpath)
|
||||
if NOKOGIRI
|
||||
@xml.xpath(xpath.to_s).remove
|
||||
@ -109,6 +111,15 @@ module OpenNebula
|
||||
end
|
||||
end
|
||||
|
||||
# Add a new element to the xml
|
||||
# xpath::_String_ xpath xpression where the elemente will be added
|
||||
# elems::_Hash_ Hash containing the pairs key-value to be included
|
||||
# Examples:
|
||||
# add_element('VM', 'NEW_ITEM' => 'NEW_VALUE')
|
||||
# <VM><NEW_ITEM>NEW_VALUE</NEW_ITEM>...</VM>
|
||||
#
|
||||
# add_element('VM/TEMPLATE', 'V1' => {'X1' => 'A1', 'Y2' => 'A2'})
|
||||
# <VM><TEMPLATE><V1><X1>A1</X1><Y2>A2</Y2>...</TEMPLATE></VM>
|
||||
def add_element(xpath, elems)
|
||||
elems.each { |key, value|
|
||||
if value.instance_of?(Hash)
|
||||
|
100
src/oca/ruby/test/XMLUtils_spec.rb
Normal file
100
src/oca/ruby/test/XMLUtils_spec.rb
Normal file
@ -0,0 +1,100 @@
|
||||
$: << '..'
|
||||
|
||||
|
||||
require 'rexml/document'
|
||||
require 'OpenNebula/XMLUtils'
|
||||
|
||||
shared_examples "modifying XML" do
|
||||
it "add a new element '.', 'B2' => 'bdos'" do
|
||||
@xml_element.add_element('.', 'B2' => 'bdos')
|
||||
|
||||
@xml_element.to_xml(true).should eql "<V1>
|
||||
<A1>auno</A1>
|
||||
<B2>bdos</B2>
|
||||
</V1>"
|
||||
end
|
||||
|
||||
it "add a new element '.', 'V2' => {'CC3' => 'cctres'}" do
|
||||
@xml_element.add_element('.', 'V2' => {'CC3' => 'cctres'})
|
||||
|
||||
@xml_element.to_xml(true).should eql "<V1>
|
||||
<A1>auno</A1>
|
||||
<B2>bdos</B2>
|
||||
<V2>
|
||||
<CC3>cctres</CC3>
|
||||
</V2>
|
||||
</V1>"
|
||||
end
|
||||
|
||||
it "add a new element 'V2', 'DD4' => 'ddcuatro'" do
|
||||
@xml_element.add_element('V2', 'DD4' => 'ddcuatro')
|
||||
|
||||
@xml_element.to_xml(true).should eql "<V1>
|
||||
<A1>auno</A1>
|
||||
<B2>bdos</B2>
|
||||
<V2>
|
||||
<CC3>cctres</CC3>
|
||||
<DD4>ddcuatro</DD4>
|
||||
</V2>
|
||||
</V1>"
|
||||
end
|
||||
|
||||
it "delete an element 'B2'" do
|
||||
@xml_element.delete_element('B2')
|
||||
|
||||
@xml_element.to_xml(true).should eql "<V1>
|
||||
<A1>auno</A1>
|
||||
<V2>
|
||||
<CC3>cctres</CC3>
|
||||
<DD4>ddcuatro</DD4>
|
||||
</V2>
|
||||
</V1>"
|
||||
end
|
||||
|
||||
it "delete an element 'V2/DD4'" do
|
||||
@xml_element.delete_element('V2/DD4')
|
||||
|
||||
@xml_element.to_xml(true).should eql "<V1>
|
||||
<A1>auno</A1>
|
||||
<V2>
|
||||
<CC3>cctres</CC3>
|
||||
</V2>
|
||||
</V1>"
|
||||
end
|
||||
|
||||
it "delete an element 'V2'" do
|
||||
@xml_element.delete_element('V2')
|
||||
|
||||
@xml_element.to_xml(true).should eql "<V1>
|
||||
<A1>auno</A1>
|
||||
</V1>"
|
||||
end
|
||||
end
|
||||
|
||||
describe 'NOKOGIRI' do
|
||||
before :all do
|
||||
xml = "<V1><A1>auno</A1></V1>"
|
||||
|
||||
bxml = OpenNebula::XMLElement.build_xml(xml, "V1")
|
||||
bxml.class.to_s.should eql('Nokogiri::XML::NodeSet')
|
||||
|
||||
@xml_element = OpenNebula::XMLElement.new(bxml)
|
||||
end
|
||||
|
||||
it_behaves_like "modifying XML"
|
||||
end
|
||||
|
||||
describe 'REXML' do
|
||||
before :all do
|
||||
OpenNebula::NOKOGIRI = false
|
||||
|
||||
xml = "<V1><A1>auno</A1></V1>"
|
||||
|
||||
bxml = OpenNebula::XMLElement.build_xml(xml, "V1")
|
||||
bxml.class.to_s.should eql('REXML::Element')
|
||||
|
||||
@xml_element = OpenNebula::XMLElement.new(bxml)
|
||||
end
|
||||
|
||||
it_behaves_like "modifying XML"
|
||||
end
|
@ -22,6 +22,7 @@ if [ -z "$ONE_LOCATION" ]; then
|
||||
OZONES_SERVER=$OZONES_LOCATION/ozones-server.rb
|
||||
OZONES_LOCK_FILE=/var/lock/one/.ozones.lock
|
||||
OZONES_LOG=/var/log/one/ozones-server.log
|
||||
OZONES_LOG_ERROR=/var/log/one/ozones-server.error
|
||||
OZONES_CONF=/etc/one/ozones-server.conf
|
||||
else
|
||||
OZONES_PID=$ONE_LOCATION/var/ozones.pid
|
||||
|
@ -2,34 +2,95 @@
|
||||
"VDC_POOL": {
|
||||
"VDC": [
|
||||
{
|
||||
"ID": 1,
|
||||
"ACLS": "2,3,4,5,6,7",
|
||||
"HOSTS": "1,2,3",
|
||||
"NAME": "vdcA",
|
||||
"ZONES_ID": 1,
|
||||
"VDCADMIN_ID": 2,
|
||||
"ID": 1,
|
||||
"RESOURCES": {
|
||||
"DATASTORES": [
|
||||
100
|
||||
],
|
||||
"HOSTS": [
|
||||
0,
|
||||
1,
|
||||
2
|
||||
],
|
||||
"NETWORKS": [
|
||||
0
|
||||
],
|
||||
"ACLS": [
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
8,
|
||||
9,
|
||||
10
|
||||
]
|
||||
},
|
||||
"GROUP_ID": 100,
|
||||
"ZONES_ID": 1,
|
||||
"VDCADMINNAME": "vdcadminA",
|
||||
"VDCADMIN_ID": 2
|
||||
"CLUSTER_ID": 100
|
||||
},
|
||||
{
|
||||
"ID": 2,
|
||||
"ACLS": "2,3,4,5",
|
||||
"HOSTS": "1",
|
||||
"NAME": "vdcB",
|
||||
"ZONES_ID": 2,
|
||||
"VDCADMIN_ID": 2,
|
||||
"ID": 2,
|
||||
"RESOURCES": {
|
||||
"DATASTORES": [
|
||||
100
|
||||
],
|
||||
"HOSTS": [
|
||||
1
|
||||
],
|
||||
"NETWORKS": [
|
||||
0
|
||||
],
|
||||
"ACLS": [
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
8
|
||||
]
|
||||
},
|
||||
"GROUP_ID": 100,
|
||||
"ZONES_ID": 2,
|
||||
"VDCADMINNAME": "vdcadminB",
|
||||
"VDCADMIN_ID": 2
|
||||
"CLUSTER_ID": 100
|
||||
},
|
||||
{
|
||||
"ID": 3,
|
||||
"ACLS": "8,9,10,11",
|
||||
"HOSTS": "4",
|
||||
"NAME": "vdcC",
|
||||
"ZONES_ID": 1,
|
||||
"VDCADMIN_ID": 3,
|
||||
"ID": 3,
|
||||
"RESOURCES": {
|
||||
"DATASTORES": [
|
||||
100
|
||||
],
|
||||
"HOSTS": [
|
||||
3
|
||||
],
|
||||
"NETWORKS": [
|
||||
0
|
||||
],
|
||||
"ACLS": [
|
||||
11,
|
||||
12,
|
||||
13,
|
||||
14,
|
||||
15,
|
||||
16,
|
||||
17
|
||||
]
|
||||
},
|
||||
"GROUP_ID": 101,
|
||||
"ZONES_ID": 1,
|
||||
"VDCADMINNAME": "vdcadminC",
|
||||
"VDCADMIN_ID": 3
|
||||
"CLUSTER_ID": 100
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -2,24 +2,66 @@
|
||||
"VDC_POOL": {
|
||||
"VDC": [
|
||||
{
|
||||
"ID": 1,
|
||||
"ACLS": "2,3,4,5,6,7",
|
||||
"HOSTS": "1,2,3",
|
||||
"NAME": "vdcA",
|
||||
"ZONES_ID": 1,
|
||||
"VDCADMIN_ID": 2,
|
||||
"ID": 1,
|
||||
"RESOURCES": {
|
||||
"DATASTORES": [
|
||||
100
|
||||
],
|
||||
"HOSTS": [
|
||||
0,
|
||||
1,
|
||||
2
|
||||
],
|
||||
"NETWORKS": [
|
||||
0
|
||||
],
|
||||
"ACLS": [
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
8,
|
||||
9,
|
||||
10
|
||||
]
|
||||
},
|
||||
"GROUP_ID": 100,
|
||||
"ZONES_ID": 1,
|
||||
"VDCADMINNAME": "vdcadminA",
|
||||
"VDCADMIN_ID": 2
|
||||
"CLUSTER_ID": 100
|
||||
},
|
||||
{
|
||||
"ID": 2,
|
||||
"ACLS": "2,3,4,5",
|
||||
"HOSTS": "1",
|
||||
"NAME": "vdcB",
|
||||
"ZONES_ID": 2,
|
||||
"VDCADMIN_ID": 2,
|
||||
"ID": 2,
|
||||
"RESOURCES": {
|
||||
"DATASTORES": [
|
||||
100
|
||||
],
|
||||
"HOSTS": [
|
||||
1
|
||||
],
|
||||
"NETWORKS": [
|
||||
0
|
||||
],
|
||||
"ACLS": [
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
8
|
||||
]
|
||||
},
|
||||
"GROUP_ID": 100,
|
||||
"ZONES_ID": 2,
|
||||
"VDCADMINNAME": "vdcadminB",
|
||||
"VDCADMIN_ID": 2
|
||||
"CLUSTER_ID": 100
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -2,24 +2,24 @@
|
||||
"ZONE_POOL": {
|
||||
"ZONE": [
|
||||
{
|
||||
"ID": 1,
|
||||
"ENDPOINT": "http://localhost:2666/RPC2",
|
||||
"NUMBERVDCS": 0,
|
||||
"SUNSENDPOINT": "http://localhost:9869",
|
||||
"NAME": "zoneA",
|
||||
"SUNSENDPOINT": "http://localhost:9869",
|
||||
"SELFENDPOINT": null,
|
||||
"ONENAME": "oneadminA",
|
||||
"ONEPASS": "OkqWM2aSqbM/nlrdHGv3OA=="
|
||||
"ID": 1,
|
||||
"ONEPASS": "OkqWM2aSqbM/nlrdHGv3OA==",
|
||||
"ENDPOINT": "http://localhost:2666/RPC2",
|
||||
"NUMBERVDCS": 0
|
||||
},
|
||||
{
|
||||
"ID": 2,
|
||||
"ENDPOINT": "http://localhost:2667/RPC2",
|
||||
"NUMBERVDCS": 0,
|
||||
"SUNSENDPOINT": null,
|
||||
"NAME": "zoneB",
|
||||
"SUNSENDPOINT": null,
|
||||
"SELFENDPOINT": null,
|
||||
"ONENAME": "oneadminB",
|
||||
"ONEPASS": "8Si8vlo2P3qn5/SNxkMkDg=="
|
||||
"ID": 2,
|
||||
"ONEPASS": "8Si8vlo2P3qn5/SNxkMkDg==",
|
||||
"ENDPOINT": "http://localhost:2667/RPC2",
|
||||
"NUMBERVDCS": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -2,14 +2,14 @@
|
||||
"ZONE_POOL": {
|
||||
"ZONE": [
|
||||
{
|
||||
"ID": 1,
|
||||
"ENDPOINT": "http://localhost:2666/RPC2",
|
||||
"NUMBERVDCS": 0,
|
||||
"SUNSENDPOINT": "http://localhost:9869",
|
||||
"NAME": "zoneA",
|
||||
"SUNSENDPOINT": "http://localhost:9869",
|
||||
"SELFENDPOINT": null,
|
||||
"ONENAME": "oneadminA",
|
||||
"ONEPASS": "OkqWM2aSqbM/nlrdHGv3OA=="
|
||||
"ID": 1,
|
||||
"ONEPASS": "OkqWM2aSqbM/nlrdHGv3OA==",
|
||||
"ENDPOINT": "http://localhost:2666/RPC2",
|
||||
"NUMBERVDCS": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -1,12 +1,35 @@
|
||||
{
|
||||
"VDC": {
|
||||
"ID": 1,
|
||||
"ACLS": "2,3,4,5,6,7",
|
||||
"HOSTS": "1,2,3",
|
||||
"NAME": "vdcA",
|
||||
"ZONES_ID": 1,
|
||||
"VDCADMIN_ID": 2,
|
||||
"ID": 1,
|
||||
"RESOURCES": {
|
||||
"DATASTORES": [
|
||||
100
|
||||
],
|
||||
"HOSTS": [
|
||||
0,
|
||||
1,
|
||||
2
|
||||
],
|
||||
"NETWORKS": [
|
||||
0
|
||||
],
|
||||
"ACLS": [
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
8,
|
||||
9,
|
||||
10
|
||||
]
|
||||
},
|
||||
"GROUP_ID": 100,
|
||||
"ZONES_ID": 1,
|
||||
"VDCADMINNAME": "vdcadminA",
|
||||
"VDCADMIN_ID": 2
|
||||
"CLUSTER_ID": 100
|
||||
}
|
||||
}
|
@ -1,14 +1,14 @@
|
||||
{
|
||||
"ZONE": {
|
||||
"ID": 1,
|
||||
"ENDPOINT": "http://localhost:2666/RPC2",
|
||||
"NAME": "zoneA",
|
||||
"SUNSENDPOINT": "http://localhost:9869",
|
||||
"VDCS": [
|
||||
|
||||
],
|
||||
"NAME": "zoneA",
|
||||
"SELFENDPOINT": null,
|
||||
"ONENAME": "oneadminA",
|
||||
"ONEPASS": "OkqWM2aSqbM/nlrdHGv3OA=="
|
||||
"ID": 1,
|
||||
"ONEPASS": "OkqWM2aSqbM/nlrdHGv3OA==",
|
||||
"ENDPOINT": "http://localhost:2666/RPC2"
|
||||
}
|
||||
}
|
@ -28,6 +28,7 @@ $: << RUBY_LIB_LOCATION+"/cli"
|
||||
require 'command_parser'
|
||||
require 'ozones_helper/zones_helper.rb'
|
||||
require 'ozones_helper/vdc_helper.rb'
|
||||
require 'pp'
|
||||
|
||||
TESTS_PATH = File.dirname(__FILE__)+"/../"
|
||||
|
||||
@ -48,28 +49,62 @@ module OZones
|
||||
TESTS_PATH+"etc/one_auth_b"),
|
||||
"http://localhost:2667/RPC2")
|
||||
|
||||
clusterA = OpenNebula::Cluster.new(OpenNebula::Cluster.build_xml,
|
||||
@clientA)
|
||||
clusterA.allocate("clusterA")
|
||||
|
||||
sleep 1
|
||||
|
||||
clusterB = OpenNebula::Cluster.new(OpenNebula::Cluster.build_xml,
|
||||
@clientB)
|
||||
clusterB.allocate("clusterB")
|
||||
|
||||
hostA=OpenNebula::Host.new(OpenNebula::Host.build_xml, @clientA)
|
||||
hostA.allocate("hostA1","im_dummy","vmm_dummy","tm_dummy","dummy")
|
||||
hostA.allocate("hostA2","im_dummy","vmm_dummy","tm_dummy","dummy")
|
||||
hostA.allocate("hostA3","im_dummy","vmm_dummy","tm_dummy","dummy")
|
||||
hostA.allocate("hostA4","im_dummy","vmm_dummy","tm_dummy","dummy")
|
||||
hostA.allocate("hostA1","im_dummy","vmm_dummy","dummy",100)
|
||||
hostA.allocate("hostA2","im_dummy","vmm_dummy","dummy",100)
|
||||
hostA.allocate("hostA3","im_dummy","vmm_dummy","dummy",100)
|
||||
hostA.allocate("hostA4","im_dummy","vmm_dummy","dummy",100)
|
||||
|
||||
hostB=OpenNebula::Host.new(OpenNebula::Host.build_xml, @clientB)
|
||||
hostB.allocate("hostB1","im_dummy","vmm_dummy","tm_dummy","dummy")
|
||||
hostB.allocate("hostB2","im_dummy","vmm_dummy","tm_dummy","dummy")
|
||||
hostB.allocate("hostB3","im_dummy","vmm_dummy","tm_dummy","dummy")
|
||||
hostB.allocate("hostB1","im_dummy","vmm_dummy","dummy",100)
|
||||
hostB.allocate("hostB2","im_dummy","vmm_dummy","dummy",100)
|
||||
hostB.allocate("hostB3","im_dummy","vmm_dummy","dummy",100)
|
||||
|
||||
ds_tmpl = File.new(TESTS_PATH+"templates/datastore.template").read
|
||||
dsA = OpenNebula::Datastore.new(OpenNebula::Datastore.build_xml, @clientA)
|
||||
dsA.allocate(ds_tmpl,100)
|
||||
|
||||
sleep 1
|
||||
|
||||
dsB = OpenNebula::Datastore.new(OpenNebula::Datastore.build_xml, @clientB)
|
||||
dsB.allocate(ds_tmpl,100)
|
||||
|
||||
sleep 1
|
||||
|
||||
vnet_tmpl = File.new(TESTS_PATH+"templates/vnet.template").read
|
||||
vnetA = OpenNebula::VirtualNetwork.new(OpenNebula::VirtualNetwork.build_xml, @clientA)
|
||||
rc = vnetA.allocate(vnet_tmpl,100)
|
||||
|
||||
sleep 1
|
||||
|
||||
vnetB = OpenNebula::VirtualNetwork.new(OpenNebula::VirtualNetwork.build_xml, @clientB)
|
||||
rc = vnetB.allocate(vnet_tmpl,100)
|
||||
|
||||
end
|
||||
|
||||
it "should be able to create a couple of zones" do
|
||||
rc = @zonehelper.create_resource(TESTS_PATH+"templates/zoneA.template")
|
||||
rc[0].should eql(0)
|
||||
|
||||
sleep 1
|
||||
|
||||
rc = @zonehelper.create_resource(TESTS_PATH+"templates/zoneB.template")
|
||||
rc[0].should eql(0)
|
||||
end
|
||||
|
||||
it "should be able to create one vdc with apropiate ONE resources" do
|
||||
@vdchelper.create_resource(TESTS_PATH+"templates/vdcA.template",
|
||||
{:force => false})[0].should eql(0)
|
||||
rc = @vdchelper.create_resource(TESTS_PATH+"templates/vdcA.template",
|
||||
{:force => false})
|
||||
|
||||
upool = OpenNebula::UserPool.new(@clientA)
|
||||
upool.info
|
||||
@ -96,18 +131,19 @@ module OZones
|
||||
apool = OpenNebula::AclPool.new(@clientA)
|
||||
apool.info
|
||||
# TODO check ACLs
|
||||
|
||||
end
|
||||
|
||||
it "should be able to create a couple of VDCs" do
|
||||
@vdchelper.create_resource(TESTS_PATH+"templates/vdcB.template",
|
||||
{:force => false})[0].should eql(0)
|
||||
{:force => true})[0].should eql(0)
|
||||
@vdchelper.create_resource(TESTS_PATH+"templates/vdcC.template",
|
||||
{:force => false})[0].should eql(0)
|
||||
{:force => true})[0].should eql(0)
|
||||
end
|
||||
|
||||
it "should fail when creating an existing VDC" do
|
||||
@vdchelper.create_resource(TESTS_PATH+"templates/vdcA.template",
|
||||
{:force => false})[0].should eql(-1)
|
||||
{:force => true})[0].should eql(-1)
|
||||
end
|
||||
|
||||
it "should fail when creating a VDC upon a non existing zone" do
|
||||
@ -140,5 +176,5 @@ module OZones
|
||||
rc = @vdchelper.delete_resource(7, {})
|
||||
rc[0].should eql(-1)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -42,7 +42,9 @@ module OZones
|
||||
rc = @helper.create_resource(TESTS_PATH+"templates/zoneA.template")
|
||||
rc[0].should eql(0)
|
||||
|
||||
@helper.create_resource(TESTS_PATH+"templates/zoneB.template")
|
||||
sleep 1
|
||||
|
||||
rc = @helper.create_resource(TESTS_PATH+"templates/zoneB.template")
|
||||
rc[0].should eql(0)
|
||||
end
|
||||
|
||||
|
3
src/ozones/test/templates/datastore.template
Normal file
3
src/ozones/test/templates/datastore.template
Normal file
@ -0,0 +1,3 @@
|
||||
NAME=datastore
|
||||
DS_MAD=fs
|
||||
TM_MAD=dummy
|
@ -1,5 +1,8 @@
|
||||
NAME=vdc
|
||||
VDCADMINNAME=vdcadminbogus
|
||||
VDCADMINPASS=vdcpassbogus
|
||||
ZONEID=18
|
||||
HOSTS=1
|
||||
ZONE_ID=18
|
||||
CLUSTER_ID=100
|
||||
HOSTS=1
|
||||
DATASTORES=100
|
||||
NETWORKS=0
|
||||
|
@ -1,5 +1,5 @@
|
||||
NAME=vdcB
|
||||
VDCADMINNAME=vdcadminB
|
||||
VDCADMINPASS=vdcpassB
|
||||
ZONEID=3
|
||||
ZONE_ID=3
|
||||
HOSTS=1
|
@ -1,5 +1,8 @@
|
||||
NAME=vdcA
|
||||
VDCADMINNAME=vdcadminA
|
||||
VDCADMINPASS=vdcpassA
|
||||
ZONEID=1
|
||||
HOSTS=1,2,3
|
||||
ZONE_ID=1
|
||||
CLUSTER_ID=100
|
||||
HOSTS=0,1,2
|
||||
DATASTORES=100
|
||||
NETWORKS=0
|
||||
|
@ -1,5 +1,8 @@
|
||||
NAME=vdcB
|
||||
VDCADMINNAME=vdcadminB
|
||||
VDCADMINPASS=vdcpassB
|
||||
ZONEID=2
|
||||
HOSTS=1
|
||||
ZONE_ID=2
|
||||
CLUSTER_ID=100
|
||||
HOSTS=1
|
||||
DATASTORES=100
|
||||
NETWORKS=0
|
||||
|
@ -1,5 +1,8 @@
|
||||
NAME=vdcC
|
||||
VDCADMINNAME=vdcadminC
|
||||
VDCADMINPASS=vdcpassC
|
||||
ZONEID=1
|
||||
HOSTS=4
|
||||
ZONE_ID=1
|
||||
CLUSTER_ID=100
|
||||
HOSTS=3
|
||||
DATASTORES=100
|
||||
NETWORKS=0
|
||||
|
5
src/ozones/test/templates/vnet.template
Normal file
5
src/ozones/test/templates/vnet.template
Normal file
@ -0,0 +1,5 @@
|
||||
NAME = "Blue LAN"
|
||||
TYPE = FIXED
|
||||
BRIDGE = vbr1
|
||||
|
||||
LEASES = [IP=130.10.0.1]
|
@ -236,6 +236,7 @@ void RequestManager::register_xml_methods()
|
||||
|
||||
// VMTemplate Methods
|
||||
xmlrpc_c::methodPtr template_instantiate(new VMTemplateInstantiate());
|
||||
xmlrpc_c::methodPtr template_clone(new VMTemplateClone());
|
||||
|
||||
// VirtualMachine Methods
|
||||
xmlrpc_c::methodPtr vm_deploy(new VirtualMachineDeploy());
|
||||
@ -356,6 +357,7 @@ void RequestManager::register_xml_methods()
|
||||
RequestManagerRegistry.addMethod("one.template.info", template_info);
|
||||
RequestManagerRegistry.addMethod("one.template.chown", template_chown);
|
||||
RequestManagerRegistry.addMethod("one.template.chmod", template_chmod);
|
||||
RequestManagerRegistry.addMethod("one.template.clone", template_clone);
|
||||
|
||||
RequestManagerRegistry.addMethod("one.templatepool.info",template_pool_info);
|
||||
|
||||
|
@ -192,6 +192,21 @@ int ImageDelete::drop(int oid, PoolObjectSQL * object, string& error_msg)
|
||||
/* ------------------------------------------------------------------------- */
|
||||
/* ------------------------------------------------------------------------- */
|
||||
|
||||
int GroupDelete::drop(int oid, PoolObjectSQL * object, string& error_msg)
|
||||
{
|
||||
int rc = RequestManagerDelete::drop(oid, object, error_msg);
|
||||
|
||||
if ( rc == 0 )
|
||||
{
|
||||
aclm->del_gid_rules(oid);
|
||||
}
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
/* ------------------------------------------------------------------------- */
|
||||
|
||||
int UserDelete::drop(int oid, PoolObjectSQL * object, string& error_msg)
|
||||
{
|
||||
User * user = static_cast<User *>(object);
|
||||
@ -211,10 +226,7 @@ int UserDelete::drop(int oid, PoolObjectSQL * object, string& error_msg)
|
||||
|
||||
if ( rc == 0 )
|
||||
{
|
||||
Nebula& nd = Nebula::instance();
|
||||
GroupPool * gpool = nd.get_gpool();
|
||||
|
||||
Group * group = gpool->get(group_id, true);
|
||||
Group * group = gpool->get(group_id, true);
|
||||
|
||||
if( group != 0 )
|
||||
{
|
||||
@ -223,6 +235,8 @@ int UserDelete::drop(int oid, PoolObjectSQL * object, string& error_msg)
|
||||
|
||||
group->unlock();
|
||||
}
|
||||
|
||||
aclm->del_uid_rules(oid);
|
||||
}
|
||||
|
||||
return rc;
|
||||
|
@ -61,7 +61,7 @@ void VMTemplateInstantiate::request_execute(xmlrpc_c::paramList const& paramList
|
||||
// Check template for restricted attributes, but only if the Template owner
|
||||
// is not oneadmin
|
||||
|
||||
if ( perms.uid != 0 && perms.gid != GroupPool::ONEADMIN_ID )
|
||||
if ( perms.uid != UserPool::ONEADMIN_ID && perms.gid != GroupPool::ONEADMIN_ID )
|
||||
{
|
||||
if (tmpl->check(aname))
|
||||
{
|
||||
@ -84,7 +84,6 @@ void VMTemplateInstantiate::request_execute(xmlrpc_c::paramList const& paramList
|
||||
if ( att.uid != 0 )
|
||||
{
|
||||
AuthRequest ar(att.uid, att.gid);
|
||||
string tmpl_txt;
|
||||
|
||||
ar.add_auth(auth_op, perms); //USE TEMPLATE
|
||||
|
||||
@ -119,3 +118,78 @@ void VMTemplateInstantiate::request_execute(xmlrpc_c::paramList const& paramList
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
void VMTemplateClone::request_execute(xmlrpc_c::paramList const& paramList,
|
||||
RequestAttributes& att)
|
||||
{
|
||||
int source_id = xmlrpc_c::value_int(paramList.getInt(1));
|
||||
string name = xmlrpc_c::value_string(paramList.getString(2));
|
||||
|
||||
int rc, new_id;
|
||||
|
||||
PoolObjectAuth perms;
|
||||
|
||||
VMTemplatePool * tpool = static_cast<VMTemplatePool *>(pool);
|
||||
|
||||
VirtualMachineTemplate * tmpl;
|
||||
VMTemplate * source_tmpl;
|
||||
|
||||
string error_str;
|
||||
|
||||
source_tmpl = tpool->get(source_id,true);
|
||||
|
||||
if ( source_tmpl == 0 )
|
||||
{
|
||||
failure_response(NO_EXISTS,
|
||||
get_error(object_name(auth_object),source_id),
|
||||
att);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
tmpl = source_tmpl->clone_template();
|
||||
|
||||
source_tmpl->get_permissions(perms);
|
||||
|
||||
source_tmpl->unlock();
|
||||
|
||||
tmpl->erase("NAME");
|
||||
tmpl->set(new SingleAttribute("NAME",name));
|
||||
|
||||
if ( att.uid != 0 )
|
||||
{
|
||||
string tmpl_str = "";
|
||||
|
||||
AuthRequest ar(att.uid, att.gid);
|
||||
|
||||
ar.add_auth(auth_op, perms); //USE TEMPLATE
|
||||
|
||||
tmpl->to_xml(tmpl_str);
|
||||
|
||||
ar.add_create_auth(auth_object, tmpl_str);
|
||||
|
||||
if (UserPool::authorize(ar) == -1)
|
||||
{
|
||||
failure_response(AUTHORIZATION,
|
||||
authorization_error(ar.message, att),
|
||||
att);
|
||||
|
||||
delete tmpl;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
rc = tpool->allocate(att.uid, att.gid, att.uname, att.gname,
|
||||
tmpl, &new_id, error_str);
|
||||
|
||||
if ( rc < 0 )
|
||||
{
|
||||
failure_response(INTERNAL, allocate_error(error_str), att);
|
||||
return;
|
||||
}
|
||||
|
||||
success_response(new_id, att);
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
|
@ -22,6 +22,7 @@ if [ -z "$ONE_LOCATION" ]; then
|
||||
SUNSTONE_SERVER=/usr/lib/one/sunstone/sunstone-server.rb
|
||||
SUNSTONE_LOCK_FILE=/var/lock/one/.sunstone.lock
|
||||
SUNSTONE_LOG=/var/log/one/sunstone.log
|
||||
SUNSTONE_LOG_ERROR=/var/log/one/sunstone.error
|
||||
SUNSTONE_CONF=/etc/one/sunstone-server.conf
|
||||
else
|
||||
SUNSTONE_PID=$ONE_LOCATION/var/sunstone.pid
|
||||
|
@ -265,7 +265,7 @@ class SunstoneServer < CloudServer
|
||||
end
|
||||
|
||||
filter = {}
|
||||
filter[:uid] = opts[:uid] if opts[:gid]!="0"
|
||||
filter[:uid] = opts[:uid] if opts[:gid]!=0
|
||||
|
||||
columns = monitor_resources.split(',')
|
||||
columns.map!{|e| e.to_sym}
|
||||
|
@ -31,6 +31,7 @@ var config_tab_content =
|
||||
<option value="en_US">'+tr("English")+'</option>\
|
||||
<option value="ru">'+tr("Russian")+'</option>\
|
||||
<option value="it_IT">'+tr("Italian")+'</option>\
|
||||
<option value="pt_PT">'+tr("Portuguese")+'</option>\
|
||||
</select>\
|
||||
</td>\
|
||||
</tr>\
|
||||
|
@ -64,7 +64,7 @@ var create_image_tmpl =
|
||||
<div class="tip">'+tr("Human readable description of the image for other users.")+'</div>\
|
||||
</div>\
|
||||
<div class="img_param">\
|
||||
<label for="img_type">'+tr("Datastore")+':</label>\
|
||||
<label for="img_datastore">'+tr("Datastore")+':</label>\
|
||||
<select id="img_datastore" name="img_datastore">\
|
||||
</select>\
|
||||
<div class="tip">'+tr("Select the datastore for this image")+'</div>\
|
||||
@ -175,8 +175,10 @@ var create_image_tmpl =
|
||||
<form id="create_image_form_manual" action="">\
|
||||
<fieldset style="border-top:none;">\
|
||||
<h3 style="margin-bottom:10px;">'+tr("Write the image template here")+'</h3>\
|
||||
<textarea id="template" rows="15" style="width:100%;">\
|
||||
</textarea>\
|
||||
<label for="img_datastores_raw">'+tr("Datastore")+':</label>\
|
||||
<select id="img_datastore_raw" name="img_datastore_raw">\
|
||||
</select>\
|
||||
<textarea id="template" rows="15" style="width:100%;"></textarea>\
|
||||
</fieldset>\
|
||||
<fieldset>\
|
||||
<div class="form_buttons">\
|
||||
@ -935,7 +937,20 @@ function setupCreateImageDialog(){
|
||||
|
||||
$('#create_image_form_manual',dialog).submit(function(){
|
||||
var template=$('#template',this).val();
|
||||
Sunstone.runAction("Image.create",template);
|
||||
var ds_id = $('#img_datastore_raw',this).val();
|
||||
|
||||
if (!ds_id){
|
||||
notifyError(tr("Please select a datastore for this image"));
|
||||
return false;
|
||||
};
|
||||
|
||||
var img_obj = {
|
||||
"image" : {
|
||||
"image_raw" : template
|
||||
},
|
||||
"ds_id" : ds_id,
|
||||
};
|
||||
Sunstone.runAction("Image.create",img_obj);
|
||||
$create_image_dialog.dialog('close');
|
||||
return false;
|
||||
});
|
||||
@ -946,6 +961,7 @@ function popUpCreateImageDialog(){
|
||||
$('#file-uploader input',$create_image_dialog).attr('style','margin:0;width:256px!important');
|
||||
|
||||
$('#img_datastore',$create_image_dialog).html(datastores_sel());
|
||||
$('#img_datastore_raw',$create_image_dialog).html(datastores_sel());
|
||||
|
||||
$create_image_dialog.dialog('open');
|
||||
}
|
||||
|
574
src/sunstone/public/locale/pt_PT/pt_PT.js
Normal file
574
src/sunstone/public/locale/pt_PT/pt_PT.js
Normal file
@ -0,0 +1,574 @@
|
||||
//Translated by André Monteiro
|
||||
lang="pt_PT"
|
||||
datatable_lang="pt_datatable.txt"
|
||||
locale={
|
||||
"802.1Q":"802.1Q",
|
||||
"Accept (default)":"Aceitar (por omissão)",
|
||||
"ACL":"ACL",
|
||||
"ACL Rules":"Regras ACL",
|
||||
"ACLs":"ACLs",
|
||||
"ACL String preview":"Pré-visualização do texto ACL",
|
||||
"ACPI":"ACPI",
|
||||
"Add":"Adicionar",
|
||||
"Add context variables":"Adicionar variáveis de contexto",
|
||||
"Add custom variables":"Adicionar variáveis personalizáveis",
|
||||
"Add disk/image":"Adicionar disco/imagem",
|
||||
"Add disks/images":"Adicionar discos/imagens",
|
||||
"Add Graphics":"Adicionar gráficas",
|
||||
"Add Hypervisor raw options":"Adicionar opções raw do Hipervisor",
|
||||
"Add inputs":"Adicionar entradas",
|
||||
"Add lease":"Adicionar alocação",
|
||||
"Add network":"Adicionar rede",
|
||||
"Add placement options":"Adicionar opções de colocação",
|
||||
"Admin":"Admin",
|
||||
"Administrate":"Administrar",
|
||||
"Advanced mode":"Modo avançado",
|
||||
"Affected resources":"Recursos afectados",
|
||||
"All":"Tudo",
|
||||
"Allowed operations":"Operações permitidas",
|
||||
"Amount of RAM required for the VM, in Megabytes.":"Quantidade de RAM necessária para a VM, em Megabytes.",
|
||||
"Applies to":"Aplica-se a",
|
||||
"Architecture":"Arquitectura",
|
||||
"are mandatory":"são obrigatórios",
|
||||
"Arguments for the booting kernel":"Argumentos para arranque do kernel",
|
||||
"Authentication":"Autenticação",
|
||||
"Authentication driver":"Driver de autenticação",
|
||||
"Base path":"Caminho base",
|
||||
"Block":"Bloquear",
|
||||
"Boolean expression that rules out provisioning hosts from list of machines suitable to run this VM":"Expressões boleanas que excluam hosts de provisionamento da lista de máquinas para correr esta VM",
|
||||
"Boot":"Boot",
|
||||
"Boot device type":"Tipo de dispositivo de arranque",
|
||||
"Bootloader":"Bootloader",
|
||||
"Boot method":"Método de arranque",
|
||||
"Boot/OS options":"Opções de arranque/SO",
|
||||
"Bridge":"Bridge",
|
||||
"Bus":"Bus",
|
||||
"Cancel":"Cancelar",
|
||||
"Cannot contact server: is it running and reachable?":"Não é possível contactar o servidor está a correr ou comunicável?",
|
||||
"Canvas not supported.":"Canvas não suportado.",
|
||||
"Capacity":"Capacidade",
|
||||
"Capacity options":"Opções de capacidade",
|
||||
"cdrom":"cdrom",
|
||||
"CD-ROM":"CD-ROM",
|
||||
"Change":"Alterar",
|
||||
"Change authentication":"Alterar autenticação",
|
||||
"Change group":"Alterar grupo",
|
||||
"Change owner":"Alterar dono",
|
||||
"Change password":"Alterar palavra-passe",
|
||||
"Change password successful":"Alteração de palavra-passe bem sucedida",
|
||||
"Changing language":"A alterar língua",
|
||||
"Clone":"Clonar",
|
||||
"Clone this image":"Clonar esta imagem",
|
||||
"Cluster":"Cluster",
|
||||
"Cluster information":"Informação do Cluster",
|
||||
"Cluster name missing!":"Falta o nome do Cluster!",
|
||||
"Clusters":"Clusters",
|
||||
"Community":"Comunidade",
|
||||
"Configuration":"Configuração",
|
||||
"Confirmation of action":"Confirmação da acção",
|
||||
"Context":"Contexto",
|
||||
"Context variable name and value must be filled in":"A variável de contexto e valor devem ser preenchidos",
|
||||
"Core":"Core",
|
||||
"CPU":"CPU",
|
||||
"CPU architecture to virtualization":"Arquitectura CPU para virtualização",
|
||||
"CPU Monitoring information":"Informação de monitorização do CPU",
|
||||
"CPU Use":"Utilização de CPU",
|
||||
"Create":"Criar",
|
||||
"Create ACL":"Criar ACL",
|
||||
"Create an empty datablock":"Criar bloco de dados vazio",
|
||||
"Create cluster":"Criar cluster",
|
||||
"Create Datastore":"Criar Datastore",
|
||||
"Create group":"Criar grupo",
|
||||
"Create host":"Criar host",
|
||||
"Create Image":"Criar imagem",
|
||||
"Create new":"Criar novo",
|
||||
"Create new ACL":"Criar novo ACL",
|
||||
"Create new Cluster":"Criar novo Cluster",
|
||||
"Create new datastore":"Criar novo datastore",
|
||||
"Create new Datastore":"Criar novo Datastore",
|
||||
"Create new Group":"Criar novo Grupo",
|
||||
"Create new host":"Criar novo host",
|
||||
"Create new Host":"Criar novo Host",
|
||||
"Create new Image":"Criar nova imagem",
|
||||
"Create new User":"Criar novo Utilizador",
|
||||
"Create new Virtual Machine":"Criar nova Máquina Virtual VM",
|
||||
"Create new virtual network":"Criar nova rede virtual",
|
||||
"Create new Virtual Network":"Criar nova Rede Virtual",
|
||||
"Create new VM Template":"Criar novo Modelo de VM",
|
||||
"Create user":"Criar utilizador",
|
||||
"Create Virtual Machine":"Criar Máquina Virtual VM",
|
||||
"Create Virtual Network":"Criar Rede Virtual",
|
||||
"Create VM Template":"Criar Modelo de VM",
|
||||
"Current disks":"Discos actuais",
|
||||
"Current inputs":"Entradas actuais",
|
||||
"Current leases":"Alocações actuais",
|
||||
"Current NICs":"NICs actuais",
|
||||
"Current number of datastores in this cluster":"Número actual de datastores neste cluster",
|
||||
"Current number of hosts in this cluster":"Número actual de hosts neste cluster",
|
||||
"Current number of virtual networks in this cluster":"Número actual de redes virtuais neste cluster",
|
||||
"Current variables":"Variáveis actuais",
|
||||
"Custom attribute name and value must be filled in":"O nome do atributo personalizável e o valor devem ser preenchidos",
|
||||
"Custom attributes":"Atributos personalizáveis",
|
||||
"Custom variable name and value must be filled in":"O nome do atributo personalizável e o valor devem ser preenchidos",
|
||||
"Custom variables":"Atributos personalizáveis",
|
||||
"Dashboard":"Dashboard",
|
||||
"Data":"Dados",
|
||||
"Datablock":"Datablock",
|
||||
"Datastore":"Datastore",
|
||||
"Datastore information":"Informação da Datastore",
|
||||
"Datastore manager":"Gestor da Datastore",
|
||||
"Datastores":"Datastores",
|
||||
"Datastore template":"Modelo de Datastore",
|
||||
"Datastore Template":"Modelo de Datastore",
|
||||
"Datastore updated correctly":"Datastore actualizada correctamente",
|
||||
"Default":"Por omissão",
|
||||
"Default (current image type)":"Por omissão (tipo de imagem actual)",
|
||||
"Default (dummy)":"Por omissão (dummy)",
|
||||
"Defaults to template name when emtpy":"Nome do modelo por omissão, quando vazio",
|
||||
"Define a subnet by IP range":"Defina uma subrede por intervalo IP",
|
||||
"Delete":"Apagar",
|
||||
"Delete host":"Apagar host",
|
||||
"Deploy":"Lançar",
|
||||
"Deploy ID":"ID de lançamento",
|
||||
"Deploy # VMs":"Lançar # VMs",
|
||||
"Description":"Descrição",
|
||||
"Device prefix":"Prefixo do dispositivo",
|
||||
"Device to be mounted as root":"Dispositivo a ser montado como root",
|
||||
"Device to map image disk. If set, it will overwrite the default device mapping":"Dispositivo para mapear imagem do disco. Se definido, vai sobrepôr-se ao mapeamento por omissão.",
|
||||
"Disable":"Desactivar",
|
||||
"disabled":"desactivado",
|
||||
"Disallow access to the VM through the specified ports in the TCP protocol":"Inibir acesso à VM através dos portos especificados do protocolo TCP",
|
||||
"Disallow access to the VM through the specified ports in the UDP protocol":"Inibir acesso à VM através dos portos especificados do protocolo UDP",
|
||||
"Disk":"Disco",
|
||||
"Disk file location path or URL":"Localização do ficheiro de disco ou URL",
|
||||
"disk id":"id de disco",
|
||||
"Disks":"Discos",
|
||||
"Disk type":"Tipo de disco",
|
||||
"Documentation":"Documentação",
|
||||
"Do you want to proceed?":"Deseja continuar?",
|
||||
"Driver":"Driver",
|
||||
"Driver default":"Driver por omissão",
|
||||
"Drivers":"Drivers",
|
||||
"Drop":"Apagar",
|
||||
"DS Mad":"DS Mad",
|
||||
"Dummy":"Dummy",
|
||||
"EC2":"EC2",
|
||||
"Enable":"Activar",
|
||||
"English":"English",
|
||||
"Error":"Erro",
|
||||
"Etables":"Etables",
|
||||
"failed":"falhou",
|
||||
"fd":"fd",
|
||||
"Features":"Funcionalidades",
|
||||
"Fields marked with":"Campos marcados com",
|
||||
"File":"Ficheiro",
|
||||
"Filesystem":"Sistema de ficheiros",
|
||||
"Filesystem type":"Tipo de sistema de ficheiros",
|
||||
"Filesystem type for the fs images":"Tipo de sistema de ficheiros para a imagem fs",
|
||||
"Fill in a new password":"Preencha de novo a palavra-passe",
|
||||
"Fixed network":"Rede fixa",
|
||||
"Floppy":"Disquete",
|
||||
"Fold / Unfold all sections":"Expandir / Colapsar todas as secções",
|
||||
"Format":"Formatar",
|
||||
"FS":"FS",
|
||||
"FS type":"Tipo de FS",
|
||||
"Graphics":"Graphicos",
|
||||
"Graphics type":"Tipo de gráficos",
|
||||
"Group":"Grupo",
|
||||
"Group ":"Grupo ",
|
||||
"Group name":"Nome do grupo",
|
||||
"Groups":"Grupos",
|
||||
"Hardware that will emulate this network interface. With Xen this is the type attribute of the vif.":"Hardware que vai emular esta interface de rede interface. Com Xen, este é um tipo de atributo do vif.",
|
||||
"hd":"hd",
|
||||
"Historical monitoring information":"Histórico de informação de monitorização",
|
||||
"History information":"Histórico de informação",
|
||||
"hold":"pausar",
|
||||
"Hold":"Pausa",
|
||||
"Hold lease":"Pausar alocação",
|
||||
"Host":"Host",
|
||||
"Host information":"Informação do host",
|
||||
"Hostname":"Nome do host",
|
||||
"Host name missing!":"Nome do host em falta!",
|
||||
"Host parameters":"Parâmetros do host",
|
||||
"Hosts":"Hosts",
|
||||
"Hosts CPU":"CPU dos hosts",
|
||||
"Host shares":"Partilhas dos hosts",
|
||||
"Hosts memory":"Memória dos hosts",
|
||||
"Hosts (total/active)":"Hosts (total/activos)",
|
||||
"Host template":"Modelo de host",
|
||||
"Human readable description of the image for other users.":"Descrição legível da imagem por outros utilizadors.",
|
||||
"HW address associated with the network interface":"Endereço HW associado à interface de rede",
|
||||
"Icmp":"Icmp",
|
||||
"ICMP policy":"Política ICMP",
|
||||
"id":"id",
|
||||
"ID":"ID",
|
||||
"IDE":"IDE",
|
||||
"Image":"imagem",
|
||||
"Image information":"Informação da imagem",
|
||||
"Image location":"Localização da imagem",
|
||||
"Image name":"Nome da imagem",
|
||||
"Images":"imagens",
|
||||
"Image template":"Modelo da imagem",
|
||||
"Image updated correctly":"Imagem actualizada correctamente",
|
||||
"IM MAD":"IM MAD",
|
||||
"Info":"Info",
|
||||
"information":"informação",
|
||||
"Information":"Informação",
|
||||
"Information Manager":"Gestor de informação",
|
||||
"Infrastructure":"Infraestrutura",
|
||||
"Infrastructure resources":"Recursos da infraestrutura",
|
||||
"Initrd":"Initrd",
|
||||
"Inputs":"entradas",
|
||||
"Instantiate":"Instanciar",
|
||||
"IP":"IP",
|
||||
"IP End":"IP Final",
|
||||
"IPs":"IPs",
|
||||
"IP Start":"IP Inicial",
|
||||
"IP to listen on":"IP a escutar",
|
||||
"iSCSI":"iSCSI",
|
||||
"Italian":"Italian",
|
||||
"Kernel":"Kernel",
|
||||
"Kernel commands":"Comandos do kernel",
|
||||
"Keyboard configuration locale to use in the VNC display":"Configuração local do teclado a usar na visualização VNC",
|
||||
"Keymap":"Mapeamento do teclado",
|
||||
"KVM":"KVM",
|
||||
"Language":"Língua",
|
||||
"LCM State":"Estado LCM",
|
||||
"Lease IP":"Alocação IP",
|
||||
"Lease MAC (opt):":"Alocação MAC (opcional):",
|
||||
"Lease management":"Gestão de alocação",
|
||||
"Leases information":"Informação de alocação",
|
||||
"Listen IP":"IP a escutar",
|
||||
"Live migrate":"Migração em tempo real",
|
||||
"Loading":"A carregar",
|
||||
"Loading new language... please wait":"A carregar nova língua... por favor aguarde",
|
||||
"MAC":"MAC",
|
||||
"Make non persistent":"Tornar não persistente",
|
||||
"Make persistent":"Tornar persistente",
|
||||
"Manage":"Gerir",
|
||||
"Manage cluster datastores":"Gerir datastores do cluster",
|
||||
"Manage cluster hosts":"Gerir hosts",
|
||||
"Manage cluster virtual networks":"Gerir redes virtuais do cluster",
|
||||
"Manage unclustered datastores":"Gerir datastores sem cluster",
|
||||
"Manage unclustered hosts":"Gerir hosts sem cluster",
|
||||
"Manage unclustered virtual networks":"Gerir redes virtuais sem cluster",
|
||||
"Manual":"Manual",
|
||||
"Max Mem":"Mem Máx",
|
||||
"Memory":"Memória",
|
||||
"Memory monitoring information":"Informação de monitorização de memória",
|
||||
"Memory use":"Uso de memória",
|
||||
"Migrate":"Migrar",
|
||||
"Model":"Modelo",
|
||||
"Monitoring information":"Informação de monitorização",
|
||||
"Mount image as read-only":"Montar imagem como só com permissões de leitura",
|
||||
"Mouse":"Rato",
|
||||
"Name":"Nome",
|
||||
"Name for the context variable":"Nome da variável de contexto",
|
||||
"Name for the custom variable":"Nome da variável personalizada",
|
||||
"Name for the tun device created for the VM":"Nome do dispositivo criado para a VM",
|
||||
"Name of a shell script to be executed after creating the tun device for the VM":"Nome do script da linha de comandos a ser executado depois da criação do dispositovo para a VM",
|
||||
"Name of the bridge the network device is going to be attached to":"Nome da bridge do dispositivo de rede ao qual vai ser associado",
|
||||
"Name of the image to use":"Nome da imagem a ser usada",
|
||||
"Name of the network to attach this device":"Nome da rede a associar ao dispositivo",
|
||||
"Name that the Image will get. Every image must have a unique name.":"Nome que a imagem vai ter. Cada imagem te que ter um nome único.",
|
||||
"Name that the VM will get for description purposes. If NAME is not supplied a name generated by one will be in the form of one-<VID>.":"Nome da VM na descrição. Se o NOME não for indicado, um nome irá ser gerado pelo ONE na forma one-<VID>.",
|
||||
"Net_RX":"Net_RX",
|
||||
"Net_TX":"Net_TX",
|
||||
"network":"rede",
|
||||
"Network":"Rede",
|
||||
"Network Address":"Enderaço de rede",
|
||||
"Network is unreachable: is OpenNebula running?":"A rede está inalcançável: o OpenNebula está a correr?",
|
||||
"Network mask":"Máscara de rede",
|
||||
"Network Mask":"Máscara de Rede",
|
||||
"Network mode":"Modo de rede",
|
||||
"Network reception":"Recepção de rede",
|
||||
"Network transmission":"Transmissão de rede",
|
||||
"Network type":"Tipo de rede",
|
||||
"+ New":"+ Novo",
|
||||
"+ New Group":"+ Novo Grupo",
|
||||
"New password":"Nova palavra-passe",
|
||||
"No":"Não",
|
||||
"No datastores in this cluster":"Não há datastores neste cluster",
|
||||
"No disk id or image name specified":"ID de disco id ou nome da imagem não especificados",
|
||||
"No disks defined":"Não há discos definidos",
|
||||
"No hosts in this cluster":"Não há hosts neste cluster",
|
||||
"No leases to show":"Não há alocações a mostrar",
|
||||
"None":"Nenhum",
|
||||
"No virtual networks in this cluster":"Não há redes virtuis neste cluster",
|
||||
"Number of virtual cpus. This value is optional, the default hypervisor behavior is used, usually one virtual CPU.":"Número de CPUs virtuais. Este valor é opcional, sendo usado o valor por omissão do hipervisor, normalmente 1 CPU virtual.",
|
||||
"OK":"OK",
|
||||
"Open VNC Session":"Abrir Sessão VNC",
|
||||
"Open vSwitch":"Abrir vSwitch",
|
||||
"Optional, please select":"Opcional, por favor escolha",
|
||||
"OS":"SO",
|
||||
"OS and Boot options":"SO e opções de arranque",
|
||||
"Other":"Outros",
|
||||
"Owned by group":"Pertencente ao grupo",
|
||||
"Owner":"Dono",
|
||||
"PAE":"PAE",
|
||||
"Password":"Palavra-passe",
|
||||
"Password for the VNC server":"Palavra-passe para os ervidor VNC",
|
||||
"Path":"Caminho",
|
||||
"Path to the bootloader executable":"Caminho para o executável bootloader",
|
||||
"Path to the initrd image":"Caminho para a imagem initrd",
|
||||
"Path to the original file that will be copied to the image repository. If not specified for a DATABLOCK type image, an empty image will be created.":"Caminho para o ficheiro original que vai ser copiado para o repositório de imagens. Se não especificado para um tipo de imagem DATABLOCK, uma imagem vazia será criada.",
|
||||
"Path to the OS kernel to boot the image":"Caminho para o kernel do SO para arrancar a imagem",
|
||||
"Percentage of CPU divided by 100 required for the Virtual Machine. Half a processor is written 0.5.":"Percentagem de CPU dividida por 100 necessária para a Máquina Virtual VM. Metade de um processador escreve-se 0.5.",
|
||||
"Permissions":"Permissões",
|
||||
"Permits access to the VM only through the specified ports in the TCP protocol":"Permite o acesso à VM através dos portos especificados do protocolo TCP",
|
||||
"Permits access to the VM only through the specified ports in the UDP protocol":"Permits o acesso à VM através dos portos especificados do protocolo UDP",
|
||||
"Persistence of the image":"Persistência da imagem",
|
||||
"Persistent":"Persistente",
|
||||
"Physical address extension mode allows 32-bit guests to address more than 4 GB of memory":"O modo de extensão de endereço físico permite a guests de 32-bit alocar mais do que 4GB de memória",
|
||||
"Physical device":"Dispositivo físico",
|
||||
"Placement":"Colocação",
|
||||
"Please choose":"Por favor seleccione",
|
||||
"Please, choose and modify the datastore you want to update":"Por favor, seleccione e modifique a datastore que quer actualizar",
|
||||
"Please, choose and modify the image you want to update":"Por favor, seleccione e modifique a imagem que quer actualizar",
|
||||
"Please, choose and modify the template you want to update":"Por favor, seleccione e modifique o modelo que quer actualizar",
|
||||
"Please, choose and modify the virtual machine you want to update":"Por favor, seleccione e modifique a máquina virtual que quer actualizar",
|
||||
"Please, choose and modify the virtual network you want to update":"Por favor, seleccione e modifique a rede virtual que quer actualizar",
|
||||
"Please choose path if you have a file-based image. Choose source otherwise or create an empty datablock disk.":"Por favor seleccione o caminho se tiver uma image de ficheiro. Seleccione a fonte caso contrário ou crie um disco bloco de dados vazio.",
|
||||
"Please choose the new type of authentication for the selected users":"Por favor seleccione the novo tipo de autenticação para os utilizadores seleccionados",
|
||||
"Please provide a lease IP":"Por favor insira a alocação IP",
|
||||
"Please provide a resource ID for the resource(s) in this rule":"Por favor insira o ID de recurso para os recurso(s) nesta regra",
|
||||
"Please select":"Por favor seleccione",
|
||||
"Please select a datastore for this image":"Por favor seleccione a datastore para esta imagem",
|
||||
"Please select at least one resource":"Por favor seleccione pelo menos um recurso",
|
||||
"Please specify to who this ACL applies":"Por favor especifique a quem se aplica este ACL",
|
||||
"Port":"Porto",
|
||||
"Port blacklist":"Lista negra de portos",
|
||||
"Port for the VNC server":"Porto para o servidor VNC",
|
||||
"Port whitelist":"Lista verde de portos",
|
||||
"Predefined":"Pré-definido",
|
||||
"Prefix for the emulated device this image will be mounted at. For instance, “hd”, “sd”. If omitted, the default value is the one defined in oned.conf (installation default is “hd”).":"Prefixp para o dispositivo emulado com esta imagem. Por exemplo, “hd”, “sd”. Se omitido, o valor por omissão é o definido em oned.conf (instalação por omissão é “hd”).",
|
||||
"Previous action":"Acção anterior",
|
||||
"Prolog time":"Tempo de prolog",
|
||||
"Provide a path":"Indique um caminho",
|
||||
"Provide a source":"Indique uma fonte",
|
||||
"PS2":"PS2",
|
||||
"Public":"Público",
|
||||
"Quickstart":"Início rápido",
|
||||
"Ranged network":"Rede com limite de intervalo",
|
||||
"Rank":"Posição",
|
||||
"Raw":"Raw",
|
||||
"Raw data to be passed directly to the hypervisor":"Dados raw a serem passados directamente ao hipervisor",
|
||||
"Read only":"Só de leitura",
|
||||
"Reason":"Razão",
|
||||
"Reboot":"Reiniciar",
|
||||
"Refresh list":"Actualizar lista",
|
||||
"Register time":"Registar tempo",
|
||||
"Registration time":"Registo de tempo",
|
||||
"release":"libertar",
|
||||
"Release":"Libertar",
|
||||
"Remove selected":"Remover seleccionado",
|
||||
"Request an specific IP from the Network":"Pedir um IP específico de rede",
|
||||
"Requirements":"Rquisitos",
|
||||
"Reset":"Reset",
|
||||
"Resource ID":"ID do recurso",
|
||||
"Resource ID / Owned by":"ID do recurso / Pertencente a",
|
||||
"Resource subset":"Subconjunto do recurso",
|
||||
"Restart":"Reiniciar",
|
||||
"Resubmit":"Resubmeter",
|
||||
"Resume":"Continuar",
|
||||
"Retrieving":"A obter",
|
||||
"Root":"Root",
|
||||
"running":"A correr",
|
||||
"Running VMs":"VMs a correr",
|
||||
"Running #VMS":"#VMS a correr",
|
||||
"Russian":"Russian",
|
||||
"Save":"Guardar",
|
||||
"Save as":"Guardar como",
|
||||
"Saveas for VM with ID":"Guardar como para VM com ID",
|
||||
"Save this image after shutting down the VM":"Guardar esta imagem depois de desligar a VM",
|
||||
"Script":"Script",
|
||||
"SCSI":"SCSI",
|
||||
"SDL":"SDL",
|
||||
"Secure websockets connection":"Ligação segura de websockets",
|
||||
"Select a datastore":"Seleccionar a datastore",
|
||||
"Select a network":"Seleccionar a rede",
|
||||
"Select an image":"Seleccionar a imagem",
|
||||
"Select a template":"Seleccionar o modelo",
|
||||
"Select a VM":"Seleccionar a VM",
|
||||
"Select boot method":"Seleccionar o método de arranque",
|
||||
"Select cluster":"Seleccionar cluster",
|
||||
"Select disk":"Seleccionar disco",
|
||||
"Select template":"Seleccionar modelo",
|
||||
"Select the datastore for this image":"Seleccione a datastore para este imagem",
|
||||
"Select the destination cluster:":"Seleccione o cluster de destino:",
|
||||
"Select the new group":"Seleccione o novo grupo",
|
||||
"Select the new owner":"Seleccione o novo dono",
|
||||
"Sequence":"Sequência",
|
||||
"Server (Cipher)":"Servidor (Cipher)",
|
||||
"Server (x509)":"Servidor (x509)",
|
||||
"Setup Networks":"Configuração de redes",
|
||||
"Shared":"Shared",
|
||||
"shared,ssh,iscsi,dummy":"shared,ssh,iscsi,dummy",
|
||||
"Shutdown":"Desligar",
|
||||
"Sign out":"Terminar sessão",
|
||||
"Size":"Tamanho",
|
||||
"Size in MB":"Tamanho in MB",
|
||||
"Size (Mb)":"Tamanho (Mb)",
|
||||
"Size of the datablock in MB.":"Tamanho do bloco de dados em MB.",
|
||||
"Skipping VM ":"A saltar VM ",
|
||||
"Source":"Fonte",
|
||||
"Source to be used in the DISK attribute. Useful for not file-based images.":"A fonte deve ser usada no atributo de disco. Útil para as imagens não baseadas em fichieiros.",
|
||||
"Specific ID":"ID específico",
|
||||
"Specific image mapping driver. KVM: raw, qcow2. XEN: tap:aio, file:":"Driver de mapeamento específico de imagem. KVM: raw, qcow2. XEN: tap:aio, file:",
|
||||
"Specific image mapping driver. KVM: raw, qcow2. Xen:tap:aio:, file:. VMware unsupported":"Driver de mapeamento específico de imagem. KVM: raw, qcow2. Xen:tap:aio:, file:. VMware não suportado",
|
||||
"SSH":"SSH",
|
||||
"Start time":"Hora de início",
|
||||
"Start Time":"Hora de Início",
|
||||
"State":"Estado",
|
||||
"State change time":"Hora de alteração de estado",
|
||||
"Status":"Estado",
|
||||
"Stop":"Parar",
|
||||
"style":"estilo",
|
||||
"Submitted":"Submetido",
|
||||
"Summary of infrastructure resources":"Sumário dos recursos da nfrastructura",
|
||||
"Summary of resources":"Sumário dos recursos",
|
||||
"Summary of system resources":"Sumário recursos do sistema",
|
||||
"Summary of virtual resources":"Sumário recursos virtuais",
|
||||
"Sunstone UI Configuration":"Configuração da Sunstone UI ",
|
||||
"Support":"Suporte",
|
||||
"Suspend":"Suspender",
|
||||
"Swap":"Substituir",
|
||||
"System":"Sistema",
|
||||
"System Resources":"Recursos do sistema",
|
||||
"System resources management is only accesible to users of the oneadmin group. It comprises the operations regarding OpenNebula groups, users and ACLs.":"A gestão de recursos do sistema só está acessível a utilizadores do grupo oneadmin. Inclui as operações respeitantes a gripos, utilizadores e ACLs.",
|
||||
"Tablet":"Tablet",
|
||||
"Target":"Alvo",
|
||||
"Tcp black ports":"Portos bloqueados Tcp",
|
||||
"Tcp firewall mode":"Modo de firewall Tcp",
|
||||
"Tcp white ports":"Portos abertos Tcp",
|
||||
"Template":"Modelo",
|
||||
"Template information":"Informação de modelo",
|
||||
"Templates":"Modelos",
|
||||
"Template updated correctly":"Modelo actualizado correctamente",
|
||||
"The Infrastructure menu allows management of Hosts, Datastores, Virtual Networks. Users in the oneadmin group can manage clusters as well.":"O menu Infrastructura permite a gestão de Hosts, Datastores, e Redes Virtuais. Utilizadors no grupo oneadmin podem gerir clusters também.",
|
||||
"There are mandatory fields missing in the capacity section":"Há campos obrigatórios em falta na secção secção capacidade",
|
||||
"There are mandatory fields missing in the OS Boot options section":"Há campos obrigatórios em falta na secção arranque do SO",
|
||||
"There are mandatory parameters missing":"Há campos obrigatórios em falta",
|
||||
"There are mandatory parameters missing in this section":"Há campos obrigatórios em falta nesta secção",
|
||||
"There are missing network parameters":"Há parâmetros de rede em falta",
|
||||
"The Virtual Resources menu allows management of Virtual Machine Templates, Instances and Images.":"O menu de Recursos Virtuais permite a gestão de Modelos de VM, instâncias e imagens.",
|
||||
"This field sets which attribute will be used to sort the suitable hosts for this VM. Basically, it defines which hosts are more suitable than others":"Este campo define qual atributo irá ser usado para ordenar os hosts indicados para esta VM. Basicamente, define que hosts são mais indicados que outros",
|
||||
"This rule applies to":"Esta regra aplica-se a",
|
||||
"This will cancel selected VMs":"Isto vai cancelar selected VMs",
|
||||
"This will change the main group of the selected users. Select the new group":"Isto vai alterar the main grupo of the selected utilizadors. Seleccione the novo grupo",
|
||||
"This will change the password for the selected users":"Isto vai alterar the palavra-passe for the selected utilizadors",
|
||||
"This will delete the selected VMs from the database":"Isto vai apagar the selected VMs from the database",
|
||||
"This will deploy the selected VMs on the chosen host":"Isto vai lançar as VMs seleccionadas no host escolhido",
|
||||
"This will hold selected pending VMs from being deployed":"Isto vai pausar as VMs pendentes à espera de serem lançadas",
|
||||
"This will initiate the shutdown process in the selected VMs":"Isto vai iniciar o processo de encerramento nas VMs seleccionadas",
|
||||
"This will live-migrate the selected VMs to the chosen host":"Isto vai migrar em tempo real as VMs seleccionadas para o host seleccionado",
|
||||
"This will migrate the selected VMs to the chosen host":"Isto vai migrar as VMs seleccionadas para o host seleccionado",
|
||||
"This will redeploy selected VMs (in UNKNOWN or BOOT state)":"Isto vai relançar as VMs seleccionadas (em estado UNKNOWN ou BOOT)",
|
||||
"This will release held machines":"Isto vai libertar as máquinas pausadas",
|
||||
"This will resubmits VMs to PENDING state":"Isto vai resubmeter VMs para o estado PENDING",
|
||||
"This will resume selected stopped or suspended VMs":"Isto vai continuar VMs seleccionadas, paradas ou suspensas",
|
||||
"This will send a reboot action to running VMs":"Isto vai enviar a acção de encerramento às VMs em execução",
|
||||
"This will suspend selected machines":"Isto vai suspender as VMs seleccionadas",
|
||||
"TM Mad":"TM Mad",
|
||||
"TM MAD":"TM MAD",
|
||||
"total":"total",
|
||||
"Total Leases":"Alocações totais",
|
||||
"Total time":"Tempo total",
|
||||
"Total VM count":"Contagem total de VM",
|
||||
"Total VM CPU":"CPU Total VM ",
|
||||
"Total VM Memory":"Memória Total VM",
|
||||
"Transfer manager":"Gestão de transferência",
|
||||
"Transfer Manager":"Gestão de Transferência",
|
||||
"Type":"Tipo",
|
||||
"Type of disk device to emulate.":"Tipo de dispositivo de disco a emular.",
|
||||
"Type of disk device to emulate: ide, scsi":"Tipo de dispositivo de disco a emular: ide, scsi",
|
||||
"Type of file system to be built. This can be any value understood by mkfs unix command.":"Tipo de sistema de ficheiros a contruir. Este pode ser qualquer valor compreendido pelo comando Unix mkfs.",
|
||||
"Type of the image, explained in detail in the following section. If omitted, the default value is the one defined in oned.conf (install default is OS).":"Tipo de imagem, explicado em detalhe na secção seguinte. Se omitido, o valor por omissão é o valor definido em oned.conf (instalação por omissão é SO).",
|
||||
"Udp black ports":"Portos bloqueados Udp",
|
||||
"Udp firewall mode":"Modo de firewall Udp",
|
||||
"Udp white ports":"Portos abertos Udp",
|
||||
"Unauthorized":"Não autorizado",
|
||||
"Update":"Actualizar",
|
||||
"Update a template":"Actualizar o modelo",
|
||||
"Update Datastore properties":"Actualizar as propriedades Datastore",
|
||||
"Update image properties":"Actualizar propriedades da imagem",
|
||||
"Update network properties":"Actualizar propriedades de rede",
|
||||
"Update properties":"Actualizar propriedades",
|
||||
"Update template":"Actualizar modelo",
|
||||
"Update template properties":"Actualizar propriedades de modelo",
|
||||
"Update VM properties":"Actualizar propriedades de VM",
|
||||
"Upload":"Enviar",
|
||||
"Upload file":"Enviar ficheiro",
|
||||
"Uploading...":"A enviar...",
|
||||
"USB":"USB",
|
||||
"Use":"Utilização",
|
||||
"Used by VM":"Utilizado pela VM",
|
||||
"Used CPU":"CPU utilizado",
|
||||
"Used CPU (allocated)":"Used CPU utilizado(alocado)",
|
||||
"Used CPU (real)":"Used CPU utilizado(real)",
|
||||
"Used Mem (allocated)":"Memória utilizada(alocada)",
|
||||
"Used Memory":"Memória utilizada",
|
||||
"Used Mem (real)":"Memória utilizada(real)",
|
||||
"Useful for power management, for example, normally required for graceful shutdown to work":"Útil para gestão de energia, por exemplo, normalmente necessário para um encerramento normal funcionar",
|
||||
"User":"Utilizador",
|
||||
"User information":"Informação de utilizador",
|
||||
"Username":"Nome de utilizador",
|
||||
"User name and password must be filled in":"O nome de utilizador e a palavra-passe devem ser preenchidos",
|
||||
"Users":"Utilizadores",
|
||||
"User template":"Modelo de utilizadores",
|
||||
"Value":"Valor",
|
||||
"Value of the context variable":"Valor da variável de contexto",
|
||||
"Value of the custom variable":"Valor variável personalizada",
|
||||
"VCPU":"VCPU",
|
||||
"Virtio":"Virtio",
|
||||
"Virtio (KVM)":"Virtio (KVM)",
|
||||
"Virtualization Manager":"Gestão de Virtualização",
|
||||
"Virtual Machine information":"Informação de VM",
|
||||
"Virtual Machines":"Máquinas Virtuais",
|
||||
"Virtual Network":"Rede virtual",
|
||||
"Virtual network information":"Informação da rede virtual",
|
||||
"Virtual Network information":"Informação da rede virtual",
|
||||
"Virtual Network name missing!":"Falta preencher o nome da rede virutal!",
|
||||
"Virtual Networks":"Redes virtuais",
|
||||
"Virtual Network template (attributes)":"Modelo de rede virtual (atributos)",
|
||||
"Virtual Resources":"Recursos virtuais",
|
||||
"VLAN":"VLAN",
|
||||
"VLAN ID":"ID VLAN",
|
||||
"VM information":"Informação VM",
|
||||
"VM Instance":"Instância VM",
|
||||
"VM Instances":"Instâncias VM",
|
||||
"VM log":"Log VM",
|
||||
"VM MAD":"VM MAD",
|
||||
"VM Name":"Nome VM",
|
||||
"VM Network stats":"Estatística de rede VM",
|
||||
"#VMS":"#VMS",
|
||||
"VM Save As":"Guardar como VM",
|
||||
"VM template":"modelo de VM",
|
||||
"VM Template":"Modelo de VM",
|
||||
"VM Templates":"Modelos de VM",
|
||||
"VMware":"VMware",
|
||||
"VNC":"VNC",
|
||||
"VNC Access":"Acesso VNC",
|
||||
"VNC connection":"Ligação VNC",
|
||||
"VNC Disabled":"VNC desactivado",
|
||||
"VNC Session":"Sessão VNC",
|
||||
"VN MAD":"VN MAD",
|
||||
"Welcome":"Bem-vindo",
|
||||
"Wizard":"Assistente",
|
||||
"Wizard KVM":"Assistente KVM",
|
||||
"Wizard VMware":"Assistente VMware",
|
||||
"Wizard XEN":"Assistente XEN",
|
||||
"Write the image template here":"Introduza o modelo de imagem aqui",
|
||||
"Write the Virtual Machine template here":"Introduza o modelo de VM aqui",
|
||||
"Write the Virtual Network template here":"Introduza o modelo de rede virtual aqui",
|
||||
"x509":"x509",
|
||||
"XEN":"XEN",
|
||||
"Xen templates must specify a boot method":"Os modelos Xen têm que especificar um método de arranque",
|
||||
"yes":"sim",
|
||||
"Yes":"Sim",
|
||||
"You can find further information on the following links:":"Pode encontrar mais informação nas ligações seguintes:",
|
||||
"You can use the wildcard %i. When creating several VMs, %i will be replaced with a different number starting from 0 in each of them":"Pode usar o asterisco %i. Aquando da criação de várias VMs, i% será substituído por um número diferente a começar por 0 em cada uma delas",
|
||||
"You have not selected a template":"Não seleccionou um modelo",
|
||||
"You have to confirm this action.":"É necessário confirmar esta acção.",
|
||||
"You need to select something.":"É necessário seleccionar alguma opção",
|
||||
};
|
17
src/sunstone/public/locale/pt_PT/pt_datatable.txt
Normal file
17
src/sunstone/public/locale/pt_PT/pt_datatable.txt
Normal file
@ -0,0 +1,17 @@
|
||||
{
|
||||
"sProcessing": "A processar...",
|
||||
"sLengthMenu": "Mostrar _MENU_ registos",
|
||||
"sZeroRecords": "Não foram encontrados resultados",
|
||||
"sInfo": "Mostrando de _START_ até _END_ de _TOTAL_ registos",
|
||||
"sInfoEmpty": "Mostrando de 0 até 0 de 0 registros",
|
||||
"sInfoFiltered": "(filtrado de _MAX_ registos no total)",
|
||||
"sInfoPostFix": "",
|
||||
"sSearch": "Procurar:",
|
||||
"sUrl": "",
|
||||
"oPaginate": {
|
||||
"sFirst": "Primeiro",
|
||||
"sPrevious": "Anterior",
|
||||
"sNext": "Seguinte",
|
||||
"sLast": "Último"
|
||||
}
|
||||
}
|
@ -215,6 +215,7 @@ void TransferManager::prolog_action(int vid)
|
||||
string size;
|
||||
string format;
|
||||
string tm_mad, system_tm_mad;
|
||||
string ds_id;
|
||||
|
||||
VirtualMachine * vm;
|
||||
Nebula& nd = Nebula::instance();
|
||||
@ -265,7 +266,7 @@ void TransferManager::prolog_action(int vid)
|
||||
|
||||
num = vm->get_template_attribute("DISK",attrs);
|
||||
|
||||
for (int i=0; i < num ;i++, source="", type="", clon="", tm_mad="")
|
||||
for (int i=0; i < num ;i++, source="", type="", clon="",tm_mad="",ds_id="-")
|
||||
{
|
||||
disk = dynamic_cast<const VectorAttribute *>(attrs[i]);
|
||||
|
||||
@ -282,6 +283,13 @@ void TransferManager::prolog_action(int vid)
|
||||
(int(*)(int))toupper);
|
||||
}
|
||||
|
||||
ds_id = disk->vector_value("DATASTORE_ID");
|
||||
|
||||
if ( ds_id.empty() )
|
||||
{
|
||||
ds_id = "-";
|
||||
}
|
||||
|
||||
if ( type == "SWAP" )
|
||||
{
|
||||
// -----------------------------------------------------------------
|
||||
@ -300,7 +308,9 @@ void TransferManager::prolog_action(int vid)
|
||||
<< system_tm_mad << " "
|
||||
<< size << " "
|
||||
<< vm->get_hostname() << ":"
|
||||
<< vm->get_remote_system_dir() << "/disk." << i << endl;
|
||||
<< vm->get_remote_system_dir() << "/disk." << i << " "
|
||||
<< vm->get_oid() << " "
|
||||
<< ds_id << endl;
|
||||
}
|
||||
else if ( type == "FS" )
|
||||
{
|
||||
@ -322,7 +332,9 @@ void TransferManager::prolog_action(int vid)
|
||||
<< size << " "
|
||||
<< format << " "
|
||||
<< vm->get_hostname() << ":"
|
||||
<< vm->get_remote_system_dir() << "/disk." << i << endl;
|
||||
<< vm->get_remote_system_dir() << "/disk." << i << " "
|
||||
<< vm->get_oid() << " "
|
||||
<< ds_id << endl;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -388,7 +400,7 @@ void TransferManager::prolog_action(int vid)
|
||||
xfr << " " << size;
|
||||
}
|
||||
|
||||
xfr << endl;
|
||||
xfr << " " << vm->get_oid() << " " << ds_id << endl;
|
||||
}
|
||||
}
|
||||
|
||||
@ -417,7 +429,7 @@ void TransferManager::prolog_action(int vid)
|
||||
|
||||
xfr << vm->get_hostname() << ":"
|
||||
<< vm->get_remote_system_dir() << "/disk." << num
|
||||
<< endl;
|
||||
<< " " << vm->get_oid() << " -" << endl;
|
||||
}
|
||||
|
||||
xfr.close();
|
||||
@ -478,6 +490,7 @@ void TransferManager::prolog_migr_action(int vid)
|
||||
const VectorAttribute * disk;
|
||||
string tm_mad;
|
||||
string system_tm_mad;
|
||||
string ds_id;
|
||||
|
||||
vector<const Attribute *> attrs;
|
||||
int num;
|
||||
@ -526,7 +539,7 @@ void TransferManager::prolog_migr_action(int vid)
|
||||
|
||||
num = vm->get_template_attribute("DISK",attrs);
|
||||
|
||||
for (int i=0 ; i < num ; i++, tm_mad="")
|
||||
for (int i=0 ; i < num ; i++, tm_mad="", ds_id="-")
|
||||
{
|
||||
disk = dynamic_cast<const VectorAttribute *>(attrs[i]);
|
||||
|
||||
@ -542,13 +555,22 @@ void TransferManager::prolog_migr_action(int vid)
|
||||
continue;
|
||||
}
|
||||
|
||||
ds_id = disk->vector_value("DATASTORE_ID");
|
||||
|
||||
if ( ds_id.empty() )
|
||||
{
|
||||
ds_id = "-";
|
||||
}
|
||||
|
||||
//MV tm_mad prev_host:remote_system_dir/disk.i host:remote_system_dir/disk.i
|
||||
xfr << "MV "
|
||||
<< tm_mad << " "
|
||||
<< vm->get_previous_hostname() << ":"
|
||||
<< vm->get_remote_system_dir() << "/disk." << i << " "
|
||||
<< vm->get_hostname() << ":"
|
||||
<< vm->get_remote_system_dir() << "/disk." << i << endl;
|
||||
<< vm->get_remote_system_dir() << "/disk." << i << " "
|
||||
<< vm->get_oid() << " "
|
||||
<< ds_id << endl;
|
||||
}
|
||||
|
||||
//MV tm_mad prev_host:remote_system_dir host:remote_system_dir
|
||||
@ -557,7 +579,8 @@ void TransferManager::prolog_migr_action(int vid)
|
||||
<< vm->get_previous_hostname() << ":"
|
||||
<< vm->get_remote_system_dir() << " "
|
||||
<< vm->get_hostname() << ":"
|
||||
<< vm->get_remote_system_dir() << endl;
|
||||
<< vm->get_remote_system_dir() << " "
|
||||
<< vm->get_oid() << " -" << endl;
|
||||
|
||||
xfr.close();
|
||||
|
||||
@ -601,6 +624,7 @@ void TransferManager::prolog_resume_action(int vid)
|
||||
const VectorAttribute * disk;
|
||||
string tm_mad;
|
||||
string system_tm_mad;
|
||||
string ds_id;
|
||||
|
||||
vector<const Attribute *> attrs;
|
||||
int num;
|
||||
@ -648,7 +672,7 @@ void TransferManager::prolog_resume_action(int vid)
|
||||
// ------------------------------------------------------------------------
|
||||
num = vm->get_template_attribute("DISK",attrs);
|
||||
|
||||
for (int i=0 ; i < num ; i++, tm_mad="")
|
||||
for (int i=0 ; i < num ; i++, tm_mad="", ds_id="-")
|
||||
{
|
||||
disk = dynamic_cast<const VectorAttribute *>(attrs[i]);
|
||||
|
||||
@ -664,20 +688,30 @@ void TransferManager::prolog_resume_action(int vid)
|
||||
continue;
|
||||
}
|
||||
|
||||
ds_id = disk->vector_value("DATASTORE_ID");
|
||||
|
||||
if ( ds_id.empty() )
|
||||
{
|
||||
ds_id = "-";
|
||||
}
|
||||
|
||||
//MV tm_mad fe:system_dir/disk.i host:remote_system_dir/disk.i
|
||||
xfr << "MV "
|
||||
<< tm_mad << " "
|
||||
<< nd.get_nebula_hostname() << ":"
|
||||
<< vm->get_system_dir() << "/disk." << i << " "
|
||||
<< vm->get_hostname() << ":"
|
||||
<< vm->get_remote_system_dir() << "/disk." << i << endl;
|
||||
<< vm->get_remote_system_dir() << "/disk." << i << " "
|
||||
<< vm->get_oid() << " "
|
||||
<< ds_id << endl;
|
||||
}
|
||||
|
||||
//MV tm_mad fe:system_dir host:remote_system_dir
|
||||
xfr << "MV "
|
||||
<< system_tm_mad << " "
|
||||
<< nd.get_nebula_hostname() << ":"<< vm->get_system_dir() << " "
|
||||
<< vm->get_hostname() << ":" << vm->get_remote_system_dir() << endl;
|
||||
<< vm->get_hostname() << ":" << vm->get_remote_system_dir()<< " "
|
||||
<< vm->get_oid() << " -" << endl;
|
||||
|
||||
xfr.close();
|
||||
|
||||
@ -719,6 +753,7 @@ void TransferManager::epilog_action(int vid)
|
||||
string xfr_name;
|
||||
string system_tm_mad;
|
||||
string tm_mad;
|
||||
string ds_id;
|
||||
|
||||
const VectorAttribute * disk;
|
||||
string save;
|
||||
@ -770,7 +805,7 @@ void TransferManager::epilog_action(int vid)
|
||||
|
||||
num = vm->get_template_attribute("DISK",attrs);
|
||||
|
||||
for (int i=0; i < num ;i++,save="")
|
||||
for (int i=0; i < num; i++, save="", ds_id="-")
|
||||
{
|
||||
disk = dynamic_cast<const VectorAttribute *>(attrs[i]);
|
||||
|
||||
@ -786,6 +821,13 @@ void TransferManager::epilog_action(int vid)
|
||||
continue;
|
||||
}
|
||||
|
||||
ds_id = disk->vector_value("DATASTORE_ID");
|
||||
|
||||
if ( ds_id.empty() )
|
||||
{
|
||||
ds_id = "-";
|
||||
}
|
||||
|
||||
transform(save.begin(),save.end(),save.begin(),(int(*)(int))toupper);
|
||||
|
||||
tm_mad = disk->vector_value("TM_MAD");
|
||||
@ -814,7 +856,9 @@ void TransferManager::epilog_action(int vid)
|
||||
<< tm_mad << " "
|
||||
<< vm->get_hostname() << ":"
|
||||
<< vm->get_remote_system_dir() << "/disk." << i << " "
|
||||
<< source << endl;
|
||||
<< source << " "
|
||||
<< vm->get_oid() << " "
|
||||
<< ds_id << endl;
|
||||
}
|
||||
else if ( !tm_mad.empty() ) //No saving disk and no system_ds disk
|
||||
{
|
||||
@ -822,14 +866,17 @@ void TransferManager::epilog_action(int vid)
|
||||
xfr << "DELETE "
|
||||
<< tm_mad << " "
|
||||
<< vm->get_hostname() << ":"
|
||||
<< vm->get_remote_system_dir() << "/disk." << i << endl;
|
||||
<< vm->get_remote_system_dir() << "/disk." << i << " "
|
||||
<< vm->get_oid() << " "
|
||||
<< ds_id << endl;
|
||||
}
|
||||
}
|
||||
|
||||
//DELETE system_tm_mad hostname:remote_system_dir
|
||||
xfr << "DELETE "
|
||||
<< system_tm_mad << " "
|
||||
<< vm->get_hostname() << ":" << vm->get_remote_system_dir() << endl;
|
||||
<< vm->get_hostname() << ":" << vm->get_remote_system_dir() << " "
|
||||
<< vm->get_oid() << " -" << endl;
|
||||
|
||||
xfr.close();
|
||||
|
||||
@ -871,6 +918,7 @@ void TransferManager::epilog_stop_action(int vid)
|
||||
string xfr_name;
|
||||
string tm_mad;
|
||||
string system_tm_mad;
|
||||
string ds_id;
|
||||
|
||||
VirtualMachine * vm;
|
||||
Nebula& nd = Nebula::instance();
|
||||
@ -918,7 +966,7 @@ void TransferManager::epilog_stop_action(int vid)
|
||||
// ------------------------------------------------------------------------
|
||||
num = vm->get_template_attribute("DISK",attrs);
|
||||
|
||||
for (int i=0 ; i < num ; i++, tm_mad="")
|
||||
for (int i=0 ; i < num ; i++, tm_mad="", ds_id="-")
|
||||
{
|
||||
disk = dynamic_cast<const VectorAttribute *>(attrs[i]);
|
||||
|
||||
@ -934,20 +982,30 @@ void TransferManager::epilog_stop_action(int vid)
|
||||
continue;
|
||||
}
|
||||
|
||||
ds_id = disk->vector_value("DATASTORE_ID");
|
||||
|
||||
if ( ds_id.empty() )
|
||||
{
|
||||
ds_id = "-";
|
||||
}
|
||||
|
||||
//MV tm_mad host:remote_system_dir/disk.i fe:system_dir/disk.i
|
||||
xfr << "MV "
|
||||
<< tm_mad << " "
|
||||
<< vm->get_hostname() << ":"
|
||||
<< vm->get_remote_system_dir() << "/disk." << i << " "
|
||||
<< nd.get_nebula_hostname() << ":"
|
||||
<< vm->get_system_dir() << "/disk." << i << endl;
|
||||
<< vm->get_system_dir() << "/disk." << i << " "
|
||||
<< vm->get_oid() << " "
|
||||
<< ds_id << endl;
|
||||
}
|
||||
|
||||
//MV system_tm_mad hostname:remote_system_dir fe:system_dir
|
||||
xfr << "MV "
|
||||
<< system_tm_mad << " "
|
||||
<< vm->get_hostname() << ":" << vm->get_remote_system_dir() << " "
|
||||
<< nd.get_nebula_hostname() << ":" << vm->get_system_dir() << endl;
|
||||
<< nd.get_nebula_hostname() << ":" << vm->get_system_dir() << " "
|
||||
<< vm->get_oid() << " -" << endl;
|
||||
|
||||
xfr.close();
|
||||
|
||||
@ -990,6 +1048,7 @@ void TransferManager::epilog_delete_action(int vid)
|
||||
string xfr_name;
|
||||
string system_tm_mad;
|
||||
string tm_mad;
|
||||
string ds_id;
|
||||
|
||||
VirtualMachine * vm;
|
||||
Nebula& nd = Nebula::instance();
|
||||
@ -1037,7 +1096,7 @@ void TransferManager::epilog_delete_action(int vid)
|
||||
// -------------------------------------------------------------------------
|
||||
num = vm->get_template_attribute("DISK",attrs);
|
||||
|
||||
for (int i=0 ; i < num ; i++, tm_mad="")
|
||||
for (int i=0 ; i < num ; i++, tm_mad="", ds_id="-")
|
||||
{
|
||||
disk = dynamic_cast<const VectorAttribute *>(attrs[i]);
|
||||
|
||||
@ -1053,17 +1112,27 @@ void TransferManager::epilog_delete_action(int vid)
|
||||
continue;
|
||||
}
|
||||
|
||||
ds_id = disk->vector_value("DATASTORE_ID");
|
||||
|
||||
if ( ds_id.empty() )
|
||||
{
|
||||
ds_id = "-";
|
||||
}
|
||||
|
||||
//DELETE tm_mad host:remote_system_dir/disk.i
|
||||
xfr << "DELETE "
|
||||
<< tm_mad << " "
|
||||
<< vm->get_hostname() << ":"
|
||||
<< vm->get_remote_system_dir() << "/disk." << i << endl;
|
||||
<< vm->get_remote_system_dir() << "/disk." << i << " "
|
||||
<< vm->get_oid() << " "
|
||||
<< ds_id << endl;
|
||||
}
|
||||
|
||||
//DELETE system_tm_mad hostname:remote_system_dir
|
||||
xfr << "DELETE "
|
||||
<< system_tm_mad << " "
|
||||
<< vm->get_hostname() <<":"<< vm->get_remote_system_dir() << endl;
|
||||
<< vm->get_hostname() <<":"<< vm->get_remote_system_dir() << " "
|
||||
<< vm->get_oid() << " -";
|
||||
|
||||
xfr.close();
|
||||
|
||||
@ -1108,6 +1177,7 @@ void TransferManager::epilog_delete_previous_action(int vid)
|
||||
string xfr_name;
|
||||
string system_tm_mad;
|
||||
string tm_mad;
|
||||
string ds_id;
|
||||
|
||||
VirtualMachine * vm;
|
||||
Nebula& nd = Nebula::instance();
|
||||
@ -1156,7 +1226,7 @@ void TransferManager::epilog_delete_previous_action(int vid)
|
||||
// ------------------------------------------------------------------------
|
||||
num = vm->get_template_attribute("DISK",attrs);
|
||||
|
||||
for (int i=0 ; i < num ; i++, tm_mad="")
|
||||
for (int i=0 ; i < num ; i++, tm_mad="", ds_id="-")
|
||||
{
|
||||
disk = dynamic_cast<const VectorAttribute *>(attrs[i]);
|
||||
|
||||
@ -1172,18 +1242,27 @@ void TransferManager::epilog_delete_previous_action(int vid)
|
||||
continue;
|
||||
}
|
||||
|
||||
ds_id = disk->vector_value("DATASTORE_ID");
|
||||
|
||||
if ( ds_id.empty() )
|
||||
{
|
||||
ds_id = "-";
|
||||
}
|
||||
|
||||
//DELETE tm_mad prev_host:remote_system_dir/disk.i
|
||||
xfr << "DELETE "
|
||||
<< tm_mad << " "
|
||||
<< vm->get_previous_hostname() << ":"
|
||||
<< vm->get_remote_system_dir() << "/disk." << i << endl;
|
||||
<< vm->get_remote_system_dir() << "/disk." << i << " "
|
||||
<< vm->get_oid() << " "
|
||||
<< ds_id << endl;
|
||||
}
|
||||
|
||||
//DELTE system_tm_mad prev_host:remote_system_dir
|
||||
xfr << "DELETE "
|
||||
<< system_tm_mad << " "
|
||||
<< vm->get_previous_hostname() <<":"<< vm->get_remote_system_dir()
|
||||
<< endl;
|
||||
<< " " << vm->get_oid() << " -" << endl;
|
||||
|
||||
xfr.close();
|
||||
|
||||
|
@ -735,7 +735,7 @@ int UserPool::authorize(AuthRequest& ar)
|
||||
AuthManager * authm = nd.get_authm();
|
||||
int rc = -1;
|
||||
|
||||
if (authm == 0)
|
||||
if (authm == 0 || !authm->is_authz_enabled())
|
||||
{
|
||||
if (ar.core_authorize())
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user