Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Not fetching correct data from VRA #172

Open
SandyKapil opened this issue Jan 22, 2018 · 12 comments
Open

Not fetching correct data from VRA #172

SandyKapil opened this issue Jan 22, 2018 · 12 comments
Assignees

Comments

@SandyKapil
Copy link

Hi There - Through PowerVRA I am trying to build a report which will be sent out as an email to the stakeholders to show them if the storage if reaching a threshold mark say 80 or 90% and the issue here is that I could successfully write all the code and get the info but it's not aligning with what our GUI showing us, and I have tested this piece of code in both our dev/test and Prod environment but there is a discrepancy out there always.

Do you know whether it works successfully or I am just wasting my time here?? Because it's been more than 10 days that i am trying to make it work.

Steps to reproduce

I am getting all of the storages from the reservations extension data entries. Here is the code:
#connecting the VRA server first
#Connect-vRAServer -Server vra-dev

#getting the vra collection
$reservations = get-vrareservation

#looping through reservation one by one
foreach ($reservation in $reservations)
{

 $Storage = $reservation.ExtensionData.entries | Where-Object {$_.key -eq "reservationStorages"}

 $StorageItems = $Storage.value.items

    foreach ($item in $StorageItems) 
	{
                          
            $computeResourceStorage = $item.values.entries | Where-Object {$_.key -eq "computeResourceStorageTotalSizeGB"}
            $String = "Total Computer Resource Storage space" + $computeResourceStorage.value.value
			Write-Output $String				
            $computeResourceStorageFreeSize = $item.values.entries | Where-Object {$_.key -eq "computeResourceStorageFreeSizeGB"}
            $String = "Free Computer Resource Storage space" + $computeResourceStorageFreeSize.value.value
            Write-Output $String				        
            $computeResourceStorageReservedSize = $item.values.entries | Where-Object {$_.key -eq "computeResourceStorageReservedSizeGB "}
            $String = "Computer Resource Storage Reserved space" + $computeResourceStorageReservedSize.value.value
			Write-Output $String				
            $StorageReservedSizeGB = $item.values.entries | Where-Object {$_.key -eq "storageReservedSizeGB"}
            $String = "StorageReservedSize is" + $StorageReservedSizeGB.value.value
			Write-Output $String				
            $storageAllocatedSizeGB = $item.values.entries | Where-Object {$_.key -eq "storageAllocatedSizeGB"}
            $String = "storageAllocatedSize is" + $storageAllocatedSizeGB.value.value                       
			Write-Output $String									
    }
}

Disconnect-vRAServer

#Disconnecting the VRA server here

Expected behavior

image

Resv-01
Total Computer Resource Storage space is: 45053
Free Computer Resource Storage space is: 8784
Computer Resource Storage Reserved space is: 400
StorageReservedSize is: 400
storageAllocatedSize is: 0

Actual behavior

Resv-01
Total Computer Resource Storage space is: 36862
Free Computer Resource Storage space is: 8269
Computer Resource Storage Reserved space is: 0
StorageReservedSize is: 400
storageAllocatedSize is: 0

Environment data

$PSVersionTable

Name Value


PSVersion 5.1.14409.1012
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.14409.1012
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1

$vRAConnection

Server : https://vra-dev
Token : MTUxNjY1OTk4MjEzODo0ZTkxMGYxZWZiNjFkZTBmMjM5ZDp0ZW5hbnQ6dnNwaGVyZS5sb2NhbHVzZXJuYW1lOmthcGlscy5hZG1AdGF0dHNncm91cC5jb21leHBpcmF0aW9uOjE1MTY2ODg3ODIwMDA6ZGQ3NGU2YTg3NDlkY2UxM
WZlNGU1YjM5M2Q0ODU2MTRlYWQ1ZWNmNmVmOGI4M2Y3YzdiMzU3ZDUyYmIzYjY0M2QwOWIwOTUzZTM3NGQ5Y2VmZDE0OGFiYTBiMGYyYTk2MWQ1NWZjMTI3ODgxNDg1ZGFiZWQ3YjlmZDg4MDU2ZGI=
Tenant : vsphere.local
Username : myuserid
APIVersion : 7.3
SignedCertificates : True
SslProtocol : Default

