// Code generated by go-swagger; DO NOT EDIT.

package models

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

import (
	"context"

	"github.com/go-openapi/strfmt"
	"github.com/go-openapi/swag"
)

// ZoneAssignmentSpecification A zone assignment configuration
//
// swagger:model ZoneAssignmentSpecification
type ZoneAssignmentSpecification struct {

	// The maximum amount of cpus that can be used by this cloud zone. Default is 0 (unlimited cpu).
	// Example: 2048
	CPULimit int64 `json:"cpuLimit,omitempty"`

	// The maximum number of instances that can be provisioned in this cloud zone. Default is 0 (unlimited instances).
	// Example: 50
	MaxNumberInstances int64 `json:"maxNumberInstances,omitempty"`

	// The maximum amount of memory that can be used by this cloud zone. Default is 0 (unlimited memory).
	// Example: 2048
	MemoryLimitMB int64 `json:"memoryLimitMB,omitempty"`

	// The priority of this zone in the current project. Lower numbers mean higher priority. Default is 0 (highest)
	// Example: 1
	Priority int32 `json:"priority,omitempty"`

	// Defines an upper limit on storage that can be requested from a cloud zone which is part of this project. Default is 0 (unlimited storage). Please note that this feature is supported only for vSphere cloud zones. Not valid for other cloud zone types.
	// Example: 20
	StorageLimitGB int64 `json:"storageLimitGB,omitempty"`

	// The Cloud Zone Id
	// Example: 77ee1
	ZoneID string `json:"zoneId,omitempty"`
}

// Validate validates this zone assignment specification
func (m *ZoneAssignmentSpecification) Validate(formats strfmt.Registry) error {
	return nil
}

// ContextValidate validates this zone assignment specification based on context it is used
func (m *ZoneAssignmentSpecification) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
	return nil
}

// MarshalBinary interface implementation
func (m *ZoneAssignmentSpecification) MarshalBinary() ([]byte, error) {
	if m == nil {
		return nil, nil
	}
	return swag.WriteJSON(m)
}

// UnmarshalBinary interface implementation
func (m *ZoneAssignmentSpecification) UnmarshalBinary(b []byte) error {
	var res ZoneAssignmentSpecification
	if err := swag.ReadJSON(b, &res); err != nil {
		return err
	}
	*m = res
	return nil
}
