ranger-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Pradeep Agrawal <pradeepagrawal8...@gmail.com>
Subject Re: Review Request 69677: RANGER-2287: Improve and optimize db_setup.py file code
Date Tue, 15 Jan 2019 12:56:45 GMT


> On Jan. 8, 2019, 11:48 a.m., Zsombor Gegesy wrote:
> > It's great news, that you could delete thousands of lines of repetitive code, however
you could achieve more, if instead of putting everything into one class, and put 
> > '''
> > if self.XA_DB_FLAVOR == DB_MYSQL:
> >    ...
> > elif self.XA_DB_FLAVOR == DB_POSTGRES:
> >    ...
> > '''
> > 
> > You can write
> >    self.do_something(...)
> >    
> > and implement do_something differently in the MySQL/PostgreSQL/Oracle specific adapter
class
> 
> Pradeep Agrawal wrote:
>     There shall be too many self.do_something(...) function I have to write which shall
look like the previous code. Can you review it once again and let me know with few examples.
> 
> Zsombor Gegesy wrote:
>     Maybe you can add:
>     '''
>     def execute_query(self, query):
>         ''' Execute query and return the output as a string '''
>         get_cmd = self.get_jisql_cmd(self.db_user, self.db_password, self.db_name)
>         if is_unix:
>             full_command = get_cmd + " -query \"" + query + "\"" 
>         elif os_name == "WINDOWS":
>             full_command = get_cmd + " -query \"" + query + "\" -c ;" 
>         else:
>             raise Exception("This OS is not supported!")
>         jisql_log(full_command, self.db_password)
>         output = check_output(query)
>         return output
>     
>     def execute_update(self, update):
>         ''' Execute the update query and return the error code'''
>         get_cmd = self.get_jisql_cmd(self.db_user, self.db_password, self.db_name)
>         if is_unix:
>             full_command = get_cmd + " -query \"" + update + "\""
>             jisql_log(full_command, self.db_password)
>             return subprocess.call(shlex.split(query))
>         elif os_name == "WINDOWS":
>             full_command = get_cmd + " -query \"" + update + "\" -c ;" 
>             jisql_log(full_command, self.db_password)
>             ret = subprocess.call(query)
>         raise Exception("This OS is not supported!")
>     '''
>     
>     So you can get rid of lot's of repeating code around to support Windows.
>     
>     And for the db changes, I would imagine something like this:
>     
>     '''
>     class BaseDB(object):
>     
>         @abstractmethod
>         def get_stale_patch_query(self, version, client_host, stalePatchEntryHoldTimeInMinutes):
>             pass
>     
>     
>     class MysqlConf(BaseDB):
>     
>         def get_stale_patch_query(self, version, client_host, stalePatchEntryHoldTimeInMinutes):
>             return "select version from x_db_version_h where version = '%s' and active
= 'N' and updated_by='%s' and TIMESTAMPDIFF(MINUTE,inst_at,CURRENT_TIMESTAMP)>=%s;" % (version,
client_host, stalePatchEntryHoldTimeInMinutes)
>             
>     '''
>     
>     
>     So you can write:
>     
>     '''
>         output = self.execute_query(self.get_stale_patch_query(version,client_host,stalePatchEntryHoldTimeInMinutes))
>         ...
>     '''
>     
>     What do you think, does it makes sense?

Can you please review the updated patch again.


- Pradeep


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/69677/#review211760
-----------------------------------------------------------


On Jan. 15, 2019, 12:55 p.m., Pradeep Agrawal wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/69677/
> -----------------------------------------------------------
> 
> (Updated Jan. 15, 2019, 12:55 p.m.)
> 
> 
> Review request for ranger, Abhay Kulkarni, Madhan Neethiraj, Mehul Parikh, Nikhil P,
Ramesh Mani, and Velmurugan Periasamy.
> 
> 
> Bugs: RANGER-2287
>     https://issues.apache.org/jira/browse/RANGER-2287
> 
> 
> Repository: ranger
> 
> 
> Description
> -------
> 
> **Problem Statement:** There are lot of repeated code in db_setup.py which can be removed
which shall help developers to make any changes in db_setup.py in future.
> 
> **Proposed Solution:** Proposed patch shall remove the db setup methods of each db flavor
and shall use a single method for a specific work for each db flavor. Based on the db flavor,
config values shall be populated and handled in the code after this patch.
> 
> 
> Diffs
> -----
> 
>   security-admin/scripts/db_setup.py f1223b38c 
> 
> 
> Diff: https://reviews.apache.org/r/69677/diff/2/
> 
> 
> Testing
> -------
> 
> **Use Cases covered for all the db flavors:**
> *1. Fresh installation(Ranger 2.0):* Tested patch with fresh installation of ranger admin.
> *2. Upgrade(from 0.7 to 2.0):* Installed Ranger from 0.7 branch and used same db config
on Ranger 2.0 installation config and run the setup.sh. Ranger was upgraded successfully.
> 
> 
> Thanks,
> 
> Pradeep Agrawal
> 
>


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message