Skip to content

Commit

Permalink
add methods and tests
Browse files Browse the repository at this point in the history
  • Loading branch information
srault95 committed Apr 26, 2020
1 parent ef67b0c commit 5aaf08a
Show file tree
Hide file tree
Showing 3 changed files with 208 additions and 19 deletions.
77 changes: 61 additions & 16 deletions mce_lib_vsphere/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,12 @@ def __init__(

@typic.al
def parse_url(self, url: str):
"""Parse settings with URL"""
"""Parse settings with URL
Args:
url: Full url for connect to Vcenter
"""

url = furl(url)

Expand Down Expand Up @@ -301,6 +306,7 @@ def get_vm_by_name(
"""
Get a VM by its name
"""
# TODO: il peut y en avoir plusieurs ?
search = re.compile("^%s$" % name, re.IGNORECASE)
vm = self.get_object_by_name(vim.VirtualMachine, search, regex=regex)
if not vm and raise_error:
Expand Down Expand Up @@ -353,6 +359,9 @@ def get_all_clusters(self) -> List[vim.ClusterComputeResource]:

@typic.al
def get_all_datacenters(self) -> List[vim.Datacenter]:
"""
Get all datacenter on a vCenter
"""
return self.get_all(self.content.rootFolder, vim.Datacenter)

@typic.al
Expand All @@ -369,20 +378,6 @@ def get_all_vms(self) -> List[vim.VirtualMachine]:
"""
return self.get_all(self.content.rootFolder, vim.VirtualMachine)

@typic.al
def get_hosts_in_datacenter(self, datacenter) -> List[vim.HostSystem]:
"""
Get all hosts belonging to a given datacenter
"""
return self.get_all(datacenter, vim.HostSystem)

@typic.al
def get_vms_in_datacenter(self, datacenter) -> List[vim.VirtualMachine]:
"""
Get all vms belonging to a given datacenter
"""
return self.get_all(datacenter, vim.VirtualMachine)

@typic.al
def get_all_dvswitches(self) -> List[vim.DistributedVirtualSwitch]:
"""
Expand All @@ -399,6 +394,55 @@ def get_all_dport_groups(self) -> List[vim.dvs.DistributedVirtualPortgroup]:
self.content.rootFolder, vim.dvs.DistributedVirtualPortgroup
)

@typic.al
def get_all_virtualapps(self) -> List[vim.VirtualApp]:
"""
Get all VirtualApp
"""
return self.get_all(self.content.rootFolder, vim.VirtualApp)

@typic.al
def get_all_networks(self) -> List[vim.Network]:
"""
Get all Network
"""
return self.get_all(self.content.rootFolder, vim.Network)

@typic.al
def get_all_opaque_networks(self) -> List[vim.OpaqueNetwork]:
"""
Get all OpaqueNetwork
"""
return self.get_all(self.content.rootFolder, vim.OpaqueNetwork)

@typic.al
def get_all_compute_resources(self) -> List[vim.ComputeResource]:
"""
Get all ComputeResource
"""
return self.get_all(self.content.rootFolder, vim.ComputeResource)

@typic.al
def get_all_storage_pods(self) -> List[vim.StoragePod]:
"""
Get all StoragePod
"""
return self.get_all(self.content.rootFolder, vim.StoragePod)

@typic.al
def get_hosts_in_datacenter(self, datacenter) -> List[vim.HostSystem]:
"""
Get all hosts belonging to a given datacenter
"""
return self.get_all(datacenter, vim.HostSystem)

@typic.al
def get_vms_in_datacenter(self, datacenter) -> List[vim.VirtualMachine]:
"""
Get all vms belonging to a given datacenter
"""
return self.get_all(datacenter, vim.VirtualMachine)

@typic.al
def is_valid_run_tools(self, vm: vim.VirtualMachine) -> bool:
if not self.is_power_on(vm):
Expand Down Expand Up @@ -477,8 +521,9 @@ def get_pool_infos(self, pool) -> Mapping:
}

def get_datastore_infos(self, datastore) -> Mapping:
"""Get minimal informations of Datastore
"""Get minimal informations of Datastore"""

"""
Example return:
{
'id': 'xxx',
Expand Down
8 changes: 5 additions & 3 deletions tests/mock_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,12 @@ def vcsim_settings():
datacenters=2,
clusters=2, # datacenters * 2
datastores=4,
storage=2,
storages=2,
pools=1,
hosts=3, # 14 ???
vms=10 # 60
vms=10, # 60
vapps=2,
opaque_networks=1
)
# 10 resource pool

