Example #1
0
def get_inner_objects(vim,
                      base_obj,
                      path,
                      inner_type,
                      properties_to_collect=None,
                      all=False):
    """Gets the list of inner objects of the type specified."""
    client_factory = vim.client.factory
    base_type = base_obj._type
    traversal_spec = vutil.build_traversal_spec(client_factory, 'inner',
                                                base_type, path, False, [])
    object_spec = vutil.build_object_spec(client_factory, base_obj,
                                          [traversal_spec])
    property_spec = vutil.build_property_spec(
        client_factory,
        type_=inner_type,
        properties_to_collect=properties_to_collect,
        all_properties=all)
    property_filter_spec = vutil.build_property_filter_spec(
        client_factory, [property_spec], [object_spec])
    options = client_factory.create('ns0:RetrieveOptions')
    options.maxObjects = CONF.vmware.maximum_objects
    return vim.RetrievePropertiesEx(vim.service_content.propertyCollector,
                                    specSet=[property_filter_spec],
                                    options=options)
Example #2
0
 def test_build_traversal_spec(self):
     client_factory = mock.Mock()
     sel_spec = mock.Mock()
     traversal_spec = vim_util.build_traversal_spec(
         client_factory, "dc_to_hf", "Datacenter", "hostFolder", False, [sel_spec]
     )
     self.assertEqual("dc_to_hf", traversal_spec.name)
     self.assertEqual("hostFolder", traversal_spec.path)
     self.assertEqual([sel_spec], traversal_spec.selectSet)
     self.assertFalse(traversal_spec.skip)
     self.assertEqual("Datacenter", traversal_spec.type)
Example #3
0
 def test_build_traversal_spec(self):
     client_factory = mock.Mock()
     sel_spec = mock.Mock()
     traversal_spec = vim_util.build_traversal_spec(client_factory,
                                                    'dc_to_hf',
                                                    'Datacenter',
                                                    'hostFolder', False,
                                                    [sel_spec])
     self.assertEqual("dc_to_hf", traversal_spec.name)
     self.assertEqual("hostFolder", traversal_spec.path)
     self.assertEqual([sel_spec], traversal_spec.selectSet)
     self.assertFalse(traversal_spec.skip)
     self.assertEqual("Datacenter", traversal_spec.type)
Example #4
0
def get_inner_objects(vim, base_obj, path, inner_type,
                      properties_to_collect=None, all=False):
    """Gets the list of inner objects of the type specified."""
    client_factory = vim.client.factory
    base_type = base_obj._type
    traversal_spec = vutil.build_traversal_spec(client_factory, 'inner',
                                                base_type, path, False, [])
    object_spec = vutil.build_object_spec(client_factory,
                                          base_obj,
                                          [traversal_spec])
    property_spec = vutil.build_property_spec(client_factory, type_=inner_type,
                                properties_to_collect=properties_to_collect,
                                all_properties=all)
    property_filter_spec = vutil.build_property_filter_spec(client_factory,
                                [property_spec], [object_spec])
    options = client_factory.create('ns0:RetrieveOptions')
    options.maxObjects = CONF.vmware.maximum_objects
    return vim.RetrievePropertiesEx(
            vim.service_content.propertyCollector,
            specSet=[property_filter_spec], options=options)
Example #5
0
def build_recursive_traversal_spec_root(client_factory):
    """
    Builds the Recursive Traversal Spec to traverse the object managed
    object hierarchy.
    """
    visit_folders_select_spec = vim_util.build_selection_spec(client_factory,
                                                     "visitFolders")
    # For getting to hostFolder from datacenter
    dc_to_hf = vim_util.build_traversal_spec(client_factory, "dc_to_hf",
                                    "Datacenter", "hostFolder", False,
                                    [visit_folders_select_spec])
    # For getting to vmFolder from datacenter
    dc_to_vmf = vim_util.build_traversal_spec(client_factory, "dc_to_vmf",
                                     "Datacenter", "vmFolder", False,
                                     [visit_folders_select_spec])
    # For getting Host System to virtual machine
    h_to_vm = vim_util.build_traversal_spec(client_factory, "h_to_vm",
                                   "HostSystem", "vm", False,
                                   [visit_folders_select_spec])

    # For getting to networkfolder from datacenter
    dc_to_nwf = vim_util.build_traversal_spec(client_factory, "dc_to_nwf",
                                     "Datacenter", "networkFolder", False,
                                     [visit_folders_select_spec])

    # For getting to Host System from Compute Resource
    cr_to_h = vim_util.build_traversal_spec(client_factory, "cr_to_h",
                                   "ComputeResource", "host", False, [])

    # For getting to datastore from Compute Resource
    cr_to_ds = vim_util.build_traversal_spec(client_factory, "cr_to_ds",
                                    "ComputeResource", "datastore",
                                    False, [])

    rp_to_rp_select_spec = vim_util.build_selection_spec(client_factory,
                                                         "rp_to_rp")
    rp_to_vm_select_spec = vim_util.build_selection_spec(client_factory,
                                                         "rp_to_vm")
    # For getting to resource pool from Compute Resource
    cr_to_rp = vim_util.build_traversal_spec(client_factory, "cr_to_rp",
                                    "ComputeResource", "resourcePool",
                                    False, [rp_to_rp_select_spec,
                                            rp_to_vm_select_spec])

    # For getting to child res pool from the parent res pool
    rp_to_rp = vim_util.build_traversal_spec(client_factory, "rp_to_rp",
                                    "ResourcePool", "resourcePool",
                                    False, [rp_to_rp_select_spec,
                                            rp_to_vm_select_spec])

    # For getting to Virtual Machine from the Resource Pool
    rp_to_vm = vim_util.build_traversal_spec(client_factory, "rp_to_vm",
                                    "ResourcePool", "vm",
                                    False, [rp_to_rp_select_spec,
                                            rp_to_vm_select_spec])

    # Get the assorted traversal spec which takes care of the objects to
    # be searched for from the root folder
    traversal_spec = vim_util.build_traversal_spec(client_factory,
                                          "visitFolders",
                                          "Folder", "childEntity", False,
                                          [visit_folders_select_spec,
                                           dc_to_hf, dc_to_vmf, dc_to_nwf,
                                           cr_to_ds, cr_to_h, cr_to_rp,
                                           rp_to_rp, h_to_vm, rp_to_vm])
    return traversal_spec