To know the arguments, they must be loaded from the schema. This is
        only possible once the client has been initialized (otherwise the
        opsview version is not known). This function gathers the connection
        arguments before the module is initialized so that the argument spec
        can be set.
        It also gets a list of all parameters which have been specified so that
        we can differentiate between null parameters and omitted parameters.

def _pre_init(self, object_type):
        """To know the arguments, they must be loaded from the schema. This is
        only possible once the client has been initialized (otherwise the
        opsview version is not known). This function gathers the connection
        arguments before the module is initialized so that the argument spec
        can be set.
        It also gets a list of all parameters which have been specified so that
        we can differentiate between null parameters and omitted parameters.
        """
        # Internal Ansible function to load the arguments
        pre_params = _load_params()

        login_params = {}
        for key in six.iterkeys(self.login_argument_spec):
            if key not in pre_params or not pre_params[key]:
                raise ValueError('Argument [%s] is required' % key)

            login_params[key] = pre_params[key]

        # Save a list of all the specified parameters so we know which null
        # parameters to remove
        self.specified_params = [k for k in six.iterkeys(pre_params)
                                 if not k.startswith('_')]

        # Save the manager as, for example `client.config.hostgroups`
        client = OpsviewClient(**login_params)
        self.manager = getattr(client.config, object_type)

        # Build the argument spec with the necessary values
        self.argspec = self._build_argspec()
        self.argspec.update(self.login_argument_spec)
        self.argspec.update(self.additional_argument_spec)