[Engine-devel] FW: Querying for and registering unknown disk images on a storage domain
by Morrissey, Christopher
--_000_D290AD8432118048947689BA3AE8A9B3094E3FDCSACEXCMBX04PRDh_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
Hi All,
I've been working on a bit of functionality for the engine that will allow =
a user to query a domain for new disk images (GetUnregisteredImagesQuery) f=
or which the engine was previously unaware and a separate command to regist=
er those images (ImportImageCommand). These commands will be exposed throug=
h the REST API.
This functionality is needed as we are developing an extension/plugin to oV=
irt that will allow a NetApp storage controller to handle cloning the actua=
l disks outside of oVirt and need to import them once they are cloned. We'l=
l be using other existing APIs to attach the disk to the necessary VM once =
the disk is cloned. On the NetApp side, we'll ensure the disk is coalesced =
before cloning so as to avoid the issues of registering snapshots.
GetUnregisteredImagesQuery will be accessible through the disks resource co=
llection on a storage domain. A "disks" resource collection does not yet ex=
ist and will need to be added. To access the unregistered images, a paramet=
er (maybe "unregistered=3Dtrue") would be passed. So the path to "GET" the =
unregistered disk images on a domain would be something like /api/storagedo=
mains/f0dbcb33-69d3-4899-9352-8e8a02f01bbd/disks?unregistered=3Dtrue. This =
will return a list of disk images that can be each used as input to the Imp=
ortImageCommand to get them added to oVirt.
ImportImageCommand will be accessible through "POST"ing a disk to /api/disk=
s?import=3Dtrue. The disk will be added to the oVirt DB based on the inform=
ation supplied and afterward would be available to attach to a VM.
When querying for unregistered disk images, the GetUnregisteredImagesQuery =
command will use the getImagesList() VDSM command. Currently this only repo=
rts the GUIDs of all disk images in a domain. I had been using the getVolum=
esList() and getVolumeInfo() VDSM commands to fill in the information so th=
at valid disk image objects could be registered in oVirt. It seems these tw=
o functions are set to be removed since they are too invasive into the inte=
rnal VDSM workings. The VDSM team will need to either return more informati=
on about each disk as part of the getImagesList() function or add a new fun=
ction getImageInfo() that will give the same information for a given image =
GUID.
Note that much of this work had originally been submitted under patch http:=
//gerrit.ovirt.org/#/c/9603/. After several reviews it was found to be lack=
ing in its design and was using deprecated APIs that did not yet have repla=
cements. I'm reworking the code now to conform to this design and asking fo=
r further input from the VDSM, core, and restapi teams to ensure we can get=
this done quickly and correctly as it is needed for the 3.2 release.
-Chris
Chris Morrissey
Software Engineer
NetApp Inc.
919.476.4428
--_000_D290AD8432118048947689BA3AE8A9B3094E3FDCSACEXCMBX04PRDh_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"Generator" content=3D"Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
span.EmailStyle17
{mso-style-type:personal;
font-family:"Calibri","sans-serif";
color:windowtext;}
span.EmailStyle18
{mso-style-type:personal;
font-family:"Calibri","sans-serif";
color:#1F497D;}
span.EmailStyle19
{mso-style-type:personal-reply;
font-family:"Calibri","sans-serif";
color:#1F497D;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=3D"EN-US" link=3D"blue" vlink=3D"purple">
<div class=3D"WordSection1">
<p class=3D"MsoNormal">Hi All,<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p> </o:p></p>
<p class=3D"MsoNormal">I’ve been working on a bit of functionality fo=
r the engine that will allow a user to query a domain for new disk images (=
GetUnregisteredImagesQuery) for which the engine was previously unaware and=
a separate command to register those images
(ImportImageCommand). These commands will be exposed through the REST API.=
<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p> </o:p></p>
<p class=3D"MsoNormal">This functionality is needed as we are developing an=
extension/plugin to oVirt that will allow a NetApp storage controller to h=
andle cloning the actual disks outside of oVirt and need to import them onc=
e they are cloned. We’ll be using
other existing APIs to attach the disk to the necessary VM once the disk i=
s cloned. On the NetApp side, we’ll ensure the disk is coalesced befo=
re cloning so as to avoid the issues of registering snapshots.<o:p></o:p></=
p>
<p class=3D"MsoNormal"><o:p> </o:p></p>
<p class=3D"MsoNormal">GetUnregisteredImagesQuery will be accessible throug=
h the disks resource collection on a storage domain. A “disks” =
resource collection does not yet exist and will need to be added. To access=
the unregistered images, a parameter (maybe “unregistered=3DtrueR=
21;)
would be passed. So the path to “GET” the unregistered disk im=
ages on a domain would be something like /api/storagedomains/f0dbcb33-69d3-=
4899-9352-8e8a02f01bbd/disks?unregistered=3Dtrue. This will return a list o=
f disk images that can be each used as input to
the ImportImageCommand to get them added to oVirt.<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p> </o:p></p>
<p class=3D"MsoNormal">ImportImageCommand will be accessible through “=
;POST”ing a disk to /api/disks?import=3Dtrue. The disk will be added =
to the oVirt DB based on the information supplied and afterward would be av=
ailable to attach to a VM.<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p> </o:p></p>
<p class=3D"MsoNormal">When querying for unregistered disk images, the GetU=
nregisteredImagesQuery command will use the getImagesList() VDSM command. C=
urrently this only reports the GUIDs of all disk images in a domain. I had =
been using the getVolumesList() and
getVolumeInfo() VDSM commands to fill in the information so that valid dis=
k image objects could be registered in oVirt. It seems these two functions =
are set to be removed since they are too invasive into the internal VDSM wo=
rkings. The VDSM team will need
to either return more information about each disk as part of the getImages=
List() function or add a new function getImageInfo() that will give the sam=
e information for a given image GUID.<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p> </o:p></p>
<p class=3D"MsoNormal">Note that much of this work had originally been subm=
itted under patch
<a href=3D"http://gerrit.ovirt.org/#/c/9603/">http://gerrit.ovirt.org/#/c/9=
603/</a>. After several reviews it was found to be lacking in its design an=
d was using deprecated APIs that did not yet have replacements. I’m r=
eworking the code now to conform to this
design and asking for further input from the VDSM, core, and restapi teams=
to ensure we can get this done quickly and correctly as it is needed for t=
he 3.2 release.<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p> </o:p></p>
<p class=3D"MsoNormal">-Chris<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p> </o:p></p>
<p class=3D"MsoNormal"><b>Chris Morrissey<o:p></o:p></b></p>
<p class=3D"MsoNormal">Software Engineer<o:p></o:p></p>
<p class=3D"MsoNormal">NetApp Inc.<o:p></o:p></p>
<p class=3D"MsoNormal">919.476.4428<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>
--_000_D290AD8432118048947689BA3AE8A9B3094E3FDCSACEXCMBX04PRDh_--