Survey banner
Switching to Dataiku - a new area to help users who are transitioning from other tools and diving into Dataiku! CHECK IT OUT

finding projects using a particular plugin

TheMLEngineer
Level 2
finding projects using a particular plugin

Is there a quick way to find the projects using a particular plugin?

0 Kudos
3 Replies
Turribeach

Navigate to the plugin page and select the Usages tab. Then click on Fetch Usages.

Screenshot 2024-05-06 at 22.36.03.png

 

 

0 Kudos
TheMLEngineer
Level 2
Author

Thank you. It works!!

0 Kudos

This notebook code is even better, it will run the check for all plugins and output a dataframe which you can then export to CSV. It may take some time to run depending on the number of plugins installed and the size of your install:

from IPython.display import display, HTML
display(HTML("<style>.container { width:100% !important; }</style>"))

import dataiku
import pandas as pd, numpy as np
client = dataiku.api_client()

plugins_list = client.list_plugins()
filter_plugins_list = []

df_plugin_usage = pd.DataFrame(columns=['plugin_id', 'plugin_name', 'plugin_author', 'plugin_version', 'plugin_license', 'plugin_code_env', 'element_kind', 'element_type', 'object_type', 'object_id'])

for plugin in plugins_list:
    plugin_id = plugin['id']
    plugin_author = plugin['meta']['author']
    plugin_license = plugin['meta']['licenseInfo']
    plugin_version = plugin['version']
     
    if filter_plugins_list:
        if plugin_id not in filter_plugins_list:
            continue
    plugin_handle = client.get_plugin(plugin_id)
    plugin_settings = plugin_handle.get_settings().get_raw()
    plugin_name = plugin['meta']['label']
    plugin_code_env = plugin_settings.get('codeEnvName')
    plugin_usages = plugin_handle.list_usages(project_key=None).get_raw()
    for usages in plugin_usages['usages']:
        
        element_kind = usages['elementKind']
        element_type = usages['elementType']
        object_type = usages['objectType']
        project_key = usages['projectKey']
        object_id = usages['objectId']
    
        plugin_usage_record =  pd.DataFrame.from_dict({'plugin_id': [plugin_id], 'plugin_name': [plugin_name], 'plugin_code_env': [plugin_code_env], 'plugin_author': [plugin_author], 'plugin_version': [plugin_version], 'plugin_license': [plugin_license], 'project_key': [project_key], 'element_kind': [element_kind], 'element_type': [element_type], 'object_type': [object_type], 'object_id': [object_id]})
        df_plugin_usage = pd.concat([df_plugin_usage, plugin_usage_record], ignore_index=True)
    print(f'{plugin_id} - {plugin_name} - {plugin_code_env}')

df_plugin_usage.sort_values(by=['plugin_name', 'project_key', 'element_kind', 'element_type', 'object_type', 'object_id'], inplace=True)

import base64

def create_download_link( df, title = "Download CSV file", filename = "plugin_usage.csv"):
    csv = df.to_csv()
    b64 = base64.b64encode(csv.encode())
    payload = b64.decode()
    html = '<a download="{filename}" href="data&colon;text/csv;base64,{payload}" target="_blank">{title}</a>'
    html = html.format(payload=payload,title=title,filename=filename)
    return HTML(html)

create_download_link(df_plugin_usage)

 

0 Kudos