We are using the Map Viewer of the fiware-wirecloud mashup to show as POIs in a world map the location of the 3D printers registered in our Fiware project. The instance of GE implementation used is the "FIWARE Lab Mashup Portal" and the POIs are are created and retrieved from the "FIWARE Lab Global Instance" of the "Orion Context Broker" (NGSI server URL--> https://orion.lab.fiware.org:1026/)
The application was working fine but several months ago the POIs suddenly disappeared from the map.
After looking over all the related questions in stackoverflow and other resources about this problem, we did the following:
Update the version of the NGSI source operator from v3.0.3 to v3.0.5,
Change the NGSI proxy URL from http://ngsiproxy.lab.fiware.org to https://ngsiproxy.lab.fiware.org, and also
Select the option "Use the FIWARE credentials of the workspace owner" to make public the mashup for all user in the web where it is
embed.
The mashup started to work perfectly.
But last week we note that the mashup again failed to show points of interest.
We've made some checking:
There isn't a new version available of the NGSI source operator in the Marketplace. We are using the last version v3.0.5. Same with the
"NGSI Entity to PoI" operator or the "Map viewer" widget.
There are no changes about the NGSI server URL--> https://orion.lab.fiware.org:1026/ or the NGSI proxy URL-->
https://ngsiproxy.lab.fiware.org
And finally we have checked the data in the public instance of the Orion Context Broker throught a curl request and the conexion to Orion and the returned json seem right.
What it might be happening?
We have looked over all the previous similar questions in stackoverflow and other sources, but this time the answers don't help us.
Thank you in advanced for your help.
There were a temporal problem with the global Orion Context broker and it was not sending notifications (queries and other operations were working well). The context broker team is checking the global instance and should be operational in a short period of time.
NOTE: Check the URL of the context broker, it should be: http://orion.lab.fiware.org:1026/ (without the s of https).
Related
How can I retrieve the users in a particular Autodesk Construction Cloud project?
In the past, I'd been using this API call. But somewhere along the line this stopped working for Autodesk Construction Cloud projects. It still works fine for me in BIM 360 projects.
I have tried:
Requested Resource:bim360/admin/v1/projects/d55af500-a5c5-44e6-9917-cf36ef71340a/users?limit=100
Response Content:{\"pagination\":{\"limit\":100,\"offset\":0,\"totalResults\":0},\"results\":[]}
If I go to the ACC webpage for this project (https://acc.autodesk.com/project-admin/members/projects/d55af500-a5c5-44e6-9917-cf36ef71340a) then the Project Members list looks like this:
So I'm confused why my GET request is returning 0 results when clearly I am a project member. My first thought was that the resource bim360/admin/v1/projects/:projectId/users no longer works on Autodesk Construction Cloud projects, but I couldn't find any ACC-specific alternatives in the ACC Documentation
Yes, it is a known issue. Those APIs are listed as incompatible here:
https://aps.autodesk.com/en/docs/acc/v1/overview/bim-360-compatibility/compatibility-table/
But it was behaving as if it is working but stopped working recently. Ideally, those incompatible endpoints should have been blocked in the code, but it wasn’t. Sorry for the confusion.
For Issues API, we now have ACC-specific endpoints. You will need to use the new one:
https://aps.autodesk.com/blog/acc-issues-api-general-availability
FYI: ACC version does not support pushpin. If you need pushpin support, let us know. We will need to add your name to the wish.
For Project Admin API, you will need to wait for the new one. One positive news is that Project Admin API for ACC is currently under private beta. (project creation and project users). We hope to move to public beta in a month or so. In a meantime, if you would like to join the private beta, are willing to test quickly, and give us feedback, you may contact your company’s Customer Success Manager (CMS) and request to sign up.
Once again sorry for the inconvenience this is causing.
I would like to load data to my db hosted on GKE, using cloud function (small ETL needs, Cloud function would be great for that case)
I'm working in the same region. my GKE has an internal load balancer exposing an gcloud internal IP.
the method called is working perfectly when it's from Appengine but when doing it with cloud function I have an connexion error : "can't find client at IP"
I would like to know if it is possible ?
if so, what would be the procedure ?
Many thanks !!
Gab
We just released this feature to Beta. You can get started by following our docs:
https://cloud.google.com/functions/docs/connecting-vpc https://cloud.google.com/appengine/docs/standard/python/connecting-vpc
https://cloud.google.com/vpc/docs/configure-serverless-vpc-access
This is not currently possible as of today.
https://issuetracker.google.com/issues/36859738
Thanks for your feedback.
You are totally right. At the moment the instances are only able to receive such requests via the external IP [1].
I have filed a feature request in your behalf so that this functionality might be considered for future deployments. I cannot guarantee this will be implemented or provide an E.T.A. Nevertheless, rest assured that your feedback is always seriously taken.
We also reached out to our Google Cloud representative who confirmed this was a highly requested feature that was being looked at but was unable to provide an ETA as when it would be released.
I installed a Fiware platform with ContextBroker and Cygnus. Everything is working properly. I would like ContextBroker to update itself automatically every hour, by fetching data from an API on an external server (API in JSON format that returns data with a GET request).
Is it possible ? How to do ?
Every hour:
ContextBroker request to get weather data
ContextBroker update "weather" entitie with the data returned
Thanks
In general, Orion Context Broker expects context producers to push data.
The only case in which Orion pulls data is in context provider scenarios and does only in a transient way, i.e. it gets the data from the context provider and sends to the client in the response but the data is not stored in the context database managed by Orion.
In addition, you could have a look to the FIWARE Device Simulator. This is a powerful and flexible tool which allows to use external as a source of data, allow acting as a bridge between your source of data and Orion Context Broker. From its documentation:
external: Information about an external source from which to load, to transform and to register data into a Context Broker instance.
In the global Wirecloud instance i have a widget which uses the KeystoneAPI mentioned here:
https://wirecloud.readthedocs.io/en/stable/development/object_storage_api/
So far so good.
However now i want to move to KeyRock for authentication. I still want to pass tokens from my wirecloud widget to backend services like the Wilma PEP proxy which is not connected to KeyRock as well. But the KeystoneAPI seems to be tied to Keystone (hence the name probably).
Is there a KeyRockAPI accessible from Wirecloud widgets? How can a widget obtain the KeyRock OAuth2 token the user logged in with? I cannot find any documentation on this.
WireCloud doesn't allow widgets and operators to read the OAuth2 token assigned to the user, but it provide support for injecting the token into HTTP requests if they go through the WireCloud's proxy. This injection is controlled by several HTTP headers, this is an example:
MashupPlatform.http.makeRequest(url, {
requestHeaders: {
"X-FI-WARE-OAuth-Token": "true",
"X-FI-WARE-OAuth-Header-Name": "X-Auth-Token"
},
...
});
You can find more info about how to use this feature in the FIWARE Academy course, more specifically in the 3.1.8. Accessing third-party services using IdM tokens section (take into account that this document is the same you pointed in your comments, but in html format ;) ).
Answers to the others questions formulated as comments:
Installed docker containers of KeyRock and Wirecloud, tried out the objectstorage demo widget, which failed to retrieve an authentication token. Traced the problem to %idm_token% not being filled in by the python code, presumably in plugins.py because it looks for an AUTHENTICATION_BACKEND of 'fiware' whereas the documentation states to include 'wirecloud.fiware.social_auth_backend.FIWAREOAuth2'.
I recommend you to create a new question in StackOverflow to tackle this problem. Please, provide more details on your configuration.
So my authentication token from wirecloud will be bound to that application? If so, the token is useless to my own application unless i can get a new token for it. Am i wrong here?
Yeah, the Mashup portal is the application number 17 in the Account portal and the OAuth2 token obtained by WireCloud is bound to that application. I cannot foresee if that token is useful for your application or not. This token can be used for authenticating users, but the IdM limits the returned information (e.g. roles) depending on the application bounded to the token. So, evidently, this integration is not perfect, but we are missing some integration features from the IdM to make it more useful.
As part of the FINISH accelerator we are using FIWARE KeyRock and Wirecloud. Currently we are using the Fiware labs global instance to investigate.
We want to restrict our system so that users can only view data that belongs to the organisations of which they are a member.
The following flow seems logical, but correct me if i am wrong:
A user logs into Wirecloud and is directed through a KeyRock login screen.
A Wirecloud Widget gets an access token from Wirecloud environment. The access token was created when the user logged in.
The Wirecloud widget looks up the organisations and roles that a user is member of. Based on this it adds organisation names to its query.
The Wirecloud widget queries a webservice (Orion or otherwise) using the query it just created.
We put the Wilma PEP proxy between the Wirecloud Widget and the webservice to validate that the user is a member of the organisations in the query.
PROBLEM:
We can query user information from KeyRock using the https://account.lab.fiware.org/user?access_token=XXXXXXXXXXX call. But that does not contain any information about the organisations that the user is a member of according to the KeyRock web interface. The organisations element is an empty array. We get a bunch of roles in the json response, but none of them is the "members" role that you assign to users from the "Manage your organization members" screen in KeyRock.
Some digging revealed that the Keystone instance running on Fiware labs contains the information (assuming that a Keystone project = KeyRock organisation). However the access token provided by KeyRock is somehow not valid on the Keystone API. The API we used was accessible here: http://cloud.lab.fiware.org:4730/v3/
Getting a new access token from the Keystone API is not what we want, because that would be a different access token than Wirecloud has obtained, which would require some kind of proxy to log in again and retrieve the organisation membership. That rather defeats the point of passing an access token.
This seems to be a bug in the KeyRock API on the fiware labs instance.
Or am i missing something here?
Or will this problem magically go away if we install keyrock on our own server?
Thanks for any help,
Robin
you have to follow the steps explained here but using the specific organization. Probably you have missed the "Authorize" step