@SandyKapil
Copy link
Author

I have posted this two days ago and till date no one have had a look at it. Are you guys generally that slow or this is the peculiar one?

@jonathanmedd
Copy link
Contributor

@SandyKapil Possibly you haven't noticed, but this is a community project, not something created by VMware. It's primarily developed by @chelnak and myself in our spare time.

That spare time is naturally limited and while we do aim to look at issues as soon as we are able to, sometimes that is not always possible. Given the attitude you are giving off in your previous comment, you are not exactly endearing yourself in us spending our own time looking into it.

However, @chelnak and I had actually briefly discussed what you have reported yesterday and we will be aiming to look at it over the next week or so.

@SandyKapil
Copy link
Author

Nah sorry I didn't realize that it's just a community page and not by vmware, my apologies for that.

@jonathanmedd
Copy link
Contributor

OK, no worries. We'll update the issue in due course.....

@jonathanmedd
Copy link
Contributor

@SandyKapil I'm experiencing similar issues, although not exactly the same (Total space seems OK). However, the reservation in our lab is small in comparison so possibly some differences there.

Here's my reservation:

image

and the data:

1) Total Computer Resource Storage space is: 48
2) Free Computer Resource Storage space is: 33
3) Computer Resource Storage Reserved space is: 10
4) StorageReservedSize is: 20
5) storageAllocatedSize is: 0

So there definitely seems to be an issue with 2, 3 and 5.

I don't believe the issue is with PowervRA itself though, we are merely returning the values the API has returned to us. So I believe this would need to be picked up with VMware as a query around the API results from this request, either via a support call or the communities. We don't have access to VMware support for this project, so unless you are able to do that for us, we would have to settle for posting something on the communities site?

Side Note: you have an issue in your report code. It should be:

$computeResourceStorageReservedSize = $item.values.entries | Where-Object {$_.key -eq "computeResourceStorageReservedSizeGB"}

not:

$computeResourceStorageReservedSize = $item.values.entries | Where-Object {$_.key -eq "computeResourceStorageReservedSizeGB "}

Otherwise you get no results back for that one......

@jonathanmedd
Copy link
Contributor

Reported an issue via the communities here: https://communities.vmware.com/message/2741369#2741369

@basvinken
Copy link
Contributor

basvinken commented Oct 24, 2018

@jonathanmedd I'm experiencing similar issues.
After doing some research I found that it might be an issue with PowervRA itself.
get-vrareservation and Invoke-vRARestMethod return different values.
The values returned by Invoke-vRARestMethod are correct.

$ResultCmdlet = get-vrareservation -name "reservation_name"

$ReservationId=$ResultCmdlet.id
$URI = "/reservation-service/api/reservations/$ReservationId"

$ResultInvoke = Invoke-vRARestMethod -Method GET -URI $URI -Verbose:$VerbosePreference    

$ResultCmdlet.extensiondata.entries[1].value.items.values.entries
$ResultInvoke.extensiondata.entries[1].value.items.values.entries

@jonathanmedd jonathanmedd self-assigned this Oct 29, 2018
@jonathanmedd jonathanmedd added this to the 3.4.0 milestone Oct 29, 2018
@jonathanmedd
Copy link
Contributor

@basvinken I just tried that on a reservation in my lab and get the same results for both of the approaches you suggest.

Resultcmdlet:

