Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
libvirt
提交
ee8553e1
L
libvirt
项目概览
openeuler
/
libvirt
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
libvirt
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
ee8553e1
编写于
5月 28, 2009
作者:
D
Daniel P. Berrange
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix misc syntax problems with open nebula driver
上级
dcd98653
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
219 addition
and
205 deletion
+219
-205
ChangeLog
ChangeLog
+11
-0
Makefile.maint
Makefile.maint
+1
-0
po/POTFILES.in
po/POTFILES.in
+2
-0
src/opennebula/one_conf.c
src/opennebula/one_conf.c
+101
-101
src/opennebula/one_conf.h
src/opennebula/one_conf.h
+8
-8
src/opennebula/one_driver.c
src/opennebula/one_driver.c
+92
-92
src/opennebula/one_driver.h
src/opennebula/one_driver.h
+4
-4
未找到文件。
ChangeLog
浏览文件 @
ee8553e1
Thu May 28 14:11:30 BST 2009 Daniel P. Berrange <berrange@redhat.com>
Fix misc syntax check failures with OpenNebula driver
* src/opennebula/one_conf.c, src/opennebula/one_conf.h,
src/opennebula/one_driver.c, src/opennebula/one_driver.h: Kill
trailing whitespace, automatic re-indent of all code, added
missing translation marking
* Makefile.maint: Add oneError() as a function with translatable
strings.
* po/POTFILES.in: Add one_conf.c, one_driver.c
Thu May 28 13:27:30 BST 2009 Daniel P. Berrange <berrange@redhat.com>
* src/logging.c: Include function name & line number in all
...
...
Makefile.maint
浏览文件 @
ee8553e1
...
...
@@ -332,6 +332,7 @@ msg_gen_function += errorf
msg_gen_function
+=
lxcError
msg_gen_function
+=
networkLog
msg_gen_function
+=
networkReportError
msg_gen_function
+=
oneError
msg_gen_function
+=
openvzError
msg_gen_function
+=
openvzLog
msg_gen_function
+=
qemudDispatchClientFailure
...
...
po/POTFILES.in
浏览文件 @
ee8553e1
...
...
@@ -16,6 +16,8 @@ src/network_driver.c
src/node_device.c
src/node_device_conf.c
src/nodeinfo.c
src/opennebula/one_conf.c
src/opennebula/one_driver.c
src/openvz_conf.c
src/openvz_driver.c
src/pci.c
...
...
src/opennebula/one_conf.c
浏览文件 @
ee8553e1
/*----------------------------------------------------------------------------------*/
/* Copyright 2002-2009, Distributed Systems Architecture Group, Universidad
* Complutense de Madrid (dsa-research.org)
*
/* Copyright 2002-2009, Distributed Systems Architecture Group, Universidad
* Complutense de Madrid (dsa-research.org)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
...
...
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
*/
/*-----------------------------------------------------------------------------------*/
#include <config.h>
...
...
@@ -73,7 +73,7 @@ virCapsPtr oneCapsInit(void)
}
if
((
guest
=
virCapabilitiesAddGuest
(
caps
,
if
((
guest
=
virCapabilitiesAddGuest
(
caps
,
"hvm"
,
"x86_64"
,
64
,
...
...
@@ -114,22 +114,22 @@ no_memory:
* @param vm the virtual machine pointer
* @return the OpenNebula ID for the new VM or -1 in case of error
*/
int
oneSubmitVM
(
virConnectPtr
conn
,
one_driver_t
*
driver
ATTRIBUTE_UNUSED
,
virDomainObjPtr
vm
)
{
char
*
templ
;
int
oneid
;
if
((
templ
=
xmlOneTemplate
(
conn
,
vm
->
def
))
==
NULL
)
return
-
1
;
if
(
(
oneid
=
c_oneAllocateTemplate
(
templ
))
<
0
){
if
((
templ
=
xmlOneTemplate
(
conn
,
vm
->
def
))
==
NULL
)
return
-
1
;
if
((
oneid
=
c_oneAllocateTemplate
(
templ
))
<
0
)
{
oneError
(
conn
,
NULL
,
VIR_ERR_OPERATION_FAILED
,
"Error submitting virtual machine to OpenNebula"
);
VIR_FREE
(
templ
);
return
-
1
;
_
(
"Error submitting virtual machine to OpenNebula"
)
);
VIR_FREE
(
templ
);
return
-
1
;
}
VIR_FREE
(
templ
);
...
...
@@ -147,113 +147,113 @@ int oneSubmitVM(virConnectPtr conn,
*/
char
*
xmlOneTemplate
(
virConnectPtr
conn
,
virDomainDefPtr
def
)
{
int
i
;
virBuffer
buf
=
VIR_BUFFER_INITIALIZER
;
virBufferVSprintf
(
&
buf
,
"#OpenNebula Template automatically generated by libvirt
\n
NAME = %s
\n
CPU = %ld
\n
MEMORY = %ld
\n
"
,
def
->
name
,
def
->
vcpus
,
(
def
->
maxmem
)
/
1024
);
{
int
i
;
virBuffer
buf
=
VIR_BUFFER_INITIALIZER
;
virBufferVSprintf
(
&
buf
,
"#OpenNebula Template automatically generated by libvirt
\n
NAME = %s
\n
CPU = %ld
\n
MEMORY = %ld
\n
"
,
def
->
name
,
def
->
vcpus
,
(
def
->
maxmem
)
/
1024
);
/*Optional Booting OpenNebula Information:*/
if
(
def
->
os
.
kernel
)
{
if
(
def
->
os
.
kernel
)
{
virBufferVSprintf
(
&
buf
,
"OS=[ kernel =
\"
%s
\"
"
,
def
->
os
.
kernel
);
if
(
def
->
os
.
initrd
)
virBufferVSprintf
(
&
buf
,
",
\n
initrd =
\"
%s
\"
"
,
def
->
os
.
initrd
);
if
(
def
->
os
.
cmdline
)
virBufferVSprintf
(
&
buf
,
",
\n
kernel_cmd =
\"
%s
\"
"
,
def
->
os
.
cmdline
);
if
(
def
->
os
.
root
)
virBufferVSprintf
(
&
buf
,
",
\n
root =
\"
%s
\"
"
,
def
->
os
.
root
);
virBufferAddLit
(
&
buf
,
" ]
\n
"
);
if
(
def
->
os
.
initrd
)
virBufferVSprintf
(
&
buf
,
",
\n
initrd =
\"
%s
\"
"
,
def
->
os
.
initrd
);
if
(
def
->
os
.
cmdline
)
virBufferVSprintf
(
&
buf
,
",
\n
kernel_cmd =
\"
%s
\"
"
,
def
->
os
.
cmdline
);
if
(
def
->
os
.
root
)
virBufferVSprintf
(
&
buf
,
",
\n
root =
\"
%s
\"
"
,
def
->
os
.
root
);
virBufferAddLit
(
&
buf
,
" ]
\n
"
);
}
/* set Disks & NICS */
for
(
i
=
0
;
i
<
def
->
ndisks
;
i
++
){
// missing source is only allowed at cdrom and floppy
if
(
def
->
disks
[
i
]
->
device
==
VIR_DOMAIN_DISK_DEVICE_DISK
)
{
virBufferVSprintf
(
&
buf
,
"DISK=[ type = disk,
\n
"
" source =
\"
%s
\"
,
\n
"
,
def
->
disks
[
i
]
->
src
);
}
else
if
(
def
->
disks
[
i
]
->
device
==
VIR_DOMAIN_DISK_DEVICE_CDROM
)
{
virBufferAddLit
(
&
buf
,
"DISK=[ type = cdrom,
\n
"
);
if
(
def
->
disks
[
i
]
->
src
)
virBufferVSprintf
(
&
buf
,
" source =
\"
%s
\"
,
\n
"
,
def
->
disks
[
i
]
->
src
);
}
else
if
(
def
->
disks
[
i
]
->
device
==
VIR_DOMAIN_DISK_DEVICE_FLOPPY
)
{
virBufferAddLit
(
&
buf
,
"DISK=[ type = floppy,
\n
"
);
if
(
def
->
disks
[
i
]
->
src
)
virBufferVSprintf
(
&
buf
,
" source =
\"
%s
\"
,
\n
"
,
def
->
disks
[
i
]
->
src
);
}
virBufferVSprintf
(
&
buf
,
" target =
\"
%s
\"
,
\n
"
" readonly ="
,
def
->
disks
[
i
]
->
dst
);
if
(
def
->
disks
[
i
]
->
readonly
)
virBufferAddLit
(
&
buf
,
"
\"
yes
\"
]
\n
"
);
else
virBufferAddLit
(
&
buf
,
"
\"
no
\"
]
\n
"
);
for
(
i
=
0
;
i
<
def
->
ndisks
;
i
++
)
{
// missing source is only allowed at cdrom and floppy
if
(
def
->
disks
[
i
]
->
device
==
VIR_DOMAIN_DISK_DEVICE_DISK
)
{
virBufferVSprintf
(
&
buf
,
"DISK=[ type = disk,
\n
"
" source =
\"
%s
\"
,
\n
"
,
def
->
disks
[
i
]
->
src
);
}
else
if
(
def
->
disks
[
i
]
->
device
==
VIR_DOMAIN_DISK_DEVICE_CDROM
)
{
virBufferAddLit
(
&
buf
,
"DISK=[ type = cdrom,
\n
"
);
if
(
def
->
disks
[
i
]
->
src
)
virBufferVSprintf
(
&
buf
,
" source =
\"
%s
\"
,
\n
"
,
def
->
disks
[
i
]
->
src
);
}
else
if
(
def
->
disks
[
i
]
->
device
==
VIR_DOMAIN_DISK_DEVICE_FLOPPY
)
{
virBufferAddLit
(
&
buf
,
"DISK=[ type = floppy,
\n
"
);
if
(
def
->
disks
[
i
]
->
src
)
virBufferVSprintf
(
&
buf
,
" source =
\"
%s
\"
,
\n
"
,
def
->
disks
[
i
]
->
src
);
}
virBufferVSprintf
(
&
buf
,
" target =
\"
%s
\"
,
\n
"
" readonly ="
,
def
->
disks
[
i
]
->
dst
);
if
(
def
->
disks
[
i
]
->
readonly
)
virBufferAddLit
(
&
buf
,
"
\"
yes
\"
]
\n
"
);
else
virBufferAddLit
(
&
buf
,
"
\"
no
\"
]
\n
"
);
}
for
(
i
=
0
;
i
<
def
->
nnets
;
i
++
)
for
(
i
=
0
;
i
<
def
->
nnets
;
i
++
)
{
if
(
!
def
->
nets
[
i
]
)
{
if
(
!
def
->
nets
[
i
]
)
{
continue
;
}
switch
(
def
->
nets
[
i
]
->
type
)
{
case
VIR_DOMAIN_NET_TYPE_BRIDGE
:
virBufferVSprintf
(
&
buf
,
"NIC=[ bridge =
\"
%s
\"
,
\n
"
,
def
->
nets
[
i
]
->
data
.
bridge
.
brname
);
if
(
def
->
nets
[
i
]
->
ifname
)
virBufferVSprintf
(
&
buf
,
" target =
\"
%s
\"
,
\n
"
,
def
->
nets
[
i
]
->
ifname
);
virBufferVSprintf
(
&
buf
,
" mac =
\"
%02x:%02x:%02x:%02x:%02x:%02x
\"
]
\n
"
,
def
->
nets
[
i
]
->
mac
[
0
],
def
->
nets
[
i
]
->
mac
[
1
],
def
->
nets
[
i
]
->
mac
[
2
],
def
->
nets
[
i
]
->
mac
[
3
],
def
->
nets
[
i
]
->
mac
[
4
],
def
->
nets
[
i
]
->
mac
[
5
]);
break
;
case
VIR_DOMAIN_NET_TYPE_NETWORK
:
virBufferVSprintf
(
&
buf
,
"NIC=[ network=
\"
%s
\"
"
,
def
->
nets
[
i
]
->
data
.
network
.
name
);
if
(
def
->
nets
[
i
]
->
ifname
)
virBufferVSprintf
(
&
buf
,
",
\n
target =
\"
%s
\"
"
,
def
->
nets
[
i
]
->
ifname
);
virBufferAddLit
(
&
buf
,
" ]
\n
"
);
break
;
default:
break
;
}
case
VIR_DOMAIN_NET_TYPE_BRIDGE
:
virBufferVSprintf
(
&
buf
,
"NIC=[ bridge =
\"
%s
\"
,
\n
"
,
def
->
nets
[
i
]
->
data
.
bridge
.
brname
);
if
(
def
->
nets
[
i
]
->
ifname
)
virBufferVSprintf
(
&
buf
,
" target =
\"
%s
\"
,
\n
"
,
def
->
nets
[
i
]
->
ifname
);
virBufferVSprintf
(
&
buf
,
" mac =
\"
%02x:%02x:%02x:%02x:%02x:%02x
\"
]
\n
"
,
def
->
nets
[
i
]
->
mac
[
0
],
def
->
nets
[
i
]
->
mac
[
1
],
def
->
nets
[
i
]
->
mac
[
2
],
def
->
nets
[
i
]
->
mac
[
3
],
def
->
nets
[
i
]
->
mac
[
4
],
def
->
nets
[
i
]
->
mac
[
5
]);
break
;
case
VIR_DOMAIN_NET_TYPE_NETWORK
:
virBufferVSprintf
(
&
buf
,
"NIC=[ network=
\"
%s
\"
"
,
def
->
nets
[
i
]
->
data
.
network
.
name
);
if
(
def
->
nets
[
i
]
->
ifname
)
virBufferVSprintf
(
&
buf
,
",
\n
target =
\"
%s
\"
"
,
def
->
nets
[
i
]
->
ifname
);
virBufferAddLit
(
&
buf
,
" ]
\n
"
);
break
;
default:
break
;
}
}
if
(
def
->
graphics
!=
NULL
)
{
if
(
def
->
graphics
->
type
==
VIR_DOMAIN_GRAPHICS_TYPE_VNC
)
{
virBufferAddLit
(
&
buf
,
"GRAPHICS = [
\n
type =
\"
vnc
\"
"
);
if
(
def
->
graphics
->
data
.
vnc
.
listenAddr
!=
NULL
)
virBufferVSprintf
(
&
buf
,
",
\n
listen =
\"
%s
\"
"
,
def
->
graphics
->
data
.
vnc
.
listenAddr
);
if
(
def
->
graphics
->
data
.
vnc
.
autoport
==
0
)
virBufferVSprintf
(
&
buf
,
",
\n
port =
\"
%d
\"
"
,
def
->
graphics
->
data
.
vnc
.
port
);
if
(
def
->
graphics
->
data
.
vnc
.
passwd
!=
NULL
)
virBufferVSprintf
(
&
buf
,
",
\n
passwd =
\"
%s
\"
"
,
def
->
graphics
->
data
.
vnc
.
passwd
);
virBufferAddLit
(
&
buf
,
" ]
\n
"
);
}
else
//graphics.type==VIR_DOMAIN_GRAPHICS_TYPE_SDL
virBufferAddLit
(
&
buf
,
"GRAPHICS = [
\n
type =
\"
sdl
\"
]
\n
"
);
}
if
(
def
->
graphics
!=
NULL
){
if
(
def
->
graphics
->
type
==
VIR_DOMAIN_GRAPHICS_TYPE_VNC
){
virBufferAddLit
(
&
buf
,
"GRAPHICS = [
\n
type =
\"
vnc
\"
"
);
if
(
def
->
graphics
->
data
.
vnc
.
listenAddr
!=
NULL
)
virBufferVSprintf
(
&
buf
,
",
\n
listen =
\"
%s
\"
"
,
def
->
graphics
->
data
.
vnc
.
listenAddr
);
if
(
def
->
graphics
->
data
.
vnc
.
autoport
==
0
)
virBufferVSprintf
(
&
buf
,
",
\n
port =
\"
%d
\"
"
,
def
->
graphics
->
data
.
vnc
.
port
);
if
(
def
->
graphics
->
data
.
vnc
.
passwd
!=
NULL
)
virBufferVSprintf
(
&
buf
,
",
\n
passwd =
\"
%s
\"
"
,
def
->
graphics
->
data
.
vnc
.
passwd
);
virBufferAddLit
(
&
buf
,
" ]
\n
"
);
}
else
//graphics.type==VIR_DOMAIN_GRAPHICS_TYPE_SDL
virBufferAddLit
(
&
buf
,
"GRAPHICS = [
\n
type =
\"
sdl
\"
]
\n
"
);
}
if
(
virBufferError
(
&
buf
))
goto
no_memory
;
return
virBufferContentAndReset
(
&
buf
);
no_memory:
no_memory:
virReportOOMError
(
conn
);
char
*
tmp
=
virBufferContentAndReset
(
&
buf
);
VIR_FREE
(
tmp
);
return
NULL
;
};
};
src/opennebula/one_conf.h
浏览文件 @
ee8553e1
/*----------------------------------------------------------------------------------*/
/* Copyright 2002-2009, Distributed Systems Architecture Group, Universidad
* Complutense de Madrid (dsa-research.org)
*
/* Copyright 2002-2009, Distributed Systems Architecture Group, Universidad
* Complutense de Madrid (dsa-research.org)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
...
...
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
*/
/*-----------------------------------------------------------------------------------*/
#ifndef ONE_CONF_H
...
...
@@ -34,7 +34,7 @@ struct one_driver{
virCapsPtr
caps
;
virDomainObjList
domains
;
int
nextid
;
};
};
typedef
struct
one_driver
one_driver_t
;
...
...
@@ -44,9 +44,9 @@ int oneSubmitVM(virConnectPtr conn ,one_driver_t* driver, virDomainObjPtr vm);
char
*
xmlOneTemplate
(
virConnectPtr
conn
,
virDomainDefPtr
def
);
#define oneError(conn, dom, code, fmt...)
\
virReportErrorHelper(conn, VIR_FROM_ONE, code, __FILE__,
\
__FUNCTION__, __LINE__, fmt)
#define oneError(conn, dom, code, fmt...) \
virReportErrorHelper(conn, VIR_FROM_ONE, code, __FILE__,
\
__FUNCTION__, __LINE__, fmt)
#endif
/* ONE_CONF_H */
src/opennebula/one_driver.c
浏览文件 @
ee8553e1
/*---------------------------------------------------------------------------*/
/* Copyright 2002-2009, Distributed Systems Architecture Group, Universidad
* Complutense de Madrid (dsa-research.org)
*
/* Copyright 2002-2009, Distributed Systems Architecture Group, Universidad
* Complutense de Madrid (dsa-research.org)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
...
...
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
*/
/*---------------------------------------------------------------------------*/
#include <config.h>
...
...
@@ -66,7 +66,7 @@ static virDrvOpenStatus oneOpen(virConnectPtr conn,
virConnectAuthPtr
auth
ATTRIBUTE_UNUSED
,
int
flags
ATTRIBUTE_UNUSED
)
{
/* Verify uri was specified */
/* Verify uri was specified */
if
(
conn
->
uri
==
NULL
)
{
conn
->
uri
=
xmlParseURI
(
"one:///"
);
if
(
!
conn
->
uri
)
{
...
...
@@ -78,7 +78,7 @@ static virDrvOpenStatus oneOpen(virConnectPtr conn,
goto
declineConnection
;
}
conn
->
privateData
=
one_driver
;
return
VIR_DRV_OPEN_SUCCESS
;
declineConnection:
...
...
@@ -86,7 +86,7 @@ declineConnection:
}
static
int
oneClose
(
virConnectPtr
conn
)
{
{
conn
->
privateData
=
NULL
;
return
0
;
}
...
...
@@ -116,7 +116,7 @@ return_point:
if
(
vm
)
{
virDomainObjUnlock
(
vm
);
}
return
dom
;
}
...
...
@@ -144,7 +144,7 @@ return_point:
if
(
vm
)
{
virDomainObjUnlock
(
vm
);
}
return
dom
;
}
...
...
@@ -172,7 +172,7 @@ return_point:
if
(
vm
)
{
virDomainObjUnlock
(
vm
);
}
return
dom
;
}
...
...
@@ -204,7 +204,7 @@ static int oneNumDomains(virConnectPtr conn)
if
(
virDomainIsActive
(
driver
->
domains
.
objs
[
i
]))
n
++
;
virDomainObjUnlock
(
driver
->
domains
.
objs
[
i
]);
}
}
oneDriverUnlock
(
driver
);
return
n
;
...
...
@@ -217,25 +217,25 @@ static int oneListDefinedDomains(virConnectPtr conn,
oneDriverLock
(
driver
);
for
(
i
=
0
;
i
<
driver
->
domains
.
count
&&
got
<
nnames
;
i
++
)
{
virDomainObjLock
(
driver
->
domains
.
objs
[
i
]);
virDomainObjLock
(
driver
->
domains
.
objs
[
i
]);
if
(
!
virDomainIsActive
(
driver
->
domains
.
objs
[
i
]))
{
if
(
!
(
names
[
got
++
]
=
strdup
(
driver
->
domains
.
objs
[
i
]
->
def
->
name
)))
{
virReportOOMError
(
conn
);
virDomainObjUnlock
(
driver
->
domains
.
objs
[
i
]);
virDomainObjUnlock
(
driver
->
domains
.
objs
[
i
]);
goto
cleanup
;
}
}
virDomainObjUnlock
(
driver
->
domains
.
objs
[
i
]);
}
oneDriverUnlock
(
driver
);
return
got
;
cleanup:
cleanup:
for
(
i
=
0
;
i
<
got
;
i
++
)
VIR_FREE
(
names
[
i
]);
oneDriverUnlock
(
driver
);
return
-
1
;
}
...
...
@@ -250,7 +250,7 @@ static int oneNumDefinedDomains(virConnectPtr conn)
if
(
!
virDomainIsActive
(
driver
->
domains
.
objs
[
i
]))
n
++
;
virDomainObjUnlock
(
driver
->
domains
.
objs
[
i
]);
}
}
oneDriverUnlock
(
driver
);
return
n
;
...
...
@@ -264,7 +264,7 @@ static virDomainPtr oneDomainDefine(virConnectPtr conn, const char *xml)
virDomainPtr
dom
=
NULL
;
oneDriverLock
(
driver
);
if
(
!
(
def
=
virDomainDefParseString
(
conn
,
driver
->
caps
,
xml
,
if
(
!
(
def
=
virDomainDefParseString
(
conn
,
driver
->
caps
,
xml
,
VIR_DOMAIN_XML_INACTIVE
)))
goto
return_point
;
...
...
@@ -292,18 +292,18 @@ static int oneDomainUndefine(virDomainPtr dom)
one_driver_t
*
driver
=
(
one_driver_t
*
)
dom
->
conn
->
privateData
;
virDomainObjPtr
vm
=
NULL
;
int
ret
=-
1
;
oneDriverLock
(
driver
);
vm
=
virDomainFindByUUID
(
&
driver
->
domains
,
dom
->
uuid
);
if
(
!
vm
)
{
oneError
(
dom
->
conn
,
dom
,
VIR_ERR_INVALID_DOMAIN
,
"no domain with matching uuid"
);
_
(
"no domain with matching uuid"
)
);
goto
return_point
;
}
if
(
!
vm
->
persistent
)
{
oneError
(
dom
->
conn
,
dom
,
VIR_ERR_INTERNAL_ERROR
,
"cannot undefine transient domain"
);
_
(
"cannot undefine transient domain"
)
);
goto
return_point
;
}
virDomainRemoveInactive
(
&
driver
->
domains
,
vm
);
...
...
@@ -332,7 +332,7 @@ static int oneDomainGetInfo(virDomainPtr dom,
if
(
gettimeofday
(
&
tv
,
NULL
)
<
0
)
{
oneError
(
dom
->
conn
,
dom
,
VIR_ERR_INTERNAL_ERROR
,
"%s"
,
_
(
"getting time of day"
));
"%s"
,
_
(
"getting time of day"
));
virDomainObjUnlock
(
vm
);
return
-
1
;
}
...
...
@@ -347,24 +347,24 @@ static int oneDomainGetInfo(virDomainPtr dom,
cptr
=
index
(
cptr
,
':'
);
cptr
++
;
int
one_state
=
atoi
(
cptr
);
switch
(
one_state
)
{
case
3
:
/** running */
if
(
vm
->
state
!=
VIR_DOMAIN_SHUTDOWN
)
vm
->
state
=
VIR_DOMAIN_RUNNING
;
break
;
case
5
:
/** pause */
vm
->
state
=
VIR_DOMAIN_PAUSED
;
break
;
case
6
:
/** done */
vm
->
state
=
VIR_DOMAIN_SHUTOFF
;
vm
->
def
->
id
=-
1
;
break
;
case
7
:
/** error */
vm
->
state
=
VIR_DOMAIN_CRASHED
;
break
;
default:
break
;
case
3
:
/** running */
if
(
vm
->
state
!=
VIR_DOMAIN_SHUTDOWN
)
vm
->
state
=
VIR_DOMAIN_RUNNING
;
break
;
case
5
:
/** pause */
vm
->
state
=
VIR_DOMAIN_PAUSED
;
break
;
case
6
:
/** done */
vm
->
state
=
VIR_DOMAIN_SHUTOFF
;
vm
->
def
->
id
=-
1
;
break
;
case
7
:
/** error */
vm
->
state
=
VIR_DOMAIN_CRASHED
;
break
;
default:
break
;
};
//Memory:
cptr
=
strstr
(
vm_info
,
"MEMORY"
);
...
...
@@ -380,7 +380,7 @@ static int oneDomainGetInfo(virDomainPtr dom,
info
->
cpuTime
=
(
tv
.
tv_sec
-
starttime
)
*
1000ll
*
1000ll
*
1000ll
;
}
info
->
state
=
vm
->
state
;
info
->
maxMem
=
vm
->
def
->
maxmem
;
info
->
memory
=
vm
->
def
->
memory
;
...
...
@@ -416,13 +416,13 @@ static int oneDomainStart(virDomainPtr dom)
virDomainObjPtr
vm
;
int
ret
=
-
1
;
int
oneid
;
oneDriverLock
(
driver
);
vm
=
virDomainFindByName
(
&
driver
->
domains
,
dom
->
name
);
if
(
!
vm
)
{
oneError
(
conn
,
dom
,
VIR_ERR_INVALID_DOMAIN
,
"no domain named %s"
,
dom
->
name
);
_
(
"no domain named %s"
)
,
dom
->
name
);
goto
return_point
;
}
if
((
oneid
=
oneSubmitVM
(
dom
->
conn
,
driver
,
vm
))
<
0
)
{
...
...
@@ -437,7 +437,7 @@ return_point:
if
(
vm
)
virDomainObjUnlock
(
vm
);
oneDriverUnlock
(
driver
);
return
ret
;
}
...
...
@@ -449,21 +449,21 @@ oneDomainCreateAndStart(virConnectPtr conn,
virDomainObjPtr
vm
=
NULL
;
virDomainDefPtr
def
;
virDomainPtr
dom
=
NULL
;
int
oneid
;
int
oneid
;
oneDriverLock
(
driver
);
if
(
!
(
def
=
virDomainDefParseString
(
conn
,
driver
->
caps
,
xml
,
VIR_DOMAIN_XML_INACTIVE
)))
VIR_DOMAIN_XML_INACTIVE
)))
goto
return_point
;
vm
=
virDomainFindByName
(
&
driver
->
domains
,
def
->
name
);
if
(
vm
)
{
oneError
(
conn
,
NULL
,
VIR_ERR_OPERATION_FAILED
,
_
(
"Already an OpenNebula VM active with the name:
\"
%s
\"
id: %d "
),
def
->
name
,
def
->
id
);
_
(
"Already an OpenNebula VM active with the name: '%s'
id: %d "
),
def
->
name
,
def
->
id
);
goto
return_point
;
}
if
(
!
(
vm
=
virDomainAssignDef
(
conn
,
&
driver
->
domains
,
def
)))
{
virDomainDefFree
(
def
);
goto
return_point
;
...
...
@@ -473,7 +473,7 @@ oneDomainCreateAndStart(virConnectPtr conn,
vm
=
NULL
;
goto
return_point
;
}
vm
->
def
->
id
=
driver
->
nextid
++
;
vm
->
persistent
=
0
;
vm
->
pid
=
oneid
;
...
...
@@ -483,12 +483,12 @@ oneDomainCreateAndStart(virConnectPtr conn,
if
(
dom
)
{
dom
->
id
=
vm
->
def
->
id
;
}
return_point:
if
(
vm
)
virDomainObjUnlock
(
vm
);
oneDriverUnlock
(
driver
);
return
dom
;
}
...
...
@@ -506,22 +506,22 @@ static int oneDomainShutdown(virDomainPtr dom)
goto
return_point
;
}
oneError
(
dom
->
conn
,
dom
,
VIR_ERR_OPERATION_FAILED
,
"Wrong state to perform action"
);
_
(
"Wrong state to perform action"
)
);
goto
return_point
;
}
oneError
(
dom
->
conn
,
dom
,
VIR_ERR_INVALID_DOMAIN
,
_
(
"no domain with id %d"
),
dom
->
id
);
goto
return_point
;
_
(
"no domain with id %d"
),
dom
->
id
);
goto
return_point
;
if
(
!
vm
->
persistent
)
{
virDomainRemoveInactive
(
&
driver
->
domains
,
vm
);
virDomainRemoveInactive
(
&
driver
->
domains
,
vm
);
vm
=
NULL
;
}
return_point:
if
(
vm
)
virDomainObjUnlock
(
vm
);
oneDriverUnlock
(
driver
);
return
ret
;
}
...
...
@@ -535,15 +535,15 @@ static int oneDomainDestroy(virDomainPtr dom)
vm
=
virDomainFindByID
(
&
driver
->
domains
,
dom
->
id
);
if
(
!
vm
)
{
oneError
(
dom
->
conn
,
dom
,
VIR_ERR_INVALID_DOMAIN
,
"no domain with id %d"
,
dom
->
id
);
_
(
"no domain with id %d"
)
,
dom
->
id
);
goto
return_point
;
}
if
(
c_oneCancel
(
vm
->
pid
))
{
/* VM not running, delete the instance at ONE DB */
if
(
c_oneFinalize
(
vm
->
pid
)){
oneError
(
dom
->
conn
,
dom
,
VIR_ERR_OPERATION_FAILED
,
"Wrong state to perform action"
);
goto
return_point
;
/* VM not running, delete the instance at ONE DB */
if
(
c_oneFinalize
(
vm
->
pid
)){
oneError
(
dom
->
conn
,
dom
,
VIR_ERR_OPERATION_FAILED
,
_
(
"Wrong state to perform action"
)
);
goto
return_point
;
}
}
if
(
!
vm
->
persistent
)
{
...
...
@@ -557,7 +557,7 @@ return_point:
virDomainObjUnlock
(
vm
);
oneDriverUnlock
(
driver
);
return
ret
;
}
...
...
@@ -566,32 +566,32 @@ static int oneDomainSuspend(virDomainPtr dom)
one_driver_t
*
driver
=
dom
->
conn
->
privateData
;
virDomainObjPtr
vm
;
int
ret
=-
1
;
oneDriverLock
(
driver
);
if
((
vm
=
virDomainFindByID
(
&
driver
->
domains
,
dom
->
id
))){
if
(
vm
->
state
==
VIR_DOMAIN_RUNNING
)
{
if
(
!
(
c_oneSuspend
(
vm
->
pid
))
)
{
vm
->
state
=
VIR_DOMAIN_PAUSED
;
ret
=
0
;
if
(
vm
->
state
==
VIR_DOMAIN_RUNNING
)
{
if
(
!
(
c_oneSuspend
(
vm
->
pid
))
)
{
vm
->
state
=
VIR_DOMAIN_PAUSED
;
ret
=
0
;
goto
return_point
;
}
oneError
(
dom
->
conn
,
dom
,
VIR_ERR_OPERATION_FAILED
,
_
(
"Wrong state to perform action"
));
goto
return_point
;
}
oneError
(
dom
->
conn
,
dom
,
VIR_ERR_OPERATION_FAILED
,
"Wrong state to perform action"
);
goto
return_point
;
}
oneError
(
dom
->
conn
,
dom
,
VIR_ERR_OPERATION_FAILED
,
"domain is not running"
);
oneError
(
dom
->
conn
,
dom
,
VIR_ERR_OPERATION_FAILED
,
_
(
"domain is not running"
));
}
else
{
oneError
(
dom
->
conn
,
dom
,
VIR_ERR_INVALID_DOMAIN
,
"no domain with matching id %d"
,
dom
->
id
);
_
(
"no domain with matching id %d"
)
,
dom
->
id
);
}
return_point:
if
(
vm
)
virDomainObjUnlock
(
vm
);
oneDriverUnlock
(
driver
);
return
ret
;
};
...
...
@@ -608,23 +608,23 @@ static int oneDomainResume(virDomainPtr dom)
vm
->
state
=
VIR_DOMAIN_RUNNING
;
ret
=
0
;
goto
return_point
;
}
}
oneError
(
dom
->
conn
,
dom
,
VIR_ERR_OPERATION_FAILED
,
"Wrong state to perform action"
);
_
(
"Wrong state to perform action"
)
);
goto
return_point
;
}
}
oneError
(
dom
->
conn
,
dom
,
VIR_ERR_OPERATION_FAILED
,
"domain is not paused "
);
_
(
"domain is not paused "
)
);
}
else
{
oneError
(
dom
->
conn
,
dom
,
VIR_ERR_INVALID_DOMAIN
,
"no domain with matching id %d"
,
dom
->
id
);
}
_
(
"no domain with matching id %d"
)
,
dom
->
id
);
}
return_point:
if
(
vm
)
virDomainObjUnlock
(
vm
);
oneDriverUnlock
(
driver
);
return
ret
;
};
...
...
@@ -638,7 +638,7 @@ static int oneStartup(void){
VIR_FREE
(
one_driver
);
return
-
1
;
}
c_oneStart
();
oneDriverLock
(
one_driver
);
one_driver
->
nextid
=
1
;
...
...
@@ -647,8 +647,8 @@ static int oneStartup(void){
VIR_FREE
(
one_driver
);
return
-
1
;
}
oneDriverUnlock
(
one_driver
);
oneDriverUnlock
(
one_driver
);
return
0
;
}
...
...
@@ -670,7 +670,7 @@ static int oneShutdown(void){
static
int
oneActive
(
void
){
unsigned
int
i
;
int
active
=
0
;
int
active
=
0
;
if
(
one_driver
==
NULL
)
return
(
0
);
...
...
@@ -679,9 +679,9 @@ static int oneActive(void){
for
(
i
=
0
;
i
<
one_driver
->
domains
.
count
;
i
++
)
{
virDomainObjLock
(
one_driver
->
domains
.
objs
[
i
]);
if
(
virDomainIsActive
(
one_driver
->
domains
.
objs
[
i
]))
active
=
1
;
active
=
1
;
virDomainObjUnlock
(
one_driver
->
domains
.
objs
[
i
]);
}
}
oneDriverUnlock
(
one_driver
);
return
active
;
...
...
@@ -697,12 +697,12 @@ static int oneVersion(virConnectPtr conn ATTRIBUTE_UNUSED, unsigned long *hvVer)
static
int
oneGetAutostart
(
virDomainPtr
domain
ATTRIBUTE_UNUSED
,
int
*
autostart
)
{
autostart
=
0
;
autostart
=
0
;
return
0
;
}
static
char
*
oneGetCapabilities
(
virConnectPtr
conn
){
one_driver_t
*
privconn
=
conn
->
privateData
;
one_driver_t
*
privconn
=
conn
->
privateData
;
char
*
xml
;
oneDriverLock
(
privconn
);
if
((
xml
=
virCapabilitiesFormatXML
(
privconn
->
caps
))
==
NULL
)
...
...
@@ -778,7 +778,7 @@ static virDriver oneDriver = {
NULL
,
/* nodeDeviceReAttach; */
NULL
,
/* nodeDeviceReset; */
};
static
virStateDriver
oneStateDriver
=
{
.
initialize
=
oneStartup
,
.
cleanup
=
oneShutdown
,
...
...
src/opennebula/one_driver.h
浏览文件 @
ee8553e1
/*---------------------------------------------------------------------------*/
/* Copyright 2002-2009, Distributed Systems Architecture Group, Universidad
* Complutense de Madrid (dsa-research.org)
*
/* Copyright 2002-2009, Distributed Systems Architecture Group, Universidad
* Complutense de Madrid (dsa-research.org)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
...
...
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
*/
/*---------------------------------------------------------------------------*/
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录