def _build_argspec(self):
        """Builds the ansible argument spec using the fields from the schema
        definition. It's the caller's responsibility to add any arguments which
        are not defined in the schema (e.g. login parameters)
        """
        fields = self.manager._schema.fields
        argspec = {}

        for (field_name, field) in six.iteritems(fields):
            # Readonly fields are omitted, obviously
            if field.get('readonly', False):
                continue

            argspec_field = {'required': field.get('required', False)}

            # Set the name of the argument as the `altname` if it's specified.
            # Otherwise, use the same name as the API does.
            if field['altname']:
                name = field['altname']
            else:
                name = field_name

            argspec[name] = argspec_field

        return argspec