Expand All @@ -50,7 +52,7 @@ def start_service(service_name, host, port, vcsim_settings):
vcsim_settings["host"] = host
vcsim_settings["port"] = port

args = "%(vcsim_path)s -api-version %(api_version)s -dc %(datacenters)s -cluster %(clusters)s -pool %(pools)s -host %(hosts)s -ds %(datastores)s -pod %(storage)s -vm %(vms)s -l %(host)s:%(port)s -username %(username)s -password %(password)s -trace" % vcsim_settings
args = "%(vcsim_path)s -api-version %(api_version)s -dc %(datacenters)s -cluster %(clusters)s -pool %(pools)s -host %(hosts)s -ds %(datastores)s -pod %(storages)s -vm %(vms)s -app %(vapps)s -nsx %(opaque_networks)s -l %(host)s:%(port)s -username %(username)s -password %(password)s -trace" % vcsim_settings
# vcsim -api-version 6.5 -dc 2 -cluster 2 -pool 1 -host 3 -ds 4 -pod 2 -vm 10 -l 127.0.0.1:1024 -username user1 -password pass -trace

process = sp.Popen(args.split(), stdin=sp.PIPE, stdout=sp.PIPE, stderr=sp.DEVNULL)
Expand Down
142 changes: 142 additions & 0 deletions tests/test_core.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

from freezegun import freeze_time
import pytest
from pyVmomi import vim

from mce_lib_vsphere import core

Expand Down Expand Up @@ -116,7 +117,14 @@ def test_get_all_folders(vsphere_server, vcsim_settings):
with core.Client(host=url) as client:
client.connect()
objects = client.get_all_folders()

assert len(objects) > 0

assert isinstance(objects[0], vim.Folder) is True

resource_id = client.resource_id(objects[0])
assert resource_id == 'group-d1/datacenter-2/folder-3'

data = client.dump_to_dict(objects[0])

def test_get_all_hosts(vsphere_server, vcsim_settings):
Expand All @@ -127,6 +135,15 @@ def test_get_all_hosts(vsphere_server, vcsim_settings):
objects = client.get_all_hosts()

assert len(objects) > 0

assert isinstance(objects[0], vim.HostSystem) is True

#for host in objects:
# print(client.resource_id(host))

resource_id = client.resource_id(objects[0])
#FIXME: assert resource_id == 'group-d1/datacenter-2/folder-4/clustercomputeresource-30/host-37'

data = client.dump_to_dict(objects[0])

def test_get_all_pools(vsphere_server, vcsim_settings):
Expand All @@ -137,8 +154,15 @@ def test_get_all_pools(vsphere_server, vcsim_settings):
objects = client.get_all_pools()

assert len(objects) > 0

assert isinstance(objects[0], vim.ResourcePool) is True

resource_id = client.resource_id(objects[0])
assert resource_id == 'group-d1/datacenter-2/folder-4/computeresource-26/resgroup-25'

data = client.dump_to_dict(objects[0])


def test_get_all_clusters(vsphere_server, vcsim_settings):
url = vsphere_server

Expand All @@ -147,6 +171,12 @@ def test_get_all_clusters(vsphere_server, vcsim_settings):
objects = client.get_all_clusters()

assert len(objects) > 0

assert isinstance(objects[0], vim.ClusterComputeResource) is True

resource_id = client.resource_id(objects[0])
assert resource_id == 'group-d1/datacenter-2/folder-4/clustercomputeresource-30'

data = client.dump_to_dict(objects[0])

def test_get_all_datacenters(vsphere_server, vcsim_settings):
Expand All @@ -157,6 +187,12 @@ def test_get_all_datacenters(vsphere_server, vcsim_settings):
objects = client.get_all_datacenters()

assert len(objects) > 0

assert isinstance(objects[0], vim.Datacenter) is True

resource_id = client.resource_id(objects[0])
assert resource_id == 'group-d1/datacenter-2'

data = client.dump_to_dict(objects[0])

def test_get_all_datastores(vsphere_server, vcsim_settings):
Expand All @@ -167,6 +203,13 @@ def test_get_all_datastores(vsphere_server, vcsim_settings):
objects = client.get_all_datastores()

assert len(objects) > 0

assert isinstance(objects[0], vim.Datastore) is True

