コード例 #1
0
ファイル: db_department.py プロジェクト: jordanTDK/infoset-ng
    def __init__(self, code):
        """Function for intializing the class.

        Args:
            code: Department code

        Returns:
            None

        """
        # Initialize important variables
        value = code.encode()
        self.data_dict = defaultdict(dict)
        keys = ['idx_department', 'code', 'name', 'enabled']
        for key in keys:
            self.data_dict[key] = None
        self.data_dict['exists'] = False

        # Establish a database session
        database = db.Database()
        session = database.session()
        result = session.query(Department).filter(Department.code == value)

        # Massage data
        if result.count() == 1:
            for instance in result:
                self.data_dict['idx_department'] = instance.idx_department
                self.data_dict['code'] = general.decode(instance.code)
                self.data_dict['name'] = general.decode(instance.name)
                self.data_dict['enabled'] = bool(instance.enabled)
                self.data_dict['exists'] = True
                break

        # Return the session to the database pool after processing
        database.close()
コード例 #2
0
    def __init__(self, idx_datapoint):
        """Function for intializing the class.

        Args:
            idx_datapoint: Datapoint Index

        Returns:
            None

        """
        # Initialize important variables
        self.data_dict = defaultdict(dict)
        keys = [
            'idx_datapoint', 'id_datapoint', 'idx_deviceagent',
            'idx_department',
            'idx_billcode', 'agent_label', 'agent_source', 'enabled',
            'billable', 'base_type', 'timefixed_value', 'last_timestamp']
        for key in keys:
            self.data_dict[key] = None
        self.data_dict['exists'] = False

        # Only work if the value is an integer
        if (isinstance(idx_datapoint, int) is True) and (
                idx_datapoint is not None):
            # Establish a database session
            database = db.Database()
            session = database.session()
            result = session.query(
                Datapoint).filter(Datapoint.idx_datapoint == idx_datapoint)

            # Massage data
            if result.count() == 1:
                for instance in result:
                    self.data_dict['idx_datapoint'] = instance.idx_datapoint
                    self.data_dict[
                        'id_datapoint'] = general.decode(
                            instance.id_datapoint)
                    self.data_dict[
                        'idx_deviceagent'] = instance.idx_deviceagent
                    self.data_dict['idx_department'] = instance.idx_department
                    self.data_dict['idx_billcode'] = instance.idx_billcode
                    self.data_dict[
                        'agent_label'] = general.decode(
                            instance.agent_label)
                    self.data_dict[
                        'agent_source'] = general.decode(
                            instance.agent_source)
                    self.data_dict['enabled'] = bool(instance.enabled)
                    self.data_dict['billable'] = bool(instance.billable)
                    self.data_dict['base_type'] = instance.base_type
                    self.data_dict[
                        'timefixed_value'] = instance.timefixed_value
                    self.data_dict['last_timestamp'] = instance.last_timestamp
                    self.data_dict['exists'] = True
                    break

            # Return the session to the database pool after processing
            database.close()
コード例 #3
0
def listing(idx_deviceagent, base_type=None):
    """List of datapoint data for a specific idx_device, idx_agent combination.

    Args:
        idx_deviceagent: DeviceAgent index
        base_type: base_type to filter by

    Returns:
        dict_list: List of dicts containing data

    """
    # Initialize key variables
    dict_list = []

    # Process information
    deviceagent = db_deviceagent.GetIDXDeviceAgent(idx_deviceagent)
    if deviceagent.exists() is True:
        # Establish a database session
        database = db.Database()
        session = database.session()
        if base_type is None:
            result = session.query(Datapoint).filter(
                Datapoint.idx_deviceagent == idx_deviceagent)
        else:
            result = session.query(Datapoint).filter(
                and_(
                    Datapoint.base_type == base_type,
                    Datapoint.idx_deviceagent == idx_deviceagent)
                )

        # Add to the list of device idx_datapoint values
        for instance in result:
            data_dict = {}
            data_dict['idx_datapoint'] = instance.idx_datapoint
            data_dict['id_datapoint'] = general.decode(instance.id_datapoint)
            data_dict['idx_deviceagent'] = instance.idx_deviceagent
            data_dict['idx_department'] = instance.idx_department
            data_dict['idx_billcode'] = instance.idx_billcode
            data_dict[
                'agent_label'] = general.decode(instance.agent_label)
            data_dict[
                'agent_source'] = general.decode(instance.agent_source)
            data_dict['enabled'] = bool(instance.enabled)
            data_dict['billable'] = bool(instance.billable)
            data_dict['base_type'] = instance.base_type
            data_dict[
                'timefixed_value'] = general.decode(instance.timefixed_value)
            data_dict['last_timestamp'] = instance.last_timestamp
            data_dict['exists'] = True
            dict_list.append(data_dict)

        # Return the connection to the pool
        database.close()

    # Return
    return dict_list
