def to_weekdays(api):
        """
        Converts an ApiWeekday object array into a Weekday object array

        :param api: array of ApiWeekday objects
        :type api: solidfire.apiactual.ApiWeekday[]

        :return: solidfire.custom.models.Weekday[]
        """
        weekdays = []
        for api_day in api:
            weekdays.append(Weekday.from_id(api_day.day))
        return weekdays
    def to_weekdays(api):
        """
        Converts an ApiWeekday object array into a Weekday object array

        :param api: array of ApiWeekday objects
        :type api: solidfire.apiactual.ApiWeekday[]

        :return: solidfire.custom.models.Weekday[]
        """
        weekdays = []
        for api_day in api:
            weekdays.append(Weekday.from_id(api_day.day))
        return weekdays
    def __init__(self):
        """
        Parse arguments, setup state variables,
        check parameters and ensure SDK is installed
        """
        self.argument_spec = netapp_utils.ontap_sf_host_argument_spec()
        self.argument_spec.update(
            dict(
                state=dict(required=True, choices=['present', 'absent']),
                name=dict(required=True, type='str'),
                schedule_type=dict(required=False,
                                   choices=[
                                       'DaysOfWeekFrequency',
                                       'DaysOfMonthFrequency',
                                       'TimeIntervalFrequency'
                                   ]),
                time_interval_days=dict(required=False, type='int', default=1),
                time_interval_hours=dict(required=False, type='int',
                                         default=0),
                time_interval_minutes=dict(required=False,
                                           type='int',
                                           default=0),
                days_of_week_weekdays=dict(required=False, type='list'),
                days_of_week_hours=dict(required=False, type='int', default=0),
                days_of_week_minutes=dict(required=False,
                                          type='int',
                                          default=0),
                days_of_month_monthdays=dict(required=False, type='list'),
                days_of_month_hours=dict(required=False, type='int',
                                         default=0),
                days_of_month_minutes=dict(required=False,
                                           type='int',
                                           default=0),
                paused=dict(required=False, type='bool'),
                recurring=dict(required=False, type='bool'),
                starting_date=dict(required=False, type='str'),
                snapshot_name=dict(required=False, type='str'),
                volumes=dict(required=False, type='list'),
                account_id=dict(required=False, type='str'),
                retention=dict(required=False, type='str'),
            ))

        self.module = AnsibleModule(
            argument_spec=self.argument_spec,
            required_if=[('state', 'present',
                          ['account_id', 'volumes', 'schedule_type']),
                         ('schedule_type', 'DaysOfMonthFrequency',
                          ['days_of_month_monthdays']),
                         ('schedule_type', 'DaysOfWeekFrequency',
                          ['days_of_week_weekdays'])],
            supports_check_mode=True)

        param = self.module.params

        # set up state variables
        self.state = param['state']
        self.name = param['name']
        self.schedule_type = param['schedule_type']
        self.days_of_week_weekdays = param['days_of_week_weekdays']
        self.days_of_week_hours = param['days_of_week_hours']
        self.days_of_week_minutes = param['days_of_week_minutes']
        self.days_of_month_monthdays = param['days_of_month_monthdays']
        self.days_of_month_hours = param['days_of_month_hours']
        self.days_of_month_minutes = param['days_of_month_minutes']
        self.time_interval_days = param['time_interval_days']
        self.time_interval_hours = param['time_interval_hours']
        self.time_interval_minutes = param['time_interval_minutes']
        self.paused = param['paused']
        self.recurring = param['recurring']
        if self.schedule_type == 'DaysOfWeekFrequency':
            # Create self.weekday list if self.schedule_type is days_of_week
            if self.days_of_week_weekdays is not None:
                # Create self.weekday list if self.schedule_type is days_of_week
                self.weekdays = []
                for day in self.days_of_week_weekdays:
                    if str(day).isdigit():
                        # If id specified, return appropriate day
                        self.weekdays.append(Weekday.from_id(int(day)))
                    else:
                        # If name specified, return appropriate day
                        self.weekdays.append(
                            Weekday.from_name(day.capitalize()))

        if self.state == 'present' and self.schedule_type is None:
            # Mandate schedule_type for create operation
            self.module.fail_json(
                msg="Please provide required parameter: schedule_type")

        # Mandate schedule name for delete operation
        if self.state == 'absent' and self.name is None:
            self.module.fail_json(
                msg="Please provide required parameter: name")

        self.starting_date = param['starting_date']
        self.snapshot_name = param['snapshot_name']
        self.volumes = param['volumes']
        self.account_id = param['account_id']
        self.retention = param['retention']
        self.create_schedule_result = None

        if HAS_SF_SDK is False:
            # Create ElementSW connection
            self.module.fail_json(
                msg="Unable to import the ElementSW Python SDK")
        else:
            self.sfe = netapp_utils.create_sf_connection(module=self.module)
            self.elementsw_helper = NaElementSWModule(self.sfe)