Building for the Splunk Platform

How can I import croniter in my modular input?

prabhasgupte
Communicator

I want to accept data input interval as cron entry and process it in my modular input.
I am referring this REST API Modular Input app (https://splunkbase.splunk.com/app/1546/) for that. It uses croniter to get next run time of job.

However, I am not being able to import croniter into my modular input script.
I have croniter egg file at SPLUNK_HOME/etc/apps/TA-myta/bin/croniter-0.3.8-py2.7.egg
I have also explicitly added SPLUNK_HOME/etc/apps/TA-myta/bin/croniter-0.3.8-py2.7.egg to sys.path (not needed, but added as an attempt to make it work.)
However, when I try to import croniter, I get ImportError.

How can I fix this?

My code to the point of failure looks as follows. I always get into except block and never see "ready to go":
import sys
from datetime import datetime

import splunk.clilib.cli_common as scc
import splunk.entity as entity

logger = logging.getLogger('TA-myta')

TA_ROOT = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))

egg_dir = TA_ROOT + "/bin/croniter-0.3.8-py2.7.egg"
sys.path.append(egg_dir)
try:
    from croniter import croniter
except:
    logger.error("could not import croniter. Exiting.")
    exit(0)

logger.info("ready to go")

Edit 1:
The splunkd.log has following lines:

03-22-2017 16:27:30.105 +0530 ERROR ExecProcessor - message from "python /opt/splunk/etc/apps/TA-myta/bin/myta.py" ImportError: No module named dateutil.relativedelta
03-22-2017 16:28:30.264 +0530 ERROR ExecProcessor - message from "python /opt/splunk/etc/apps/TA-myta/bin/myta.py" Traceback (most recent call last):
03-22-2017 16:28:30.264 +0530 ERROR ExecProcessor - message from "python /opt/splunk/etc/apps/TA-myta/bin/myta.py"   File "/opt/splunk/etc/apps/TA-myta/bin/myta.py", line 39, in <module>
03-22-2017 16:28:30.265 +0530 ERROR ExecProcessor - message from "python /opt/splunk/etc/apps/TA-myta/bin/myta.py"     from croniter import croniter
03-22-2017 16:28:30.265 +0530 ERROR ExecProcessor - message from "python /opt/splunk/etc/apps/TA-myta/bin/myta.py"   File "/opt/splunk/etc/apps/TA-myta/bin/croniter-0.3.8-py2.7.egg/croniter/__init__.py", line 3, in <module>
03-22-2017 16:28:30.265 +0530 ERROR ExecProcessor - message from "python /opt/splunk/etc/apps/TA-myta/bin/myta.py"     import abc
03-22-2017 16:28:30.265 +0530 ERROR ExecProcessor - message from "python /opt/splunk/etc/apps/TA-myta/bin/myta.py"   File "/opt/splunk/etc/apps/TA-myta/bin/croniter-0.3.8-py2.7.egg/croniter/croniter.py", line 8, in <module>
0 Karma
1 Solution

prabhasgupte
Communicator

Never mind! Got it working!!

I needed to add and import eggs for python_dateutil and six - as dependencies for croniter.

View solution in original post

0 Karma

prabhasgupte
Communicator

Never mind! Got it working!!

I needed to add and import eggs for python_dateutil and six - as dependencies for croniter.

0 Karma
Get Updates on the Splunk Community!

Build Scalable Security While Moving to Cloud - Guide From Clayton Homes

 Clayton Homes faced the increased challenge of strengthening their security posture as they went through ...

Mission Control | Explore the latest release of Splunk Mission Control (2.3)

We’re happy to announce the release of Mission Control 2.3 which includes several new and exciting features ...

Cloud Platform | Migrating your Splunk Cloud deployment to Python 3.7

Python 2.7, the last release of Python 2, reached End of Life back on January 1, 2020. As part of our larger ...