コード例 #4
0
def _dp_device_agent(idx_device, idx_agent, charted_data=True):
    """List of datapoint data for a specific device_idx, idx_agent combination.

    Args:
        idx_device: Device index
        idx_agent: Agent index
        charted_data: Return data for charted points if True.
            Uncharted if False.

    Returns:
        dict_list: List of dicts containing data

    """
    # Initialize key variables
    dict_list = []

    # Establish a database session
    database = db.Database()
    session = database.session()
    if charted_data is True:
        result = session.query(Datapoint).filter(
            and_(Datapoint.timefixed_value == None,
                 Datapoint.idx_device == idx_device,
                 Datapoint.idx_agent == idx_agent))
    else:
        result = session.query(Datapoint).filter(
            and_(Datapoint.timefixed_value != None,
                 Datapoint.idx_device == idx_device,
                 Datapoint.idx_agent == idx_agent))

    # Add to the list of device idx_datapoint values
    for instance in result:
        data_dict = {}
        data_dict['idx_datapoint'] = instance.idx_datapoint
        data_dict['id_datapoint'] = general.decode(instance.id_datapoint)
        data_dict['idx_agent'] = instance.idx_agent
        data_dict['idx_device'] = instance.idx_device
        data_dict['idx_department'] = instance.idx_department
        data_dict['idx_billcode'] = instance.idx_billcode
        data_dict['agent_label'] = general.decode(instance.agent_label)
        data_dict['agent_source'] = general.decode(instance.agent_source)
        data_dict['enabled'] = bool(instance.enabled)
        data_dict['billable'] = bool(instance.billable)
        data_dict['base_type'] = instance.base_type
        data_dict['timefixed_value'] = general.decode(instance.timefixed_value)
        data_dict['last_timestamp'] = instance.last_timestamp
        data_dict['exists'] = True
        dict_list.append(data_dict)

    # Return the connection to the pool
    database.close()

    # Return
    return dict_list
コード例 #5
0
ファイル: db_agent.py プロジェクト: duran-thomas/infoset-ng
    def __init__(self, idx_agent):
        """Function for intializing the class.

        Args:
            idx_agent: Agent idx_agent

        Returns:
            None

        """
        # Initialize important variables
        self.data_dict = defaultdict(dict)
        keys = ['idx_agent', 'idx_agentname', 'id_agent', 'enabled', 'agent']
        for key in keys:
            self.data_dict[key] = None
        self.data_dict['exists'] = False

        # Fix values passed
        if isinstance(idx_agent, int) is False:
            idx_agent = None

        # Only work if the value is an integer
        if isinstance(idx_agent, int) is True and idx_agent is not None:
            # Get the result
            database = db.Database()
            session = database.session()
            result = session.query(Agent).filter(Agent.idx_agent == idx_agent)

            # Massage data
            if result.count() == 1:
                for instance in result:
                    self.data_dict['idx_agent'] = idx_agent
                    self.data_dict['idx_agentname'] = instance.idx_agentname
                    self.data_dict['id_agent'] = general.decode(
                        instance.id_agent)
                    self.data_dict['enabled'] = bool(instance.enabled)
                    self.data_dict['exists'] = True
                    break

            # Return the session to the database pool after processing
            database.close()

            # Add the agent name to dict
            if bool(self.data_dict['exists']) is True:
                database = db.Database()
                session = database.session()
                result = session.query(AgentName.name).filter(
                    and_(
                        Agent.idx_agent == self.data_dict['idx_agent'],
                        Agent.idx_agentname == AgentName.idx_agentname)).one()
                self.data_dict['agent'] = general.decode(result.name)
                database.close()
