%pylab inline # Database access from vizgrimoire.metrics.query_builder import SCMQuery, ITSQuery # Filters to apply from vizgrimoire.metrics.metrics_filter import MetricFilters # Let's start playing with git activity metrics import vizgrimoire.metrics.scm_metrics as scm # Instantiate database access # Playing with OpenStack source code database (MySQL) at # http://activity.openstack.org/dash/browser/data/db/source_code.mysql.7z # Database named as openstack_source_code_fosdem2015 user = "root" password = "" source_code_db = "openstack_source_code_fosdem2015" identities_db = "openstack_source_code_fosdem2015" dbcon = SCMQuery(user, password, source_code_db, identities_db) # Instantiate some filters to play with period = MetricFilters.PERIOD_MONTH startdate = "'2014-01-01'" enddate = "'2015-01-01'" # basic filter filters = MetricFilters(period, startdate, enddate) # company filter filters_company = MetricFilters(period, startdate, enddate) filters_company.add_filter(MetricFilters.COMPANY, "Red Hat") # company and repo filter filters_repo_com = MetricFilters(period, startdate, enddate) filters_repo_com.add_filter(MetricFilters.COMPANY, "Red Hat") filters_repo_com.add_filter(MetricFilters.REPOSITORY, "nova.git") # Retrieving data for each filter. # Let's start with commits commits = scm.Commits(dbcon, filters) commits.get_agg() commits.get_ts() plot(commits.get_ts()["commits"]) # Let's use another filter commits_redhat = scm.Commits(dbcon, filters_company) commits_redhat.get_agg() plot(commits_redhat.get_ts()["commits"]) # Let's focus on an organization and a repository commits_redhat_nova = scm.Commits(dbcon, filters_repo_com) filters_repo_com.type_analysis #Example of sql commits_redhat_nova._get_sql(True) plot(commits_redhat_nova.get_ts()["commits"]) authors = scm.Authors(dbcon, filters) authors.get_agg() plot(authors.get_ts()["authors"]) # let's list top 10 authors authors.get_list() # Let's remove some bots filters.people_out = ["Jenkins","OpenStack Jenkins", "OpenStack Project Creator"] authors = scm.Authors(dbcon, filters) authors.get_list() # This community structure analysis characterizes developers # by their activity. # Core developers are those committing the 80% of the changes # Regular developers are those committing the next 15% of the changes # And occasional ones are those committing the rest 5% from vizgrimoire.analysis.onion_model import CommunityStructure onion = CommunityStructure(dbcon, filters) print onion.result() import vizgrimoire.metrics.its_metrics as its # Instantiate database access # Playing with OpenStack tickets database (MySQL) at # http://activity.openstack.org/dash/browser/data/db/tickets.mysql.7z # Database named as openstack_tickets_fosdem2015 user = "root" password = "" source_code_db = "openstack_tickets_fosdem2015" identities_db = "openstack_source_code_fosdem2015" dbcon = ITSQuery(user, password, source_code_db, identities_db) # Instantiate some filters to play with period = MetricFilters.PERIOD_MONTH startdate = "'2010-01-01'" enddate = "'2012-01-01'" # basic filter filters = MetricFilters(period, startdate, enddate) from vizgrimoire.ITS import ITS ITS.set_backend("lp") closed_tickets = its.Closed(dbcon, filters) opened_tickets = its.Opened(dbcon, filters) closed_tickets.get_agg() opened_tickets.get_agg() # Let's see the efficienciy of the community closing tickets (BMI index) # This is calculated as the percentage of tickets closed out of the # opened ones. Values over 100, indicates that the community is closing # more tickets than opening. bmi = its.BMIIndex(dbcon, filters) plot(bmi.get_ts()["bmitickets"]) # Let's look for a specific project: all integrated projects in OpenStack filters.add_filter(filters.PROJECT, "integrated") bmi = its.BMIIndex(dbcon, filters) plot(bmi.get_ts()["bmitickets"])