resource_id = client.resource_id(objects[0])
# FIXME:
#assert resource_id == 'group-d1/datacenter-2/folder-5//tmp/govcsim-dc0-localds_0-150284432@folder-5'

data = client.dump_to_dict(objects[0])

def test_get_all_vms(vsphere_server, vcsim_settings):
Expand All @@ -177,6 +220,12 @@ def test_get_all_vms(vsphere_server, vcsim_settings):
objects = client.get_all_vms()

assert len(objects) > 0

assert isinstance(objects[0], vim.VirtualMachine) is True

resource_id = client.resource_id(objects[0])
assert resource_id == 'group-d1/datacenter-2/folder-3/vm-231'

data = client.dump_to_dict(objects[0])

def test_get_all_dvswitches(vsphere_server, vcsim_settings):
Expand All @@ -187,6 +236,12 @@ def test_get_all_dvswitches(vsphere_server, vcsim_settings):
objects = client.get_all_dvswitches()

assert len(objects) > 0

assert isinstance(objects[0], vim.DistributedVirtualSwitch) is True

resource_id = client.resource_id(objects[0])
assert resource_id == 'group-d1/datacenter-2/folder-6/dvs-11'

data = client.dump_to_dict(objects[0])

def test_get_all_dport_groups(vsphere_server, vcsim_settings):
Expand All @@ -197,6 +252,92 @@ def test_get_all_dport_groups(vsphere_server, vcsim_settings):
objects = client.get_all_dport_groups()

assert len(objects) > 0

assert isinstance(objects[0], vim.dvs.DistributedVirtualPortgroup) is True

resource_id = client.resource_id(objects[0])
assert resource_id == 'group-d1/datacenter-2/folder-6/dvportgroup-13'

data = client.dump_to_dict(objects[0])

def test_get_all_virtualapps(vsphere_server, vcsim_settings):
url = vsphere_server

with core.Client(host=url) as client:
client.connect()
objects = client.get_all_virtualapps()

assert len(objects) > 0

assert isinstance(objects[0], vim.VirtualApp) is True

resource_id = client.resource_id(objects[0])
assert resource_id == 'group-d1/datacenter-2/folder-4/clustercomputeresource-30/resgroup-29/virtualapp-56'

# FIXME: data = client.dump_to_dict(objects[0])

def test_get_all_networks(vsphere_server, vcsim_settings):
url = vsphere_server

with core.Client(host=url) as client:
client.connect()
objects = client.get_all_networks()

assert len(objects) > 0

assert isinstance(objects[0], vim.Network) is True

resource_id = client.resource_id(objects[0])
assert resource_id == 'group-d1/datacenter-2/folder-6/network-7'

data = client.dump_to_dict(objects[0])

def test_get_all_opaque_networks(vsphere_server, vcsim_settings):
url = vsphere_server

with core.Client(host=url) as client:
client.connect()
objects = client.get_all_opaque_networks()

assert len(objects) > 0

assert isinstance(objects[0], vim.OpaqueNetwork) is True

resource_id = client.resource_id(objects[0])
assert resource_id == 'group-d1/datacenter-2/folder-6/opaquenetwork-16'

data = client.dump_to_dict(objects[0])

def test_get_all_compute_resources(vsphere_server, vcsim_settings):
url = vsphere_server

with core.Client(host=url) as client:
client.connect()
objects = client.get_all_compute_resources()

assert len(objects) > 0

assert isinstance(objects[0], vim.ComputeResource) is True

resource_id = client.resource_id(objects[0])
assert resource_id == 'group-d1/datacenter-2/folder-4/computeresource-26'

data = client.dump_to_dict(objects[0])

def test_get_all_storage_pods(vsphere_server, vcsim_settings):
url = vsphere_server

with core.Client(host=url) as client:
client.connect()
objects = client.get_all_storage_pods()

assert len(objects) > 0

assert isinstance(objects[0], vim.StoragePod) is True

resource_id = client.resource_id(objects[0])
assert resource_id == 'group-d1/datacenter-2/folder-5/storagepod-8'

data = client.dump_to_dict(objects[0])

@pytest.mark.skip("FIXME data values")
Expand Down Expand Up @@ -469,3 +610,4 @@ def test_resource_id(vsphere_server):
dc = client.get_all_datacenters()[0]
resource_id = client.resource_id(dc)
assert resource_id == 'group-d1/datacenter-2'

0 comments on commit 5aaf08a

Please sign in to comment.