コード例 #6
0
def get_all_names():
    """Get data on all names in the database.

    Args:
        None

    Returns:
        data: List of dicts of agent data.

    """
    # Initialize important variables
    data = []

    # Establish a database session
    database = db.Database()
    session = database.session()
    result = session.query(AgentName)

    # Massage data
    for instance in result:
        # Get next record
        data_dict = defaultdict(dict)
        data_dict['name'] = general.decode(instance.name)
        data_dict['idx_agentname'] = instance.idx_agentname
        data_dict['enabled'] = bool(instance.enabled)
        data_dict['exists'] = True

        # Append to list
        data.append(data_dict)

    # Return the session to the database pool after processing
    database.close()

    # Return
    return data
コード例 #7
0
    def __init__(self, idx_device):
        """Function for intializing the class.

        Args:
            idx_device: Device Index

        Returns:
            None

        """
        # Initialize important variables
        self.data_dict = defaultdict(dict)
        keys = [
            'idx_device', 'devicename', 'description', 'enabled',
            'ip_address']
        for key in keys:
            self.data_dict[key] = None
        self.data_dict['exists'] = False

        # Only work if the value is an integer
        if isinstance(idx_device, int) is True and idx_device is not None:
            # Establish a database session
            database = db.Database()
            session = database.session()
            result = session.query(Device).filter(Device.idx_device == idx_device)

            # Massage data
            if result.count() == 1:
                for instance in result:
                    self.data_dict['idx_device'] = instance.idx_device
                    self.data_dict['devicename'] = general.decode(
                        instance.devicename)
                    self.data_dict['description'] = general.decode(
                        instance.description)
                    self.data_dict['enabled'] = bool(instance.enabled)
                    self.data_dict['ip_address'] = general.decode(
                        instance.ip_address)
                    self.data_dict['exists'] = True
                    break

            # Return the session to the database pool after processing
            database.close()
コード例 #8
0
    def __init__(self, idx_billcode):
        """Function for intializing the class.

        Args:
            idx_billcode: Billcode Index

        Returns:
            None

        """
        # Initialize important variables
        self.data_dict = defaultdict(dict)
        keys = ['idx_billcode', 'code', 'name', 'enabled']
        for key in keys:
            self.data_dict[key] = None
        self.data_dict['exists'] = False

        # Fix values passed
        if isinstance(idx_billcode, int) is False:
            idx_billcode = None

        # Establish a database session
        database = db.Database()
        session = database.session()
        result = session.query(Billcode).filter(
            Billcode.idx_billcode == idx_billcode)

        # Massage data
        if result.count() == 1:
            for instance in result:
                self.data_dict['idx_billcode'] = instance.idx_billcode
                self.data_dict['enabled'] = bool(instance.enabled)
                self.data_dict['code'] = general.decode(instance.code)
                self.data_dict['name'] = general.decode(instance.name)
                self.data_dict['exists'] = True
                break

        # Return the session to the database pool after processing
        database.close()
コード例 #9
0
    def __init__(self, idx_configuration):
        """Function for intializing the class.

        Args:
            idx_configuration: Configuration Index

        Returns:
            None

        """
        # Initialize important variables
        self.data_dict = defaultdict(dict)
        keys = ['idx_configuration', 'config_key', 'config_value']
        for key in keys:
            self.data_dict[key] = None
        self.data_dict['exists'] = False

        # Establish a database session
        database = db.Database()
        session = database.session()
        result = session.query(
            Configuration).filter(
                Configuration.idx_configuration == idx_configuration)

        # Massage data
        if result.count() == 1:
            for instance in result:
                self.data_dict[
                    'idx_configuration'] = instance.idx_configuration
                self.data_dict[
                    'config_key'] = general.decode(instance.config_key)
                self.data_dict[
                    'config_value'] = general.decode(instance.config_value)
                self.data_dict['exists'] = True
                break

        # Return the session to the database pool after processing
        database.close()
