[libvirt] [PATCH] openvz: swap <source bridge=...> with <target dev=...>
Anton Protopopov
aspsk2 at gmail.com
Wed Oct 8 09:02:44 UTC 2008
>
> I do not undesrtand how it will simplify parsing: the iterator
>> in parsing is an interface name, not bridge name. I attached a patch, so
>> you will see how I do think about it :) (this patch includes all
>> discussed changes)
>>
> My point of view is to use small count common methods to manipulate config
> parameters. That is don't use array of differend methods for different types
> of data. In current case we can transform format to be used common
> functions.
>
> For example:
> if we will use format
> #BRIDGE-ifname=<>
> we can drop openvzGetDefinedBridge and use one existing method
> openvzReadConfigParam(veid, "#BRIDGE-ifname", value, sizeof(value));
>
> openvzSetDefinedBridge can be simplified if create
> openvzAppendParamToConfig
>
> openvzSetDefinedBridge() {
> openvzReadConfigParam()
> if not found
> openvzAppendParamToConfig()
> return
> }
I done the following:
- Add function openvzAppendConfigParam(veid, param, value)
This function simply appends a string `param="value"` to config file.
- Rewrite functions openvz{Get,Set}DefinedBridge to use that function
I think, we need to rewrite {Get,Set}UUID functions in the same manner.
+ case VIR_DOMAIN_NET_TYPE_BRIDGE:
> + veth = net->ifname;
> + bridge = net->data.bridge.brname;
> + if (rc = brAddInterface(brctl, bridge, veth)) {
> + openvzError(conn, VIR_ERR_INTERNAL_ERROR,
> + _("failed to add %s device to %s: %s"),
> + veth, bridge, strerror(rc));
> + goto exit;
> + }
> + break;
> It will be good to check veth & bridge for NULL. Potentially it may happens
> when config is broken.
Done. If veth or bridge is NULL, then openvzError is raised
and one iteration of loop is passed.
@@ -602,6 +713,12 @@ openvzDomainCreate(virDomainPtr dom)
> return -1;
> }
>
> + if (openvzSetBridges(dom->conn, vm->def->name, vm->def->nets) < 0) {
> + openvzError(dom->conn, VIR_ERR_INTERNAL_ERROR,
> + _("Could not configure bridges"));
> + return -1;
> + }
> +
> Also, we need to set bridges in openvzDomainReboot method.
Done.
+ if (net->type == VIR_DOMAIN_NET_TYPE_BRIDGE) {
> + static int vnetNo = 0;
>
> Libvirt may be use as library in applications. If some will call create 2
> containers, then first container will have eth0...ethN
> second will have ethN+1...
>
Write function openvzGenerateContainerVethName.
When called, it will search for interface names in $veid.conf.
If there are ethN,...,ethM, it will return name "ethL",
where L = 1+max(N,...,M)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20081008/77afdb84/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: libvirt_openvz_ifaces_names_and_macs.patch
Type: application/octet-stream
Size: 13181 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20081008/77afdb84/attachment-0001.obj>
More information about the libvir-list
mailing list