key                                  value
---                                  -----
storageReservedSizeGB                @{type=integer; value=2500}
storageReservationPriority           @{type=integer; value=1}
permissible_value_selected           @{type=boolean; value=True}
storageAllocatedSizeGB               @{type=integer; value=1894}
computeResourceStorageTotalSizeGB    @{type=integer; value=1900}
isStorageCluster                     @{type=boolean; value=False}
storagePath                          @{type=entityRef; classId=Storage; id=2e33bd35-3983-4d16-aa49-6ea79129cee6; componentId=; label=ISCSI01}
storageEnabled                       @{type=boolean; value=True}
computeResourceStorageReservedSizeGB @{type=integer; value=2500}
isSDRSEnabled                        @{type=boolean; value=False}
computeResourceStorageFreeSizeGB     @{type=integer; value=802}
diskCost                             @{type=integer; value=0}
storageReservedSizeGB                @{type=integer; value=1900}
storageReservationPriority           @{type=integer; value=2}
permissible_value_selected           @{type=boolean; value=True}
storageAllocatedSizeGB               @{type=integer; value=1872}
computeResourceStorageTotalSizeGB    @{type=integer; value=1900}
isStorageCluster                     @{type=boolean; value=False}
storagePath                          @{type=entityRef; classId=Storage; id=1a43bb73-2449-4d4c-a07a-aad6b1a5f5b5; componentId=; label=ISCSI02}
storageEnabled                       @{type=boolean; value=True}
computeResourceStorageReservedSizeGB @{type=integer; value=1900}
isSDRSEnabled                        @{type=boolean; value=False}
computeResourceStorageFreeSizeGB     @{type=integer; value=516}
diskCost                             @{type=integer; value=0}

ResultInvoke:

key                                  value
---                                  -----
storageReservedSizeGB                @{type=integer; value=2500}
storageReservationPriority           @{type=integer; value=1}
permissible_value_selected           @{type=boolean; value=True}
storageAllocatedSizeGB               @{type=integer; value=1894}
computeResourceStorageTotalSizeGB    @{type=integer; value=1900}
isStorageCluster                     @{type=boolean; value=False}
storagePath                          @{type=entityRef; classId=Storage; id=2e33bd35-3983-4d16-aa49-6ea79129cee6; componentId=; label=ISCSI01}
storageEnabled                       @{type=boolean; value=True}
computeResourceStorageReservedSizeGB @{type=integer; value=2500}
isSDRSEnabled                        @{type=boolean; value=False}
computeResourceStorageFreeSizeGB     @{type=integer; value=802}
diskCost                             @{type=integer; value=0}
storageReservedSizeGB                @{type=integer; value=1900}
storageReservationPriority           @{type=integer; value=2}
permissible_value_selected           @{type=boolean; value=True}
storageAllocatedSizeGB               @{type=integer; value=1872}
computeResourceStorageTotalSizeGB    @{type=integer; value=1900}
isStorageCluster                     @{type=boolean; value=False}
storagePath                          @{type=entityRef; classId=Storage; id=1a43bb73-2449-4d4c-a07a-aad6b1a5f5b5; componentId=; label=ISCSI02}
storageEnabled                       @{type=boolean; value=True}
computeResourceStorageReservedSizeGB @{type=integer; value=1900}
isSDRSEnabled                        @{type=boolean; value=False}
computeResourceStorageFreeSizeGB     @{type=integer; value=516}
diskCost                             @{type=integer; value=0}

Could you be more specific about which values you find to be different?

@basvinken
Copy link
Contributor

@jonathanmedd storageAllocatedSizeGB, computeResourceStorageTotalSizeGB, computeResourceStorageReservedSizeGB are different.
I noticed that in your situation you don't use a Storagecluster which might explain the difference between your and mine output.

image

@jonathanmedd jonathanmedd modified the milestones: 3.4.0, 3.5.0 Jan 10, 2019
@basvinken
Copy link
Contributor

@jonathanmedd

There's a problem with the api
If you call $URI = "/reservation-service/api/reservations?`$filter=name%20eq%20'$($ReservationName)'"
You will retrieve all reservations and then filter the result.
If you call $URI = "/reservation-service/api/reservations/$ReservationId"
You will only retrieve the data for the specific reservation.
VMware has confirmed that both methods will return different results.
VROPS suffers from this issue as well

To workarround the issue you could rewrite get-vrareservation and use
$URI = "/reservation-service/api/reservations/$ReservationId"

@jonathanmedd
Copy link
Contributor

@basvinken Interesting. Is there any public information published about that problem?

@basvinken
Copy link
Contributor

@jonathanmedd No information is still not public. I received this information as answer to a VMware case I opened.

@jonathanmedd jonathanmedd modified the milestones: 3.5.0, 3.5.1 Feb 4, 2019
@jonathanmedd jonathanmedd modified the milestones: 3.6.0, 3.6.1 Apr 5, 2019
@chelnak chelnak removed this from the 3.6.1 milestone Sep 2, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants