示例#1
0
    def get_vim_resource_id(self, vim_obj, resource_type, resource_name):
        """Locates openstack resource by type/name and returns ID

        :param vim_obj: VIM info used to access openstack instance
        :param resource_type: type of resource to find
        :param resource_name: name of resource to locate
        :return: ID of resource
        """
        if resource_type in _VALID_RESOURCE_TYPES.keys():
            res_cmd_map = _VALID_RESOURCE_TYPES[resource_type]
            client_type = res_cmd_map['client']
            cmd = res_cmd_map['cmd']
            filter_attr = res_cmd_map.get('filter_attr')
            vim_res_name = res_cmd_map['vim_res_name']
        else:
            raise nfvo.VimUnsupportedResourceTypeException(type=resource_type)

        client = self._get_client(vim_obj, client_type)
        cmd_args = {}
        if filter_attr:
            cmd_args[filter_attr] = resource_name

        try:
            resources = getattr(client, "%s" % cmd)(**cmd_args)[vim_res_name]
            LOG.debug('resources output %s', resources)
        except Exception:
            raise nfvo.VimGetResourceException(cmd=cmd,
                                               name=resource_name,
                                               type=resource_type)

        if len(resources) > 1:
            raise nfvo.VimGetResourceNameNotUnique(cmd=cmd, name=resource_name)
        elif len(resources) < 1:
            raise nfvo.VimGetResourceNotFoundException(cmd=cmd,
                                                       name=resource_name)

        return resources[0]['id']
示例#2
0
    def get_vim_resource_id(self, vim_obj, resource_type, resource_name):
        """Locates openstack resource by type/name and returns ID

        :param vim_obj: VIM info used to access openstack instance
        :param resource_type: type of resource to find
        :param resource_name: name of resource to locate
        :return: ID of resource
        """
        if resource_type in _VALID_RESOURCE_TYPES.keys():
            client_type = _VALID_RESOURCE_TYPES[resource_type]['client']
            cmd_prefix = _VALID_RESOURCE_TYPES[resource_type]['cmd']
        else:
            raise nfvo.VimUnsupportedResourceTypeException(type=resource_type)

        client = self._get_client(vim_obj, client_type)
        cmd = str(cmd_prefix) + str(resource_name)
        try:
            resources = getattr(client, "%s" % cmd)()
            LOG.debug(_('resources output %s'), resources)
            for resource in resources[resource_type]:
                if resource['name'] == resource_name:
                    return resource['id']
        except Exception:
            raise nfvo.VimGetResourceException(cmd=cmd, type=resource_type)