/*
Portions Copyright (c) Microsoft Corporation.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// Code generated by go-swagger; DO NOT EDIT.

package operations

// This file was generated by the swagger tool.
// Editing this file might prove futile when you re-run the swagger generate command

import (
	"context"
	"net/http"
	"time"

	"github.com/go-openapi/errors"
	"github.com/go-openapi/runtime"
	cr "github.com/go-openapi/runtime/client"
	"github.com/go-openapi/strfmt"

	"github.com/Azure/karpenter-provider-azure/pkg/provisionclients/models"
)

// NewNodeBootstrappingGetParams creates a new NodeBootstrappingGetParams object,
// with the default timeout for this client.
//
// Default values are not hydrated, since defaults are normally applied by the API server side.
//
// To enforce default values in parameter, use SetDefaults or WithDefaults.
func NewNodeBootstrappingGetParams() *NodeBootstrappingGetParams {
	return &NodeBootstrappingGetParams{
		timeout: cr.DefaultTimeout,
	}
}

// NewNodeBootstrappingGetParamsWithTimeout creates a new NodeBootstrappingGetParams object
// with the ability to set a timeout on a request.
func NewNodeBootstrappingGetParamsWithTimeout(timeout time.Duration) *NodeBootstrappingGetParams {
	return &NodeBootstrappingGetParams{
		timeout: timeout,
	}
}

// NewNodeBootstrappingGetParamsWithContext creates a new NodeBootstrappingGetParams object
// with the ability to set a context for a request.
func NewNodeBootstrappingGetParamsWithContext(ctx context.Context) *NodeBootstrappingGetParams {
	return &NodeBootstrappingGetParams{
		Context: ctx,
	}
}

// NewNodeBootstrappingGetParamsWithHTTPClient creates a new NodeBootstrappingGetParams object
// with the ability to set a custom HTTPClient for a request.
func NewNodeBootstrappingGetParamsWithHTTPClient(client *http.Client) *NodeBootstrappingGetParams {
	return &NodeBootstrappingGetParams{
		HTTPClient: client,
	}
}

/*
NodeBootstrappingGetParams contains all the parameters to send to the API endpoint

	for the node bootstrapping get operation.

	Typically these are written to a http.Request.
*/
type NodeBootstrappingGetParams struct {

	/* Parameters.

	   Values required to determine NodeBootstrapping values.
	*/
	Parameters *models.ProvisionValues

	// ResourceGroupName.
	ResourceGroupName string

	// ResourceName.
	ResourceName string

	// SubscriptionID.
	SubscriptionID string

	timeout    time.Duration
	Context    context.Context
	HTTPClient *http.Client
}

// WithDefaults hydrates default values in the node bootstrapping get params (not the query body).
//
// All values with no default are reset to their zero value.
func (o *NodeBootstrappingGetParams) WithDefaults() *NodeBootstrappingGetParams {
	o.SetDefaults()
	return o
}

// SetDefaults hydrates default values in the node bootstrapping get params (not the query body).
//
// All values with no default are reset to their zero value.
func (o *NodeBootstrappingGetParams) SetDefaults() {
	// no default values defined for this parameter
}

// WithTimeout adds the timeout to the node bootstrapping get params
func (o *NodeBootstrappingGetParams) WithTimeout(timeout time.Duration) *NodeBootstrappingGetParams {
	o.SetTimeout(timeout)
	return o
}

// SetTimeout adds the timeout to the node bootstrapping get params
func (o *NodeBootstrappingGetParams) SetTimeout(timeout time.Duration) {
	o.timeout = timeout
}

// WithContext adds the context to the node bootstrapping get params
func (o *NodeBootstrappingGetParams) WithContext(ctx context.Context) *NodeBootstrappingGetParams {
	o.SetContext(ctx)
	return o
}

// SetContext adds the context to the node bootstrapping get params
func (o *NodeBootstrappingGetParams) SetContext(ctx context.Context) {
	o.Context = ctx
}

// WithHTTPClient adds the HTTPClient to the node bootstrapping get params
func (o *NodeBootstrappingGetParams) WithHTTPClient(client *http.Client) *NodeBootstrappingGetParams {
	o.SetHTTPClient(client)
	return o
}

// SetHTTPClient adds the HTTPClient to the node bootstrapping get params
func (o *NodeBootstrappingGetParams) SetHTTPClient(client *http.Client) {
	o.HTTPClient = client
}

// WithParameters adds the parameters to the node bootstrapping get params
func (o *NodeBootstrappingGetParams) WithParameters(parameters *models.ProvisionValues) *NodeBootstrappingGetParams {
	o.SetParameters(parameters)
	return o
}

// SetParameters adds the parameters to the node bootstrapping get params
func (o *NodeBootstrappingGetParams) SetParameters(parameters *models.ProvisionValues) {
	o.Parameters = parameters
}

// WithResourceGroupName adds the resourceGroupName to the node bootstrapping get params
func (o *NodeBootstrappingGetParams) WithResourceGroupName(resourceGroupName string) *NodeBootstrappingGetParams {
	o.SetResourceGroupName(resourceGroupName)
	return o
}

// SetResourceGroupName adds the resourceGroupName to the node bootstrapping get params
func (o *NodeBootstrappingGetParams) SetResourceGroupName(resourceGroupName string) {
	o.ResourceGroupName = resourceGroupName
}

// WithResourceName adds the resourceName to the node bootstrapping get params
func (o *NodeBootstrappingGetParams) WithResourceName(resourceName string) *NodeBootstrappingGetParams {
	o.SetResourceName(resourceName)
	return o
}

// SetResourceName adds the resourceName to the node bootstrapping get params
func (o *NodeBootstrappingGetParams) SetResourceName(resourceName string) {
	o.ResourceName = resourceName
}

// WithSubscriptionID adds the subscriptionID to the node bootstrapping get params
func (o *NodeBootstrappingGetParams) WithSubscriptionID(subscriptionID string) *NodeBootstrappingGetParams {
	o.SetSubscriptionID(subscriptionID)
	return o
}

// SetSubscriptionID adds the subscriptionId to the node bootstrapping get params
func (o *NodeBootstrappingGetParams) SetSubscriptionID(subscriptionID string) {
	o.SubscriptionID = subscriptionID
}

// WriteToRequest writes these params to a swagger request
func (o *NodeBootstrappingGetParams) WriteToRequest(r runtime.ClientRequest, reg strfmt.Registry) error {

	if err := r.SetTimeout(o.timeout); err != nil {
		return err
	}
	var res []error
	if o.Parameters != nil {
		if err := r.SetBodyParam(o.Parameters); err != nil {
			return err
		}
	}

	// path param resourceGroupName
	if err := r.SetPathParam("resourceGroupName", o.ResourceGroupName); err != nil {
		return err
	}

	// path param resourceName
	if err := r.SetPathParam("resourceName", o.ResourceName); err != nil {
		return err
	}

	// path param subscriptionId
	if err := r.SetPathParam("subscriptionId", o.SubscriptionID); err != nil {
		return err
	}

	if len(res) > 0 {
		return errors.CompositeValidationError(res...)
	}
	return nil
}
