def build_query(self): """Builds and returns query for the report without paging. :returns: Query object :rtype: ColumnQuery """ q = ColumnQuery(self.data['model']) q.time(self.data['time']) for column in self.data['columns']: q.add_column(column['model'], column['prop']) q.orderby(column['prop'], 'ASC', label=column['model']) for f in self.data.get('filters', []): q.filter(f['prop'], f['operator'], f['value'], label=f['model']) return q
def run(self): q = ColumnQuery(self.data['model']) q.time(self.data['time']) for column in self.data['columns']: q.add_column(column['model'], column['prop']) q.orderby(column['prop'], 'ASC', label=column['model']) rows = [] pagesize = 5000 page = 1 page_rows = q.page(page, pagesize) while (page_rows): rows += page_rows page += 1 page_rows = q.page(page, pagesize) return rows
def git_urls(self): """Build list of selectable git urls. :returns: All git urls :rtype: list """ q = ColumnQuery('GitUrl') q.add_column('GitUrl', 'url', 'url') q.orderby('url', 'ASC', label='GitUrl') urls = [] page = 1 pagesize = 1000 page_rows = q.page(page, pagesize) while (page_rows): for row in page_rows: urls.append(row['url']) page += 1 page_rows = q.page(page, pagesize) return urls
def test_query_format(self): """Test that query string matches formatting.""" q = ColumnQuery('Host') q.add_column('Environment', 'account_number') q.add_column('Host', 'kernel', 'kernel') expected = ( "MATCH (environment:Environment)-[r0:HAS_HOST]->(host:Host) " "\nMATCH (environment)-[r_environment_state:HAS_STATE]" "->(environment_state:EnvironmentState) " "\nMATCH (host)-[r_host_state:HAS_STATE]->(host_state:HostState) " "\nWHERE r0.from <= $time < r0.to AND " "r_environment_state.from <= $time < r_environment_state.to AND " "r_host_state.from <= $time < r_host_state.to" "\nRETURN environment.account_number AS" " `Environment.account_number`," " host_state.kernel AS `kernel` " "\nORDER BY host.hostname_environment ASC") self.assertEquals(expected, str(q))
def test_adding_valid_column(self): """Test that adding a valid column works.""" q = ColumnQuery('Environment') q.add_column('Environment', 'name') q.add_column('Environment', 'account_number', name='the_number')
def test_add_column_invalid_property(self): """Test that adding a column with invalid property fails.""" q = ColumnQuery('Environment') with self.assertRaises(InvalidPropertyError): q.add_column('Environment', 'notaprop')
def test_add_column_model_not_in_datapath(self): """Test that adding a valid model that is not in the datapath fails""" q = ColumnQuery('Environment') with self.assertRaises(InvalidLabelError): q.add_column('AptPackage', 'name')
def test_add_column_invalid_model(self): """Test that adding a column with invalid model fails.""" q = ColumnQuery('Environment') with self.assertRaises(InvalidLabelError): q.add_column('NotAModel', 'someprop')
def build_query(self): """Build query for the report. :returns: Query object :rtype: ColumnQuery """ q = ColumnQuery('Configfile') q.time(self.data['time']) for column in self._db_columns: q.add_column(column['model'], column['prop']) q.orderby(column['prop'], 'ASC', label=column['model']) q.filter('name', '=', 'cinder.conf', label='Configfile') for f in self.data.get('filters', []): q.filter(f['prop'], f['operator'], f['value'], label=f['model']) return q
def build_query(self): """Build the report query. :returns: Query object :rtype: ColumnQuery """ q = ColumnQuery('GitUrl') q.time(self.data['time']) for column in self._columns: q.add_column(column['model'], column['prop']) q.orderby(column['prop'], 'ASC', label=column['model']) q.filter('url', '=', self.data['url'], label='GitUrl') for f in self.data.get('filters', []): q.filter(f['prop'], f['operator'], f['value'], label=f['model']) return q
def run(self): """Run the report. :returns: List of report rows :rtype: List of ordereddicts """ q = ColumnQuery('Configfile') q.time(self.data['time']) for column in self._db_columns: q.add_column(column['model'], column['prop']) q.orderby(column['prop'], 'ASC', label=column['model']) q.filter('name', '=', 'cinder.conf', label='Configfile') records = [] pagesize = 500 page = 1 page_rows = q.page(page, pagesize) while (page_rows): for row in page_rows: for s, d in parse_contents(row['Configfile.contents']): records.append(self._record_from_row(row, s, d)) page += 1 page_rows = q.page(page, pagesize) return records
def run(self): q = ColumnQuery('GitUrl') q.time(self.data['time']) for column in self._columns: q.add_column(column['model'], column['prop']) q.orderby(column['prop'], 'ASC', label=column['model']) q.filter('url', '=', self.data['url'], label='GitUrl') rows = [] pagesize = 5000 page = 1 page_rows = q.page(page, pagesize) while (page_rows): rows += page_rows page += 1 page_rows = q.page(page, pagesize) return rows