[DNM] Feast changes - #2
Conversation
- changes to proxy materialize call to remote online server. - refactored online store with provision of driver.
- Added .env file to set Online store config.
(cherry picked from commit a7f2630)
- The module name of provider, offline store & online store is changed. - The .env file is now expected to be in HOME directory with all the config details.
- in materialize api, client now send project name also.
Other changes: - added "Host" in request header for online server - instanceof() fix - changed DKUBE_URL
dockerfile and support script to prepare feast ds image
… into feast_changes
|
|
||
|
|
||
| RUN cd /opt \ | ||
| && git clone https://github.com/oneconvergence/feast.git \ |
There was a problem hiding this comment.
Just a nit: Would --recurse-submodules clone everything in one go.
| apt-get -y autoremove && \ | ||
| rm -rf /var/lib/apt/lists/* | ||
|
|
||
| COPY install_python.sh install_python.sh |
| def __init__(self, **kwargs) -> None: | ||
| self.dkube_ip = kwargs.get("dkube_ip", "192.168.x.y") | ||
| self.dkube_port = kwargs.get("dkube_port", 32222) | ||
| self.dkube_endpoint = kwargs.get("dkube_endpoint", True) |
There was a problem hiding this comment.
Can we just take dkube_url and token? Can we also get from env right here as opposed to in some caller function?
|
|
||
| class DkubeProvider(PassthroughProvider): | ||
| """ | ||
| (VK): We need to see if we can work with the PassthroughProvider |
| verify=verify, | ||
| params=params, | ||
| timeout=timeout) | ||
| return self.process_response(resp) |
There was a problem hiding this comment.
If this is file is mostly independent of the rest of feast, can it be moved to dkube repo?
| def teardown(self, **kwargs): | ||
| self.dkube.delete_registry(kwargs['project']) | ||
|
|
||
| def validate_infra_update_with_registry(self, update_infra): |
There was a problem hiding this comment.
This is called before commiting the changes to registry as part of apply call.
| self, | ||
| config: RepoConfig, | ||
| tables_to_delete: Sequence[Union[FeatureTable, FeatureView]], | ||
| tables_to_keep: Sequence[Union[FeatureTable, FeatureView]], |
There was a problem hiding this comment.
You mean update as opposed to keep?
If a table is updated, does it appear in both delete and keep?
There was a problem hiding this comment.
If there is new FV definition, the older one with registry will get deleted and the new definition will get stored. If the table is updated it will be part of table_to_keep.
| # Replace the code below in order to define your own custom teardown | ||
| # operations | ||
| self.initialize(config) | ||
| self.driver["remote"].teardown(config, tables, entities) |
There was a problem hiding this comment.
Are we not tearing down all the project related resources? If so, we just need project?
There was a problem hiding this comment.
This is online store teardown. This is not entire project teardown.
There was a problem hiding this comment.
Is Online store not at project level? can we not figure out the rest if we just know project?
Or, is that how they defined the API?
There was a problem hiding this comment.
This is how the APIs are defined. We need to extend this and take action based on that.
| @@ -0,0 +1,520 @@ | |||
| from dataclasses import dataclass | |||
There was a problem hiding this comment.
Is this offline source? Why would this be different from what feast supports?
Or, does feast support mysql offline source? If it doesn't, we can propose this to the community?
| port = self.dkube_store["port"] | ||
| user = self.dkube_store["user"] | ||
| password = self.dkube_store["secret"] | ||
| database = self.dkube_store["db"] |
There was a problem hiding this comment.
Basically, this supports an external mysql server (like dbaas) as online server, not the one dkube launches. Is this true?
There was a problem hiding this comment.
Yes, this driver is to connect any MYSQL server.
| """ | ||
| + if "dkuberegistrystore" == self._registry._registry_store.__class__.__name__.lower(): | ||
| + # Proxy materialize call to online server. | ||
| + self._get_provider().proxy_materialize_incremental( |
There was a problem hiding this comment.
proxy_xxx() <-- Are these specific calls we added?
| ) | ||
| return job | ||
| + | ||
| + def proxy_materialize( |
| + } | ||
| + for fs in services_to_update] | ||
| + | ||
| + infra_update = { |
There was a problem hiding this comment.
In feast main branch, they have a way to calculate diff. Is it something new? or, just refactored?
There was a problem hiding this comment.
| "user": self.user, | ||
| "offline_dataset": self.offline_dataset | ||
| } | ||
| self.online_server_client.delete("api/v1/teardown", |
There was a problem hiding this comment.
Can we call dkube sdk whenever we need to make API calls?
There was a problem hiding this comment.
This call goes for knative service independent of controller. This is the reason, not part of Dkube SDK.
| dclient = get_dkube_client() | ||
| ods = dclient.get_dataset(USER, offline_ds) | ||
| return { | ||
| "user": ods["datum"]["sql"]["username"], |
- changes in registry to send the changed resource per object basis. - changes of 'event_timestamp_column' to 'timestamp_field'
a1cf5d3 to
c2b0e57
Compare
- BearerToken tested - feature store fix where feature store is sending duplicate values.
0563f52 to
9cf5655
Compare
No description provided.