コード例 #10
0
ファイル: db_agent.py プロジェクト: duran-thomas/infoset-ng
    def __init__(self, id_agent):
        """Function for intializing the class.

        Args:
            id_agent: Identifier of agent

        Returns:
            None

        """
        # Initialize important variables
        self.data_dict = defaultdict(dict)
        keys = ['idx_agent', 'idx_agentname', 'id_agent', 'enabled', 'agent']
        for key in keys:
            self.data_dict[key] = None
        self.data_dict['exists'] = False

        # Encode the id_agent
        if isinstance(id_agent, str) is True:
            value = id_agent.encode()
        else:
            value = None

        # Establish a database session
        database = db.Database()
        session = database.session()
        result = session.query(Agent).filter(Agent.id_agent == value)

        # Massage data
        if result.count() == 1:
            for instance in result:
                self.data_dict['id_agent'] = id_agent
                self.data_dict['idx_agent'] = instance.idx_agent
                self.data_dict['idx_agentname'] = instance.idx_agentname
                self.data_dict['enabled'] = bool(instance.enabled)
                self.data_dict['exists'] = True
                break

        # Return the session to the database pool after processing
        database.close()

        # Add the agent name to dict
        if bool(self.data_dict['exists']) is True:
            database = db.Database()
            session = database.session()
            result = session.query(AgentName.name).filter(
                and_(Agent.idx_agent == self.data_dict['idx_agent'],
                     Agent.idx_agentname == AgentName.idx_agentname)).one()
            self.data_dict['agent'] = general.decode(result.name)
            database.close()
コード例 #11
0
ファイル: db_device.py プロジェクト: duran-thomas/infoset-ng
    def __init__(self, devicename):
        """Function for intializing the class.

        Args:
            devicename: Devicename

        Returns:
            None

        """
        # Initialize important variables
        self.data_dict = defaultdict(dict)
        keys = [
            'idx_device', 'devicename', 'description', 'enabled']
        for key in keys:
            self.data_dict[key] = None
        self.data_dict['exists'] = False

        # Encode the id_agent
        if isinstance(devicename, str) is True:
            value = devicename.encode()
        else:
            value = None

        # Establish a database session
        database = db.Database()
        session = database.session()
        result = session.query(Device).filter(Device.devicename == value)

        # Massage data
        if result.count() == 1:
            for instance in result:
                self.data_dict['idx_device'] = instance.idx_device
                self.data_dict[
                    'devicename'] = devicename
                self.data_dict[
                    'description'] = general.decode(instance.description)
                self.data_dict['enabled'] = bool(instance.enabled)
                self.data_dict['exists'] = True
                break

        # Return the session to the database pool after processing
        database.close()
コード例 #12
0
 def test_decode(self):
     """Test function test_decode."""
     # Initialize key variables
     expected = 'carrot'
     result = general.decode(b"carrot")
     self.assertEqual(result, expected)
コード例 #13
0
def _datapoint_summary(aslist=False):
    """Get summary datapoint information.

    Args:
        None

    Returns:
        return_value: Dict keyed by idx_datapoint OR list of dicts

    """
    # Initialize key variables
    data = defaultdict(lambda: defaultdict(dict))
    data_list = []
    return_value = None

    # Establish a database session
    database = db.Database()
    session = database.session()

    # Get result of query
    rows = session.query(
        Datapoint.idx_datapoint,
        Datapoint.agent_label,
        Datapoint.agent_source,
        DeviceAgent.idx_deviceagent,
        AgentName.name,
        Agent.id_agent,
        Device.devicename).filter(
            and_(
                Datapoint.idx_deviceagent == DeviceAgent.idx_deviceagent,
                Agent.idx_agent == DeviceAgent.idx_agent,
                Agent.idx_agentname == AgentName.idx_agentname,
                Device.idx_device == DeviceAgent.idx_device)
            )

    # Process query results
    for row in rows:
        idx_datapoint = row.idx_datapoint
        data_dict = {}
        data_dict['name'] = general.decode(row.name)
        data_dict['agent_label'] = general.decode(row.agent_label)
        data_dict['agent_source'] = general.decode(row.agent_source)
        data_dict['id_agent'] = general.decode(row.id_agent)
        data_dict['devicename'] = general.decode(row.devicename)
        data_dict['idx_deviceagent'] = row.idx_deviceagent

        # Assign values to data structures dependent on 'aslist' value
        if aslist is True:
            data_dict['idx_datapoint'] = idx_datapoint
            data_list.append(data_dict)
        else:
            data[idx_datapoint] = data_dict

    # Return the session to the database pool after processing
    database.close()

    # Assign values to data structures dependent on 'aslist' value
    if aslist is True:
        return_value = copy.deepcopy(data_list)
    else:
        return_value = copy.deepcopy(data)

    # Return
    return return_value