In the previous post we discussed snapshots and clones. On the vcenter, they are available as files. In fact each virtual machine has its own folder in the datastore. If you wanted to enumerate these files, here's how we would do it :
args = get_args()
search = vim.HostDatastoreBrowserSearchSpec()
search.matchPattern = "NameSubstring" # relevant files in vm folder usually include the vm name
search_ds = dsbrowser.SearchDatastoreSubFolders_Task(dsname, search)
while search_ds.info.state != "success":
pass
# results = search_ds.info.result
# print results
for rs in search_ds.info.result:
dsfolder = rs.folderPath
for f in rs.file:
try:
dsfile = f.path
vmfold = dsfolder.split("]")
vmfold = vmfold[1]
vmfold = vmfold[1:]
vmxurl = "https://%s/folder/%s%s?dcPath=%s&dsName=%s" % \
(args.host, vmfold, dsfile, datacenter, fulldsname)
VMX_PATH.append(vmxurl)
except Exception, e:
print "Caught exception : " + str(e)
return -1
generate the sequence
5, 25, 5+25,125, 125 + 5, 125 + 5 + 25 ...
int GetKMagic(int k)
{
int count = 1;
int power = 1;
var ret = new List<int>(){5};
power++;
for (int i =1; i < k; i ++)
{
var pow = Math.pow(5, power);
if (count + 1 == power)
{
ret,Add(pow);
power++;
count = 0;
}else{
for (int j = 0; j < count; j++){
var sum = ret.getRange(0,j).Sum()
if (sum + pow < Math.pow(5, power+1) && ret.contains(sum+pow) == false)){
ret.add(sum+pow);
break;
}
}
count++;
}
}
return ret.Last();
}
Alternatively, magic numbers like above are sum of zero or one times coefficient of power of 5
int GetMagicN(int n)
{
int power = 1;
int result = 0;
while (n)
{
power = power * 5;
if ( n & 1)
result += power;
n >> = 1;
}
return result;
}
args = get_args()
search = vim.HostDatastoreBrowserSearchSpec()
search.matchPattern = "NameSubstring" # relevant files in vm folder usually include the vm name
search_ds = dsbrowser.SearchDatastoreSubFolders_Task(dsname, search)
while search_ds.info.state != "success":
pass
# results = search_ds.info.result
# print results
for rs in search_ds.info.result:
dsfolder = rs.folderPath
for f in rs.file:
try:
dsfile = f.path
vmfold = dsfolder.split("]")
vmfold = vmfold[1]
vmfold = vmfold[1:]
vmxurl = "https://%s/folder/%s%s?dcPath=%s&dsName=%s" % \
(args.host, vmfold, dsfile, datacenter, fulldsname)
VMX_PATH.append(vmxurl)
except Exception, e:
print "Caught exception : " + str(e)
return -1
generate the sequence
5, 25, 5+25,125, 125 + 5, 125 + 5 + 25 ...
int GetKMagic(int k)
{
int count = 1;
int power = 1;
var ret = new List<int>(){5};
power++;
for (int i =1; i < k; i ++)
{
var pow = Math.pow(5, power);
if (count + 1 == power)
{
ret,Add(pow);
power++;
count = 0;
}else{
for (int j = 0; j < count; j++){
var sum = ret.getRange(0,j).Sum()
if (sum + pow < Math.pow(5, power+1) && ret.contains(sum+pow) == false)){
ret.add(sum+pow);
break;
}
}
count++;
}
}
return ret.Last();
}
Alternatively, magic numbers like above are sum of zero or one times coefficient of power of 5
int GetMagicN(int n)
{
int power = 1;
int result = 0;
while (n)
{
power = power * 5;
if ( n & 1)
result += power;
n >> = 1;
}
return result;
}
No comments:
Post a Comment