
# This file is automatically generated by puppet-swagger-generator and
# any manual changes are likely to be clobbered when the files
# are regenerated.

require_relative '../../puppet_x/puppetlabs/swagger/fuzzy_compare'

Puppet::Type.newtype(:kubernetes_endpoints) do
  
  @doc = "Endpoints is a collection of endpoints that implement the actual service. Example:
  Name: 'mysvc',
  Subsets: [
    {
      Addresses: [{'ip': '10.10.1.1'}, {'ip': '10.10.2.2'}],
      Ports: [{'name': 'a', 'port': 8675}, {'name': 'b', 'port': 309}]
    },
    {
      Addresses: [{'ip': '10.10.3.3'}],
      Ports: [{'name': 'a', 'port': 93}, {'name': 'b', 'port': 76}]
    },
 ]"
  

  ensurable

  
  validate do
    required_properties = [
    
      :subsets,
    
    ]
    required_properties.each do |property|
      # We check for both places so as to cover the puppet resource path as well
      if self[property].nil? and self.provider.send(property) == :absent
        fail "You must provide a #{property}"
      end
    end
  end
  

  newparam(:name, namevar: true) do
    desc 'Name of the endpoints.'
  end
  
    
  
    
  
    
      
      newproperty(:metadata) do
      
        
        desc "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata"
        
        def insync?(is)
          PuppetX::Puppetlabs::Swagger::Utils::fuzzy_compare(is, should)
        end
      end
    
  
    
      
      newproperty(:subsets, :array_matching => :all) do
      
        
        desc "The set of all endpoints is the union of all subsets. Addresses are placed into subsets according to the IPs they share. A single address with multiple ports, some of which are ready and some of which are not (because they come from different containers) will result in the address being displayed in different subsets for the different ports. No address will appear in both Addresses and NotReadyAddresses in the same subset. Sets of addresses and ports that comprise a service."
        
        def insync?(is)
          PuppetX::Puppetlabs::Swagger::Utils::fuzzy_compare(is, should)
        end
      end
    
  
end
